by Sandeep Desai (http://www.thedesai.net/)
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
FURPS model
Other FURPS+
In each iteration, phase the relative effort for each discipline varies. Initial phases focus more on requirements and the later more on design
They are information text only and can be stored as Web pages or Wiki
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 |
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 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
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
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.
Agile Modeling by Scott Ambler
Agile Software Development with SCRUM
Extreme Programming Explained by Kent Beck
Free
Commercial
UML Resources