Guideline: Important Decisions in Analysis & Design
This guideline describes important things to consider when tailoring the Analysis and Design aspects of the process.
Relationships
Main Description

Decide How to Use Work Products

Make a decision about what work products are to be used and how they are to be used.  In addition to identifying what work products are to be used, it is also important to also tailor each work product to be used to fit the needs of the project. 

The table below specifies which Analysis & Design work products are recommended and which are considered optional (i.e., may only be used in certain cases). For additional tailoring considerations, see the tailoring section of the work product description page.

Work Product Purpose

Tailoring (Optional, Recommended)

Analysis Model (Analysis Class) An analysis model is useful to better understand the requirements before making design decisions. On complex systems it may be maintained to provide a conceptual overview of the system.

Optional

On many projects, an initial Design Model is used in place of the Analysis Model.

On projects which do create an Analysis Model, it is typically a temporary artifact which evolves into a design model.

Navigation Map, User-Interface Prototype

Projects with a large and complex user-interface should consider user-interface design.

Optional

More informal user-interface design may be sufficient on smaller development efforts.

Design Model

Most systems, even smaller systems, should be designed before being implemented in order to avoid costly rework due to design errors. Visual models allow the design to be easily communicated. Tools for forward engineering and reverse engineering can ensure consistency with the implementation model and save effort.

Recommended for most projects.

On smaller projects, the use of automated tools is not critical, but may have long term productivity benefits.

Design Class; Design Package

Classes and packages are a basic part of any object-oriented design. Object-oriented design is the standard design approach used on most projects.

Recommended for most projects.

The main tailoring issues are deciding which stereotypes to use (this may be captured in the Design Guidelines).

Use-case realization

Provide the bridge from use cases to design.

Recommended for most projects.

Interface

Interfaces are typically used to define behavior independently from large-grained components that realize the behavior.

Recommended for most projects.

Component-based design is becoming a standard design approach.

Design Subsystem

Design Subsystems are used to encapsulate behavior inside a component that provides interfaces. It is used to encapsulate the interactions of classes and/or other subsystems.

Recommended for most projects.

Subsystems are often useful to raise the level of design abstraction. They make systems easier to be understood.

Event

May be useful for systems that respond to many external events. Recommended for real-time systems.

Protocol

Required for real-time systems. Recommended for real-time systems.

Signal

May be useful for systems that require concurrency and are event-driven.

Required for real-time systems.

May be useful for systems that require concurrency and are event-driven.

Recommended for real-time systems..

Capsule

For real-time systems, but can be useful in modeling and designing any system that has a high degree of concurrency.

Recommended for real-time systems.

Data Model Used to describe the logical and possibly physical structure of the persistent information.

Recommended for projects that use a database.

Deployment Model Shows the configuration of processing nodes at run-time, the communication links between them, and the component instances and objects that reside on them.

Optional.

Many systems have multiple processing nodes and therefore need to address the Deployment Model. It may, however, be captured as a section of the Software Architecture Document and does not need to exist as a separately identified artifact.

Architectural Proof-of-Concept Used to determine whether there exists a solution that satisfies the architecturally-significant requirements. Recommended for most projects.

Many projects will use an Architectural Proof-of-Concept to determine the feasibility of requirements. It may take many forms, for example:

  • a list of known technologies which seem appropriate to the solution
  • a sketch of a conceptual model of a solution
  • a simulation of a solution
  • an executable prototype.
Reference Architecture Reference Architectures speed up development and reduce risks by re-using proven solutions.

Recommended for most projects.

If suitable Reference Architecture material exists, it can dramatically speed up development and reduce risk.

Software Architecture Document (SAD) The Software Architecture Document is used to provide a comprehensive architectural overview of the system. This overview is helpful to understand the system, and to capture key architectural decisions.

Recommended for most projects.

A high level overview of the software architecture is useful on all but the smallest systems. Complex systems typically require a greater level of detail and more views than smaller projects.

User-Interface Prototype Used to expose and test functionality and usability before the real development starts. It is an effective means of validating the design before too much time is wasted.

Recommended for most projects.



Decide Which Reports to Use

The decision of which reports to use will depend on the reporting tools available to the project. If report generation tools are available, we recommend generating reports for model oriented work products, such as Design Classes, Use-Case Realizations. Existing reports in your RUP configuration are available from the work product description pages or grouped under the relevant work product in the treebrowser.

Decide How to Review

Decide on the review level to be used for each work product to be used.  Specifically, decide how to review and approve the results of Analysis & Design, and to what extent the results will be reviewed.  

The advantages of conducting reviews during Analysis & Design include:

  • Detect problems that are impossible, or very difficult, to detect in testing. For example, issues of style, and layout. 
  • Way to enforce a common modeling style and an opportunity for individuals to learn from each other. 
  • Detect those defects that wouldn't otherwise get detected until later in the project during tests.

The disadvantages of reviews during Analysis & Design include:

  • Takes time and resources. 
  • Easily misused if not managed well.

The factors that can be altered for Analysis & Design reviews are review techniques, resources, and scope. The following are some examples of what you can decide to do on your project:

  • Decide that local changes to a subsystem are reviewed only by one peer, who conducts an inspection and hands over the results on paper.
  • Decide on which parts of the design will not be reviewed at all; for example, review only some classes for each member of the project and hope that this assures the style is of a similar quality to the rest of the results.
  • Decide that the Software Architecture Document will be reviewed by customer during a separate meeting.
  • Decide to use formal review meetings for changes in important interfaces; that is, interfaces that affect the work of several project members.

For more information on review levels, see Guideline: Review Levels

Decide Whether to Generate Code

The way you do design differs depending on whether you generate code from the design model or not. If you generate code, the design needs to be very detailed. On the other hand, if you do not generate code from the design, there is no need to be very detailed in the design. On the contrary, the details in the design have to be synchronized manually with the code.