Applied Software Solutions

 Company  |  Products & Services  |

Elaboration Phase

The purpose of the Elaboration Phase is to analyse the problem domain, establish a sound architectural foundation, develop the project plan, and eliminate the highest risk elements of the project. To accomplish these objectives requires the "mile wide and inch deep" view of the system. Architectural decisions have to be made with an understanding of the whole system: its scope, major functionality and non-functional requirements, such as performance requirements. It is easy to argue that the Elaboration Phase is the most critical of the four phases. At the end of this phase, the hard "engineering" is considered complete and the project undergoes its most important day of reckoning, the decision on whether or not to commit to the production phases. While the process must always accommodate changes, the elaboration phase activities must ensure that the architecture, requirements and plans are stable enough, and the risks sufficiently mitigated to be able to predictably determine the cost and schedule for the completion of the development. Conceptually, this level of fidelity would correspond to that necessary for an organisation to commit to a fixed price Construction Phase.

In the Elaboration Phase an executable architecture prototype is built in one or more iterations, depending on the scope, size, risk, and novelty of the project. This effort addresses at least the critical use cases identified in the inception phase, which typically expose the top technical risks of the project. While an evolutionary prototype of production-quality components is always a goal, this does not exclude the development of one or more exploratory, throwaway prototypes to mitigate specific risks such as design/requirements trade-offs, component feasibility study, or demonstrations to investors, customers, and end-users.

The primary objectives of the Elaboration Phase include:

  • Defining, validating and base-lining the architecture as rapidly as practical
  • Base-lining the vision
  • Base-lining a high-fidelity plan for the Construction Phase
  • Demonstrating that the baseline architecture will support this vision for reasonable cost in a reasonable time.

The essential activities of the Elaboration Phase are:

  • Elaborating the vision establishing a solid understanding of the most critical use cases that drive the architectural and planning decisions.
  • Elaborating the process and the infrastructure, the development environment. Putting in place the process, tools and automation support.
  • Elaborating the architecture and selecting components. Potential components are evaluated 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.

The outcome of the Elaboration Phase is theUse 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. The Use Case Model consists of a collection of:

Use Cases

A Use Case defines a set of use case instances, where each instance is a sequence of actions a system performs that yields an observable result of value to a particular actor.

Actors

An actor defines a coherent set of roles that users of the system can play when interacting with it. A user can either be an individual or an external system

Supplementary Specifications

The Supplementary Specifications capture the system requirements that are not readily captured in use cases. Such requirements include:

  • Legal and regulatory requirements and application standards.
  • Quality attributes of the system to be built, including usability, reliability, performance and supportability requirements.

Other requirements such as operating systems and environments, compatibility requirements, and design constraints.

Analysis Model

An object model describing the realisation of use cases, which serves as an abstraction of the Design Model. The Analysis Model contains the results of use case analysis, Analysis Classes and any associated documents. The analysis model may be a temporary model, as in the case where it evolves into a Design Model, or it may continue to live on through some or all of the project, and perhaps beyond, serving as a conceptual overview of the system.

Analysis Classes

Analysis classes are used to capture the major "clumps of responsibility" in the system. They represent the prototypical classes of the system, and are a 'first-pass' at the major abstractions that the system must handle. Analysis classes may be maintained in their own right, if a "high-level", conceptual overview of the system is desired. Analysis classes also give rise to the major abstractions of the system design: the design classes and subsystems of the system.

Design Model

The Design Model is an object model describing the realisation 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. It is used to conceive as well as document the design of the software system. It is a comprehensive, composite artifact encompassing all design classes, subsystems, packages, collaborations, and the relationships between them.

Design Classes

A Design Class is a description of a set of objects that share the same responsibilities, relationships, operations, attributes, and semantics. They are derived from Analysis Classes as a result of the design process. The following people use the Design Classes:

  • Implementers for a specification when they implement the classes.
  • Designers of other parts of the system to understand how their functionality can be used, and what their relationships mean.
  • Use-case designers, to instantiate them in use-case realisations.
  • Those who design the next version of the system to understand the functionality in the design model.
  • Those who test the classes to plan testing activities.

Software Architecture Document

The Software Architecture Document provides a comprehensive architectural overview of the system, using a number of different architectural views to depict different aspects of the system. It serves as a communication medium between the architect and other project team members regarding architecturally significant decisions that have been made on the project.

The representation and objectives of the software architecture are usually defined before the very first iterations, and can then be maintained throughout the project. These architectural representation guidelines are documented in initial versions of the Software Architecture Document.

 

 

©2000-2012 Applied Software Solutions Limited . All rights reserved. This web site is for informational purposes only.
Applied Software Solutions makes no warranties, express or implied, in this web site.