ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/doc/html/requirements.html
Revision: 1.2.2.4
Committed: Tue Oct 19 15:21:17 1999 UTC (25 years, 6 months ago) by williamc
Content type: text/html
Branch: V0_9branch
CVS Tags: V0_11_4, V0_11_3, V0_11_2, V0_11_1, V0_11_0, V0_10_19, V0_10_18, V0_10_17, V0_10_16, V0_10_15, V0_10_14, V0_10_13, V0_10_12, V0_10_11, V0_10_10, V0_10_9, V0_10_8, V0_10_7, V0_10_6, V0_10_5, V0_10_4, V0_10_3, V0_10_2, V0_10_1
Changes since 1.2.2.3: +2 -2 lines
Log Message:
Add extra requirement about project visibility

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