|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
EMMA Knowledge RepresentationPR NO. C-6-2772 F30602-96-0220 CDRL No. A005 Prepared for: Griffiss Air Force Base, NY 13441-5700 Prepared by: Village Green 840 Hanshaw Rd., Suite 5 Ithaca, NY 14850 TABLE OF CONTENTS
Introduction: EMMA, an Evolution-Memory Management AssistantThis report describes the metamodel for EMMA, an Evolution-Memory Management Assistant, a system to be developed by CoGenTex as part of the Evolutionary Development of Complex Systems (EDCS) program, funded by DARPA and Rome Laboratory. This metamodel is presented in fulfillment of the requirement for the first contracted deliverable. EMMA, an Evolution-Memory Management Assistant, is being designed to support the collaborative development and evolution of complex systems. EMMA will manage the collection "evolution memory" for a software system, which will contain information about the context in which design decisions are made, including plans for future system evolution. Software developers will have the opportunity both to draw from this memory to understand the reasons for past decisions and the consequences of evolutionary changes, and to add to it, to make their own insights available for future system evolution. Our approach to supporting software evolution in EMMA is to let the developers' goals for software evolution drive the way design knowledge is acquired and presented. EMMA will support the communication and management of information about the goals and plans for system development. In this way, we believe that EMMA will help system developers to collaborate as the system is being developed, and will also help future system maintainers in analyzing the impact of system design changes. EMMA will use its knowledge of the system's development goals to select information that is relevant to a developer's evolution task and will display it in a form that directly supports that task. Evolution information in EMMA will be organized in a knowledge base designed around four interrelated concepts:
Goals, plans and assumptions provide context for design decisions by relating lower-level decisions to higher-level purposes and to the assumptions under which decisions are made. Evolutionary change events can arise in EMMA in two different ways. In a top-down fashion, a change event makes explicit a possible evolution direction for a system, so that developers may anticipate and plan for future changes. In a bottom-up fashion, a change event may appear as an "exception" to a low-level goal, signaling a problem or opportunity that may necessitate a change to higher-level design decisions. Using the interrelationships among change events, plans, and goals, EMMA will be able to trace the anticipated impacts of evolutionary changes. EMMA will acquire and present information through a Java-based hypertext interface. This interface will support the developer in browsing and updating the EMMA knowledge base of system development goals, assumptions, and evolution directions. These in turn can be linked to source documents (requirements or specifications stored in various collaborative and software development tools). The hypertext used in focused presentations (such as presenting the results of tracing the impact of a hypothetical change event) will be dynamically generated by CoGenTex's advanced text generation system. By managing information about design decisions and directions for change, EMMA will help developers to understand the issues involved in changing systems and to be proactive in planning for system evolution. EMMA Metamodel for System Development and EvolutionIn this section, we describe EMMA's metamodel for collaborative system development, which is intended to capture the most important issues involved in system evolution. Goals, Plans, and SolutionsFor developers to reason about system evolution, they need to understand the goals for the system and its components. The development process consists of communicating such goals among the development team, creating plans for achieving those goals, and carrying out those plans. Plans may be changed in light of changes in requirements, assumptions about the operating environment, or the developers' understanding of the issues. In the EMMA metamodel for system development, a goal will always be to build some system or system component that solves some problem or addresses some need. We will use the term solution, adopted from the domain of business system development, to refer to the system, system component, or other software engineering artifact that is created to achieve a specific goal. For EMMA, the exact nature of a solution (whether it is code, or design, or hardware, or only documentation) is not relevant; the important information for EMMA is the goal that the solution achieves, and the context or assumptions under which the solution achieves it. Because of EMMA's indifference to the exact nature of a solution, EMMA will be able to link up with a wide variety of different tools for maintaining system artifacts: text editors, graphical modeling tools, etc. A plan in the EMMA metamodel is a strategy for creating a solution fulfilling some goal by partitioning system responsibilities among components, each of which must fulfill some simpler subgoal. For example, a plan for building a complex system might involve partitioning the system into user interface, data structures, and algorithms, each of which would have its own goal to fulfill. In the EMMA metamodel, each goal may have a number of alternative plans for achieving that goal. In turn, each plan may be associated with a number of subgoals, which represent steps in the plan. In this way, complex high-level goals are decomposed into simpler, more specific low-level goals. Then solutions to higher-level goals are constructed by composing low-level solutions according to the associated plans. The collection of goals, plans, subgoals, and their associated solutions will be referred to as a solution structure. A simple solution structure is shown in Figure 1.
Collaboration: Goal Owners and ContractorsAnother aspect of software development supported by EMMA's metamodel is collaboration. In developing a solution to meet some high-level goal, developers proceed by factoring each goal into smaller subgoals. Often, the subgoals are worked on by different developers who must coordinate their actions. To facilitate this coordination, the EMMA metamodel has a notion of the owners and contractors for goals. The owner of a goal is responsible for that goal and any solution developed to achieve it. A contractor for a goal is a developer who is working towards achieving the goal. Only a goal owner may change the requirements associated with the goal, but a contractor for a goal is able to create, modify, and act on a plan for achieving the goal. Negotiation and Discussion Among CollaboratorsThere are two main models for collaboration that are commonly used:
The main problem with a pure top-down approach is that it lacks flexibility; if the original partitioning of the tasks turns out to be inappropriate, it can be very difficult to change it. On the other hand, pure peer-to-peer collaboration can become very unstructured and unwieldy; it is difficult to keep focused on the ultimate goals for the project as a whole. In designing the EMMA metamodel, we adopted the structure of the top-down approach, but at the same time we took steps to address its inflexibility:
Much of the information that we intend to manage for EMMA is information that is already being produced in large software projects, but is not currently organized and maintained to support system development and evolution. We believe that the structure of goals, plans, and subgoals, with their associated owners and contractors, will provide a powerful framework for communicating this information needed to develop and evolve a complex system. ContextIn designing a new system, developers need to keep in mind two different kinds of information:
Typically, a system's requirements combine both types of information, but very often much of the background information about the expected behavior of users and the properties of the operating environment is left implicit. The lack of documentation of implicit assumptions makes it very difficult to uncover the impact when this kind of information changes. The EMMA metamodel explicitly distinguishes between functional requirements for the system and the context within which the system is developed. The context consists of background information that is needed to understand a system's functional requirements, including:
The context provides a framework within which the solution is to be constructed, and describes the system's role within that framework. In the EMMA metamodel, the context associated with a goal will include the answers to the following sorts of questions (not intended to be exhaustive):
Goals occurring at different levels of the solution structure will have different associated contexts. The context for a component of a system will include information not only about external systems and users, but also about other components with which it must interact. In understanding the design of a solution, this kind of context information is as important as the functional requirements that the solution must meet. This is especially true for system evolution. When putting a system into a new environment, it is crucial to understand what assumptions about the environment were made by the original developers. If some of these assumptions are no longer valid, then the system will likely need to be redesigned. Being able to trace the assumptions to the specific system components that rely on them would greatly improve the efficiency of responding to system changes. Evolutionary ChangesAn innovative feature of the EMMA metamodel is the explicit support for evolutionary changes of a system's design. The following list, from a description of Lockheed-Martin's Transportation Information System Scenario, illustrates some of the support for evolution that may be needed for a large, complex system, the Global Transportation Network (GTN) system. We plan to design EMMA to meet these sorts of needs.
To provide these kinds of support for evolution, EMMA will explicitly record information about system design and requirement changes that is currently only maintained informally, if at all. In supporting system evolution, the EMMA metamodel distinguishes two different types of change:
Below we describe these two types of evolutionary changes in more detail. Top-down changes: Anticipated Directions for EvolutionWhile modern software development methodologies do a fairly good job of making explicit the requirements that the system and its components must meet, there is comparatively little support for recording the thoughts of customers and developers about likely directions of evolution for the system. This lack represents a missed opportunity in planning for the system's evolution. As has been pointed out by Boehm [WinWin], the final requirements of a system are only decided after a period of negotiation among all the stakeholders: government agencies, end-users, developers, etc. During this negotiation, many of the system features that customers or end-users would like are "scoped out"; to save money, time, or effort, these requirements are left to future enhancements. Later, these dropped requirements are often reinserted, not during the initial development, but during the maintenance and enhancement stage of the system's lifecycle. Unfortunately, the original thinking about these enhancements is often lost. The scoped-out requirements are treated as brand new requirements, and they are often implemented in an ad hoc way that makes the system more difficult to understand and maintain. To address this problem of lost reasoning about evolution, we introduce the notion of a change event. A change event is a possible change to the goals or context for a system. When developing a system developers need to record not only the initial requirements, but also
By keeping track of this information, EMMA will help current developers to plan for evolution and will also give future maintainers a head start towards understanding the impact of changes. In determining the possible evolution directions for a system, developers, customers, and end-users need to think about the following sorts of questions (not intended to be exhaustive):
When a system is decomposed into a number of components, many of the change events relevant to a component will appear in the evolution directions of the system as a whole. However, additional change events may be introduced at lower levels of system decomposition. Each component will have certain expectations from other components, and will provide certain functionality to other components. Because of this, there will be change events described in terms of these cross-level dependencies that are not derived directly from top-level evolution directions. Another kind of change that is only relevant for low-level system goals is a change of implementation infrastructure or programming language. Bottom-up Change Events: ExceptionsIn addition to those "top-down" change events that developers could, in principle, plan for, there inevitably will be unforeseen circumstances that force changes to the design of a system. In partitioning the requirements for a large system into requirements on individual system components, developers often find that the original development plan needs to be modified. This can be due either to a problem or an opportunity discovered in working on a system component. A problem occurs when a developer discovers that the requirements for some component cannot be met (given the time and effort devoted to it). This might happen because the requirements were unrealistic, or because of unforeseen bugs or limitations in tools or COTS components. An opportunity occurs when a developer working on one component discovers a solution to a problem some other developer is facing. Another type of opportunity occurs when a new COTS tool is released that solves some of the problems in older versions. In these cases, the design of the system may change in order to work around problems or to take advantage of an opportunity. In the EMMA metamodel, this kind of "bottom-up" change will be called an exception, in analogy with the exceptions that may be raised in a programming language. Faced with a problem or opportunity occurring at a low-level goal, a contractor for that goal may "raise an exception" to inform the goal owner about the need for a design change. Like the exceptions in a programming language, an EMMA exception may be either "handled" by working around the problem, or "propagated upwards" to be taken care of at a higher level. An exception raised by a contractor often amounts to an acknowledgement that in some way, the requirements for a system or system component cannot be completely satisfied. A goal owner asks of its contractor "Can you give me this?". In raising an exception, the contractor responds "No, but I can give you this similar thing that will work just as well in most cases." For example, a developer might use an exception to indicate that the system will be unable to handle requests from more than 5 users at a time. An exception might also indicate that some component will only work correctly if its inputs arrive in a particular order. Another kind of exception is a request for some kind of service or information that is needed to fulfill some goal. For example, a contractor for a goal may report: "I can only meet these requirements if somebody else provides me with certain functionality." The EMMA metamodel provides a framework for recording such exceptions and the responses to them so that this history can help future system maintainers understand the interrelationships between the goals of the system's components. Ultimately, every exception that is not handled at some level will become a limitation on or assumption about the operation of the system being developed. Such an exception may either limit the kinds of environments into which the system can be put, or it may limit the kind of user behavior to which the system must respond. For example, the limitation might be expressed as a demand that users follow a particular policy or protocol when using the system. EMMA's Notion of Evolutionary RationaleAfter all exceptions have been handled in one way or another, the system's goals and context can be redescribed in a purely top-down fashion. However, it is useful for the point of view of evolution to know the rationale for a goal or assumption: Where did it come from? Is it ultimately derived from facts about the domain, or is it there for design or implementation reasons? We anticipate several uses for this network of dependencies among goals and their contexts:
Comparison with other Tools and MethodologiesThe EMMA metamodel has some similarities with other approaches to recording and reasoning about assumptions and goals of systems and system components. In this section, we discuss these similarities and what we believe to be the unique features of the EMMA metamodel. EMMA and Design-by-ContractEMMA's approach to system development by partitioning into components, each of which must satisfy certain requirements, is similar to the idea of "Design by Contract" [Meyers]. An EMMA solution structure can be thought of as a contract for building a solution and also for future evolution of that solution. However, Design by Contract as it is usually interpreted does not provide any mechanism for discussion and negotiation about the nature of the contract; it is a purely top-down development. The EMMA metamodel is unique in providing for exceptions, which allow for "contract negotiation" in which bottom-up influences can affect the final design for a system. Each goal in an EMMA solution structure represents functionality that the contractor promises to provide (by building a solution). The context associated with a goal represents commitments made by the goal owner (which can reflect functionality provided by other contractors, or guarantees about the users or operating environment). This view of system development is compatible with (but not limited to) the concept of required and provided interfaces for components [Euclid, TRP, CBSE]. The provided interface describes the external behavior the component must satisfy, while the required interface describes the demands the component makes on (or services required of) other components. The EMMA notion of exceptions is broader than the usual notion of required interfaces, however. Exceptions allow a component to make demands not only on other components, but also on users and on the environment. Thus in an iterative development model, some of the high-level goals for the system may ultimately reflect the needs of particular components. This is important for system developers to know, since evolutionary changes may modify or eliminate components and thus make some system requirements obsolete. IBIS/REMAPIBIS (Issue Based Information Systems) [IBIS] is a model for representing discussions such as those that a group might have prior to making a decision about a course of action. IBIS sorts the information about how such a discussion progressed into several categories of discussion objects:
A problem with IBIS is that discussions can grow to be enormously complicated, and there is no support for relating the discussions to decisions that have been actually made in the development of a system. Partly this is because IBIS was intended to be a general model for representing discussions, and was not created with software engineering specifically in mind. REMAP (Representation and Maintenance of Process knowledge) [Remap] is an extension to IBIS that adds new types of objects and relationships specifically to support the software development process. In addition to the objects supported by IBIS, REMAP also provides the following additional ones:
Relationship with EMMAREMAP captures some of the same kind of information as the EMMA metamodel. In particular, REMAP is like EMMA in attempting to relate design objects to the assumptions under which those objects were designed. The main focus of REMAP is to record the reasons for deciding among alternative design artifacts. However, in REMAP the relationship between assumptions and design artifacts is indirect: Assumptions are related to arguments, which are related to decisions, which affect design artifacts. EMMA more directly records assumptions as they are relevant to a solution. In contrast to IBIS and REMAP, EMMA structures system information not around issues to be addressed, but around the goals for the system and its components. EMMA also specifically addresses evolution. We believe that this will provide a tighter structure to the information and will allow a more efficient use of the information in future evolution. One promising approach is to combine REMAP with EMMA. EMMA would provide the overall structure that would serve to focus system information around particular system development goals. REMAP could then be for discussions leading to a decision among alternative plans in the EMMA solution structure. WinWinIBIS and REMAP take discussions to be about objective, factual issues. In contrast, the WinWin model [WinWin], also funded by EDCS, recognizes that different stakeholders may have different objectives for a project and different views about what is relevant and what is important. WinWin makes the idea of negotiations among multiple stakeholders explicit in the model. The objective of a WinWin discussion is to find a set of win conditions that are acceptable to all of the diverse participants in a project. Relationship with EMMAWe will not attempt to describe the WinWin model in detail, but instead will summarize the key points that are relevant for EMMA:
EMMA has several features in common with WinWin. In particular, both systems support collaboration, recording of goals and assumptions, and recording possible directions for system evolution. However, these two systems are appropriate at different stages of a system's life cycle. WinWin is most appropriate during the initial negotiation of requirements among customers, end-users, and developers. Unlike WinWin, EMMA assumes that the developers are, in some sense, all on the "same team" and are trying to accomplish the same ultimate goals. EMMA is therefore more suited for goal-directed development after the initial requirements have stabilized and in planning for future evolution. FAMILIARFAMILIAR [Familiar] is another EDCS project. The goal of FAMILIAR is to support system evolution by maintaining more detailed information about purposes associated with software artifacts. FAMILIAR is intended to help maintain a repository of systems and system components (or devices) together with information about the behavior and functionality of these devices. Relationship with EMMAFAMILIAR plans to maintain the following EMMA-relevant information about devices:
(In addition, FAMILIAR maintains detailed specifications of system functionality, which is not a focus of EMMA.) The main role for FAMILIAR is to support reasoning about properties of systems and system components. In contrast, EMMA's focus is on the goals and assumptions of the developers collaborating to build those artifacts. In principle, these two tools could successfully work together: the sort of information about system components that originates in FAMILIAR could be used to construct an EMMA goal node describing that solution. MORALEThe MORALE system [Morale], is a suite of tools for mission-oriented legacy system evolution (also an EDCS project). There are three main components of this system: (1) Requirements Analysis, (2) Architectural Assessment, and (3) Reverse Engineering. The most relevant aspect for EMMA is in the requirements analysis component, where mission scenarios are used to elicit the goals for a legacy system and to map requirements to components. Relationship with EMMAWhile MORALE is for reengineering legacy systems, EMMA is intended to support the initial development of new systems. Like FAMILIAR, MORALE supports reasoning about the requirements and functionality of systems and system components, but does not support either planning for evolution or collaborative system development. Although MORALE has a notion of goal, it is different from the EMMA notion:
Requirements for a system must of course be developed taking into account mission goals. However, the focus of EMMA is on the development process that takes place after these requirements have been determined; EMMA is concerned with how developers go about building a system to meet the requirements. As with FAMILIAR, there is the potential for cooperation between MORALE and EMMA: the reverse-engineered system requirements produced by MORALE could in principle be used to provide EMMA goal structures for reasoning about evolution. Unique Features of EMMAThere are several features of EMMA that are unique among the systems that we have looked at:
We believe that these features are crucial for a tool that will be used as a system is being developed and will also support future evolution. Without the support for collaboration in the early stages of a system's development, it is very unlikely that the developers will be motivated to record the sort of information that will be needed for future evolution and maintenance. Feature Comparisons: EMMA and Other ToolsAs can be seen in the chart below, the functionality provided by EMMA is quite complementary with the other tools discussed above. The features that EMMA does not address are (1) support for negotiations among stakeholders, which WinWin provides, (2) support for formal reasoning about functionality, which FAMILIAR provides, and (3) support for discussion about issues, which REMAP provides. (Note: Because phrases such as "supports reasoning about directions of evolution" can mean very different things in different tools, this chart should only serve as a starting point for comparing the systems.)
Figure 2: Feature Comparisons Among Information Management Tools
Conceptual Interaction Among EMMA and Other Information Management ToolsAll the tools described above capture information about systems and system components that are currently not recorded. EMMA is intended not to replace these other methodologies, but to complement them by supporting collaborative system development in the following ways:
Figure 3 shows at a conceptual level the potential data flows that could connect EMMA with WinWin, REMAP, MORALE and FAMILIAR. The requirements, assumptions, and evolution directions that EMMA uses could be supplied as the result of a session with WinWin. Also, "bottom-up" changes (exceptions) due to low-level problems could be propagated from EMMA back up to a WinWin session. Requirements and goals for a legacy system or a system component could be elicited using MORALE, or developed in FAMILIAR and this information could then be used in the EMMA goal associated with a component. The relationships among EMMA and the other methodologies can best be illustrated in terms of the stage of the development process during which they will be used: Initial Requirements AnalysisInitially, before a system is designed, the various stakeholders must negotiate over the requirements for the system as a whole. Because the objectives of the stakeholders are not identical, many requirements will be abandoned or deferred because they conflict with objectives of other stakeholders. Some desirable system features will not be included because they are too expensive to implement or too difficult to integrate with other desirable features. This reasoning about tradeoff and about objectives of different stakeholders is the stage at which WinWin is most appropriate. For legacy systems that need to be modified, it is necessary to try to reverse-engineer the requirements and goals for a system before the new design can be created. MORALE is intended for this circumstance. This information taken from WinWin or MORALE could be used to form the initial goal for the EMMA solution structure. Requirements that are dropped or deferred in WinWin could give rise to change events in EMMA. Planning the System's DesignOnce the initial requirements for the system have stabilized, it is necessary to construct a plan to fulfill those requirements. This plan must take into account the assumptions under which the system to built will operate, the resources available for building it, and the possible future changes to the system's requirements or assumptions. Here EMMA can be used to record information about development history that will be needed for future evolution, and also to support developers in organizing the various interconnected goals involved in building a large system. Deciding Among Alternative PlansIn fleshing out the plan for building a system, there will often be several alternative approaches to accomplishing the same goal. The pros and cons of the various alternatives, and the resulting decisions can best be recorded in a REMAP discussion. The results of the REMAP discussion could then be used to update EMMA's notion of the active plan for that goal. Bottom-up Feedback and RedesignBased on problems or opportunities encountered by developers in designing and implementing the system requirements, "bottom-up" changes (exceptions) could be propagated from EMMA back up to a WinWin session. These exceptions could initiate another, better-informed round of negotiations among stakeholders. Developing SolutionsOnce the structure of goals is produced, the developers must create system components meeting those goals. At this point, developers may use information about systems and system components produced with MORALE or FAMILIAR to build solutions out of reusable parts. After Components are DesignedAs components are designed and constructed, they can be stored in a repository for possible future reuse. To support this reuse, it is necessary to record contextual information about the components, including
This information could be taken from the EMMA solution structure and could be recorded in a system such as FAMILIAR, which will also support subsequent reasoning about components. After a System is FieldedAfter a system is fielded, there will frequently be a need to modify the system to fix bugs, address new requirements, or operate under a new set of assumptions. To support these sorts of modifications, it is important to be able to recall the relationships among the system components so that the impact of the changes can be understood. EMMA is also intended to provide support for this phase. The EMMA metamodel allows maintainers to view the operating assumptions and goals under which system components were built. It allows for the impact of changes of assumptions to be traced. It also allows evolution scenarios to be "played out" to help developers see the consequences of anticipated evolutionary changes. Conceptual Dataflows among EMMA and other Related ToolsThe following figure shows conceptually how system information could be shared between EMMA and the other tools discussed in this chapter.
Figure 3: Conceptual Dataflows Among EMMA and other Related Tools Knowledge Structures for EMMAIn this section, we will make the EMMA metamodel concepts more precise, to serve as requirements for the EMMA design. EMMA Solution StructuresWe will use the term solution structure to mean the structure of the goals and plans associated with the development of a solution (a system or component built to satisfy a set of requirements). As shown in Figure 1, the backbone of a solution structure consists of a hierarchical collection of goals and plans. A goal represents what is to be achieved (a system meeting certain requirements is to be developed). Immediately under a goal in a solution structure lies a collection of alternative plans, each of which represents an approach to achieving that goal by splitting it into a number of simpler subgoals. Immediately under a plan node are the associated subgoals. A solution structure thus has a single apex, which is the top-level goal, and a branching structure of plans and subgoals underneath. Figure 1 shows a sample solution structure. The solution structure as a whole is associated with Goal 1, to build a design environment. There are two alternative plans for achieving Goal 1, namely Plan A: Build graphical environment, and Plan B: Build text-based environment. Under Plan A, the goal is to be accomplished by first fulfilling Goals A.1 and A.2: writing the data structures and the algorithms, and building the graphical user interface. The subgoals of Plan B, Goals B.1 and B.2, involve instead writing a parser and building an interface to a text-editor. The plans immediately underneath a goal are alternatives (thus the use of the keyword "or" in the figure). Only one plan needs to be followed in order to achieve a goal, although it is certainly possible that several plans could be pursued simultaneously. In contrast, all of the subgoals immediately underneath a plan must be fulfilled in order to carry out the plan (thus the use of the keyword "and" in the figure). Associated with each goal is a solution (not shown in figure), which is some object fulfilling the goal. The solutions associated with subgoals will usually be components of the solution associated with a higher-level goal. In designing a system, developers split up the top-level goals into smaller and smaller subgoals until they reach a point where the low-level goals are simple and straightforward. At this point, each subgoal can be achieved directly, either by designing some system component to achieve the goal, or by reusing an existing component.
TerminologyIn discussing solution structures, we will use the term node to refer to either a plan or a goal. We will use the directions higher and lower to refer to nodes that are, respectively, closer to or farther from the apex. For any node, the parent is the node immediately above it, and a child is a node immediately below it. We will use the term grandparent of a node to mean the parent of the node's parent, and we will use the term grandchild of a node to mean a child of that node's child. Nodes that have the same parent will be referred to as siblings. A node with no children will be called a leaf node. In the EMMA solution structure, goals and plans alternate: every child of a goal is a plan, and every child of a plan is another goal. Therefore, a grandchild or grandparent of a goal will be another goal. As will be described later, each plan has one distinguished goal, called the working goal, which is that plan's working copy of its parent goal. The other children of a plan will simply be called subgoals of that plan. Figure 4 above shows these relationships for a simple EMMA solution structure. For each relationship, represented by an arrow, the name of the inverse relationship is shown in parentheses. Goal NodesAssociated with each goal node of the solution structure will be the following data:
These elements of the solution structure will be described more fully in the following subsections. Evolution information, because it is common to both goal nodes and plan nodes, will be described in its own section. The Solution AnnotationThe solution annotation is information about the solution (system or system component) that is being constructed to fulfill a goal. It consists of the following attributes:
An annotated reference is a link to an external object that is annotated with a description of the nature of the link. The EMMA metamodel does not prescribe the nature of the solution being developed, whether it is code, or specification, or graphical design, etc. Therefore, it is necessary for developers to define the semantics of links using annotations. The solution will be some artifact representing a system or system component that fulfills the specification. When a system is first being developed, the reference to the solution object is empty, but is filled in when there is some artifact corresponding to the solution. This external link will be maintained for future system evolution. The SpecificationThe specification for a solution node describes what should be true of the solution. The specification consists of:
The ContextThe context provides the background information under which the solution is developed. It includes assumptions about the environment or about the behavior of users, the definitions of terms used in specifications, and the resources used in creating the solution. The context for a solution plan or goal will have the following parts:
The context for a low-level goal node may in general differ from that of higher-level goals, for several reasons:
The Elaboration of a Goal NodeA goal is elaborated by creating a number of alternative plans for achieving that goal, with one plan chosen as the active plan. Associated with the choice of active plan is a justification, explaining why the active plan was chosen over other alternative plans, and under what circumstances might the choice change. This justification could be represented either as hypertext documentation (with hypertext links to the referents of terms occurring in the justification). Alternatively, a more sophisticated discussion of alternatives could be recorded using a tool such as REMAP. The Collaboration InformationAssociated with each goal in a solution structure is the list of developers responsible for working on that goal. An owner (or owners) of a goal is someone (a developer or a project manager) who has the right to change the context or the specification of the goal. A contractor for a goal is a developer who has the right to create a plan for achieving the goal. (The contractor then becomes the owner of that plan and its subgoals.) Plan NodesAssociated with each plan node of the solution structure will be the following data:
The Collaboration Information for a Plan NodeUnlike goals, which have both owners and contractors, a plan has only an owner. The owner of a plan will always be a contractor for the parent goal of that plan, and will be an owner of the subgoals of that plan. The Elaboration of a Plan NodeThe elaboration of a plan consists of a working goal, together with a number of auxiliary subgoals. The working goal for a plan is a kind of working copy of the plan's parent goal. Usually, the working goal and the parent goal for a plan share copies of the same solution annotation and specification. When this is not the case, an exception must be raised (described here). The context of the working goal for a plan will in general be different from that of the parent goal for the plan: solutions produced by one of the subgoals can appear in the context of the working goal as resources. The auxiliary subgoals will in general differ from the main goal in context, solution annotation and specification. The solution for a subgoal will be only a part of the solution for the main goal. The context for a subgoal will often be a subset of the context of a main goal (because the subgoal may not need all the solutions produced by sibling subgoals). Associated with the elaboration of a plan is a justification describing how the solutions produced by the subgoals contribute towards the solution of the working goal, and how the working goal relates to its grandparent goal. As with the justification for the elaboration of a goal, this justification can be either ordinary text, hypertext, or a structured argument such as might be recorded using REMAP. Evolution InformationThe evolution information for a goal or plan node consists of information about changes that have affected or will affect that goal. This evolution information consists of the following aspects:
Change EventsA change event is a named change affecting a solution structure. A change event may indicate a change to the specification of the solution being developed, or a change to the assumptions about the way the solution will be used. For example, often an initial version of a system is developed to run on a single machine with a single user. However, the developers often are aware that ultimately the customer will want to run the system in a distributed, multi-user environment. In that case, "make distributed" or "make multi-user" are two possible change events that the developers should be planning for. A change event consists of
ExceptionsAn exception is an unplanned change event resulting from a problem or opportunity occurring at a lower node that affects higher nodes. Exceptions represent bottom-up changes rather than top-down changes. A contractor for a goal may conclude that the goal cannot reasonably be met, for technical or other reasons. (Or the contractor may simply believe that a different goal is preferable.) The EMMA metamodel allows for a good deal of flexibility in handling such a situation. One possible course of action would be this:
Depending on the policies governing the development project, the contractor may be allowed to continue work on the changed goal while waiting for approval. Another kind of exception is a request by a contractor for a goal to the goal's owner asking for some additional resource, or clarification, or information. An exception consists of the following information:
Published and Subscribed Change EventsThe owner of a goal may choose to add a change event to the list of published change events, indicating that that node is responsible for broadcasting that change event, when appropriate. An owner or contractor of a goal or plan may also choose to add a change event to the list of subscribed change events associated with that node. This indicates that the node is interested in knowing about that type of change. Anticipated Responses to Change EventsAn anticipated response to a change event describes how the node will respond to a received change event to which it subscribes. There are four sorts of planned responses that a node may record:
Change Records and Exception RecordsA change event record consists of either
The possible responses are as described above for anticipated responses. An exception record consists of either
Unlike change events, to which a node must subscribe, an exception raised at a node is always received by its parent node. There are two classes of responses to an exception:
There can be several responses to one received exception: the exception might be partially handled, and a secondary exception might also be raised. Handling an exception externallyAn exception may be marked as handled externally if it was possible to handle the exception in a way that makes no change to the EMMA solution structure. For example, a contractor for a goal might feel that some term occurring in an assumption or solution property is ambiguous or not sufficiently clear. The contractor might raise an exception indicating this ambiguity and his interpretation of this term. If the owner of the goal accepts this interpretation, he can mark the exception as handled externally. In such a circumstance, it may not be appropriate to propagate the clarification to higher levels, because it might involve low-level concepts that will not be meaningful at higher levels. Propagation of an exceptionPropagation of an exception upwards allows for translating a low-level exception into one that is more meaningful at higher-levels. For example, the low-level message "Such-and-such compiler does not correctly handle C++ templates" can give rise to the more general message, "The current design cannot be implemented using the such-and-such compiler." By recording the causal relationships between low- and high-level exceptions, the EMMA metamodel makes it possible to trace the low-level causes for high-level design or plan changes. At the same time, the exception propagation mechanism allows problems to be translated into more general, high-level terms that are appropriate for the recipients. Consistency and Completeness of the EMMA Solution StructureAlthough the long-term benefit of the EMMA solution structure is that it supports the system's evolution, an important short-term benefit is that the solution structure keeps track of consistency and completeness of a solution. Consistency ConditionsThe following invariants must always be maintained for any EMMA solution structure:
Completeness ConditionsFor a solution structure to be complete, the following conditions should hold:
These completeness conditions will be used to generate status reports tailored for a specific developer. These status reports will remind the developer of actions that need to be taken that are relevant to goals and plans that the developer is working (either as an owner or a contractor). How the EMMA Solution Structure EvolvesIn this section, we describe very briefly how we envision that the EMMA solution structure for a system might evolve.
Conclusion: The Use of EMMA in Software Development and EvolutionHow can the network of dependencies described above be used in software development and evolution? The idea behind EMMA is that when an evolutionary step occurs, it will always be initiated by some change of goals or context at some level of the solution structure. EMMA can help in understanding the impact of such a change by tracing through the dependency relationships to discover what subgoals are affected by the change. The tracing can be used in the reverse direction, as well, to find out what high-level goals depend on what components of the system solution. This makes analysis of the impact of changes much more focussed. The EMMA metamodel is designed to support system development and evolution in the following ways:
BibliographyCBSE. Ning, J. Q., Miriyala, K., and Kozaczynski, W., "An Architecture-driven, Business-specific, and Component-based Approach to Software Engineering," Proceedings of the 3rd International Conference on Software Reusability, Rio de Janeiro, Brazil, November 1994. Euclid. B. W. Lampson, J. J. Horning, R. L. London, J. G. Mitchell, and G. L. Popek. "Report on the Programming Language Euclid," ACM SIGPLAN Notices, 12(2), February 1977. Familiar. Dean Allemang and Sidney Bailin, "Concept of Operations for FAMILIAR", draft technical report, March 1997. Ibis. J. Conklin and M. Begeman, "gIBIS: a hypertext tool for exploratory policy discussion," ACM Transactions on Office Information Systems, Vol. 6, pp. 303-331, October, 1988. Meyers. Meyer, B., "Applying 'Design by Contract'," IEEE Computer, October 1992. Morale. G. Abowd, A. Goel, M. McCracken, M. Moore, C. Potts, S. Rugaber, and L. Wills, "Mission-Oriented Legacy System Evolution Through Architectural Recovery and Evaluation," to appear in ICSE-97 Workshop on Migration Strategies for Legacy Systems. Remap. Balasubramaniam Ramesh and Vasant Dhar, "Supporting Systems Development by Capturing Deliberations During Requirements Engineering," IEEE Transactions on Software Engineering, Vol. 18, No. 6, June 1992. TRP. Jin W. Chang and Colin T. Scott, "TRP Support Environment (TSE)," International Workshop on CSCW and the Web, 1996. WinWin.Mingjune Lee. "Foundations of The Winwin Requirements Negotiation System." Technical Report TR-96-501, USC Center for Software Engineering, University of Southern California, University Park, Los Angeles, April 1996.
(c) 2006 CoGenTex, Inc. All Rights Reserved.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||