ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/doc/html/requirements.html
Revision: 1.2.2.6
Committed: Thu May 4 14:41:13 2000 UTC (25 years ago) by williamc
Content type: text/html
Branch: V0_9branch
CVS Tags: V0_12_12_4, V0_12_12_3, V0_13_3, V0_13_2, V0_12_12_2, V0_12_12_1, V0_12_12_0, PlayGround_0, V0_13_1, V0_12_12, V0_13_0, V0_12_11, V0_12_9b, V0_12_10, V0_12_9, V0_12_8, V0_12_7, V0_12_6, V0_12_5, V0_12_4, V0_12_3
Branch point for: HPWbranch
Changes since 1.2.2.5: +1 -6 lines
Log Message:
version updates

File Contents

# User Rev Content
1 williamc 1.1 <! Style Sheet Header>
2     <html>
3     <head>
4     <title>Requirements.html</title>
5     <body bgcolor="beige">
6     <! End Style Sheet Header -----------Insert Text Here --------------------->
7     <center>
8     <H1>SCRAM</H1>
9     <font color=red>S</font>oftware <font color=red>C</font>onfiguration,
10     <font color=red>R</font>elease <font color=red>A</font>nd
11     <font color=red>M</font>anagement
12     </center>
13     <hr>
14     This is the orignal list of functional requirements that the SCRAM project
15     is supposed to
16     address, along with the current status as regards implementation.
17     <p>
18     <table border=1>
19     <tr>
20     <th>
21     Requirement
22     </th>
23     <th>
24     Implementation Status
25     </th>
26     </tr>
27     <tr>
28     <td>
29     <li>Support Any Project Configuration
30     </td>
31     <td>
32     SCRAM provides a background functionality with a project interface. The
33     project interface allows tailoring the system to a wide range of project
34     structures through the use of SCRAM project classes.
35     Project classes are implemented currently as GNUmakefiles and are expected
36     to differ between projects. They are stored in the project, not in SCRAM.
37     </td>
38     </tr>
39     <tr>
40     <td>
41     <li>
42     Shall be easy to use. The user/developer should have
43     a very simple easily learnt interface.
44     </td>
45     <td>
46     Most frontline scram functionality is reached through the <b>scram</b> command.
47     Online help makes it easy to find out what commands are available and how
48     to use them. The exact functionality of some of the commands are somewhat
49     dependent on the project configuration. There is currently no easy way of
50     providing online help as to exactly what this is without relying on the
51     project administrator to document it carefully.
52     </td>
53     </tr>
54     <tr>
55     <td>
56     <li>
57     Shall provide an easy to use mechanism to select specific versions
58     of any build objects<p>
59     <li>
60     Shall obtain build objects from all available resources
61     transparently (e.g Local installation, Central Installation,
62     ftp archive etc. etc.)
63     </td>
64     <td>
65     SCRAM uses the popular idea of developer and common build areas. Selection
66     of specific files etc. is left to the projects versioning system (e.g. CVS).
67     <p>
68     Setting up specific external products etc. is handled with a special mechanism.
69     Every product has a special SCRAM description file which specifies such things
70     as library configurations, standard locations, environment requirements etc.
71     Once such a file exists then a <em>'scram setup url'</em> command
72     will download it into your development space and
73     set it up for your environment ready for use. <br>
74     Once it is tested and the tool is to be made available to the entire project,
75     its name/url should be added to the 'project requirements' file via the
76     &lt;Require > tag.<br>
77     <em>Current limitations</em><br>
78     The url mechanism is limited to a simple toolname which corresponds to a file
79 williamc 1.2.2.6 in the current SCRAM toolbox area. <br>
80 williamc 1.1 Future developments will allow any url (e.g file:, http:) to be specified.
81     This will allow description files to be stored anywhere on the net for use
82     between different projects that use the same external product.
83     <p>
84     Specifying a product to be used once its installed can be done via the
85     BuildFile and a special &lt;External name=<em>toolname</em>> tag. This will
86     soon be depreciated to simplyfy the interface to be replaced with the
87     &lt;Use external=> tag.
88     </td>
89     </tr>
90     <tr>
91     <td>
92     <li>
93 williamc 1.2 Shall obtain required build objects in the most efficient manner
94 williamc 1.1 </td>
95     <td>
96     This requirement really
97     was designed to consider wether it would be quicker to build a local copy than
98     wait for a slow network connection when working against a central
99     installation. As yet no such intelligence is used - a local copy is always
100     assumed for the developers and a full build is required for any setup of a
101     remote development site.
102     </td>
103     </tr>
104     <tr>
105     <td>
106     <li>
107     Linking against central installations and external software shall
108     be transparent to the user.
109     </td>
110     <td>
111     Fully implemented.
112     </td>
113     </tr>
114     <tr>
115     <td>
116     <li>
117     A mechanism should be provided to allow a user to override default
118     build instructions. (e.g. Build a shared rather than an archive library
119     for a specific package and/or domain, try out new tools etc.)
120     </td>
121     <td>
122     All libraries and binaries can be built in debug, optimised or Insure++ modes.
123     This can be done in parrallel - no need for seperate development areas.
124     Which of these are to be built by default is specified in the project level
125     setup.
126     In the
127     directory corresponding to the library, overriding the default is simply a
128     matter of specifying the appropriate
129     <em>lib, lib_debug, lib_insure</em> arguments to the 'scram build' command.
130     Similarly for the binaries with <em>bin, bin_debug, bin_insure</em>.
131     <p>
132     Building from the top level, overriding defaults gets clumsy.
133     Things here need to be improved to provide a consistent interface.
134     </td>
135     </tr>
136     <tr>
137     <td>
138     <li>
139     Support builds on multiple "platforms" with multiple compilers and QA-tools
140     <p>
141     <li>
142     Shall be easily extendible to include new "Object Validation"
143     tools and SW process support tools
144     </td>
145     <td>
146     Multiple platforms are supported. Choice of compilers etc. is made at the
147     project level. Compiler types/QA tool are currently hardcoded in although
148     future developments will require a tool description file for each
149     so that any such tool can be easily installed/used with the scram setup
150     command as with any other external product.
151     </td>
152     </tr>
153     <tr>
154     <td>
155     <li>
156     shall allow for bug-fixing of major releases.
157     <p>
158     <li>
159     Shall support releases of movable "Taggged Objects"
160     (e.g. alpha beta etc.) i.e tags that can indicate different objects
161     with time.
162     <p>
163     <li>
164     support "Tagged Objects" with major, minor and
165     bug-fix versions
166     </td>
167     <td>
168     Any development area can be turned into a central release by the
169     co-ordinator with the <em>scram install</em> command. For each release
170     a 'requirements document' and 'Bootstrap file' are required to allow the
171     specify external requirements, environment, appropriate versions and
172     automated dowload/setup information.
173     <p>
174     SCRAM does not interfere in any way with the version control system and so
175     any tagging allowed by the system is allowed in SCRAM.
176     <br>
177     Currently the process of creating/validating these files is not yet automated.
178     </td>
179     </tr>
180     <tr>
181     <td>
182     <li>
183     Provide build support for the different levels of testing.
184     </td>
185     <td>
186     SCRAM does not dirrectly provide this, however it does allow the project to
187     be configured to allow this by defining its own test classes and how such
188     classes are called.
189     </td>
190     </tr>
191     <tr>
192     <td>
193     <li>
194     support multiple "release" types
195     (e.g user release, developer release) defined by the project
196     configuration.
197     </td>
198     <td>
199     This can be achieved through seperate combinations of
200     'BootStrap' and 'Requirements' files. It is envisioned that a better
201     mechanism than this will be developed.
202     </td>
203     </tr>
204     <tr>
205     <td>
206     <li>
207     All build objects in a public release must be made available to be
208     picked up by remote sites - i.e need a "distribution system"
209     </td>
210     <td>
211     Partially implemented, through the BootStrap file. Automated downloading
212     of binaries/libs etc is not yet implemented. Src code is available from
213     the version control system - automatically directed by the BootStrapFile.
214     </td>
215     </tr>
216     <tr>
217     <td>
218     <li>
219     provide automated release documentation
220     </td>
221     <td>
222     Partially Implemented. SGML documents are required to give functionality,
223     in particular in regards to the release is the Requirements Document. Converting
224     to HTML or other format would certianly be possible although not yet
225     implemented. Release logging is also intended although not yet implemented.
226     </td>
227     </tr>
228     <tr>
229     <td>
230     <li>
231     shall be time-efficiency optimised for the work of the
232     release manager.
233     </td>
234     <td>
235     SCRAM reduces the work of the release manager in a number of ways.
236     <p>
237     e.g. The build environment has to be stated explicitly in the SCRAM project
238     files - no more hunting down special features of some developers environment.
239     <p>
240     Works directly from the src tree as seen in the versioning system. No need
241     to create special units for each individual package.
242     <p>
243     Coming - automated BootStrap file generation and documentation
244     to describe the release.
245     </td>
246     </tr>
247     <tr>
248     <td>
249     <li>
250     shall allow a public release to be compiled for many different
251     platforms from a single platform. (e.g. the use of architecture
252     specific/Backward compatability switches in compilers)
253     </td>
254     <td>
255     Not yet. You still have to log onto each seperate machine and 'scram build'.
256     </td>
257     </tr>
258     <tr>
259     <td>
260     <li>
261     shall support arbitrary naming for sub-directories containing
262     header files
263     </td>
264     <td>
265     SCRAM does not place any limitations. This is defined at the project level.
266     </td>
267     </tr>
268     <tr>
269     <td>
270     <li>
271     shall support arbitrary combinations of extensions for header
272     and source files
273     </td>
274     <td>
275     SCRAM however has hardoded some extensions to match certain operations
276     (e.g .cc .C .cpp all mean C++ src code).
277     As the file extensions etc. are decided at the project level there is
278     not problem with the project level configuration files converting these
279     extensions to those required by scram with a little fancy GNUmakefile.
280     </td>
281     </tr>
282     <tr>
283     <td>
284     <li>
285     shall be independent of the subsystem/package structure
286     <p>
287     <li>
288     shall support a directory structure of at least two levels
289     </td>
290     <td>
291     All defined at the project level. SCRAM makes no limitations.
292     </td>
293     </tr>
294     <tr>
295     <td>
296     <li>
297     shall be able to handle O(1000) packages in a user friendly manner
298     </td>
299     <td>
300     No limitations provided by SCRAM although the tools scram uses
301     (e.g. compilers) may cause a problem.
302     </td>
303     </tr>
304     <tr>
305     <td>
306     <li>
307     Maintenance of the "central installation" should be automated as much
308     as possible
309     </td>
310     <td>
311     Download is a matter of clicking on a link in a web page with SCRAM.<br>
312     It then can then be installed with a single command. Removal is not fully
313     supported as yet (the SCRAM database needs updating automatically)
314     , although 'rm' wont hurt!
315     </td>
316     </tr>
317     <tr>
318     <td>
319     <li>
320     must produce executables with built in version (tag) information
321     </td>
322     <td>
323     Not yet
324     </td>
325     </tr>
326     <tr>
327     <td>
328     <li>
329     shall support Objectivity, and provide easy mechanisms to
330     accommodate developments of this technology
331     </td>
332     <td>
333     An Objectivity tool description file does exist for linking with libraries etc.
334     Although full Objectivity functionality is not yet provided, this file
335     is the place to develop it.
336     </td>
337     </tr>
338     <tr>
339     <td>
340     <li>
341     shall place libraries in a common directory
342     </td>
343     <td>
344     Yes
345     </td>
346     </tr>
347     <tr>
348     <td>
349     <li>
350     shall provide the means to use a mix of programming languages
351     </td>
352     <td>
353     A combination of file extensions and tool files should do the trick.
354     Currently only fortran and C++ supported though
355     </td>
356     </tr>
357     <tr>
358     <td>
359     <li>
360     shall provide switches to use QA tools such as static code
361     analysers, and run-time debuggers
362     </td>
363     <td>
364     Ultimately these will be automatically generated (and documented)
365     in accordance to the tool description file for that product. At the moment they
366     have to be hard coded in.
367     </td>
368     </tr>
369     <tr>
370     <td>
371     <li>
372 williamc 1.2 More than one version of SCRAM must be able to reside on any given
373 williamc 1.1 "site" at the same time.
374     </td>
375     <td>
376     Yes - currently controlled through the SCRAM_HOME variable.
377     <p>
378     Developments will allow a project to specify that it requires a specific scram version, which will be automatically acquired (if not already available)
379     and set up for use.
380     </td>
381     </tr>
382     <tr>
383     <td>
384     <li>
385     An automatic installation procedure
386     </td>
387     <td>
388     Yes, although will be improved (See previous entry).
389     </td>
390     </tr>
391     <tr>
392     <td>
393     <li>
394     shall be configurable, such that different "tools" in the same
395     class can be easily interchanged. (e.g repository management software)
396     <p>
397     <li>
398 williamc 1.2 SCRAM shall have "project" specific selection of any "tools"
399 williamc 1.1 and "external software" (including version specification).
400 williamc 1.2 (e.g. Compilers, Package Management, libraries, repository,
401     SCRAM Version)
402 williamc 1.1 </td>
403     <td>
404     Yes with tool description files/ project files and no dependence on any
405     particular source code management system SCRAM is highly configurable.
406     </td>
407     </tr>
408     <tr>
409     <td>
410     <li>
411     provide an automatic installation procedure for any
412 williamc 1.2 SCRAM maintained project
413 williamc 1.1 </td>
414     <td>
415     Just click on a web page to install the project!
416     <p>
417     If you have things in non standard places you may be asked a few questions as to where things are.
418     </td>
419     </tr>
420     <tr>
421     <td>
422     <li>
423     All "project" specific information is to be maintained in the
424     "project" repository
425     </td>
426     <td>
427     Yes. (with the exception of groups which are currently hardcoded).
428     </td>
429     </tr>
430     <tr>
431     <td>
432     <li>
433     SCRAM shall be easily portable to new "platforms"
434     </td>
435     <td>
436     SCRAM is written in Perl5, and does not invoke system calls directly except for
437     gmake. As such it should be runnable anywhere that Perl5 and gmake
438     is available. By
439     removing the hard coded compiler descriptions and replacing them with
440     tool files will aid porting futher.
441     </td>
442     </tr>
443     <tr>
444     <td>
445     <li>
446     shall not rely on "platform"/"tool" dependent features
447     </td>
448     <td>
449     SCRAM BuildFiles simply require you to describe what, not how to make
450     something. Thus the logical build is seperated from the physical implementation
451     details. Its then a question of providing the right tool to perform the function
452     requested in the BuildFile.
453     </td>
454     </tr>
455     <tr>
456     <td>
457     <li>
458     Locations of external software must be specified solely at the site of
459     installation.
460     <p>
461     <li>
462     Specification of "external software" locations shall be automated as
463     much as possible. The user must be informed clearly of any missing
464     product information.
465     </td>
466     <td>
467     Setup of tools will match the current system to the toolfile requirements.
468     Where automation fails the user will be asked where a product is installed
469     </td>
470     </tr>
471     <tr>
472     <td>
473     <li>
474 williamc 1.2 SCRAM must provide a mechanism to specify "external software"
475 williamc 1.1 requirements and default configurations.
476     <p>
477     <li>
478     A project must explicity specify all external requirements for any
479     given "platform", for any given "release"
480     </td>
481     <td>
482     Yes through the requirements document
483     </td>
484     </tr>
485     <tr>
486     <td>
487     <li>
488     must be able to support multiple "projects" on the same machine
489     </td>
490     <td>
491     Yes - individual projects are self contained.
492     </td>
493     </tr>
494 williamc 1.2.2.2 <tr>
495     <td>
496 williamc 1.2.2.4 User must be able to see the project resources made available
497 williamc 1.2.2.2 through SCRAM
498     </td>
499     <td>
500     Once a project is installed it is entered into a SCRAM database. The
501     <em>scram list</em> command will show all the available projects installed
502     which are available to the user. SCRAM also allows database linking so that
503 williamc 1.2.2.3 scram project installations on remote sites can
504     also be made available over a shared file system.
505 williamc 1.2.2.2 </td>
506     </tr>
507 williamc 1.1 </table>
508    
509     <! Style Sheet Footer ---------------Do not change anything after this line-->
510     <hr>
511     <table border=1 width=100%>
512     <td align=left>
513     <a href=mailto:Christopher.Williams@cern.ch
514     >Chris Williams</a>
515     </td>
516     <td align=center>
517 williamc 1.2.2.5 Last Updated Wed Apr 19 17:08:45 2000
518 williamc 1.1 </td>
519     <td align=right><a href=/cgi-cmc/pagestat>Show Stats</a>
520     </td>
521     </table>
522     </body> </html>
523     <! End Style Sheet Footer>