Object Oriented Analysis and Design using UML

by Sandeep Desai (http://www.thedesai.net/)

Book reference:

UML Distilled 3rd Edition by Martin Folwer

Applying UML and Patterns by Craig Larman

 

The process of software development primarily involves requirement gathering, designing and developing.

 

The two models of software development are

·        Waterfall Development, where each phase is completed before the next phase is begun. This approach has led to a lot of project failures due to the rigidness of the process.

·        Iterative Development, where design and development is started before all the requirements are gathered. This approach handles changes in requirements better and provides quicker feedback from customers

 

One suggested approach for doing Iterative Analysis and Design is to have multi step process as described below

The goal at the end of this process to have understood and implemented the risky party of the project. In UP (Rational Unified Process) terms it is called the elaboration phase

 

The Agile Development Manifesto recommends an iterative development approach where changes to the projects are accepted late. It emphasizes simplicity, lightness, communication and self-organizing teams.

 

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

 

SCRUM is another agile methodology that recommends daily meetings, self-organizing teams.

 

Extreme Programming method includes programming in pairs and test driven development

 

The goal of Agile modeling is to understand not to document. It does not imply that modeling should be avoided. It recommends white board sketching over modeling using a UML tool. Don’t model alone, model in pairs. Use good-enough UML notation. Know that all models maybe inaccurate. Developers should do the OO design

 

RUP (Rational Unified Process) phases, they do not imply waterfall development. Everything is optional in UP

 

UP Disciplines

UP Inception phase

Gathering Requirements

FURPS model

 

Other FURPS+

Relationship between disciplines and phases

In each iteration, phase the relative effort for each discipline varies. Initial phases focus more on requirements and the later more on design

Requirements Organization in UP artifacts

They are information text only and can be stored as Web pages or Wiki

Use Cases

They are text stories. It is a contract of how system will behave.

Focus on use cases that are Elementary Business Process (EBP) i.e. a task performed by one person in one place at one time in response to a business event, which adds measurable business value and leaves the data in a consistent state

 

Actor: Something with behavior such as person, computer system or organization (e.g. cashier)

Scenario is a specific sequence of actions and interactions between actors and the system; it is also called as a use case instance

 

Kinds of Actor: Primary, Supporting (external) e.g. authorization, Offstage e.g. external audit

Use Case formats:

 

Use case template from alistair.cockburn.us

Use Case Selection

Comment

Use Case Name

Start with verb

Scope

The system under design

Level

User-goal or subfunction

Primary Actor

Calls on system to deliver services

Stakeholder and Interests

Who cars about this use case and why

Preconditions

 

Success guarantee

Post-condition

Main Success Scenario

A typical, unconditional happy path scenario of success

Extensions

Alternate scenarios of success or failure

Special Requirements

Related non-functional requirements

Technology and Data Variations list

I/O methods, data formats

Frequency of Occurrence

Influences investigation, testing and timing of implementation

Miscellaneous

Open issues etc

 

UML Use Case Diagram Example

 

Elaboration UP phase

Artifacts that may be started in Elaboration Phase

Domain Model

Design Model – describes logical design, software class diagrams, object interaction diagrams and package diagrams

Software Architecture Document – key architecture issues, summary of outstanding design issues

Data Model – database schema and object relation mapping (ORM) strategy

Use-Case Storyboards, UI prototypes

 

Domain Model

Domain represents real world not software. Use UML Class diagram for domain model, do not show software objects or classes or data model

Domain Model diagram dos and don’t

 

Domain Model diagram Example

 

 

How to find conceptual classes

 

Category list for conceptual classes

 

Common Association List

System Sequence diagram

Use UML Sequence diagram

SSD shows events for one scenario of use case
Captures system events

Create SSD for main success story.

Abstract instead of physical

 

UML

The Unified Modeling language (UML) is a family of graphical notations, backed by a single meta-model, that help in describing and designing software systems.

 

 

Books

Agile Modeling by Scott Ambler

Agile Software Development with SCRUM

Extreme Programming Explained by Kent Beck

UML Modeling Software

Free

Commercial

 

 

 

UML Resources

 

OMG UML

Martin Fowler

Craig Larman

Agile Modeling by Scott Ambler

UML Diagrams by Scott Ambler

Rational Unified Process Wiki

Brad App

Agile Alliance