Domain Modeling of Software Process Models Hassan Gomaa, Larry Kerschberg, and Ghulam A. Farrukh George Mason University and The MITRE Corporation hgomaa@gmu.edu, kersch@gmu.edu, and farrukh@mitre.org Abstract This paper presents a novel application involving two important Software Engineering research areas: process modeling and software reuse. The Spiral Model is a risk-driven process model, which, depending on the specific risks associated with a given project, may be tailored to create a project-specific process model. The software reuse area is that of domain modeling of families of systems, which capture the similarities and variations among the members of the family. The domain modeling approach is used to create a domain model of a Spiral Process Model (SPM), thereby capturing the similarities and variations among a family of process models. The SPM domain model has been extended to capture the key process areas of the Software Engineering Institute’s Capability Maturity Model. The domain model is used to generate projectspecific process models. This approach allows managers to configure and reuse process models that manage the risks associated with new software development. Keywords. Domain modeling, spiral process model, process model reuse, knowledge-based software reuse. 1. Introduction A software reuse area of growing importance is that of domain modeling of families of systems (also referred to as software product lines), where an application domain is modeled by analyzing the common and variant aspects of the family. This concept has been investigated by several researchers and practitioners [Batory92, Bosch99, Coplien98, Cuka98, DeBaud99, Dionisi98, Kang90]. At George Mason University, a reuse-oriented software lifecycle, the Evolutionary Domain Lifecycle [Gomaa93], has been proposed, which is a highly iterative lifecycle that takes an application-domain perspective allowing the development of families of systems [Parnas79]. A domain modeling method [Gomaa95], which captures the similarities and variations of the domain, and a proof-of-concept prototype, the Knowledge-Based Software Engineering Environment [Gomaa96] have also been developed. Complex systems need a well-regulated software process, which is flexible enough to be tailored to the specific needs of the project. This paper describes the application of the domain modeling method to process modeling. In particular, it presents a domain model of the Spiral Process Model [Boehm88], which is extended to incorporate the key process areas of the Software Engineering Institute’s Capability Maturity Model (CMM). The domain model is for a family of software process models, which can be tailored to generate a process model for a specific project, given the project drivers, which are the project specific risks. Section 2 of this paper summarizes the domain modeling method. Section 3 gives a brief overview of the Spiral Process Model and the Capability Maturity Model. Section 4 describes how the domain modeling method can be applied to create a domain model of the family of software process models. Section 5 describes the domain model for the spiral model, with the addition of the key process areas for CMM levels 2 and 3. Section 6 describes how the prototype Knowledge Based Software Engineering Environment was applied to the process-modeling domain. 2. Domain modeling method 2.1. Domain modeling A Domain Model is an analysis model for the application domain that reflects the similarities and variations of the members of the domain. Given a domain model of an application domain, an individual target system (one of the members of the family) is created by tailoring the domain model given the requirements of the individual system (Fig.1). In a domain model, an application domain is represented by means of multiple views, such that each view presents a different aspect of the domain [Gomaa95]. Four of the five views, the Aggregation Hierarchy, Object Communication Diagrams, Generalization/Specialization Hierarchy, and Feature /Object dependencies are described here, since they are most relevant to this research. The fifth view, the State Transition Diagram is not presented herein. Domain Requirements Reusable Specification Domain Modeling Domain Reuse Library Target System Requirements Target Target System System Generation Unsatisfied Requirements, Errors, Adaptation Figure 1: Domain modeling for a family of systems Aggregation Hierarchy. The Aggregation Hierarchy is used to decompose complex aggregate object types into less complex object types eventually leading to simple object types at the leaves of the hierarchy. Object types are either kernel, i.e., required in every target system, or optional, i.e., only required in some target systems. The Aggregation Hierarchy supports the IS-PART-OF relationship linking object types to their aggregate type. Object communication diagrams. Objects in the real world are modeled as concurrent tasks, which communicate with each other using messages. Dynamic relationships between objects, in the form of messages passed between objects, are shown by means of object communication diagrams. Objects types are either kernel, i.e., required in every target system, or optional, i.e., only required in some target systems. Generalization/Specialization Hierarchy. As the requirements of a given object type are changed to meet the specific needs of a target system, the object type may be specialized by adding or modifying operations. In our domain modeling approach, the variants of a domain object type are stored in a Generalization / Specialization Hierarchy (GSH), which supports the ISA relationship linking subtypes to their supertype. Feature/Object dependencies. A feature represents one or more domain requirements, and this feature analysis becomes an important aspect of domain analysis [Cohen98, Dionisi98, Griss98, Kang90]. This view relates the end-user’s perspective of the application domain, namely the features supported by the application domain, to the object types within the domain model. Also defined are required prerequisite features and any mutually exclusive features. This view is particularly important for optional features, since it is the selection of the optional features and their supporting object types, that determines the structure of the desired target system. Rules for consistency checking between the multiple views have been defined. These are enforced by the domain modeling environment described in Section 5. The domain modeling method is similar to other object-oriented methods when used for analyzing and modeling a single system [Booch94, Booch98, Coleman94, Jacobson92, Rumbaugh91]. Its novelty is the way it extends object-oriented methods to model families of systems, in which the similarities and variations in a family are explicitly modeled. 2.2. Target system specification generation A Target System Specification is a problem-oriented architecture for an individual target system, i.e., a member of the family of systems that constitute the domain. It is a tailored instance of the domain model. Requirements’ reuse is achieved by selecting features for a target system. The domain model is then tailored to generate the target system specification, subject to the appropriate feature-object dependency constraints. This step is greatly assisted by automated support as described in Section 5. 3. Process models and the CMM 3.1. Problems with software process models Software process models provide explicit models of the software development process. The earliest process model was a phased approach to software development referred to as the Waterfall Model [Boehm76]. Several problems have been identified with the waterfall model of software development [Agresti86]: a) Software requirements, a key factor in any software development, are not properly tested until a working system is available to demonstrate to the endusers. These problems are compounded by the fact that studies have shown that changes in requirements to a delivered system are usually the most costly to correct [Boehm76]. Prototyping [Agresti86, Gomaa97] and operational specifications [Agresti86, Zave84] are two approaches that have been used to help address this problem. However these approaches are typically only used to develop new systems and are less frequently used in software reuse and evolution. b) Difficulty in managing system evolution. Requirements are assumed to be stable when they are actually dynamic and evolutionary. Thus a requirements specification may correctly reflect the user’s needs at the time of its “completion”. However, by the time the system is delivered, evolutionary changes in the operational environment often result in the system no longer meeting user requirements. Incremental development approaches [Agresti86, Gomaa97] have been used to help address this problem. However, managing system evolution remains a major technological challenge [Lubars92]. Various approaches have been suggested to providing reusable software process models, where the software process can be adapted to the needs of the project. Process reuse has been described as the “usage of one process description in the creation of another process description” [Frakes96]. Another approach to reuse software processes has involved using the answers to a series of questions to tailor a software process [Henninger98]. 3.2. The spiral model The Spiral Model takes a different approach to software process reuse. The Spiral Model is a riskdriven process model originally developed by Boehm [Boehm88] to address known problems with earlier process models of the software life cycle, in particular the Waterfall Model. In the spiral model (Fig. 2), the radial coordinate represents cost and the angular coordinate represents progress in completion of a cycle of the model. Each cycle involves traversing through the 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 phases. Each cycle of the spiral model iterates through these four quadrants. The number of cycles is projectspecific, so the description of the activities in each quadrant is intended to be general enough so that they can be included in any cycle. The goal of the spiral model is that the software process be risk driven, so that the risks within a given cycle are determined during the Analyze 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 must be performed to manage the risk. 1. Define Objectives, Alternatives, and Constraints 4. Plan Next Cycle 2. Analyze Risks 3. Develop Product Figure 2: The spiral process model 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. An example of a process driver is “Low understanding of Requirements”. The process drivers (comparable to features described in Section 2.1), are used to determine which process model is most appropriate for the project. In this way, the Spiral Model can be considered a process model generation framework [Boehm89]. 3.3. The capability maturity model The Capability Maturity Model, developed at the Software Engineering Institute [CMM95], is a software process maturity framework to help organizations improve their software process. Software process maturity [Humphrey89] is defined as the extent to which an organizational software process is explicitly defined, managed, controlled, and effective. According to CMM, there are five levels of software process maturity: Initial, Repeatable, Defined, Managed, and Optimized. This research concentrates on achieving levels two and three. Each maturity level consists of several key process areas. Each key process area defines “what should be done” to achieve that level, although the “how” is left to organizations to select the practices they consider most appropriate for their business. The level 2 key process areas are requirements management, software project planning, software project tracking and oversight, software subcontract management, software quality assurance, and software configuration management. Thus, an organization operating at CMM level 2 must have policies and procedures in place for these six key process areas. It is to be noted that an organization cannot claim to be operating at any CMM level unless (SEI approved) independent assessors have certified it. However, many organizations have initiated internal assessment programs, which are less expensive than the SEI certifications. These assessments provide the first impetus for organizations to improve their software development processes, and get certification from SEI approved assessors. One of the authors, in a previous position, was responsible for developing policies and procedures to attain CMM level 2 certification. The level 3 key process areas are training program, integrated software management, software product engineering, intergroup coordination, and peer reviews. An organization can operate at level 3 if it is already operating at CMM level 2 and have policies and procedures in place for these five key process areas. 4. Domain modeling of the SPM 4.1. Introduction As the Spiral Model encompasses several process models, an intriguing problem is to what extent the domain-modeling concept can be applied to the family of process models. In particular, a domain model of the Spiral Process Model (SPM) could be developed to encompass other process models. This domain model can be specifically tailored for a project by selecting appropriate process drivers. In addition to the Spiral Process Model, this domain model incorporates the key process areas of levels 2 and 3 of the Capability Maturity Model. Before beginning the domain modeling effort, two important decisions were made. First an object in the domain model would be used to represent an activity in the spiral model, and second a feature in the domain model would be used to represent a process driver in the spiral model. In developing the SPM domain model, another important issue is how to represent the cycles and quadrants of the spiral model. Since an object in the domain model is used to represent an activity in the spiral model, an aggregate object may be used to represent an aggregate activity, i.e., a composition of several activities. The approach adopted is to model the four quadrants of the spiral model as four aggregate activities in the domain model. Each of these aggregate activities is decomposed further. The first two levels of decomposition represent activities performed in each cycle. Beyond that, at the third level of decomposition, additional cycle-specific activities are depicted, the concept being that these activities are performed when the appropriate cycle is activated. 4.2. An SPM domain model The domain model of the SPM consists of the Aggregation Hierarchy, Object Communication Diagrams, Generalization / Specialization Hierarchy, and Feature/Object Dependencies. 4.2.1. Aggregation Hierarchy. The aggregation hierarchy of the Spiral Process Model is shown in Fig. 3. This view captures the “is-part-of” relationship among activities in the domain model. Fig. 3 shows three levels of decomposition in the SPM domain model. Each activity is shown as a box. An activity has two properties, the first is whether it is kernel (K) or optional (O), the second is whether it is aggregate (A) or simple (S). The first level of decomposition captures the four quadrants of the Spiral Process Model. It is important to note that three of these aggregate quadrant activities are modeled as optional, while only one (Developing and Verifying Product) is modeled as kernel. The reason for this is that kernel of the SPM domain model, consisting only of the kernel objects, constitutes the Waterfall model. This means that a project considered low risk could follow the waterfall life cycle. Only the Developing and Verifying Product aggregate activity is needed for the Waterfall model, while other activities are required for other variants of the domain model. The second level of decomposition in Fig. 3 is limited to the Developing and Verifying Product aggregate activity. This activity has been further decomposed into five activities, all of which are kernel specific project needs as determined by the process drivers. The aggregation hierarchy, as shown in Fig. 3, captures an overall view of the domain model of the spiral process model. This view complements another view in the domain model, the object communication diagrams, which are described next. 4.2.2. Object Communication Diagrams. The first level of decomposition of the spiral model domain in the domain model. These activities broadly cover all the technical tasks that must be performed in the development of a software product, for which a managed software process is required. In the context of the spiral process model, each of these activities will be performed in a different cycle. Any of these activities can be revisited in a new cycle. This may be necessary due to a requirements change or to address significant problems discovered in an earlier cycle. Each of these Spiral Process Domain KA Defining Objectives, Alternatives, and Constraints OA Project Planning Cycle KA Requirements Analysis and Specification KS Requirements Prototyping OS Analyzing Risks OA Requirements Analysis and Specification Cycle KA Requirements Review OS Developing and Verifying Product KA Spiral Planning OA Construction and Test Cycle KA Preliminary Design Cycle KA Architectural Design KS Design Prototyping OS System Testing Cycle KA Design Performance Analysis OS Architectural Design Review OS Local Design Tailoring OS Figure 3: Aggregation Hierarchy for the Spiral Process Model Domain Model aggregate activities is further decomposed into simple activities, although Fig. 3 only shows the decomposition for the Requirements Analysis and Specification Cycle and the Preliminary Design Cycle, which are described next. The other aggregate activities at levels 2 and 3 in Fig. 3 are not decomposed further for reasons of space. The Requirements Analysis and Specification Cycle activity is decomposed into three activities: Requirements Analysis and Specification, Requirements Prototyping, and Requirements Review. Of these, only the first activity is kernel. The second and the third activities are optional and are performed only in those projects that have specific need for them. For example, the Requirements Review activity will only be performed if there is a need for the Requirements Management process driver (Table 3, see last page). The Preliminary Design Cycle activity is decomposed into five activities: Architectural Design, Design Prototyping, Design Performance Analysis, Local Design Tailoring, and Architectural Design Review. Except for the first activity, which is kernel, all the others are optional and are performed to meet model is shown as the top level of the Object Communication Diagrams (OCD). There are four aggregate objects, one for each of the main quadrants of the spiral model. These are the Defining Objectives, Alternatives, and Constraints, Analyzing Risks, Developing and Verifying Product, and Spiral Planning, as shown in Fig. 4. Each of these aggregate objects is Project Planning Documents Supporting Documents Estimate of Situation 1 Defining Objectives, Alternatives, and Constraints OA Updated Project Planning Documents Supporting Documents Meeting Minutes Risk Management Plan Project Planning Documents Estimate of Situation 2 Analyzing Risks OA Updated Project Planning Documents Meeting Minutes Risk Management Plan Updated Project Planning Documents Supporting Documents Project Planning Documents Updated Project Planning Documents 4 Spiral Planning OA Product Status Report Updated Project Planning Documents Product Baselines 3 Developing and Verifying Product KA Project Planning Documents Supporting Documents Product Baselines Product Status Report Figure 4: Top Level OCD for Spiral Process Model decomposed further to reflect the process activities defined for each quadrant. In the OCDs, each activity is depicted as a circle, with the arcs representing information passed between activities. 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 spiral model domain model. Optional objects correspond to activities that are only required in some generated process models if the specific process driver the activities relate to is relevant to the project. For example, on the Requirements Analysis and Specification Cycle OCD (Fig. 5), Requirements Analysis and Specification is a kernel object, as it is activity, Architectural Design, with four optional activities. The optional activities are Design Prototyping, Design Performance Analysis, Local Design Tailoring, and Architectural Design Review. All the optional activities interact with the kernel activity and so there are no inter-dependencies among the optional activities. The Design Prototyping and Design Performance Analysis activities are both required if the Performance Requirements process driver is selected (Table 1), e.g., for a real-time development project. 4.2.3. Generalization/Specialization Hierarchy. In this view of the domain model, a kernel or optional activity type can be specialized to reflect a variation on an activity that is only carried out in some generated Risk Management 3.2.3 Plan Requirements Review OS 3.3.4 Local Design Tailoring OS Tailored Design Specifications Requirements Specification Project Plan Project Planning Documents Review Status Report Requirements Specification 3.2.1 Requirements Analysis and Specification KS Requirements Prototype Product Status Report Requirements Specification Project Planning Documents Design Performance Report 3.2.2 Requirements Prototyping OS Trained Staff Design Prototype 3.3.2 Design Prototyping OS Preliminary Architectural Design Spec 3.3.3 Design Performance Analysis OS Figure 5: OCD for the Requirements Analysis and Specification Cycle 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). Requirements Review is another optional object, as this activity is only required if there is a need for Requirements Management (another process driver). The OCD for the Preliminary Design Cycle is shown in Fig. 6, which shows the interactions of a kernel Architectural Design Spec 3.3.1 Architectural Design KS Preliminary Architectural Design Spec Product Status Report Preliminary Requirements Specification Architectural Design Specification Architectural Design Spec Risk Management Plan 3.3.5 Architecture Design Review OS Review Status Report Figure 6: OCD for the Preliminary Design Cycle process models. An example of specialization is Design Method Selection. This activity type is specialized to reflect the different kinds of method selection that can be carried out, reflecting the characteristics of different projects. These specialized activity types are Objectoriented Design Method Selection, Ada-based Design Method Selection, Real-Time Design Method Selection, and Distributed Design Method Selection (Fig. 7). Selection of Design Method OVS OO Design Method Selection Ada Based Design Method Selection Real Time Design Method Selection Distributed Design Method Selection Figure 7: Generalization/Specialization for Design Method Selection 4.2.4. Feature/Object Dependencies. As stated earlier, features in the domain model are represented as process drivers in the spiral model. For the feature/object dependency view of the domain model, all optional process drivers are mapped to optional and/or variant activities in the spiral model. These activities and process drivers include the CMM-related activities and process drivers. Table 1 shows risk related process drivers and supporting activities, while Table 3 shows all CMM related process drivers and supporting activities. 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 must 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 three activities, Design Performance Analysis, Design Prototyping, and Performance Testing support the process driver “Performance Requirements”. The domain model of the spiral model has some feature/feature (or driver/driver) dependencies. Table 2 shows the risk related process driver constraints, while Table 4 shows CMM related process driver constraints. For example, the process driver “Real time system” requires the driver “Performance requirements,” since every real-time system has performance constraints. 4.2.5. Support for the CMM. The CMM levels 2 and 3 key process areas have been incorporated into the spiral model domain model by adding optional process activities corresponding to the levels 2 and 3 key process areas. Each level 2 key process area has been modeled as a process driver. Thus a company striving to reach level 2 of the CMM can select the key process areas it wishes to incorporate by selecting the appropriate level 2 process drivers. Table 3 shows the CMM Related Process Drivers, corresponding to the key process areas, and supporting process activities. A company that wishes to incorporate all CMM Level 2 process activities can select the process driver package CMM Level 2. This driver package requires the six process drivers representing the level 2 key process areas: Requirements management, Software project planning, Software tracking and oversight, Software subcontract management, Software quality assurance, and Software configuration management, as shown in Table 4. The level 3 key process areas have also been modeled as process drivers. Thus a company striving to reach level 3 of the CMM can select the key process areas it wishes to incorporate by selecting the appropriate level 3 process drivers. A company that wishes to incorporate all CMM Level 3 process activities can select the process driver package CMM Level 3. This driver package requires all six process drivers representing the six key process areas of CMM level 2 and the five process drivers representing the key process areas of CMM level 3, as shown in Table 4. 4.2.6. Generating a project-specific process model. The spiral model 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 spiral model 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. Each activity has an associated document describing the detailed procedures to be performed. Thus, a project specific process, generated from the SPM domain model, contains all the relevant documents that are needed to manage the project. Fig. 8 shows the aggregation hierarchy of a tailored version of the SPM domain model. The needs of this project dictate the inclusion of two process drivers: “Low understanding of Requirements” and “Requirements management”. The Low understanding of Requirements process driver is a risk-related driver and is supported by the optional Requirements Prototyping activity (Table 1). The Requirements management process driver is a CMM-related process driver and is supported by the optional Requirements Review activity (Table 3). Both of these activities are included in the project specific process, shown in Fig. 8. Comparing Fig. 8 with Fig. 3 shows that those optional activities not required for a specific project are omitted from the project specific process, while all kernel activities are included. Spiral Process Domain Developing and Verifying Product Project Planning Cycle Requirements Analysis and Specification Cycle Preliminary Design Cycle Requirements Requirements Requirements Analysis and Prototyping Review Specification Construction and Test Cycle System Testing Cycle Architectural Design Figure 8: Aggregation Hierarchy for a Project Specific Process 5. Domain modeling environment A prototype domain modeling environment has been developed, called the Knowledge Based Software Engineering Environment (KBSEE) [Gomaa94, Gomaa96], which consists of an integrated set of software tools to support domain modeling and target system requirements elicitation. The environment uses commercial-of-the-shelf software as well as custom developed software. The graphical editors supported by the Software through Pictures (StP) CASE tool are used to represent the multiple views of the domain model. However, the multiple views are interpreted semantically according to the domain modeling method. The information in the multiple views is extracted, checked for consistency, and mapped to an object repository. The feature / object dependencies are then defined using a custom developed tool. A knowledge-based requirements elicitation tool (KBRET) is used to assist with eliciting target system requirements and generating the target system specification [Gomaa92]. The tool, implemented in NASA’s CLIPS shell, conducts a dialog with the human target system requirements’ engineer, prompting the engineer for target-system-specific information. The output of this tool is used to adapt the domain model to generate multiple views of the target system specification. The prototype KBSEE is a domain-independent environment. Thus, it may be used to develop a domain model for any application domain that has been analyzed, and to generate target system specifications from it. A domain model of the Spiral Process Model has been developed using the prototype KBSEE. For this application, the KBSEE was used as a process model generator and the Knowledge Based Requirements Elicitation Tool was completely re-engineered to become a Process Model Generator (PROGEN). PROGEN, is implemented in NASA’s CLIPS shell and the CLIPS Object Oriented Language (COOL). The domain model is created using the KBSEE. The StP graphical editors are used to represent the multiple views of the domain model, namely the Aggregation Hierarchy, the Activity (object) Communication Diagrams, and the Generalization / Specialization Hierarchies. The information in the multiple views is extracted, checked for consistency, and mapped to an object repository. The process driver/ activity dependencies are defined using the KBSEE Feature / Object Editor. PROGEN interacts with the project manager, presenting the process drivers 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. 6. Conclusions The software development process is susceptible to risks, and project managers wish to mitigate those risks by selecting the most appropriate process model for a project. The domain model of the CMM augmented Spiral Process Model allows managers to select those features representing project risks, and allows them to generate a tailored process model. Thus, the domain modeling approach provides for large-scale reuse of the SPM activities as well as configured process models that have guided successful projects. This paper therefore contributes to two important areas in software engineering, software reuse and process modeling, with the added advantage of creating a reusable domain model and architecture for the family of process models. The Spiral Process Model is a risk-driven process model, which, depending on the specific risks associated with a given project, may be tailored to create a project specific process model. The software reuse area addressed is that of domain models of families of systems, which capture the similarities and variations among the members of the family. From the domain model, target systems are generated given the specific requirements of the target system. The domain modeling method and environment described in this paper are application independent. Thus they can be applied to any domain model for which a domain analysis has been carried out. We are currently investigating using the Unified Modeling Language (UML) [Booch98], as a notation for modeling families of systems [Gomaa00]. Further worthwhile investigations in this area include using statecharts (hierarchical state transition diagrams), which are also supported by UML [Booch98], to model the dynamic aspects of the SPM, and to model process enactment, i.e., the actual execution of a given project specific software process model for validating purposes. 7. Acknowledgments The authors gratefully acknowledge the contributions of C. Bosch, E. O’Hara, R.G. Mohan, 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. This research was supported in part by the NASA Goddard Space Flight Center, the Virginia Center of Innovative Technology, DARPA, the Virginia Center of Excellence in Software Reuse, the Software Productivity Consortium, and IDE Inc. The views and conclusions expressed are those of authors and should not be interpreted as representing the official policies or endorsements, either expressed or implied, of NASA, DARPA, The MITRE Corporation, or the Software Productivity Consortium. 8. References [Agresti86] Agresti W.W., New Paradigms for Software Development, IEEE Computer Society Press, 1986. [Boehm 76] Boehm, B. W., “Software Engineering," IEEE Transactions on Computers, Vol. 25, No. 12, Dec 1976, pp. 1226-1241. [Boehm88] Boehm, B., “A Spiral Model of Software Development and Enhancement,” IEEE Computer, May 1988. [Boehm89] Boehm, B. and F. Belz, “Experiences with the Spiral Model as a Process Model Generator,” Proceedings of th 5 International Software Process Workshop, 1989. [Batory92] 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. [Booch94] Booch, G., Object-Oriented Analysis Design with Applications, Addison Wesley, Second Edition, 1994. [Booch98] Booch, G., J. Rumbaugh, and I. Jacobson, The Unified Modeling Language User Guide, Addison Wesley, Reading, MA, 1999. [Bosch99] Bosch, J., “Product-Line Architectures in Industry: A Case Study,” Proceedings of IEEE ICSE, Los Angeles, May 1999. [CMM 95] CMU Software Engineering Institute, “The Capability Maturity Model,” Addison Wesley, 1995. [Cohen98] Cohen, S., and L. Northrop, “Object-Oriented Technology and Domain Analysis”, Proceedings of IEEE ICSR5, Victoria, June 1998. [Coleman94] Coleman, D., et. al., Object Oriented Development – The Fusion Method, Prentice Hall 1994. [Coplien98] J. Coplien, D. Hoffman, D. Weiss, “Commonality and Variability in Software Engineering”, IEEE Software, Nov/Dec 1998. [Cuka98] Cuka, D. and D. Weiss, “Engineering Domains: Executable Commands as an Example”, Proceedings of IEEE ICSR5, Victoria, June 1998. [DeBaud99] DeBaud, J.M. and K. Schmid, “A Systematic Approach to Derive the Scope of Software Product Lines,” Proceedings of IEEE ICSE, Los Angeles, May 1999. [Dionisi98] Dionisi, A. et al., “FODAcom: An Experience with Domain Modeling in the Italian Telecom Industry”, Proceedings of IEEE. ICSR5, Victoria, June 1998. [Frakes96] Frakes, W. and C. Hollenbach, “Software Process Reuse in an Industrial Setting”, Proceedings of IEEE ICSR4, Orlando, April 1996. [Gomaa92] Gomaa, H., L. Kerschberg, V. Sugumaran, “A Knowledge-Based Approach for Generating Target System Specifications from a Domain Model,” Proceedings of IFIP World Computer Congress, Madrid, Spain, September 1992. [Gomaa93] Gomaa, H., “A Reuse-Oriented Approach for Structuring and Configuring Distributed Applications,” Software Engineering Journal, March 1993. [Gomaa94] Gomaa, H., et. al., “A Prototype Domain Modeling Environment for Reusable Software Architectures”. Proceedings of IEEE ICSR3, Rio de Janeiro, November 1994. [Gomaa95] H. Gomaa, "Reusable Software Requirements and Architectures for Families of Systems", Journal of Systems and Software, April 1995. [Gomaa96] Gomaa, H., et. al. "A Knowledge-Based Software Engineering Environment for Reusable Software Requirements and Architectures," Journal of Automated Software Engineering, Vol. 3, Nos. 3/4, August 1996. [Gomaa97] Gomaa, H., “The Impact of Prototyping on Software Systems Engineering”, in System and Software Requirements Engineering, edited by R. Thayer and M. nd Dorfman, IEEE Computer Society Press, 2 Edition, 1997. [Gomaa00] Gomaa, H., Object Oriented Analysis and Modeling for Families of Systems with UML, Proc. IEEE International Conference on Software Reuse, Vienna, June 2000. [Griss98] M. Griss, J. Favaro, M. D’Alessandro, “Integrating Feature Modeling with the RSEB”, Proceedings of IEEE ICSR5, Victoria, June 1998. [Henninger98] Henninger, S., “ An Environment for Reusing Software Processes”, Proceedings of IEEE ICSR5, Victoria, June 1998. [Humphrey89] Humphrey, W., Managing the Software Process, Addison Wesley, 1989. [Jacobson92] Jacobson, I., Object-Oriented Software Engineering, Addison Wesley, Reading MA, 1992. [Kang90] Kang, K.C. et. al., "Feature-Oriented Domain Analysis", Technical Report No. CMU/SEI-90-TR-21, Software Engineering Institute, November 1990. [Lubars92] Lubars, M.D., C. Potts, and C. Richter, "Objectth Oriented Analysis for Evolving Systems", Proceedings of 14 IEEE ICSE, pp. 173-185, 1992. [Parnas79] Parnas, D., “Designing Software for Ease of Extension and Contraction,” IEEE Transactions on Software Engineering, March 1979. [Rumbaugh91] Rumbaugh, J., et al., Object-Oriented Modeling and Design, Prentice Hall, 1991. [Zave84] Zave, P., "The Operational Versus the Conventional Approach to Software Development", CACM, February 1984. Table 1. Risk-Related Process Drivers and Supporting Activities Process Driver Need for project level prototyping Activities required to support Process Driver Project Level Prototyping Lack of development method Need for CASE tool Low understanding of Requirements Evolutionary development Selection of Development Method Selection of CASE Tool Requirements Prototyping Requirements Prototyping, Planning for Evolutionary Development, and OOD Method Selection Planning for Incremental Development, Planning for Evolutionary Development, and OOD Method Selection Design Performance Analysis, Design Prototyping, Performance Testing, and Performance Testing Peer Review Requirements Prototyping, Preparation of Enhanced Documentation Design Prototyping Requirements Prototyping, Planning for Incremental Development, and Planning for Evolutionary Development Planning for Incremental Development RT Design Method Selection Selection of Design Method Design Method Training Local Design Tailoring Select or Adapt Reusable Components Defining Objectives, Alternatives, & Constraints, Analyzing Risks, Scheduling and Planning, Commitment To Planning, Monitoring and Reviewing Product, Product Change Control, Project Progress Review, Planning for Requirements Cycle, Planning for Architectural Design Cycle, Planning for Construction and Test Cycle, Planning for System Testing Cycle Operational life cycle Performance requirements Maintenance/support requirements Complex system interfaces Incremental development Phasing Real time system Design method need Design method training need Existing hardware/software constraint Reuse library exists Spiral process Table 2. Risk-Related Process Driver Relationships (Left Column Driver Requires Right Column Driver) Process Driver Required Driver Real time system Performance requirements Design method need Design method training need Lack of development method Design method need Table 3. CMM Level 2 Related Process Drivers and Supporting Activities Process Driver Activities required to support Process Driver Requirements management Requirements Review Software project planning Software Cost Estimation, Software Size Estimation, Critical Computer Resources Estimation, Software Schedule Planning, Life Cycle Selection, Definition of Project Commitments, and Planning Project Facilities & Support Tools Software tracking and oversight Project Progress Review, Software Schedules Review, SW Effort and Cost Review, Critical Computer Resources Review, Project Commitments Review, and Work Product Size Review Software subcontract management Planning Subcontract Management, Project Progress Review, and Tracking Subcontract Progress Software quality assurance Preparing SQA Plan, Project Progress Review, and SQA Audit of Work Products Software configuration management Preparing SCM Plan, Establishing CM Library, and Identification of SCM Work Products Process Driver CMM level 2 CMM level 3 Table 4. CMM-Related Process Driver Relationships (Left Column Driver Requires Right Column Drivers) Required Driver Requirements management Software project planning Software tracking and oversight Software subcontract management Software quality assurance Software configuration management Training program Integrated software management Software product engineering Intergroup coordination Peer reviews CMM level 2