home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume19 / shape / part31 < prev    next >
Text File  |  1989-05-31  |  52KB  |  1,354 lines

  1. Subject:  v19i044:  A software configuration management system, Part31/33
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: Axel Mahler <unido!coma!axel>
  7. Posting-number: Volume 19, Issue 44
  8. Archive-name: shape/part31
  9.  
  10.  
  11.  
  12. #! /bin/sh
  13. # This is a shell archive.  Remove anything before this line, then unpack
  14. # it by saving it into a file and typing "sh file".  To overwrite existing
  15. # files, type "sh file -c".  You can also feed this as standard input via
  16. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  17. # will see the following message at the end:
  18. #        "End of archive 31 (of 33)."
  19. # Contents:  papers/boston.ms
  20. # Wrapped by rsalz@papaya.bbn.com on Thu Jun  1 19:27:20 1989
  21. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  22. if test -f 'papers/boston.ms' -a "${1}" != "-c" ; then 
  23.   echo shar: Will not clobber existing file \"'papers/boston.ms'\"
  24. else
  25. echo shar: Extracting \"'papers/boston.ms'\" \(49291 characters\)
  26. sed "s/^X//" >'papers/boston.ms' <<'END_OF_FILE'
  27. X.de Mc
  28. X.nr L1 \\n(LL*10/21
  29. X.if \\n(.$ .nr L1 \\$1n
  30. X.nr NQ \\n(LL/\\n(L1
  31. X.if \\n(NQ<1 .nr NQ 1
  32. X.if \\n(NQ>2 .if (\\n(LL%\\n(L1)=0 .nr NQ -1
  33. X.if !\\n(1T \{\
  34. X.    BG
  35. X.    if n .sp 4
  36. X.    if t .sp 2
  37. X.\}
  38. X.if !\\n(NX .nr NX 1
  39. X.if !\\n(NX=\\n(NQ \{\
  40. X.    RT
  41. X.    if \\n(NX>1 .bp
  42. X.    mk
  43. X.    nr NC 1
  44. X.    po \\n(POu
  45. X.\}
  46. X.if \\n(NQ>1 .hy 12
  47. X.nr NX \\n(NQ
  48. X.nr CW \\n(L1
  49. X.ll \\n(CWu
  50. X.nr FL \\n(CWu*11u/12u
  51. X.if \\n(NX>1 .nr GW (\\n(LL-(\\n(NX*\\n(CW))/(\\n(NX-1)
  52. X.nr RO \\n(CW+\\n(GW
  53. X.ns
  54. X..
  55. X.de C
  56. X.nr PQ \\n(.f
  57. X.if t .ft 9
  58. X.if "\\$1"" .if n .ul 1000
  59. X.if !"\\$1"" .if n .ul 1
  60. X.if t .if !"\\$1"" \&\\$1\f\\n(PQ\\$2
  61. X.if n .if \\n(.$=1 \&\\$1
  62. X.if n .if \\n(.$>1 \&\\$1\c
  63. X.if n .if \\n(.$>1 \&\\$2
  64. X..
  65. X.ND
  66. X.IZ
  67. X.nr PS 11
  68. X.ps \n(PS
  69. X.nr VS 13
  70. X.vs \n(VSp
  71. X.nr LL 7i
  72. X.ll 7i
  73. X.nr HM -0.1i
  74. X.nr PO -0.3i
  75. X.po \n(POu
  76. X.ds [. \f1[
  77. X.ds .] ]\fP
  78. X.ds Rf References
  79. X.mc
  80. X.hw con-fig-u-ra-tion
  81. X.ds CH
  82. X.ds CF
  83. X.ds Un \\s-1\\fHU\\s-2NI\\s+2B\\s-2ASE\\fR\\s+3
  84. X.ds Da \\s-2\\fHDAMOKLES\\fR\\s+2
  85. X.ds sh \\s-1\\fHshape\\fR\\s+1
  86. X.sp -0.5i
  87. X.ps 16
  88. X.vs 18
  89. X.nf
  90. X.ce 3
  91. XAn Integrated Toolset for Engineering Software Configurations\(dd
  92. X.fi
  93. X.FS
  94. X\(dd in \fIProceedings of the ACM SIGSOFT/SIGPLAN Software Engineering
  95. XSymposium on Practical Software Development Environments\fR
  96. X.br
  97. XBoston MA, 28-30 November 1988
  98. X.br
  99. XACM SIGSOFT SE Notes Vol.13-No.5 / ACM SIGPLAN Notices Vol.24-No.2, pp. 191-200
  100. X.FE
  101. X.vs \n(VSp
  102. X.ps \n(PS
  103. X.sp 0.3i
  104. X\fIAxel Mahler\fR and \fIAndreas Lampen\fR
  105. X.br
  106. XTechnische Universit\*:at Berlin, West-Germany
  107. X.sp 25p
  108. X.Mc
  109. X.LP
  110. X\fBAbstract\fR
  111. X.nr PS 10
  112. X.ps \n(PS
  113. X.nr VS 12
  114. X.vs \n(VSp
  115. X.PP
  116. XConfiguration management in toolkit oriented software development
  117. Xenvironments (SDE), such as the
  118. X.UX
  119. Xsystem, is a long standing nuisance. Mostly, one has to
  120. Xface the choice between poorly or not at all integrated, independent
  121. Xtools, or highly integrated, most specialized, and often language
  122. Xdependent environments. The first choice offers very limited support
  123. Xfor a complex task that needs a broad informational basis. The second
  124. Xchoice often takes away the programmers' most cherished tools, forces
  125. Xhim to adopt some different work discipline, and thereby eventually
  126. Xrestricts his creativity. The toolset described in this paper integrates
  127. Xa dedicated version control system and \*(sh, a significantly enhanced
  128. XMake [Feld79a] 
  129. Xprogram, on the basis of a common object model. This object model 
  130. Xcomprises multiple versions of software objects as well as conventional
  131. Xfile system objects. Taking this approach made it possible to have
  132. Xa sufficiently integrated toolsystem for engineering software configurations
  133. Xwhile retaining the flexibility of the basic toolbox philosophy, permitting
  134. Xthe use of 'off-the-shelf' tools, e.g. editors or compilers.
  135. X.ps 12
  136. X.nr PS 11
  137. X.ps \n(PS
  138. X.nr VS 13
  139. X.vs \n(VSp
  140. X.NH 1 
  141. XIntroduction
  142. X.PP
  143. XConfiguration management is a management technique, designed
  144. Xto control very large development and maintenance projects.
  145. XAs military and government institutions played a principal role 
  146. Xin the establishment of configuration management, the related
  147. Xterminology is precisely defined in an ANSI standard [IEEE83a].
  148. XAn in-depth discussion of the underlying concepts can be found in [Bers80a].
  149. X.PP
  150. XTriggered off by the surge of interest in programming environments (PE)
  151. Xduring the last few years, the term \fIsoftware configuration
  152. Xmanagement\fR (SCM) made its way from the management domain
  153. Xtowards
  154. Xthe software engineering and development domain. Today, there are a
  155. Xnumber of PEs with built-in SCM support (e.g. DSEE, Adele,
  156. XISTAR [Lebl84a,\|Estu86a,\|Dows86a]).
  157. XHowever, it is not clear whether SCM is more of a development or
  158. Xmanagement task.  In particular, we suspect that strongly
  159. Xmanagement-oriented approaches to SCM are likely to produce red tape,
  160. Xtending to stand in the (programmer's) way, and consequently
  161. Xdiscourage their systematic application.  On the other hand, strongly
  162. Xde\%vel\%op\%ment-o\%ri\%en\%ted SCM tools often perform a brilliant job in
  163. Xsupporting the programmer, but produce little or no usable information
  164. Xfor project management. To avoid confusion of management-oriented
  165. Xand development-oriented interpretation of SCM, we'd rather prefer
  166. Xthe term \fIsoftware configuration engineering\fR (SCE) to emphasize
  167. Xthe more technical aspects as version control, configuration identification,
  168. Xand system building.
  169. X.PP
  170. XOur toolsystem for engineering of software configurations 
  171. Xconsists of
  172. Xan \fIobject base\fR for attributed software objects,
  173. Xa dedicated \fIversion control system\fR, and \*(sh, a significantly
  174. Xenhanced Make program.  Enhancements include full access to the
  175. Xobject base, and support of \fIconfiguration rules\fR which
  176. Xcontrol the selection process for component objects during
  177. Xidentification, build or rebuild of system configurations. 
  178. X.PP
  179. XSince integration of version control was a major objective for our
  180. Xsystem, we had to face the need for an object identification scheme
  181. Xthat goes beyond the usual way of specifying just name and type.
  182. XAs a consequence, we began to design an object base for attributed
  183. Xsoftware objects [Lamp88a] 
  184. Xthat allows to attach any number of attributes to software objects,
  185. Xand introduces a much more generalized scheme
  186. Xfor object identification.  The object base's name, \fIattributed 
  187. Xfilesystem\fR (AFS), mirrors the basic idea, to enhance the regular
  188. X.UX
  189. Xfilesystem by supporting more fileattributes than
  190. Xjust a name and the information stored in the inode.
  191. XThe AFS comprises concepts for
  192. Xversion control, support of variants or status models for example. Furthermore,
  193. Xit helps to abstract from the particular underlying data storage
  194. Xsystem. For the AFS application writer it makes no difference whether it is an
  195. Xordinary filesystem or a dedicated database system like e.g. \*(Da [Ditt86a].
  196. X.NH 2
  197. XRelated Systems
  198. X.PP
  199. XAt first glance, the user-level appearance of the \*(sh toolkit resembles
  200. Xa combination of Make and a version control system such as
  201. XSCCS [Roch75a]
  202. Xor RCS [Tich85a].
  203. XOver the last years some unsatisfying attempts have been made to integrate 
  204. XMake with source code control systems [Nick83a,\|AUGM83a].
  205. XThe CMS/MMS tool \*([.DECC84a,\|DECM84a\*(.]
  206. Xunder VAX/VMS
  207. Xcorresponds to \fIAugmented Make\fR and SCCS. CMS and SCCS not only 
  208. Xprovide a user command interface, but also give application programs
  209. Xdirect access to the version control facilities through a procedural
  210. Xinterface. However, despite availability of these interfaces, 
  211. Xneither Make nor MMS are build on top of them and more complex
  212. Xconfiguration management applications find a hard limit in this lack
  213. Xof integration.
  214. X\*(sh's AFS interface can be seen as an extended and more generalized interface
  215. Xto the version control system. \*(sh and the related version control
  216. Xcommands are entirely build on top of this interface.
  217. X.PP
  218. XBesides these toolbox oriented systems, there are some highly 
  219. Xspecialized configuration management tools that are usually part of 
  220. Xa software engineering environment.
  221. XBecause they are part of an overall tool concept that also includes
  222. Xprogramming languages, the functionality of these tools is often 
  223. Xmore comprehensive in terms of consistency enforcement. Cedar's
  224. XSystem Modeller [Lamp83a]
  225. Xand the Gandalf version control facility [Habe82a]
  226. Xfall into this category.
  227. XAn interesting approach to the determination of system configurations
  228. Xbased on sets of software objects and functions to model the relations
  229. Xbetween them is presented in Jasmine [Marz86a].
  230. X.PP
  231. XCommon to all of the systems mentioned above is that a system description 
  232. Xdocument (\fIsystem model\fR) is employed to define components and
  233. Xoverall architecture of a software system.
  234. XIn contrast to that, the Adele configuration manager \fIderives\fR a
  235. Xconfiguration from a system description
  236. Xin terms of \fIdesired characteristics\fR 
  237. Xrather than some sort of component list. The description
  238. Xis evaluated against a \fImodule dependency graph\fR and \fImanuals\fR
  239. X(module descriptions) stored in a database of programs.
  240. XThe Odin System [Clem86a] 
  241. Xin turn uses a (compiled) knowledge base, called \fIderivation graph\fR,
  242. Xdescribing derivative relationships between \fIdocument types\fR,
  243. Xand associated tools to perform necessary derivations 
  244. Xin order to obtain a requested object.
  245. XOdin integrates remarkably well with the standard 
  246. X.UX
  247. Xtool environment
  248. Xand can be used to construct comprehensive special purpose environments
  249. Xfrom existing tools [Wait88a].
  250. X.PP
  251. XFinally, DSEE
  252. Xrepresents to the authors' knowledge the most
  253. Xoutstanding configuration management system so far. It is based on system
  254. Xmodels, describing the version-independent structure of a software
  255. Xsystem and \fIconfiguration threads\fR, describing the version
  256. Xrequirements that must be met by the elements of a configuration to be
  257. Xidentified. DSEE combines configuration management with sophisticated
  258. Xproject support facilities, enabling large programmer teams to cooperate
  259. Xover a (local or wide area) computer network.
  260. X.PP
  261. XIn the design of \*(sh, we tried to adopt a number of the best
  262. Xconcepts mentioned above. Namely Make, Adele and DSEE had a strong
  263. Xinfluence on the design of the \*(sh toolkit.  Despite the integration
  264. Xof the toolkit itself, care has been taken to smoothly fit the SCE
  265. Xsystem into the standard
  266. X.UX
  267. Xenvironment. The entry cost for new
  268. Xusers (in terms of initial learning effort) is very low. The system may be
  269. Xused as just a friendly version control tool, an upward compatible 
  270. Xreplacement for Make, or an intelligent integration of both.
  271. XUtilization of the toolkit can be gradually extended up to a network
  272. Xbased project support environment, employing a number of programmer
  273. Xteams working on large software development and maintenance projects.
  274. X.PP
  275. XThe simple,
  276. X.UX-like
  277. Xnature of the toolkit's basic user interface
  278. Xoffers a broad range of possibilities to create dedicated user
  279. Xinterfaces that provide an integrated, problem oriented view of the
  280. XSCE system.  Currently in the works are an implementation of a
  281. Xspecially tailored SCE shell on the basis of \*(Th [H\*u87a]
  282. X(a graphical user interface system), and an implementation of a SCE-tool for
  283. Xthe \fIX Window System\fR.
  284. X.PP
  285. XThe rest of this paper describes the \*(sh program and AFS, the
  286. Xobject base on top of which \*(sh and the version control commands
  287. Xare built. Also, a number of problems,
  288. Xencountered while trying to introduce general support for the 
  289. Xhandling of \fIvariants\fR, and implementing AFS on top of \*(Da,
  290. Xwill be discussed.
  291. X.NH 1
  292. XThe Shape Toolkit
  293. X.PP
  294. XThe user interface of the SCE toolkit consists of a set of commands for 
  295. Xversion control, project interaction, and the shape program itself.
  296. XThe appearance of the version control commands is not unlike to
  297. XRCS' user interface. There are funtions to save and restore
  298. Xan object version (\fCsave/retrv\fR), to manipulate object histories
  299. Xand attributes of object versions (\fCvadm [ -delete | -setattr | -chmod 
  300. X\fR(etc.) \fC]\fR), as well as a funtion to obtain information about 
  301. Xthe contents of the object base (\fCvl\fR, gives a \fCls(1)\fR-like 
  302. Xview of the object base).
  303. X.PP
  304. XThe toolkit supports a basic project organization scheme that
  305. Xdistinguishes private workspaces for individual developers, and a
  306. Xcentral library that is shared by the project team. The project
  307. Xlibrary is administered by the system integrator. The toolkit provides
  308. Xfunctions for project interaction, controlling concurrent development
  309. X(\fIobject locking\fR), and orderly submission of software objects.
  310. X\fCresrv\fR (developer) attempts to reserve the update privilege for a
  311. Xdocument history, \fCsbmit\fR (developer) submits a work result to be
  312. Xincluded into the next release of a system, \fCaccpt\fR (system
  313. Xintegrator) accepts a submitted document version and gives it an
  314. Xofficial, publically accessible state, and \fCrject\fR (system
  315. Xintegrator) denies a submitted work result the official state and
  316. Xsends a corresponding message to the submitting programmer.
  317. X.PP
  318. XVersion control and project interaction are functionally supported 
  319. Xby a built-in general version status model. The states \fCbusy\fR,
  320. X\fCsaved\fR, \fCproposed\fR, \fCpublished\fR, \fCaccessed\fR, and 
  321. X\fCfrozen\fR are not only intended to say something about the relative
  322. Xquality of a particular object version, but also reflect whether an
  323. Xobject version is in a developer's private experimentation domain, or
  324. Xin the project's official domain, where it is visible and accessible
  325. Xto the entirety of a project team. A more detailed description of the
  326. Xversion control system can be found in [Mahl88a].
  327. X.PP
  328. XThe first implementation of \*(sh resembles Make.  As
  329. Xin Make, the configuration process is controlled by a system
  330. Xdescription document.
  331. XUnlike Make, however, \*(sh operates on objects in an object base
  332. Xrather than
  333. X.UX
  334. Xfilesystem objects.
  335. XWhen building a certain configuration,
  336. X\*(sh searches the object base for appropriate
  337. Xversions of a system's component objects, installs them temporarily
  338. Xas
  339. X.UX
  340. Xfilesystem objects (regular files), eventually invokes some of
  341. X.UX's
  342. Xstandard tools on them, and stores the resulting \fIderived objects\fR
  343. Xin the object base.
  344. XAccordingly, the most significant improvement with respect to Make is
  345. Xthe introduction
  346. Xof \fIselection rules\fR into the
  347. Xdescription document, the \fIShapefile\fR. Selection rules control the 
  348. Xselection process for component versions during identification, build or
  349. Xrebuild of system configurations. 
  350. X.KS
  351. X.LP
  352. XThe system description document used by \*(sh consists 
  353. Xof four basic components:
  354. X.in +0.2i
  355. X.IP \(bu 0.2i
  356. Xsystem description
  357. X.IP \(bu
  358. Xselection rules
  359. X.IP \(bu
  360. Xtransformation rules, and
  361. X.IP \(bu
  362. Xvariant definitions.
  363. X.in -0.2i
  364. X.KE
  365. X.LP
  366. XWhile the syntax for the
  367. Xsystem description part is the same as for Makefiles,
  368. Xthe remaining \*(sh-file sections have a slightly different 
  369. Xsyntax from Makefiles and must be preceded and ended by
  370. Xspecial comment sequences (\fC\s-1#%\ RULE-SECTION, #%\ VARIANT-SECTION, 
  371. X#%\ END-RULE-SECTION\s+1\fR a.s.o.).
  372. X.NH 2
  373. XSelection of Component Objects
  374. X.PP
  375. XConfiguration selection rules are used to \fIbind concrete object
  376. Xinstances\fR in the object base to \fIcomponent names\fR applied
  377. Xin the Shapefile at build time.  A selection rule is a
  378. Xnamed sequence of \fIalternatives\fR, separated by semicolons,
  379. Xconstituting a logical OR expression. Each alternative consists of a
  380. Xsequence of \fIpredicates\fR, separated by commas, constituting a
  381. Xlogical AND expression.  A selection rule \fIsucceeds\fR if one of its
  382. Xalternatives succeeds (i.e. leads to the unique identification of some
  383. Xobject instance).
  384. X.PP
  385. XA selection rule that \- when activated \- would cause the configuration
  386. Xof an experimental system (\fI\(lqselect the newest version of all components
  387. Xthat I am working on; select the newest published version of all other 
  388. Xcomponents\(rq\fR) might look like:
  389. X.LP
  390. X.nf
  391. X\fC\s-1exprule:
  392. X    *.c, attr (author, andy), 
  393. X       attr (state, busy);
  394. X    *.c, attrge (state, published), 
  395. X       attrmax (version).\s+1\fR
  396. X.fi
  397. X.PP
  398. XAnother example illustrates how known versions of particular modules
  399. Xcould be configured into otherwise experimental systems:
  400. X.LP
  401. X.nf
  402. X\fC\s-1special_rule:
  403. X    afs_def.h, attr (version, 8.22);
  404. X    afs_hparse.c, attr (version, 8.17);
  405. X    *.c, attr (author, andy), 
  406. X       attr (state, busy);
  407. X    *.c, attrge (state, published), 
  408. X       attrmax (version).\s+1\fR
  409. X.fi
  410. X.PP
  411. XIn alternatives, the first predicate (e.g. \fC*.c\fR) is usually a
  412. Xpattern against which the name attribute of a sought component
  413. Xis matched.  The patterns used by \*(sh have the same structure as those
  414. Xused by \fCed\fR.
  415. XThe other predicates allow certain requirements to be expressed with respect
  416. Xto the object attributes. \fIAttr\fR and \fIattrge\fR are
  417. Xpredefined predicates that require a specified attribute to be equal
  418. Xor greater-than-or-equal (with respect to a defined or lexical
  419. Xorder) a given value. The similarly predefined predicate \fIattrmax\fR
  420. Xrequires objects to have a maximal value in the specified attribute.
  421. XIn order to uniquely identify exactly one object instance by
  422. Xevaluation of a selection rule, the alternatives must be sufficient to
  423. Xsingle out one element from a possible set. Usually, the last predicate
  424. Xof an alternative guarantees a unique selection. Predicates like
  425. X\fIattrmax (attribute_name), attr (state, busy), \fRor\fI attr
  426. X(version, 4.2)\fR are examples of such selections.
  427. X.PP
  428. XThe basic procedure of \*(sh is similar to Make's: Names \- so-called
  429. X\fItargets\fR \- are produced. \*(sh checks whether the
  430. Xtarget already exists and is \fIcurrent\fR, or tries to produce it
  431. Xfrom its \fIdependents\fR. 
  432. XA target is considered current if neither the source objects nor the
  433. Xderivation context have changed.
  434. XIn order to check whether a given target
  435. Xis current, both the target document itself, and all of its dependents,
  436. Xmust be configured. A name\(dg
  437. X.FS
  438. X\(dg Conceptually, name \fIand type\fR of a document are passed as implicit
  439. Xparameters. In this discussion, \fIname\fR stands for the concatenation
  440. X\fIname.type\fR
  441. X.FE
  442. Xthat has to be configured is passed as implicit parameter to the
  443. Xactive selection rule. During rule evaluation, the name is
  444. Xsequentially matched against the name pattern of the rule
  445. Xalternatives. If a pattern matches a name, the attempt will be made to
  446. Xcomplete the following predicate sequence.
  447. X.PP
  448. XAfter a name match, \*(sh queries the object base for all objects with 
  449. Xthe given name and thereby initializes
  450. Xan internal \fIhit set\fR. The subsequent sequence
  451. Xof predicates will be applied to the set of found AFS objects. An
  452. Xalternative fails if one of the following conditions is true:
  453. X.in +0.2i
  454. X.IP \(bu 0.2i
  455. Xthe pattern does not match
  456. X.IP \(bu
  457. Xa predicate of the alternative fails
  458. X.IP \(bu
  459. Xupon completion of the alternative, the cardinality of the hit set is
  460. Xnot equal to one, i.e. no unique name resolution was possible.
  461. X.in -0.2i
  462. X.LP
  463. XThe application of predicates to the hit set results in the removal of
  464. Xall AFS objects from the hit set that do not conform to the specified
  465. Xrequirements. A predicate's evaluation fails if the cardinality
  466. Xof the hit set becomes equal to zero.
  467. XAfter the target and all of it's dependents have been configured,
  468. Xthe transformation predicate is applied to the target and each of its
  469. Xdependents.
  470. X.PP
  471. XSelection rules can be activated on a per production basis by simply
  472. Xgiving the name of the rule as the first dependent of a production.
  473. XThus, it is possible to define targets for the configuration of e.g.
  474. Xtestsystems and releasable systems within the same \*(sh-file.
  475. X.LP
  476. X.nf
  477. X    \fC\s-1test: exp_rule prog
  478. X    release: rel_rule prog
  479. X    prog: x.o y.o z.o\s+1\fR
  480. X.fi
  481. X.PP
  482. XA selection rule remains active until it is superseded by activation
  483. Xof another selection rule or until the target that caused the activation
  484. Xis produced. If no selection rule is specified, the default rule, which
  485. Xis the same as Make's (\(lq\fIselect the busy object in the current 
  486. Xdirectory\fR\(rq), is active.
  487. X.PP
  488. XAfter having uniquely identified the system's components, they will
  489. Xbe temporarily installed as 
  490. X.UX
  491. Xfilesystem objects, and the necessary
  492. Xtransformation actions can be performed.
  493. X.PP
  494. XThe search space for retrieve operations is defined by
  495. Xthe \fIcurrent project\fR which is an explicitly selected work context.
  496. XIf \*(sh cannot find a document in the local search space,
  497. Xit tries to connect to a \fIproject server\fR, whose address is
  498. Xdefined by the current project. The project server might reside locally
  499. Xor somewhere in the network. It provides controlled access to the
  500. Xproject's database. Thus, if a particular document could not be tracked
  501. Xdown locally, it might still be somewhere in the project library.
  502. X.NH 2
  503. XTransformation Rules
  504. X.PP
  505. X\*(sh's transformation rules describe, which kind of \fIsource object\fR
  506. Xis transformed into which kind of \fIderived object\fR, how this
  507. Xtransformation is performed, and which parameters are significant
  508. Xfor that transformation.
  509. XTransformation rules consist of a \fItransformation specification\fR,
  510. Xand a \fItransformation script\fR. Transformation specifications
  511. Xdescribe prerequisites and resulting objects of a transformation. The
  512. Xtransformation script is a template for a shell script that
  513. Xwill be passed to a shell process upon activation of a transformation.
  514. XThe syntax for these rules is an extension of Make's default rule
  515. Xspecification formalism. \*(sh's rule by which the transformation
  516. Xof a C source object into a '\fC\&.\&o\fR' (speak: dot-o) derived object
  517. Xis defined looks like:
  518. X.LP
  519. X.nf
  520. X.C
  521. X\s-1%.o: %.c : +(CC) +(CFLAGS)
  522. X    $(CC) -c $(CFLAGS) %.c\s+1
  523. X.R
  524. X.fi
  525. X.LP
  526. XA request to produce a derived object \- let's say \fCxyzzy.o\fR \- would,
  527. Xby evaluating the transformation rule, result in the compilation
  528. Xof \fCxyzzy.c\fR with the compiler defined by 
  529. Xthe macro \fCCC\fR, with compile switches defined by \fCCFLAGS\fR.
  530. XThe percent sign is consistently substituted by the name \(lqxyzzy\(rq
  531. Xthroughout the transformation rule. The notation \fI$(NAME)\fR substitutes
  532. Xthe value of the macro \fINAME\fR, while \fI+(NAME)\fR substitutes the
  533. Xentire macro definition (i.e. \fINAME=value\fR).
  534. X.PP
  535. XWhen a transformation rule is evaluated, the name of the source object
  536. Xis passed to the current selection rule and thereby bound to a
  537. Xconcrete source object version in the object base. After the
  538. Xtransformation script has been executed (successfully), \*(sh assumes
  539. Xthat the specified derived object has been produced, and stores the
  540. Xfilesystem object that represents the derived object (in the example
  541. Xabove \fCxyzzy.o\fR) in a special area in the object base, called the
  542. X\fIbinary pool\fR. When put into the binary pool, an attribute
  543. Xdescribing the transformation that just took place, is attached to the
  544. Xderived object. This \fIderivation attribute\fR contains the
  545. Xidentification of all source objects, as well as the definitions of
  546. Xthe specified macros that were used in the transformation script.
  547. X.PP
  548. XIn Make, triggering of transformations is controlled by the built-in
  549. Xpredicate \fIis_newer (target, source)\fR. This predicate fails to
  550. Xproduce a target, if a source object is left unchanged, but something in the
  551. Xproduction environment changed. A common example of this case in
  552. X.UX 
  553. Xis the compilation of the same C source file with different precompiler
  554. Xswitches. On the other hand, transformations can be omitted, if the source
  555. Xwas a saved version and the derived object is still existent in the
  556. Xbinary pool. When requested to produce a target, \*(sh configures
  557. Xthe source objects (by evaluating the selection rule), constructs the
  558. Xderivation attribute that \fIwould be\fR assigned to the derived object, and
  559. Xchecks if a derived object
  560. Xthat already has such an attribute is readily available from the binary 
  561. Xpool. In this case no compilation would be necessary. If something in
  562. Xthe source context or the transformation context has changed (e.g.
  563. Xthe compile switches in \fCCFLAGS\fR), a new derived object instance 
  564. Xwould be created.
  565. X.NH 2
  566. XVariant Support
  567. X.PP
  568. XThere is a common understanding of variants as \fIalternative\fR realizations
  569. Xof the same concept. The typical example
  570. Xfor the genesis of variants is porting of software products to 
  571. Xdifferent architectures. The idea of variants sounds quite simple, but
  572. Xto actually handle them can be an extremely difficult task.
  573. X.PP
  574. XVariant documents can be represented by a single source document that has
  575. Xto be \fIpreprocessed\fR in order to access a particular variant.
  576. XVariant documents can also be \fIphysically separated\fR, i.e. each variant
  577. Xis a document of its own. Variants of this kind may have different
  578. Xnames, or the same name but in different name spaces (e.g. directories).
  579. XVariants can be identified by supplying a set of options to the preprocessor
  580. Xor appropriate names or pathnames. Both techniques have their particular
  581. Xadvantages and disadvantages. In the case of preprocessed variants,
  582. Xone has to write source documents that contain lots of precompiler-
  583. Xor macroprocessor-related code. When things grow complex, it is easy 
  584. Xto make mistakes. Besides, source documents of this kind are hard to read
  585. Xand understand. Consequently, they are less maintainable.
  586. XAlso, the specification of a planned configuration may require a lot
  587. Xof error-prone work. 
  588. X.PP
  589. XThe other case, the physically separate administration of variants, is 
  590. Xexpensive in terms of disk space and organizational overhead.
  591. XMoreover, it is extremely problematic when changes (e.g. bug-fixes,
  592. Xfeature enhancements) are made in sections that are common to all
  593. Xvariants. One has to face the choice of 
  594. X.in +0.2i
  595. X.IP \(bu 0.2i
  596. Xdoing the work all over again
  597. Xfor all variants, 
  598. X.IP \(bu
  599. Xtrying to \fImerge\fR changes that have been made in
  600. Xone variant (semi-) automatically into the others, or 
  601. X.IP \(bu
  602. Xchanging only one 
  603. Xvariant (the best selling) and abandoning the others.
  604. X.in -0.2i
  605. X.PP
  606. XThe real problem is even more complex. We suspect that it is still an
  607. Xunsolved problem of software engineering to produce \fIportable
  608. Xsoftware designs\fR in the sense of predicting and planning the possibility
  609. Xthat certain modules of a system sprout variant branches.  It is still
  610. Xa fact that variants \fIhappen\fR. In order to port a system to some
  611. Xnew architecture (that might not have even existed at the time of the
  612. Xsystem's design), almost any module might be struck by the necessity
  613. Xof minor or major adjustments. As a consequence, both techniques of
  614. Xvariant administration may happen to be mixed. Also variants of
  615. Xvariants (sub- or multivariants) may come into existence.  A complex
  616. Xsystem often has lots of variant options that are completely
  617. Xindependent (e.g. a compiler that produces French diagnostics and VAX
  618. Xcode for a
  619. X.UX
  620. XSystem V environment). Variant properties of different modules
  621. Xmight also be dependent or contradictory (e.g. certain memory
  622. Xmanagement algorithms may rely on virtual memory, which a specified
  623. Xtarget architecture lacks).  Furthermore, it is easily possible that
  624. Xthe overall structure of a software system becomes variant.  All this
  625. Xcomes to a climax at a point where module variation is a mere
  626. Xsymptom of metamorphosis, in which a system variant evolves into a
  627. Xcompletely different product. The question arises, how long variants
  628. Xshould be treated as such, and when they start a life of their own.
  629. X.PP
  630. XWe don't claim
  631. Xthat \*(sh offers a \(lqquick fix\(rq for the variant problem.  For
  632. Xtools like \*(sh, only flexibility, rather than conceptual or
  633. Xmethodological corsets can be an answer.
  634. X\*(sh offers a simple but flexible mechanism for the
  635. Xhandling of variants that supports both elementary administration
  636. Xconcepts and their combination. For the realization in a
  637. X.UX
  638. Xfilesystem environment, \*(sh allows \fIvariant names\fR to be defined
  639. Xand to be associated with variant-flags, that may be passed to the
  640. Xtransforming tool, and a variant-path, that extends the search space
  641. Xby directories, which could host an object variant. The following
  642. Xexample illustrates the use of variant definitions:
  643. X.LP
  644. X.nf
  645. X\fC\s-1#% VARIANT-SECTION
  646. Xvclass system ::= (vaxbsd, munix)
  647. Xvclass database ::= (damokles, unixfs)
  648. Xvaxbsd: 
  649. X    vflags="-DUNIX -DBSD43 -DSTDCC \e
  650. X       -DVAX -DPSDEBUG" 
  651. X    vpath="sys/vaxbsd"
  652. Xunixfs:
  653. X    vflags="-DFS"
  654. X    vpath="data/unixfs"
  655. X.sp 2p
  656. X    (\ .\ .\ .\ )
  657. X.sp 2p
  658. X#% END-VARIANT-SECTION\s+1\fR
  659. X.fi
  660. X.PP
  661. XVariant names, as defined in the variant section, can be applied in
  662. Xselection rules through the predefined (pseudo-)predicate \fIattrvar\fR.
  663. XThey provide a unified concept for the administration of variants within
  664. Xthe version control system, with preprocessor technique, and with
  665. Xphysical separation. Configuration selection rules making use of
  666. Xthe variant attribute might look like:
  667. X.LP
  668. X.nf
  669. X\fC\s-1fsexp:
  670. X  *.[ch], attrvar (vaxbsd), \e
  671. X    attrvar (unixfs), attr (state, busy).
  672. X.fi
  673. X.LP
  674. X\*(sh uses the special macros \fIvflags\fR and \fIvpath\fR to hold 
  675. Xpreprocessor options and extensions to the default document search 
  676. Xpath. 
  677. XLocations specified by \fIvpath\fR are searched for 
  678. Xdocuments prior to the default location. If a document with the specified
  679. Xattributes is found in a \fIvpath-\fRdirectory, the default directory
  680. Xwill \fInot\fR be searched.
  681. X.PP
  682. XInitially, both macros have an empty value. When variants are selected
  683. Xin an alternative of a selection rule, the associated macro values are 
  684. X\fIadded\fR to \fIvflags\fR and \fIvpath\fR. In our example, during 
  685. Xevaluation of rule \fCfsexp\fR,
  686. X\fIvflags\fR would become:
  687. X.sp 5p
  688. X.nf
  689. X\fC\s-1vflags="-DUNIX -DBSD43 -DSTDCC \e
  690. X    -DVAX -DPSDEBUG -DFS"\s+1\fR
  691. X.fi
  692. X.sp 5p
  693. Xand \fIvpath\fR  would be:
  694. X.sp 5p
  695. X.nf
  696. X\fC\s-1vpath="sys/vaxbsd:data/unixfs"\s+1\fR.
  697. X.fi
  698. X.sp 5p
  699. XUpon completion of each alternative both macros are reset.
  700. X.PP
  701. XThe construct \fIvclass system ::= (vaxbsd, munix)\fR defines a
  702. X\fIvariant class\fR. Variant classes define mutually exclusive variant
  703. Xnames. Variant classes can usually be given meaningful names, because
  704. Xthey mostly correspond to certain properties, in which the particular
  705. Xvariants vary. A variant class \fIcputype\fR for instance, with
  706. Xelement names \fIIBM4381, VAX630, VAX7XX, m68k\fR a.s.o. might be
  707. Xdefined in order to prevent the selection of different cpu-specific
  708. Xmodules with mismatching cpu attributes. \*(sh will complain if such a
  709. Xcondition is detected.  So far, this is the only concept in \*(sh for ensuring
  710. Xsemantic consistency across variant system components.
  711. XIn this area, more work needs to be done. For a more thorough discussion
  712. Xof this matter, we refer to [Perr87a].
  713. X.NH 2
  714. XConfiguration Identification and Reproducibility
  715. X.PP
  716. X\*(sh can, for the purpose of configuration identification, be asked
  717. Xto produce a \fIconfiguration identification document\fR (CID) for a
  718. Xconfiguration. CIDs have the form of a Shapefile that is \fIcompletely
  719. Xbound\fR. All components of the configuration are precisely identified
  720. Xby their version number, and eventually variant identification. The
  721. XCID also contains all necessary macro definitions.  It is a good idea
  722. Xto place the tools that are used to create system configurations
  723. Xunder version control as well. If this has been done, the tool
  724. Xversions are also included in the CID.  Another important information
  725. Xrecorded in the CID is the \fIproject domain\fR. It defines the name of
  726. Xthe project from which a configuration originates, and the next-higher
  727. Xdomain in which the projectname can be resolved (e.g.  a network\-,
  728. Xhost\-, or pathname). This is necessary in order to define the object
  729. Xbase against which a possible rebuild of the configuration shall be
  730. Xdone.
  731. X.PP
  732. XRecording of system configurations in CIDs is the prerequisite
  733. Xfor proper rebuilds of a complex system. The ability to rebuild 
  734. Xa released configuration is in turn the prerequisite for proper
  735. Xproduct maintenance.
  736. XThe fact that \*(sh CIDs are themselves Shapefiles makes it very
  737. Xeasy to reproduce a recorded configuration, provided the original object 
  738. Xbase is available and intact.
  739. X.PP
  740. XHowever, complete reproducibility of system releases is a goal that is hard
  741. Xto achieve. To rebuild old configurations as identically as possible
  742. Xnot only requires keeping all document versions that have ever been
  743. Xpart of a release, but also a straight history of all tools (e.g. compilers)
  744. Xthat have ever been used to produce releases. The cost for this might be
  745. Xconsiderable administrative overhead, because every project
  746. Xneeds a current \fItool registry\fR, where all production tools 
  747. Xare logged. The gain on the other hand is increased security for the
  748. Xmaintenance phase of long lived software products. The \*(sh toolkit
  749. Xwill offer support for tool registries but not require to keep them.
  750. X.NH 1
  751. XThe Object Base
  752. X.PP
  753. XMost conventional filesystems, such as those of the
  754. X.UX
  755. Xflavor, solely use a file's
  756. X(path-) name to establish access to its
  757. Xcontents. 
  758. XThey usually offer no provision for the maintenance of object
  759. Xhistories. Version control systems like SCCS or RCS
  760. Xhad to be introduced as auxiliary tools to avoid the problem of
  761. Xconflicting filenames and to store versions in an efficient manner.
  762. XHistories of related objects are typically maintained completely
  763. Xindependently, so there is no obvious way to figure out which versions
  764. Xof which objects were meant for each other.  Integration of version control
  765. Xwith system
  766. Xbuilding tools like Make is very poor.
  767. XThe choice, which component
  768. Xversions go into a system configuration, is often limited to the
  769. Xselection of either the \fInewest available\fR versions or
  770. X\fIstatically designated\fR, i.e. a priori known versions (composition
  771. Xlist).
  772. X.PP
  773. XFor configuration identification it is more desirable to
  774. X\fIdescribe\fR a planned configuration in terms of
  775. Xproperties that its components must have in order to be eligible.
  776. XThe \fIattributed filesystem\fR (AFS) provides an
  777. Xextended view of software objects to application programs. This view comprises
  778. Xthe concept of \fIobject histories\fR, as well as the possibility to
  779. Xtag any number of \fIuser-defined attributes\fR to object instances.
  780. XInterpretation and use of these
  781. Xattributes is left to the application that uses them. 
  782. X.NH 2
  783. XThe Attributed Filesystem
  784. X.PP
  785. XThe term attributed filesystem is only used for historical
  786. Xreasons. The AFS layer described in this section rather implements a
  787. Xdata storage system independent base of \fIattributed software objects\fR\(dg
  788. X.FS
  789. X\(dgWe adhere to the terminology proposed in [Tich88a].
  790. X.FE
  791. X(ASO), on top
  792. Xof which all programs of the configuration engineering toolkit are
  793. Xbuilt. 
  794. X.PP
  795. XEach software object
  796. Xis understood as a complex of \fIcontent
  797. Xdata\fR and a set of \fIassociated attributes\fR.  
  798. XAttributes
  799. Xhave the general form \fIname=value\fR, where \fIname\fR represents
  800. Xthe attribute name, and \fIvalue\fR a possibly empty attribute value.
  801. XThere are some implicitly defined \fIstandard attributes\fR for
  802. Xevery object instance.  Some of the standard attributes (e.g.
  803. Xname, size, owner, or protection attributes) are inherited from the
  804. Xunderlying data storage system;
  805. Xothers (e.g. revision number or state) are AFS specific.
  806. X.PP
  807. XAFS is realized as a callable interface to a \fIdata storage
  808. Xsystem\fR and provides a general, attribute based method to identify
  809. Xobjects in the object base.  All attributes are considered equally
  810. Xsuited for object identification. For instance, it is possible to
  811. Xretrieve all ASOs with an attribute \fIname=xyzzy\fR, or all
  812. Xitems that have the attributes \fIauthor=andy\fR and
  813. X\fIstate=published\fR.  Versions are treated as \(lqjust another
  814. Xattribute\(rq. AFS provides applications \- such as \*(sh \- with
  815. Xfully transparent, stream oriented access to all object instances.
  816. X.sp 5p
  817. X.KS
  818. X.sp 4c
  819. X.ce 
  820. X\f3Fig 3.1.\f1 "The AFS and its applications"
  821. X.KE
  822. X.sp 5p
  823. X.PP
  824. XWith AFS, software objects are retrieved by specifying an \fIattribute
  825. Xpattern\fR.  An AFS retrieval results in a \- possibly empty \- set of
  826. X\fIobject keys\fR, each of which representing a unique object instance
  827. Xthat matches the specified attribute pattern.
  828. X.PP
  829. XThe current implementation of AFS uses two
  830. Xkinds of special files to realize the described concept of ASOs,
  831. X\fIhistory files\fR and \fIbinary pools\fR.  Both file types are
  832. Xarchives and capable of holding a possibly large number of objects. 
  833. XHistory files store successive versions of
  834. Xsource objects, which are
  835. Xin most cases of textual nature. To preserve diskspace,
  836. Xonly differences
  837. Xbetween successive versions are kept (\fIdelta technique\fR).
  838. XThe version control system employs 
  839. Xa new delta technique [Obst87a],
  840. Xyielding deltas that
  841. Xare about 30 percent smaller than deltas generated by \fIdiff\fR
  842. X(the standard 
  843. X.UX
  844. Xcomparison tool for generating deltas).
  845. X.PP
  846. XBinary pools are designed to hold \fIderived\fR objects, i.e. objects
  847. Xthat are produced by processing (transforming, compiling) of source
  848. Xobjects. Since derived objects can be reproduced from a corresponding
  849. Xsource object, binary pools are administered in a cache fashion,
  850. Xi.e. when space runs short, binaries are cleaned out on a \(lqleast
  851. Xaccessed\(rq basis. The concept of binary pools resembles
  852. XDSEE's \fIderived object pools\fR.
  853. X.PP
  854. XSimilar to other version control systems, history files generally
  855. Xaccompany a regular file, the so called workfile. In the context of
  856. X\*(sh and AFS, we use the term \fIbusy object\fR, instead of
  857. Xworkfile.  Busy objects are regular files, thus making it
  858. Xpossible to use tools, such as the EMACS editor, which don't know
  859. Xabout the AFS.  Access to non busy objects however, can only be
  860. Xestablished through the AFS interface, because usually they must
  861. Xfirst be regenerated from the information stored in the corresponding history
  862. Xfile. When a saved version is opened, the I/O operations
  863. Xwill actually access a temporarily created file. All the action
  864. Xhappens \- of course \- behind the scenes, and an AFS application
  865. Xaccesses busy objects as well as all other versions transparently
  866. Xthrough the same mechanism.
  867. X.PP
  868. XThe attributes of all version instances of an object, including the
  869. Xbusy object, are stored in the history file. Attributes of derived
  870. Xobjects are stored in the binary pool file that hosts them.
  871. X.PP
  872. XEvery regular file can be accessed through the AFS.  In this case, it
  873. Xwill be treated as a busy object without AFS specific or user-defined
  874. Xattributes.  If such a file is checked into the version control system
  875. Xfor instance, a history file will be created, and the missing standard
  876. Xattributes will be supplemented in a meaningful manner.
  877. X.NH 2
  878. XAFS on top of \*(Da
  879. X.PP
  880. XA second implementation of AFS on top of \*(Da, a dedicated software
  881. Xengineering database (prototype) is currently under way.
  882. X\*(Da is based on an \fIextended entity relationship model\fR and designed 
  883. Xto serve as universal data management system for a large set of tools
  884. Xto be part of an integrated programming environment.
  885. X.PP
  886. XThe fact that the various tools are supposed to store their data in a
  887. Xtool specific structure (of entities and relationships) leads to
  888. Xsome serious problems. First, opening of an ASO containing application
  889. Xspecific \*(Da structures must yield an object specific key rather
  890. Xthan a
  891. X.UX
  892. Xfile pointer. Second, simple operations such as copying,
  893. Xmoving, or printing of object contents are representation dependent and
  894. Xcan't be performed by the AFS any more. In particular, there is no easy
  895. Xway for AFS to compute \fIversion deltas\fR between \*(Da object structures
  896. X(how should this kind of delta look like ?).
  897. X.PP
  898. XAnother very practical problem is extensibility. In the current state,
  899. Xa \*(Da database has \fIone\fR schema that defines the internal
  900. Xstructure of the entire database.  Addition of a new tool with the
  901. Xnecessity of schema updates requires the generation of a new database
  902. Xand the (troublesome) transfer of all data from the old database to
  903. Xthe new one.  Due to these problems and the current lack of of \*(Da
  904. Xbased tools, we decided to use the database only as replacement 
  905. Xfor archive\- and binary pool files.
  906. XBusy objects and temporary files (containing the data of
  907. Xreconstructed older versions) are still stored in the
  908. X.UX
  909. Xfilesystem.
  910. XAFS applications have no direct access to the database.  Similar to
  911. Xthe filesystem implementation, the contents of an ASO has the form of
  912. Xa byte array.  Until now, there is no substantial difference between this
  913. Ximplementation and the filesystem implementation \(em except that it
  914. Xwill be slower.
  915. X.PP
  916. XA solution to the described problems that will allow AFS applications
  917. Xto take full advantage of \*(Da' structuring facilities while
  918. Xsupporting the dynamic extension of the SPU without the necessity to
  919. Xchange or even recompile any part of the environment, can be found by
  920. Xtaking a consequently object oriented approach.  The design of an
  921. Xobject oriented AFS to be basic part of an object oriented \fIenvironment
  922. Xframe\fR is currently in its early stage. However, we expect substantial
  923. Xresults in this direction in the near future.
  924. X.NH 1
  925. XConclusion
  926. X.PP
  927. XThe described system for engineering of software configurations
  928. Xintegrates tools for version control, system building, and
  929. Xproject organization on top of a common object concept. Despite the
  930. Xintegration of the toolkit itself, care has been taken to smoothly fit
  931. Xthe SCE system into the standard
  932. X.UX
  933. Xenvironment. The entry cost for
  934. Xnew users (in terms of initial learning effort) is very low. The
  935. Xsystem may be used as just a friendly version control tool, an upward
  936. Xcompatible replacement for Make, or an intelligent integration of
  937. Xboth.  Utilization of the toolkit can be gradually extended up to a
  938. Xnetwork based project support environment, employing a number of
  939. Xprogrammer teams working on large software development and maintenance
  940. Xprojects.
  941. X.PP
  942. XThe simple, 
  943. X.UX-like
  944. Xnature of the toolkit's basic user interface
  945. Xoffers a broad range of possibilities to create dedicated user interfaces
  946. Xthat provide an integrated, problem oriented view of the SCE system.
  947. X.PP
  948. XThere are, however, a number of areas where much more work needs to
  949. Xbe done. Particularly, powerful formalisms to deal with the complexity
  950. Xof variant control are still at large. The use of software engineering
  951. Xdatbases as underlying data storage system is still a problem. However,
  952. Xthe use of object oriented design principles for a new version of the 
  953. Xsystem is expected to overcome these problems and to open up exciting
  954. Xperspectives for a \(lqgeneric, integrated, open software engineering
  955. Xtoolkit environment\(rq.
  956. X.NH 1
  957. XAcknowledgement
  958. X.PP
  959. XThis work is part of the \*(Un project. The project is supported by the
  960. XBundesministerium f\*:ur Forschung und Technologie 
  961. X(Federal Ministry for Research and Technology) under grant ITS 8308.
  962. X.]<
  963. X.\"AUGMAKE-1983-1
  964. X.ds [F AUGM83a
  965. X.]-
  966. X.ds [A AUGMAKE
  967. X.ds [T An Augmented Version of Make
  968. X.ds [J System V/68 Support Tools Guide
  969. X.ds [I Motorola Microsystems Inc., Ord.No. M68KUNSTG/D1
  970. X.ds [P 21-40
  971. X.nr [P 1
  972. X.ds [D January 1983
  973. X.nr [T 0
  974. X.nr [A 0
  975. X.nr [O 0
  976. X.][ 1 journal-article
  977. X.\"Bersoff.E.H.-1980-2
  978. X.ds [F Bers80a
  979. X.]-
  980. X.ds [A Edward H. Bersoff
  981. X.as [A ", Vilas D. Henderson
  982. X.as [A ", and Stanley G. Siegel
  983. X.ds [T Software Configuration Management
  984. X.ds [I Prentice Hall
  985. X.ds [C Englewood Cliffs, N.J.
  986. X.ds [D 1980
  987. X.nr [T 0
  988. X.nr [A 0
  989. X.nr [O 0
  990. X.][ 2 book
  991. X.\"Clemm.G.M.-1986-3
  992. X.ds [F Clem86a
  993. X.]-
  994. X.ds [A Geoffrey M. Clemm
  995. X.ds [T The Odin System: An Object Manager for Extensible Software Environments
  996. X.ds [J CU-CS-314-86
  997. X.ds [I The University of Colorado
  998. X.ds [C Boulder, Colorado
  999. X.ds [D February 1986
  1000. X.nr [T 0
  1001. X.nr [A 0
  1002. X.nr [O 0
  1003. X.][ 1 journal-article
  1004. X.\"DECCMS-1984-4
  1005. X.ds [F DECC84a
  1006. X.]-
  1007. X.ds [A DECCMS
  1008. X.ds [T VAX DEC/CMS 2.0 Reference Manual
  1009. X.ds [J VAX DEC/CMS Reference Manual, Order No. AA-L372B-TE
  1010. X.ds [I Digital Equipment Corporation
  1011. X.ds [C Maynard, Massachusetts
  1012. X.ds [D November 1984
  1013. X.nr [T 0
  1014. X.nr [A 0
  1015. X.nr [O 0
  1016. X.][ 1 journal-article
  1017. X.\"DECMMS-1984-5
  1018. X.ds [F DECM84a
  1019. X.]-
  1020. X.ds [A DECMMS
  1021. X.ds [T VAX DEC/MMS 2.0 User's Guide
  1022. X.ds [J VAX DEC/MMS User's Guide, Order No. AA-P119B-TE
  1023. X.ds [I Digital Equipment Corporation
  1024. X.ds [C Maynard, Massachusetts
  1025. X.ds [D August 1984
  1026. X.nr [T 0
  1027. X.nr [A 0
  1028. X.nr [O 0
  1029. X.][ 1 journal-article
  1030. X.\"Dittrich.K-1986-6
  1031. X.ds [F Ditt86a
  1032. X.]-
  1033. X.ds [A Klaus Dittrich
  1034. X.as [A ", Willi Gotthard
  1035. X.as [A ", and Peter C. Lockemann
  1036. X.ds [T DAMOKLES. A Database System for Software Engineering Environments
  1037. X.ds [J International Workshop on Advanced Programming Environments
  1038. X.ds [P 351-371
  1039. X.nr [P 1
  1040. X.ds [I IFIP WG2.4
  1041. X.ds [I Springer Verlag
  1042. X.ds [C Trondheim, Norway
  1043. X.ds [D June 1986
  1044. X.nr [T 0
  1045. X.nr [A 0
  1046. X.nr [O 0
  1047. X.][ 1 journal-article
  1048. X.\"Dowson.M-1986-7
  1049. X.ds [F Dows86a
  1050. X.]-
  1051. X.ds [A Mark Dowson
  1052. X.ds [T ISTAR - An Integrated Project Support Environment
  1053. X.ds [J Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering
  1054. X.ds [J Symposium on Practical Software Development Environments
  1055. X.ds [J SIGPLAN Notices
  1056. X.ds [V 22, 1
  1057. X.ds [P 16-27
  1058. X.nr [P 1
  1059. X.ds [I ACM
  1060. X.ds [C Palo Alto, California
  1061. X.ds [D December 1986
  1062. X.nr [T 0
  1063. X.nr [A 0
  1064. X.nr [O 0
  1065. X.][ 1 journal-article
  1066. X.\"Estublier.J.-1986-8
  1067. X.ds [F Estu86a
  1068. X.]-
  1069. X.ds [A J. Estublier
  1070. X.as [A " and N. Belkhatir
  1071. X.ds [T Experience with a Database of Programs
  1072. X.ds [J Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering
  1073. X.ds [J Symposium on Practical Software Development Environments
  1074. X.ds [J SIGPLAN Notices
  1075. X.ds [V 22, 1
  1076. X.ds [P 84-91
  1077. X.nr [P 1
  1078. X.ds [I ACM
  1079. X.ds [C Palo Alto, California
  1080. X.ds [D December 1986
  1081. X.nr [T 0
  1082. X.nr [A 0
  1083. X.nr [O 0
  1084. X.][ 1 journal-article
  1085. X.\"Feldman.S.I.-1979-9
  1086. X.ds [F Feld79a
  1087. X.]-
  1088. X.ds [A Stuart I. Feldman
  1089. X.ds [T MAKE - A Program for Maintaining Computer Programs
  1090. X.ds [J Software - Practice and Experience
  1091. X.ds [V 9,3
  1092. X.ds [P 255-265
  1093. X.nr [P 1
  1094. X.ds [D March 1979
  1095. X.nr [T 0
  1096. X.nr [A 0
  1097. X.nr [O 0
  1098. X.][ 1 journal-article
  1099. X.\"Haberman.A.N-1982-10
  1100. X.ds [F Habe82a
  1101. X.]-
  1102. X.ds [A A. Nico Haberman
  1103. X.as [A " and Gail E. Kaiser
  1104. X.ds [T An Environment for System Version Control
  1105. X.ds [J Dig. Papers Spring Compcon
  1106. X.ds [I IEEE
  1107. X.ds [D November 1982
  1108. X.nr [T 0
  1109. X.nr [A 0
  1110. X.nr [O 0
  1111. X.][ 1 journal-article
  1112. X.\"H\*ubner.W.-1987-11
  1113. X.ds [F H\*u87a
  1114. X.]-
  1115. X.ds [A W. H\*ubner
  1116. X.as [A ", G. Lux-M\*ulders
  1117. X.as [A ", and M. Muth
  1118. X.ds [T THESEUS \- Die Benutzungsoberfl\*ache der UNIBASE Softwareentwicklungsumgebung
  1119. X.ds [J Beitr\*age zur Graphischen Datenverarbeitung
  1120. X.ds [I Zentrum f\*ur Graphische Datenverarbeitung
  1121. X.ds [I Springer Verlag
  1122. X.ds [C Berlin
  1123. X.ds [D 1987
  1124. X.nr [T 0
  1125. X.nr [A 0
  1126. X.nr [O 0
  1127. X.][ 1 journal-article
  1128. X.\"IEEE-1983-12
  1129. X.ds [F IEEE83a
  1130. X.]-
  1131. X.ds [A IEEE
  1132. X.ds [T IEEE Standard Glossary for Software Engineering Terminology
  1133. X.ds [I IEEE
  1134. X.ds [C New York, N.Y.
  1135. X.ds [D February 1983
  1136. X.nr [T 0
  1137. X.nr [A 0
  1138. X.nr [O 0
  1139. X.][ 2 book
  1140. X.\"Lampen.A-1988-13
  1141. X.ds [F Lamp88a
  1142. X.]-
  1143. X.ds [A Andreas Lampen
  1144. X.as [A " and Axel Mahler
  1145. X.ds [T An Object Base for Attributed Software Objects
  1146. X.ds [J (to appear in) Proceedings of the Fall 1988 EUUG Conference
  1147. X.ds [I European Unix systems User Group
  1148. X.ds [C Lisbon, Portugal
  1149. X.ds [D October 1988
  1150. X.nr [T 0
  1151. X.nr [A 0
  1152. X.nr [O 0
  1153. X.][ 1 journal-article
  1154. X.\"Lampson.B.-1983-14
  1155. X.ds [F Lamp83a
  1156. X.]-
  1157. X.ds [A B. Lampson
  1158. X.as [A " and E. Schmidt
  1159. X.ds [T Organizing Software in a Distributed Environment
  1160. X.ds [J Proc. of the SIGPLAN 83 Symposium on Programming Language Issues in Software Systems
  1161. X.ds [V 18, 6
  1162. X.ds [P 1-13
  1163. X.nr [P 1
  1164. X.ds [C San Francisco, California
  1165. X.ds [D June 1983
  1166. X.nr [T 0
  1167. X.nr [A 0
  1168. X.nr [O 0
  1169. X.][ 1 journal-article
  1170. X.\"Leblang.D.B.-1984-15
  1171. X.ds [F Lebl84a
  1172. X.]-
  1173. X.ds [A David B. Leblang
  1174. X.as [A " and Robert P. Chase
  1175. X.ds [T Computer-Aided Software Engineering in a Distributed Workstation Environment
  1176. X.ds [J Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering
  1177. X.ds [J Symposium on Practical Software Development Environments
  1178. X.ds [J SIGPLAN Notices
  1179. X.ds [V 19, 5
  1180. X.ds [P 104-113
  1181. X.nr [P 1
  1182. X.ds [I ACM
  1183. X.ds [C Pittsburgh, PA.
  1184. X.ds [D April 1984
  1185. X.nr [T 0
  1186. X.nr [A 0
  1187. X.nr [O 0
  1188. X.][ 1 journal-article
  1189. X.\"Mahler.A-1988-16
  1190. X.ds [F Mahl88a
  1191. X.]-
  1192. X.ds [A Axel Mahler
  1193. X.as [A " and Andreas Lampen
  1194. X.ds [T shape \- A Software Configuration Management Tool
  1195. X.ds [J Proceedings of the International Workshop on Software Version and Configuration Control
  1196. X.ds [I German Chapter of the ACM
  1197. X.ds [I B.G. Teubner
  1198. X.ds [P 228-243
  1199. X.nr [P 1
  1200. X.ds [C Grassau, West-Germany
  1201. X.ds [D January 1988
  1202. X.nr [T 0
  1203. X.nr [A 0
  1204. X.nr [O 0
  1205. X.][ 1 journal-article
  1206. X.\"Marzullo.K-1986-17
  1207. X.ds [F Marz86a
  1208. X.]-
  1209. X.ds [A Keith Marzullo
  1210. X.as [A " and Douglas Wiebe
  1211. X.ds [T Jasmine: A Software System Modelling Facility
  1212. X.ds [J Proceedings of the ACM SIGSOFT/SIGPLAN Software Engineering
  1213. X.ds [J Symposium on Practical Software Development Environments
  1214. X.ds [J SIGPLAN Notices
  1215. X.ds [V 22, 1
  1216. X.ds [P 121-130
  1217. X.nr [P 1
  1218. X.ds [I ACM
  1219. X.ds [C Palo Alto, California
  1220. X.ds [D December 1986
  1221. X.nr [T 0
  1222. X.nr [A 0
  1223. X.nr [O 0
  1224. X.][ 1 journal-article
  1225. X.\"Nicklin.P.J.-1983-18
  1226. X.ds [F Nick83a
  1227. X.]-
  1228. X.ds [A Peter J. Nicklin
  1229. X.ds [T The SPMS Software Project Management System
  1230. X.ds [I UC Berkeley
  1231. X.ds [C Berkeley, CA.
  1232. X.ds [D August 1983
  1233. X.nr [T 0
  1234. X.nr [A 0
  1235. X.nr [O 0
  1236. X.][ 2 book
  1237. X.\"Obst.W-1987-19
  1238. X.ds [F Obst87a
  1239. X.]-
  1240. X.ds [A Wolfgang Obst
  1241. X.ds [T Delta Technique and String-to-String Correction
  1242. X.ds [J Proceedings of the 1st European Software Engineering Conference
  1243. X.ds [J Lecture Notes in Computer Science
  1244. X.ds [P 69-73
  1245. X.nr [P 1
  1246. X.ds [I Springer Verlag
  1247. X.ds [C Berlin
  1248. X.ds [D September 1987
  1249. X.nr [T 0
  1250. X.nr [A 0
  1251. X.nr [O 0
  1252. X.][ 1 journal-article
  1253. X.\"Perry.D.E.-1987-20
  1254. X.ds [F Perr87a
  1255. X.]-
  1256. X.ds [A Dewayne E. Perry
  1257. X.ds [T Version Control in the Inscape Environment
  1258. X.ds [J Proceedings of the 9th International Conference on Software Engineering
  1259. X.ds [I IEEE
  1260. X.ds [P 142-149
  1261. X.nr [P 1
  1262. X.ds [C Monterey, California
  1263. X.ds [D March 1987
  1264. X.nr [T 0
  1265. X.nr [A 0
  1266. X.nr [O 0
  1267. X.][ 1 journal-article
  1268. X.\"Rochkind.M.J.-1975-21
  1269. X.ds [F Roch75a
  1270. X.]-
  1271. X.ds [A Marc J. Rochkind
  1272. X.ds [T The Source Code Control System
  1273. X.ds [J IEEE Transactions on Software Engineering
  1274. X.ds [V SE-1
  1275. X.ds [P 364-370
  1276. X.nr [P 1
  1277. X.ds [D 1975
  1278. X.nr [T 0
  1279. X.nr [A 0
  1280. X.nr [O 0
  1281. X.][ 1 journal-article
  1282. X.\"Tichy.W.F.-1985-22
  1283. X.ds [F Tich85a
  1284. X.]-
  1285. X.ds [A Walter F. Tichy
  1286. X.ds [T RCS - A System for Version Control
  1287. X.ds [J Software - Practice and Experience
  1288. X.ds [V 15,7
  1289. X.ds [P 637-654
  1290. X.nr [P 1
  1291. X.ds [D July 1985
  1292. X.nr [T 0
  1293. X.nr [A 0
  1294. X.nr [O 0
  1295. X.][ 1 journal-article
  1296. X.\"Tichy.W.F.-1988-23
  1297. X.ds [F Tich88a
  1298. X.]-
  1299. X.ds [A Walter F. Tichy
  1300. X.ds [T Tools for Software Configuration Management
  1301. X.ds [J Proceedings of the International Workshop on Software Version and Configuration Control
  1302. X.ds [P 1-20
  1303. X.nr [P 1
  1304. X.ds [I B.G. Teubner
  1305. X.ds [I German Chapter of the ACM
  1306. X.ds [C Grassau, FRG
  1307. X.ds [D January 1988
  1308. X.nr [T 0
  1309. X.nr [A 0
  1310. X.nr [O 0
  1311. X.][ 1 journal-article
  1312. X.\"Waite.W.M.-1988-24
  1313. X.ds [F Wait88a
  1314. X.]-
  1315. X.ds [A William M. Waite
  1316. X.as [A ", V. P. Heuring
  1317. X.as [A ", and Uwe Kastens
  1318. X.ds [T Configuration Control in Compiler Construction
  1319. X.ds [J Proceedings of the International Workshop on Software Version and Configuration Control
  1320. X.ds [I German Chapter of the ACM
  1321. X.ds [I B.G. Teubner
  1322. X.ds [P 228-243
  1323. X.nr [P 1
  1324. X.ds [C Grassau, West-Germany
  1325. X.ds [D January 1988
  1326. X.nr [T 0
  1327. X.nr [A 0
  1328. X.nr [O 0
  1329. X.][ 1 journal-article
  1330. X.]>
  1331. END_OF_FILE
  1332. if test 49291 -ne `wc -c <'papers/boston.ms'`; then
  1333.     echo shar: \"'papers/boston.ms'\" unpacked with wrong size!
  1334. fi
  1335. # end of 'papers/boston.ms'
  1336. fi
  1337. echo shar: End of archive 31 \(of 33\).
  1338. cp /dev/null ark31isdone
  1339. MISSING=""
  1340. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
  1341.     if test ! -f ark${I}isdone ; then
  1342.     MISSING="${MISSING} ${I}"
  1343.     fi
  1344. done
  1345. if test "${MISSING}" = "" ; then
  1346.     echo You have unpacked all 33 archives.
  1347.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1348. else
  1349.     echo You still need to unpack the following archives:
  1350.     echo "        " ${MISSING}
  1351. fi
  1352. ##  End of shell archive.
  1353. exit 0
  1354.