Configuration Management in a Hypermedia-Based Software Development Environment Tien N. Nguyen
Ethan V. Munson
John T. Boyland
Dept. of EECS Univ. of Wisconsin, Milwaukee
Dept. of EECS Univ. of Wisconsin, Milwaukee
Dept. of EECS Univ. of Wisconsin-Milwaukee
[email protected]
[email protected]
[email protected]
ABSTRACT Several researchers have explored the use of hypermedia technology in software development environments (SDEs). However, existing hypermedia-based SDEs have only limited support for the evolutionary aspects of software projects. On the other hand, commercial software configuration management systems (SCMs) have had noticeable success in helping developers manage system evolution. While researchers in the hypermedia community acknowledged the need for strong version control support in their systems, they are still far from achieving this goal. The Software Concordance (SC) project is developing a SDE to experiment with the use of versioned hypermedia services for managing software documents and their logical relationships. This paper describes our versioned hypermedia framework in which hypermedia services are built on top of a SCM system and provides uniform version control supports for both software documents and their relationships. Categories and Subject Descriptors D.2.6 [Software Engineering]: Programming Environments; H.5.4 [Information Interfaces and Presentation]: Hypermedia General Terms: Documentation, Management. Keywords: software engineering, hypermedia, configuration management, version control.
1.
INTRODUCTION
Hypermedia technology provides a very natural means to represent and to manage the relationships among software documents produced during the full software life cycle. Several researchers have been investigating the use of hypermedia technology in software development environments (SDEs) [1, 4, 12, 13]. They have been particularly successful in making the relationships among software documents browsable, allowing developers to quickly access important information about logical connections among software documents [5]. However, because software projects are constantly evolving, the evolution of document relationships must be represented well for developers to have a full understanding of the system. Unfortunately, existing hypermedia-based SDEs provide only limited support for the evolutionary aspects of a software project. Most of the versioning frameworks for open hypermedia systems [6, 7, 8] are not particularly designed for SDEs, while the Chimera versioning proposal [14] has not been implemented. This research was supported by the U. S. Department of Defense, NASA and by NSF CAREER awards CCR-9734102 and CCR9984681. Copyright is held by the author/owner. HT’03, August 26–30, 2003, Nottingham, United Kingdom. ACM 1-58113-704-4/03/0008.
Software configuration management (SCM) systems successfully support version control for software artifacts, but most of them pay little attention to the management of relationships among configuration components, let alone the evolution of these relationships [9]. Researchers in the versioned hypermedia community have acknowledged several advantages that a SCM system could bring to versioned hypermedia systems [2, 15]. For example, it would allow hypertext to be applied to much larger software development efforts, and could better support version control for data objects. However, their systems are still far from creating a common framework for versioned hypermedia and SCM. The Software Concordance (SC) project is developing a SDE for experimenting with the use of versioned hypermedia technology to manage software documents and their logical relationships. Our research has built a framework in which hypermedia services are supported by a product versioning SCM system [10]. The current prototype supports fine-grained HTML-style hyperlinks between any fragment of any supported document. Both Java program source code and documentation in XML are uniformly represented and versioned in a fine-grained manner.
2. THE SC FRAMEWORK This section describes the versioned hypermedia framework of the SC system. The principle of the framework is that all hypermedia system objects, including hyperlinks and hypertext structures, are versioned in a uniform global version space across a software project. Unlike the hypertext version control framework [8] and the Chimera versioning proposal [14], the SC framework considers versioned hypermedia to be an application based on version and configuration management services. A state-based product versioning SCM system [10] has been built to provide these services.
2.1 The Fluid/SC CM system This section describes the essential concepts of our SCM system. The data and version model of the system are based on the Fluid internal representation [3]. There are two basic notions: nodes and slots. A node is the basic unit of identity and is used to represent objects. A slot is a location that can store a value, possible a reference to a node. A slot can exist in isolation but more typically slots are attached to nodes, using an attribute. An attribute is a mapping from nodes to slots. The data model can thus be regarded as an attribute table whose rows correspond to nodes and columns correspond to attributes. The cells of the table are slots. Once we add versioning, the table gets a third dimension: the version. In our model, a version is a point within a notional concept of tree-structured discrete time and is global across the whole project. The current version is the version designating the current state of the project. Any version may be made current. When a version is
1 2 4
1 3
1
2
5
sion a
2
3 4
5'
sion b
2
(ac) (ac) (b)
c
sion history
4
5 id/SC t
6
(ab)
3
(c)
5'
5 sion c
1
(abc)
a b
pose that we have two documents: doc1 and doc2, connected as in Figure 2. At version v1, A links to B, B links to D, and D links to C. Suppose that now node A points to node C, and a new version v2 is created. That is, at the version v2, the value of the href attribute of node A is “doc2#c”. It means that the link between A and B is no longer present at v2, while C can be reached directly from A now. This implies that no version selection rules are involved in hypertext structure versioning. Depending on the current version, the right destination node of a link is implicitly determined.
6
versioning
3. CONCLUSION
Figure 1: Versioning for Document Trees
c2#b"
A
(v1)
c1#d"
anchor="b"
c2#c" anchor="d"
D
1
(v1)
erte structure (v1) (v1,v2)
c2#c" anchor= "d"
(v2)
B
D
C
anchor="c"
c2#c"
D
A
(v1)
A
B
1
(v1,v2)
C !
B
v1
the change
c1#d"
anchor="b"
A
B
4. REFERENCES
anchor="c"
C
We have described a framework that builds versioned hypermedia services on top of a product versioning SCM system. The current prototype shows promising results. Since no version selection rules are involved in hypertext structure versioning, less overhead is imposed as users navigate through the versioned hypermedia space. A more complex versioned hypermedia system has been designed in which hyperlinks are multiheaded first-class objects and a hypertext structure is represented by a graph-based composite component in our SCM framework. Graph-based composite components are versioned in the same manner as versioning of document trees described earlier.
D
erte structure after the change
C v2
Figure 2: Versioning for Hypertext Structure
made current, slots get the proper values for that version. A configuration management and project versioning support layer is built on top of the version model. The basic entity of this layer is a component, which is a logical unit that exists within the version space of a software project. A component may be a document, a class, a package, a module, a file, a directory, or an object depending on the development methodology being used. This framework provides infrastructure for software documents and relationships to be represented and versioned.
2.2 Document versioning Our research has developed a uniform structured document representation for Java program source code and documentations in XML [11] based on the Fluid IR model. The representation allows for a uniform editor for both types of documents and for an integration between editing, hypermedia, and program analysis services. Since structured documents are treated as components in the Fluid/SC CM system, they are versioned in a fine-grained manner. The details of tree-based versioning are illustrated in Figure 1. For example, document A has three versions: a, b, and c. Versions b and c are branching off version a. Version b has two differences from the version a: node 4 was deleted and the content of node 5 was changed. Version c has an inserted node (node 6) and node 3 was deleted. In the product versioning approach, each structural link can be considered to be versioned. For example, following a version label, the shape of the tree at that version is exposed.
2.3 Hypertext structure versioning A hyperlink and an anchor are represented by an href attribute and an anchor attribute, respectively. Hypertext structure is versioned in the same manner as versioning for document trees. Sup-
[1] Maurice Amsellem. ChyPro: A hypermedia programming environment for SmallTalk-80. In Proceedings of ECOOP’95, August 1995. [2] L. Bendix, Antonina Dattolo, and Fabio Vitali. Software configuration management in hypermedia engineering. Handbook of Software Engineering and Knowledge Engineering, 1, 2001. [3] John Boyland, Aaron Greenhouse, and William L. Scherlis. The Fluid IR: An internal representation for a software engineering environment. In preparation. For information see http://www.fluid.cs.cmu.edu. [4] Cybulski and Reed. A Hypertext Based Software Engineering Environment. IEEE Software, 9(2):62–68, March 1992. [5] P. Devanbu, Y.-F. Chen, E. Gansner, H. M¨uller, and J. Martin. CHIME: customizable hyperlink insertion and maintenance engine for software engineering environments. In Proceedings of the ICSE’99, pages 473–482, 1999. [6] Jon Griffiths, David Millard, Hugh Davis, Danius Michaelides, and Mark Weal. Reconciling versioning and context in hypermedia structure servers. In Proceedings of the 1st International Metainformatics Symposium, 2002. [7] Wendy Hall, Gary Hill, and Hugh Davis. The Microcosm link service. In Proceedings of the fifth ACM conference on Hypertext, pages 256–259. ACM Press, 1993. [8] David L. Hicks, John J. Leggett, Peter J. N¨urnberg, and John L. Schnase. A hypermedia version control framework. ACM Transactions on Information Systems (TOIS), 16(2):127–160, 1998. [9] Tom Morse. CVS. Linux Journal, 1996(21es):3, 1996. [10] Tien N. Nguyen, Ethan V. Munson, and John T. Boyland. State-based product versioning in the Fluid/SC CM system. Submitted to the 2003 Automated Software Engineering Conference (ASE’03). [11] Tien N. Nguyen, Satish Gupta, Ethan V. Munson, and John T. Boyland. A Unified Approach to Software Document Management. Submitted to the 2003 ACM Symposium of Document Engineering. [12] Kasper Østerbye. Literate SmallTalk using hypertext. IEEE Transactions on Software Engineering, 21(2):138–145, 1995. [13] Kasper Østerbye and Kurt Nørmark. An interaction engine for rich hypertext. In ECHT ’94, Proceedings of the 1994 ACM European conference on Hypermedia technology, pages 167–176, 1994. [14] Jim Whitehead. A proposal for versioning support for the Chimera system. In Proceeedings of the Workshop on Versioning in Hypertext Systems. ACM Press, 1994. [15] Jim Whitehead. SCM and Hypertext Versioning: A Compelling Duo. Position paper for the Sixth International Symposium on Software Configuration Management, SCM-6. Springer, 1996.