ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/doc/html/requirements.html
Revision: 1.2.2.6.2.2
Committed: Tue Aug 22 15:45:15 2000 UTC (24 years, 8 months ago) by williamc
Content type: text/html
Branch: HPWbranch
CVS Tags: BuildSystemProto1, V0_18_0, V0_18_0model, V0_17_1, V0_18_0alpha, V0_17_0, V0_16_4, V0_16_3, V0_16_2, V0_16_1, V0_16_0, V0_15_1, V0_15_0, V0_15_0beta
Branch point for: V0_17branch, V0_16branch, V0_15branch
Changes since 1.2.2.6.2.1: +1 -1 lines
Log Message:
New version info

File Contents

# Content
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 in the current SCRAM toolbox area. <br>
80 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 Shall obtain required build objects in the most efficient manner
94 </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 More than one version of SCRAM must be able to reside on any given
373 "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 SCRAM shall have "project" specific selection of any "tools"
399 and "external software" (including version specification).
400 (e.g. Compilers, Package Management, libraries, repository,
401 SCRAM Version)
402 </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 SCRAM maintained project
413 </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 SCRAM must provide a mechanism to specify "external software"
475 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 <tr>
495 <td>
496 User must be able to see the project resources made available
497 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 scram project installations on remote sites can
504 also be made available over a shared file system.
505 </td>
506 </tr>
507 </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 Last Updated Tue Aug 22 16:37:41 2000
518 </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>