comp.software-eng archive file "blurb/shapetools" last changed 26 Jan 1993 This file contains information on the following subjects. Numbers in column 1 count distinct messages with the corresponding subject. 1 ShapeTools ------------------------------------------------------------------------ Date: Sat, 13 Jun 92 18:49:14 +0200 From: axel@avalanche.cs.tu-berlin.de (Axel Mahler) Subject: ShapeTools Axel Mahler, Tech.Univ. Berlin E-Mail: axel@cs.tu-berlin.de (axel@db0tui62.bitnet) Voice: +49-30-314-73487 ShapeTools-1.3 released, May 19th 1992 This is to announce the availability of ShapeTools-1.3, a new major release of the ShapeTools software configuration management toolkit. The rest of this message consists of eight sections: - What is ShapeTools ? - What is New in ShapeTools-1.3 ? - ShapeTools vs. RCS - CVS - Make - Does ShapeTools Run on My System ? - Is ShapeTools a Product ? - Is ShapeTools in Use ? How Mature is it ? - How to Get ShapeTools ? - Contact What is ShapeTools ? The shape toolkit - we call it ShapeTools - is an integrated set of UNIX commands to establish effective control over the intricacies of the change process during software development. It consists of six subsystems: * Source Repository - the Attributed File System (AtFS) allows transparent access to regular UNIX files as well as versions of files. Files and versions can be associated with attributes of any length and any type. The repository can be accessed from the Shell command level as well as via a C-library interface. * Version Control - a set of programs to save, restore, list, find, view, compare, and administer versions of files in various ways. File- and version attributes can be set, altered, and queried. Versions and files can be retrieved and accessed by name or by arbitrary attribute patterns. * Build Driver - the shape program is a Makefile compatible build driver. Programs (and other aggregates) can be build from regular files and/or file versions that reside in the AtFS repository. The component versions that are made part of a configuration are dynamically selected according to version selection rules. Shape also maintains a derived object cache that accounts for a significant build speedup in cooperative software development projects. * Emacs Interface - A "shapetools-mode" has been made part of the ShapeTools-1.3 distribution. It allows to browse the object repository in "dired"-style, and to perform various actions on files and versions in pseudo direct manipulation. One may find this interface useful or not, but it demonstrates how ShapeTools functions can be transparently integrated into different development environments. * Release Management System - ShapeTools' very own release management system has been documented, and included into the ShapeTools-1.3 distribution. It supports the management of multi-person, workstation network based development projects, with a tree-structured source organization. A library of predefined version selection rules, variant definitions, standard targets, and Makefile- and Shapefile templates that is shared among the members of a project team, makes writing of control files trivial, and unobtrusively enforces certain standard procedures and project conventions (such as locking policies, release procedures on component and system level, or product naming conventions). Although probably useful for many small and medium software projects, the ShapeTools release management system should not be seen as a product per se. The RMS demonstrates how higher order, project oriented functionality is implemented from lower level SCM tooklit functionality. Other projects may want to develop their own RMS or alter the supplied one. * Tutorial - A somewhat extensive tutorial helps to get started with ShapeTools and shows how to approach problems in the troublesome field of software configuration management. It's a toolkit! One of ShapeTools' principal design goals was to develop a software configuration management toolkit that can be easily integrated into various development environments. The individual programs have been carefully designed to fit the UNIX tool philosophy of orthogonal tools that can be easily combined via pipes or command scripts. The integration of SCM functionality in other types of environments (e.g. with graphical UIs) is straightforward. What is New in ShapeTools-1.3 ? Most important about the new release is the inclusion of a rather extensive tutorial. Please forgive us that we could only supply a PostScript version of it. Even more important, although less visible, is the rewrite of most important parts of the shape program. Shape now employs a new concept of derived object management, based on the notion of ``derivation keys'' (see the tutorial for details). The net result is a much more powerful, reliable, and understandable build process. Shape is now able to perform almost all jobs it was always supposed to do, but failed to. Beside numerous bug fixes, there are only few spectacular changes to the version control system. We think the most important changes concern the ``vl'' program. It works much more reliably when called recursively. vl's report generation capabilities have been substantially enhanced: watch out for the ``-format'' and ``-since'' options. The set of version control tools has been extended by ``rcs2atfs'', a utility that converts RCS version archives into ShapeTools' AtFS archive files. The first prototype of ShapeTools' release management system has been very much refined. The new RMS version is not upward compatible to the release management that was distributed with ShapeTools-1.2 - sorry! The good news is that the RMS has been documented and comes with a complete set of man-pages. These were the highlights. There have also been countless small improvements that I won't mention here. ShapeTools vs. RCS - CVS - Make The development of ShapeTools began in 1987. It was strongly inspired by RCS and Make. Many of the version control functions are modeled after RCS functions. Shape, the build driver tool, was designed to be upward compatible to Make, so that people can use their old Makefiles for a start and smoothly convert to shape's more advanced features. Both, Make and RCS are magnificent UNIX tools. We think it was a good idea to integrate the concepts of two of UNIX finest tools in order to obtain a useful, and powerful software configuration management system. Everyone who ever tried to integrate Make and RCS knows that this is an extremely tedious job, although it tends to look straightforward on first glance. It is just about impossible to have Make dynamically identify "the right" RCS versions for a build, check them out and compile them. The main problem is that version Ids must be known in advance. RCS on the other hand also has some shortcomings: the set of version attributes is limited, the numbering scheme is bizarre as soon as branches occur, especially rlog's command line interface is somewhat unconventional (it didn't match our taste), and there is no programmatic interface to the version base. With the development of ShapeTools, all these shortcomings have been resolved. CVS is a front end to RCS that tries to overcome the described problems in its own way. Its main purpose is to support multi person development projects. CVS allows to define sets of source objects that belong together, form subsystems. The basic change control model of CVS is branch-and-merge on (sub-)system level: in order to modify a source, a CVS user checks out the entire subsystem, makes his modifications, tests them and checks them back in, perhaps defining a new version of the system (not just the components). Other users may check out the set of sources simultaneously, thus forking off branches in the histories of the modified objects. Upon checkin, these branches can be automatically merged back into the main line of the components' development histories. The most important problem with the "branch-and-merge" development model is its reliance on textual merging. Although textual merging is perfectly capable of detecting overlapping changes that must be reconciled manually, it may merge syntactically, or - even worse - semantically incompatible changes. If these changes don't overlap, the merge program may not notice the conflict and eventually produce a semanticaly corrupt source that no single user has ever seen, and thus may be hard to comprehend and fix. Despite this conceptual problem with textual merging, the approach - if used with care - can work in a very productive manner. It has been used successfully in many development projects, and is even employed as the underlying change control model in some commercial development environments (mixed success reports, though). Shape in contrast supports a style of co-working that reserves just those components that one actually wants to modify. Everything else is left available in the repository. A source object reserved by one user cannot be modified by another user unless the lock is given up. Shape does not really support a branch-and-merge style of development. Shape's ability to build objects right from the shared repository has a different strength instead: the shape user can flexibly specify which versions of all other (i.e. non reserved) components shall be included in a particular program build. Such build requests could, for example, specify ``all objects that have been reserved by myself, and the last official release of all other components''. An even more specific build request could ask for the ``most recent versions that have passed quality assurance, or - if not available - versions from the last release''. Shape dynamically selects those versions for a build that match the specified requirements at a certain point in time. The possibility to define rules that describe build requirements, and to switch between various rules upon shape invocations provides considerable freedom in designing development models. Does ShapeTools Run on My System ? ShapeTools is a UNIX based toolkit. It runs on most common UNIX systems. The 1.3 release provides 8 "canned" configurations allowing smooth installation on the following platforms: -- AIX (tested on IBM RS6000 with AIX 3.1) -- BSD 4.3 (tested on DEC microVax II with BSD 4.3) -- HP/UX (tested on HP 9000 with HP/UX 7.0) -- IRIX (tested on Silicon Graphics with IRIX 3.3.1) -- mach (tested on NextStation with NeXT Mach 2.1) -- SunOS (tested on SUN 4 with SunOs 4.1.2) -- System V Release 3 (tested on Interactive UNIX 2.2) -- Ultrix (tested on DECStation 3100 with Ultrix 4.0) Where no canned configuration is applicable, some minor adaptations may be necessary (mostly in the fully automatic installation procedure). A short guide to porting ShapeTools to new platforms is part of the release. Is ShapeTools a Product ? The shape toolkit is one of the byproducts of two research projects funded by the german federal ministry for research and technology (BMFT). The two projects UniBase (1985-1988) and STONE (1989-1993) have been/are concerned with the development of software development environment (SDE) technology, and the construction of an SDE system especially suited for the education of CASE engineers, respectively. ShapeTools is not a commercial product, but the result of the above mentioned research projects. The software is publicized as "freeware", i.e. the source code may be distributed freely but must not be sold for profit. See the ShapeTools LICENSE for the exact terms. Is ShapeTools in Use ? How Mature is it ? The beta releases of ShapeTools-1.3 (there were plenty of them) have been in production use in several industrial and academic software development projects. Intensive beta-testing has resulted in a considerable maturity gain for the shape toolkit, especially the shape program. Shape has been successfully used for complex software manufacture processes, employing code generation tools, and multi-level implicit dependencies (i.e. chaining of complex production rules). How to Get ShapeTools ? ShapeTools is distributed via anonymous ftp. We also plan to release it through comp.sources.reviewed, but this may take a while. The distribution consists of a compressed tar-archive (881599 bytes). The master site for ShapeTools is "coma.cs.tu-berlin.de" (pub/shapeTools/shapeTools-1.3.tar.Z). Other sites that usually carry up-to-date versions of ShapeTools are: gatekeeper.dec.com scam.berkeley.edu ftp.uni-koeln.de There are probably more sites that will carry ShapeTools-1.3. Use the archie program to find the ftp site next to you. In case you're interested in using shape, make sure you have ShapeTools-1.3 and nothing less. If you don't have ftp access, try to find a mail server (I know that gatekeeper.dec.com offers such a service). In case nothing works properly, you can send us a blank medium (preferably 3.5'' floppy disk, SparcStation format (identical to PC format)). Other media that we can handle are Sun streamer cartridge, ExaByte/V8 cartridge, 1600 bpi std magtape. Send the blank medium and a self addressed return envelope to the address given below. Contact If you feel the need to get in touch with the shape people, send mail to "shape@cs.tu-berlin.de" or join the shape mailing list by sending a mail message to "listserv@tubvm.cs.tu-berlin.de", no subject, just one line, saying: "sub shape-l firstname surname". Our surface mail address is: Shape TU-Berlin Sekr. FR 5-6 Franklinstr. 28/29 D-1000 Berlin 10 Germany