Domain Modeling for Software Reuse and Evolution
Example feature-object dependencies:
(Sending Real Time Commands Feature supported-by Real-Time_Command_Data_Store_OS optional)
Sending Real Time Commands Feature supported-by Satellite_Bound_Command_Problem_
Sending Real Time Commands Feature supported-by Satellite_Bound_Real_Time_Command_
Example inter-feature dependency
(Verifying Real Time Commands Feature requires Sending Real Time Commands Feature)
Figure 6: Example Feature/Object and Inter-Feature Dependencies from Payload Operations Control Center Domain
An environment which allows the generation of target systems from a domain model is referred to in this paper as a domain modeling environment. Such environments are also called application generators and software system generators . These generators are usually highly domain-specific as they have the structure and code for the application domain built into them. In addition, they provide a means of adapting the code to generate a specific target system, either by means of parameterization or a by a user program written in a domain-specific language. A goal of this research is to have an application-domain-independent domain modeling method and environment to support the specification of a family of systems. An overview of the environment is provided in the next section.
Figure 4: State Transition Diagram from Payload Operations Control Center Domain
The EDLC and the domain modeling concept represent a radically different paradigm for software development compared to the traditional waterfall model. The objectives of the prototype domain modeling environment are: a) provide application-domain-independent tool support to represent the multiple graphical views supported by the domain modeling method, b) provide a consistency checking capability across the multiple views, c) map the multiple views to an integrated underlying representation, stored in an object repository, and d) generate target system specifications automatically from the domain model.
Since limited resources were available for prototype construction,
the proof-of-concept experiment was constrained as follows: a) for domain
modeling, we provide support for the domain analysis and specification phases
of the EDLC, and b) for target system generation we support the generation
of the target system specification phase. This phase was a good candidate
for a knowledge-based approach, as the procedures for target system generation
could be expressed as rules which could be prototyped rapidly.
Because of limited resources and the desire to focus on
the innovative aspects of the domain modeling environment, commercial-off-the-shelf
(COTS) software was used whenever possible. We believe that the tools discussed
below represent another important aspect of reuse, and feel that open architectures
and standards are essential to fostering large-scale reuse of software.
User Interface Management System.
An existing user interface management system is desirable to support a windows,
menu and icon based user interface. NASA's TAE User Interface Management
System was selected to provide an integrated interface to the prototype
CASE Tool. A survey of CASE
tools indicated that there are several that support the popular Structured
Analysis and Real-Time Structured Analysis methods . It was decided
that the domain modeling method should use a graphical notation similar
to that used by Real-Time Structured Analysis, but with a radically different
semantic interpretation of the diagrams supported by the domain modeling
method. Another key requirement was that the CASE tool support an open system
architecture, so that the information contained in the multiple views could
be extracted and processed by custom software tools developed as part of
this project. Interactive Development Environment's (IDE) Software Through
Pictures (StP) was selected, as it satisfies the above two requirements.
Knowledge Based Expert System Shell. NASA's CLIPS expert system shell serves as a basis for implementing
the Knowledge-Based Requirements Elicitation Tool for generating the target
system specifications by tailoring the domain model based on selected features.
Object-Oriented Programming Environment. An object-oriented programming environment is needed to store integrated object specifications in the object repository. Although initially, we considered using an object-oriented database management system, we decided that for the proof-of-concept prototype, it was simpler and sufficient to implement the object repository using the Eiffel object-oriented programming language and system , which supports a persistent object store.
The scope of the prototype environment includes two major phases: 1) development of a domain model specification (Figure 7) and 2) target system specification generation (Figure 8). The tools supporting domain model specification are: a) The Domain Model Graphical Editing tool, b) Domain Model Relations Extractor, c) Domain Model Consistency Checking Tool, d) Domain Object Repository Generator, and e) Feature/Object Editor.
The tools supporting target system specifications generation from the domain model (Figure 8) are as follows: a) Domain-Dependent Knowledge Base Extractor, b) Knowledge-Based Requirements Elicitation Tool (KBRET), and c) Target System Specification Generator.
In this section we discuss each custom-developed
Domain model graphical editing tool. This tool allows the graphical editing of the multiple views of
a domain model. The views are the object type aggregation hierarchy, the
object communication diagrams, state transition diagrams, and object type
generalization/specialization hierarchies. This tool was developed by customizing
the Software through Pictures (StP) CASE tool to support the specification
of the multiple views according to the domain modeling method.
Domain model relation extractor tool. This tool extracts the information contained in the multiple views
of the domain model from StP's TROLL relational data base, interprets the
data semantically according to the domain modeling method, and stores it
in a common underlying relational representation. These relations represent
the data needed by the other environment tools.
Domain model consistency checking tool. The graphical views represented by the OCDs, the AH, the GSHs, and the STDs, each focus on one aspect of the domain being modeled. Although StP provides consistency checking within one particular view, additional consistency checking is required among the multiple views.
The Domain Model Consistency Checker (DMCC) uses a set of scripts written in the Troll/USE query language that check the underlying relations for inconsistencies based on rules defined by the domain modeling method outlined in section 2.
The object repository provides an integrated object-oriented
specification of each object type, the Aggregation Hierarchy, Object Communication
Diagrams, Generalization/Specialization Hierarchies, etc. This repository
is a single composite object that is composed of other objects representing
domain object types, features, and the relationships among them which serve
to define a domain model .
Domain object repository generator. The Domain Object Repository Generator tool takes the information captured in the relational representation and creates corresponding objects according to the object repository's schema.
Figure 7: Development of Domain Model Specification
Figure 8: Generation of Target System Specification
For example, if the domain analyst had created eight object
communication diagrams using StP, the Domain Object Repository Generator
tool would create eight instances of class OCD, the class defining object
communication diagrams. Similarly, this tool will create objects representing
the aggregation hierarchy, generalization/specialization hierarchies, and
state transition diagrams, as well as the domain object types, external
object types, and messages which are represented in these diagrams.
Feature/object editor. After
the object repository representing a domain model has been created, the
domain analyst can use this tool to define the optional features by: 1)
giving each feature a unique name, 2) entering an informal annotation for
each feature, 3) specifying domain object types supporting the feature being
defined, and 4) specifying other prerequisite features required by the feature
being defined. In addition to defining new features, the domain analyst
can use this tool to browse features previously defined for a given domain
model, delete features from the domain model, or modify the definition of
features in a domain model. The Feature/Object Editor can also be used to
establish relationships among sets of features.
Domain-dependent knowledge base extractor. The Domain-Dependent Knowledge Base Extractor tool extracts information
about the domain model from the object repository, formats that information
as facts, in CLIPS, which can then be processed by the Knowledge-Based Requirements
Elicitation Tool (KBRET), and stores those facts in a file for use by that
tool. Facts are created for each domain model object type, feature, and
feature annotations, as depicted in Figure 9. Similarly, facts corresponding
to dependencies among features, dependencies between features and domain
object types, as well as the aggregation and generalization/specialization
hierarchies, are also created.
A target system specification is derived by tailoring the
domain model according to the features desired in the target system. During
the generation of the target system specification, the feature-object dependencies
have to be enforced in order to ensure a consistent specification. A knowledge-based
system called the Knowledge-Based Requirements Elicitation Tool (KBRET)
has been developed to automate the process of generating the specifications
for the target systems. This tool has been implemented in NASA's CLIPS expert
Knowledge-based requirements elicitation tool. The major components of KBRET are 1) the domain-dependent knowledge base, 2) the domain-independent knowledge base and 3) the inference engine. The domain-dependent knowledge base is derived from the object repository through the KBRET-Object Repository Interface, and contains domain-specific information which characterizes the multiple views, object specifications, features and dependencies of a particular domain model for which a target system is desired.
The domain-independent knowledge base contains the procedural and control knowledge required to generate target system specifications from a domain model. This separation between the domain-independent and domain-dependent knowledge is essential for providing scale-up and maintainability. Clearly, the domain-independent knowledge base can be applied to different domain models regardless of their application domain. The knowledge bases consist of knowledge modules (KMs). Each domain-dependent KM consists of a set of related facts derived from the object repository, while each domain-independent KM consists of rules to support its functionality. The inference engine is the underlying forward-chaining production system provided by CLIPS. The KMs are invoked and executed by the inference engine, based on the rules in the domain-independent knowledge base.
Figure 9: Domain Dependent Knowledge Base for the POCC
KBRET accomplishes the task of target system specification
generation in several phases: Browsing, Target System Requirements Elicitation,
Dependency Checking, and Target System Specification Generation. The various
components of KBRET are schematically shown in Figure 10. KBRET is described
further in .
Figure 10: Knowledge-Based Requirements Elicitation Tool
Target system specification generator tool. The graphical views of a target system can be generated automatically from those of the domain model by tailoring the domain model views based on KBRET's output. The specification of a target system is defined in terms of the object types that are to be included in the target system. Using this information, the Target System Specification Generator tool performs the following tasks: 1) Derives the set of object types that are not included in the target system and hence must be removed from the domain model, 2) Generates the graphical views for the target system using the domain model views and the list of the object types to be deleted. The two relations output by KBRET are used in tailoring the StP "picture files" of the domain model to create the target system picture files to be displayed using StP. (StP creates a picture file for each diagram describing the pictorial layout of the diagram), and 3) Modifies the object type names by appending the word Variant to the name of those object types for which a variant, i.e., a specialization, has been selected and the word Variants to those object types for which more than one variant object type has been selected.
The target system engineer may then view the multiple views of the target system using the StP graphical editors.
Figure 11: Aggregation Hierarchy for Spiral Life Cycle Domain
The Spiral Model is a process model conceived by Boehm  to address known problems with earlier process models of the software life cycle, in particular the Waterfall Model. In the spiral model, the radial coordinate represents cost and the angular coordinate represents progress in completion of a cycle of the model. Each cycle involves traversing through four quadrants. The first quadrant is to determine objectives, alternatives, and constraints for the cycle. The second quadrant is a risk analysis and evaluation of alternatives for the cycle. The third quadrant is to develop and verify the next level product. The fourth quadrant involves planning for the next cycle.
The Spiral Model is intended to encompass other life cycle models such as the Waterfall Model, the Incremental Development model, and the Throwaway Prototyping Model. During Risk Analysis, the key characteristics of the project are determined, referred to as process drivers. The process drivers are used to determine which process model is most appropriate for the project. Thus the process drivers are used to tailor the Spiral Model to generate a project-specific process model. In this way, the Spiral Model can be considered a process model generator .
As the Spiral Model encompasses several process models, an intriguing problem is to what extent the application domain modeling concept can be applied to the domain of process models. In particular, a domain model of the Spiral Process Model (SPM) could be developed to encompass the other process models. By selecting the appropriate process drivers for a given project, the SPM domain model would then be adapted to generate a process model specifically tailored for the project.
As a proof-of-concept, a domain model of an example SPM spiral has been developed. This proof-of-concept domain model is an abstraction of the spiral model, so it does not reflect every aspect of it. Its main goal is to demonstrate how a domain model of the spiral model could be used as a process model generator.
Figure 12. Level 0 Object Communication Diagram for Spiral Life Cycle Domain
In developing the SPM domain model, an important issue is how to represent the cycles and quadrants of the SPM. First it was decided that an object in the domain model would represent an activity in the SPM. Furthermore an aggregate object would represent an aggregate activity, i.e., a composition of several activities. Next, a decision was made to represent each quadrant by means of an aggregate object. The aggregate object for a given quadrant can then be decomposed further at one or more levels of detail to show the activities in that quadrant. Finally features are used to represent process drivers.
The first level of decomposition of the SPM domain model is shown as the top level of the Aggregation Hierarchy (Figure 11) and Object Communication Diagrams (Figure 12). There are four aggregate objects, one for each of the quadrants of the spiral model. These are Defining Objectives, Alternatives, and Constraints; Analyzing Risks; Developing and Verifying Product; and Spiral Planning.
The notational suffixes in figures 11 and 12 and the table below, K, O, A, S, and V refer to characteristics of the object types, respectively, Kernel, Optional, Aggregate, Simple and Variant. These labels indicate the possibly multiple roles an object type may have in the domain model.
The goal of the spiral model is to be risk driven, so that the risks in a given cycle are determined during the Analyzing Risks quadrant. In order to manage these risks, certain additional project-specific activities may be planned to address the risks, such as Requirements Prototyping, if the risk analysis indicates that the software requirements are not clearly understood. These project specific risks are termed process drivers. For any process driver, one or more project specific activities need to be performed to manage the risk.
At the first level of decomposition, the spiral model activities corresponding to the four quadrants are not cycle specific, i.e., they are carried out in each cycle. At lower levels of decomposition, additional cycle specific activities are depicted, the concept being that these activities are performed when the appropriate cycle is being enacted. Thus Developing and Verifying Product is decomposed further to give four aggregate objects that correspond to each of the specific products that is developed during a given cycle.
The first cycle is a project-level planning cycle, whose main product is a project plan. The second cycle is a software requirements cycle whose main product is the software requirements specification. The third cycle is a preliminary design cycle whose main product is a preliminary design (also referred to as architectural design) specification. The fourth cycle is a construction and test cycle whose main output is an operational system. The decomposition of each of the cycle aggregate objects gives the activities within that cycle.
By iterating through one or more of the cycles, the spiral model can encompass several more cycles. In the fourth phase of the SPM, Spiral Planning, a decision is made about what plan to pursue for the next cycle through the Spiral Model. Spiral Planning is decomposed into cycle specific planning activities, including:
a) Planning for Incremental Development, which leads to an iteration through the Preliminary Design and Construction and Test cycles, reflecting a phased approach to software development.
b) Planning for Evolutionary Development, which leads to an iteration through all four cycles, reflecting an evolutionary approach to software development, in which the software requirements are expected to evolve.
In the domain model, there are kernel objects and optional objects. Kernel objects correspond to activities that are required in every process model generated from the SPM domain model. Optional objects correspond to activities that are only required in some generated process models. In the domain model of the SPM, the kernel of the domain corresponds to a Waterfall Process Model. This process model would be adopted for a project with minimal risk, for example re-implementing an existing well-understood system.
Figure 13. Generalization/Specialization Hierarchy for Design Method Selection
A kernel or optional object type can be specialized to reflect a variation on an activity that is only carried out in some process models. For example, Requirements Analysis and Specification is a kernel object, as it is assumed that every software project would include this activity. However, Requirements Prototyping is an optional object, as this activity is only required if there is a poor understanding of requirements (a process driver).
An example of specialization is Design Method Selection - the generalization / specialization hierarchy for Design Method Selection is shown in Figure 13. This object type can be specialized to reflect the different kinds of method selection that can be carried out, reflecting the characteristics of different projects. These specialized object types are Object-oriented Design Method Selection, Ada-based Design Method Selection, Real-Time Design Method Selection, and Distributed Design Method Selection.
The SPM domain model is tailored according to a particular project's process drivers to generate a specific process model for that project. The way this is achieved in the domain modeling method is by defining feature / object dependencies, where the features correspond to optional requirements and the objects are optional or variant objects.
Applying this to the SPM domain model, the features correspond to process drivers. The objects in the feature / object dependencies reflect optional or variant activities. Thus by selecting a process driver, the activities required to support it are chosen, as shown in Table 1.
For example, the process driver "Low understanding of requirements" is supported by the activity "Requirements Prototyping". This means that if the requirements are not understood, then the Requirements Prototyping activity needs to be carried out for this project and so is included in the generated process model for this project. Some process drivers are supported by more than one activity. For example the process driver "Performance Requirements" is supported by three activities, Design Performance Analysis, Design Prototyping, and Performance Testing.
Table 2: Risk-Related Process Driver Relationships
|Real time system||Performance Requirements|
|Design method need||Design method training need|
|Lack of development method||Design method need|
There may also be driver / driver dependencies, as shown in Table 2. Thus the process driver "Real-Time system" requires the driver "Performance requirements", since every real-time system has performance constraints.
A domain model of the Spiral Process Model has been developed using the prototype KBSEE. In this application of the KBSEE, the KBSEE is used as a process model generator. The version of the Knowledge Based Requirements Elicitation Tool for process model generation is called PROGEN (Process Model Generator).
PROGEN interacts with the project manager, presenting the
process drivers (features) available for selection. The project manager
selects the drivers relevant to the project. PROGEN then tailors the SPM
domain model to generate a project specific process model containing the
kernel process activities, together with the optional and variant activities
included to satisfy the selected process drivers.
This paper has described a domain modeling method and prototype domain modeling environment for software reuse and evolution. The application-domain-independent prototype environment supports the development of domain models and the generation of target system specifications. The environment consists of an integrated set of commercial-off-the-shelf software tools and custom-developed software tools. It has demonstrated the viability of the EDLC approach for developing reusable software architectures from which target systems can be generated. Currently the project is addressing the design and implementation phases of the EDLC model as well as scaleup issues [10, 11].
Table 1: Risk-Related Process
and Supporting Activities
Supported by Activity
|Significant project risk||Project Level Prototyping
|Lack of development method||Selection of Development Method||3.1.2|
|Need for CASE tool||Selection of CASE Tool||3.1.5|
|Low understanding of requirements||Requirements Prototyping||3.2.2|
|Changing requirements||Requirements Prototyping
OOD Method Selection
|Operational life cycle||Incremental Development
OOD Method Selection
|Performance requirements||Design Performance Analysis
|Maintenance/support requirements||Requirements Prototyping
Preparation for Enhanced Documentation
|Complex system interfaces||Design Prototyping||3.3.2|
|Early capability||Requirements Prototyping
|Phased development||Incremental Development||4.5|
|Complex user interface||Requirements Prototyping||3.2.2|
|Real time system||Real Time Design Method Selection||3.1.3v|
|Design method need||Selection of Design Method||3.1.3|
|Design method training need||Design Method Training||3.1.4|
|Existing hardware/software constraint||Local Design Tailoring||3.3.4|
|Reuse library exists||Select or Adapt Reusable Components||3.4.3|
Defining Objectives, Alternatives, and Constraints
Planning for Requirements Cycle
Planning for Architectural Design Cycle
Planning for Construction and Test Cycle
The domain modeling method and environment have been used
for modeling several different application domains. This paper has also
described an application of domain modeling to software process modeling
and in particular to the Spiral Process Model. A proof-of-concept domain
model of the SPM has been developed. Its main goal has been to demonstrate
how a domain model of the SPM can be used as a process model generator.
Research is continuing to investigate this approach in more detail.
The authors gratefully acknowledge the contributions of C. Bosch, E. O'Hara-Schettino, V. Sugumaran, and I. Tavakoli, in developing the prototype Knowledge Based Software Engineering Environment, and the contributions of F. Carr and J. Yoon in its application to process modeling. The domain modeling research and development of the Knowledge Based Software Engineering Environment was sponsored primarily by NASA Goddard Space Flight Center with additional support from the Virginia Center of Innovative Technology. Portions of the work were sponsored by an ARPA grant, administered by the Office of Naval Research under grant number N0001492J4038. The application of the domain modeling technology to process modeling was sponsored by the Virginia Center of Excellence in Software Reuse and the Software Productivity Consortium. We also gratefully acknowledge the Consortium for providing us with information on the Spiral Model. The Software Through Pictures CASE tool was donated to GMU by Interactive Development Environments, Inc.
 Batory D and S. O'Malley, "The Design and Implementation of Hierarchical Software with Reusable Components," ACM Transactions on Software Engineering Methodology, 1(4), pages 355-398, October 1992.
 Boehm B., "A Spiral Model of Software Development and Enhancement," IEEE Computer, May 1988.
 Boehm B. and F. Belz, "Experiences with the Spiral Model as a Process Model Generator," Proc. 5th International Software Process Workshop, 1989.
 Bosch, C., H. Gomaa, and L. Kerschberg, "Design and Construction of a Software Engineering Environment: Experiences with Eiffel," in IEEE Readings in Object-Oriented Systems and Applications, D. Rine, Ed. IEEE Computer Society Press, 1994.
 Gomaa H, R Fairley and L Kerschberg, "Towards an Evolutionary Domain Life Cycle Model," Proc. Workshop on Domain Modeling for Software Engineering, OOPSLA'89, New Orleans, October 1989.
 Gomaa H and L Kerschberg, "An Evolutionary Domain Life Cycle Model for Domain Modeling and Target System Generation," Proc. Workshop on Domain Modeling for Software Engineering, International Conference on Software Engineering, Austin, May 1991.
 Gomaa H, L. Kerschberg, C. Bosch, V. Sugumaran, I Tavakoli, "A Prototype Software Engineering Environment for Domain Modeling and Reuse," Proc Sixteenth Annual Software Engineering Workshop, NASA Goddard Software Engineering Laboratory, December 1991.
 Gomaa H, L. Kerschberg, V. Sugumaran, "A Knowledge-Based Approach for Generating Target System Specifications from a Domain Model," Proc. NASA Goddard Conference on Space Applications of Artificial Intelligence, May 1992. Also in Proc. IFIP World Computer Congress, Madrid, Spain, September 1992.
 Gomaa H, L. Kerschberg, V. Sugumaran, "A Knowledge-Based Approach to Domain Modeling: Application to NASA's Payload Operations Control Centers," Journal of Telematics and Informatics, Vol. 9, Nos 3/4, 1992.
 Gomaa H, "Software Design Methods for Concurrent and Real-Time Systems," Addison Wesley, 1993.
 Gomaa H, "A Reuse-Oriented Approach for Structuring and Configuring Distributed Applications," Software Engineering Journal, March 1993.
 Gomaa H, L. Kerschberg, V. Sugumaran, C. Bosch, I Tavakoli, "A Prototype Software Development Environment for Reusable Software Architectures". Proc IEEE International Conference on Software Reuse, Rio de Janeiro, Brazil, November 1994.
 Jackson M., "System Development," Prentice Hall, 1983.
 Kang K.C. et. al., "Feature-Oriented Domain Analysis," Technical Report No. CMU/SEI-90-TR-21, Software Engineering Institute, November 1990.
 Lubars M.D., "Domain Analysis for Multiple Target Systems," Proc. Workshop on Domain Modeling for Software Engineering, OOPSLA'89, New Orleans, October 1989.
 Meyer B, "Reusability: The Case for Object-Oriented Design," IEEE Software, March 1987.
 Parnas D, "On the Criteria for Decomposing a System into Modules," Communications ACM, December 1972.
 Parnas D, "Designing Software for Ease of Extension and Contraction," IEEE Transactions on Software Engineering, March 1979.
 Pyster A., "The Synthesis Process for Software Development," in System and Software Rquirements Engineering, Edited by R. Thayer & M. Dorfman, IEEE Computer Society Press, 1990.
 Rumbaugh, J., et al., "Object-Oriented Modeling and Design," Prentice Hall, 1991.
 Shlaer, S. and S. Mellor, "Object Oriented Systems Analysis," Prentice Hall, 1988.
 Szczur M. R., "A user interface development tool for space science systems," AIAA/NASA Symposium on Space Information Systems, September 1990.
 Wegner P, "Concepts and Paradigms of Object-Oriented Programming," OOPS Messenger (ACM SIGPLAN), Vol.1, No. 1, August 1990.
 Yourdon E., "Modern Structured Analysis," Prentice Hall, 1989.