American Science Institute of Technology |
|
|
The goal of the elaboration phase is to baseline the architecture of the system to provide a stable basis for the bulk of the design and implementation effort in the construction phase. The architecture evolves out of a consideration of the most significant requirements (those that have a great impact on the architecture of the system) and an assessment of risk. The stability of the architecture is evaluated through one or more architectural prototypes. The primary objectives of the elaboration phase include:
In order to achieve this primary objectives, it is equally important to set up the supporting environment for the project. This includes creating a development case, create templates, guidelines, and setting up tools. Essential activities
Milestone: Lifecycle ArchitectureAt the end of the elaboration phase is the second important project milestone, the Lifecycle Architecture Milestone. At this point, you examine the detailed system objectives and scope, the choice of architecture, and the resolution of the major risks. Evaluation Criteria
ArtifactsPrototypes Prototypes are used in a directed way to reduce risk. Prototypes can reduce uncertainty surrounding:
Types of PrototypesYou can view prototypes in two ways: what they explore; and how they evolve or what is their outcome. In the context of the first view - what they explore - there are two main kinds of prototypes:
Exploratory PrototypesAn exploratory prototype is designed to be like a small "experiment" to test some key assumption about the project, either functionality or technology or both. It might be something as small as a few hundred lines of code, created to test the performance of a key software or hardware component. Or it may be a way of clarifying requirements, a small prototype developed to see if the developer understands a particular behavioral or technical requirement. Exploratory prototypes tend to be intentionally "throw-away", and testing of them tends to be informal. The design of exploratory prototypes tends to be very informal, and also tends to be the work of one or two developers at most. Evolutionary PrototypesEvolutionary prototypes, as their name implies, evolve from one iteration to the next. While not initially production quality, their code tends to be reworked as the product evolves. In order to keep rework manageable, they tend to be more formally designed and somewhat formally tested even in the early stages. As the product evolves, testing becomes formalized, as usually does design. Behavioral PrototypesBehavioral prototypes tend to be exploratory prototypes; they do not try to reproduce the architecture of the system to be developed but instead focus on what the system will do as seen by the users (the "skin"). Frequently, this kind of prototype is "quick and dirty," not built to project standards. For example, Visual Basic may be used as the prototyping language, while C++ is intended for the development project. Exploratory prototypes are temporary, are done with minimal effort, and are thrown away once they have served their purpose. Structural PrototypesStructural prototypes tend to be evolutionary prototypes; they are more
likely to use the infrastructure of the ultimate system, (the
"bones"), and are more likely to evolve into becoming the real system.
If the prototype is done using the "production" language and tool set,
there is the added advantage of being able to test the development environment
and let some of the personnel get familiar with new tools and procedures. Risk List Updated and reviewed. New risks are likely to be architectural in nature, primarily relating to the handling of non-functional requirements Development Case Refined based on early project experience. The development environment, including the process, tools and automation support required to support the construction team will have been put in place. Project Specific Templates
Timing
Responsibility
Tailoring
Software Architecture DocumentCreated and baselined, including detailed descriptions for the architecturally significant use cases (use-case view), identification of key mechanisms and design elements (logical view), plus definition of the process view and the deployment view (of the Deployment Model) if the system is distributed or must deal with concurrency issues.
Analysis Model An object model describing the realization of use cases, and which serves as an abstraction of the Design Model . The Analysis Model contains the results of use case analysis, instances of the Analysis Classes. The Analysis Model is an optional artifact
Design Model The design model is an object model describing the realization of use cases, and serves as an abstraction of the implementation model and its source code. The design model is used as essential input to activities in implementation and test. Defined and baselined. Use-case realizations for architecturally significant scenarios have been defined and required behavior has been allocated to appropriate design elements. Components have been identified and the make/buy/reuse decisions sufficiently understood to determine the construction phase cost and schedule with confidence. The selected architectural components are integrated and assessed against the primary scenarios. Lessons learned from these activities may well result in a redesign of the architecture, taking into consideration alternative designs or reconsideration of the requirements. Data Model The data model is a subset of the implementation model which describes the logical and physical representation of persistent data in the system. It also includes any behavior defined in the database, such as stored procedures, triggers, constraints, etc. Implementation Model (and all constituent artifacts, including Components) The implementation model is a collection of components, and the implementation subsystems that contain them. Components include both deliverable components, such as executables, and components from which the deliverables are produced, such as source code files. Vision Refined, based on new information obtained during the phase, establishing a solid understanding of the most critical use cases that drive the architectural and planning decisions Software Development Plan The Software Development Plan is a comprehensive, composite artifact which gathers all information required to manage the project. It encloses a number of artifacts developed during the Inception phase and is maintained throughout the project. Guidelines such as Design and Programming The guidelines used to support the work. Iteration plan Iteration plan for the construction phase completed and reviewed Use Case Model The use-case model is a model of the system's intended functions and its environment, and serves as a contract between the customer and the developers. The use-case model is used as an essential input to activities in analysis, design, and test. A use-case model (approximately 80% complete)—all use cases having been identified in the use-case model survey, all actors having been identified, and most use-case descriptions (requirements capture) have been developed. Supplementary Specifications The Supplementary Specifications capture the system requirements that are not readily captured in the use cases of the use-case model. Such requirements include:
|
|
Send mail to
webmaster@amscitech.com
with questions or comments about this web
site.
|