Development Processes to know:

advertisement
Development Processes
UML just is a modeling technique, yet for using it we need
to know:
»
»
»
»
what do we model in an analysis model?
what do we model in system design / architecture model?
what do we model in a detailed design model?
how do these models relate to each other? refinement?
pure extension? mapping? tracing?
» when, in which order do we make these models?
» which techniques/diagrams do we use to which extent?
Modeling all  all on a high-level, some detailed design of complex
issues plus good code-documentation  some high-level models 
no documentation at all?
Quality assurance, prototyping, …: how do they match into the
process?
WHAT - WHY - WHO - WHEN - HOW
Process of Fusion
The Fusion process knows seven main activities:
• Requirements: use case model (actors, use cases), some highlevel use case specifications, non-functional requirements
• Analysis: system class diagram containing basic classes; system
interface with detailed use case specifications, system operations
and events, pre- and post-conditions for system operations
• GUI Design
• Architecture: technical framework of system, main components of
the system, component interfaces and interactions
• Database Design
• Design for each component: design class diagrams, object
collaboration diagrams, visibility, representation of associations,
initial object configuration, detailed class descriptions
• Implementation: code
Rational Unified Process
• A product goes through various cycles, each cycle
having the following phases:
- Inception: proof of concept, feasibility, goals
- Elaboration: detailed requirements, usage scenarios,
architecture, components, high-level interaction patterns
- Construction: refinement of architecture, risk-driven
implementation iterations
- Transition: facilitating user acceptance, ...
• Each phase is split up into various iterations.
• Each iteration has analysis, design and
implementation activities.
• Guiding principles in the Rational Unified / Objectory
process:
- Use-case driven
- Architecture-centric
- Controlled and iterative
- Risk-driven
Deliverables Inception Phase
• Project description
» about the project in general and its goals, not requirements
» “unless you write it out, you can’t be sure everyone agrees on the
same project description”
» one short paragraph to a few pages for really large projects (r)
• Risk analysis
– list of market factors (r)
– list of risk factors: list of things that can go wrong in contrast to
use cases that model expected behavior
– list of assumptions
• Use case diagram, description of actors and use cases
» determine system boundaries and project scope
» one sentence descriptions for use cases and actors
• Project proposal
– to get go / no-go decision
Scoping the project
Defines that part of the system that will be build in this
project.
Project scope is not given by system boundaries!
– prioritize requirements
– take into account
»
»
»
»
market forces
skill of developers
money and time frame
risks
– start small, grow powerful (in follow up projects)
Similar to defining iterations, yet project wide.
Helps to avoid getting stuck in requirements and use
case modeling
Scoping itself is iterative and scope must be redefined!
Deliverables Elaboration Phase
•
•
•
•
Detailed primary scenarios
Secondary scenarios
Activity diagrams
User interface diagrams or examples
» e.g. by using story boarding
• Architecture, maybe class diagrams
• Prototypes
• Project plan
» break down into iterations
» cost estimates for iterations
• Changes to boundaries, scope, list of risk factors,
list of actors, description of use cases as defined in
inception phase!
Planning Construction Iterations
What is done in the first iterations?
• core functionality
» either implemented (if high risk) or as stubs (if low risk)
• use cases that handle high risks
» update list of risks to reflect current situation (complex issues
that are crucial and for which no solution is yet known)
» prioritize risks and decide which ones need to be solved first
• primary scenarios of use cases only
» first goal is to solve high risk challenges, full functionality
comes later on
Each iteration produces an executable, testable, in later
iterations even deployable release of the system.
» stubs, simulators, additional test-components
» tested by other people than its developers
(d: What should be planned for last iteration?)
Use Cases in the Process
Inception phase:
Use cases are developed to help scope out the project.
Elaboration phase:
More detailed use cases are developed for:
» risk analysis
» baseline architecture
» plan the construction phase
Construction phase:
Uses cases are starting points for:
» design (where more detailed use cases may be developed)
» developing test plans
Use cases are part of requirements to be satisfied.
Transition phase:
Use cases can be used to develop user guides and training.
Use Case Driven
• Use cases bind all workflows together
• Use cases are the starting point for requirements
capture
• Use cases are used to define iterations
• Use cases help to structure user documentation
• Use cases help to define and structure test cases
==> advantages of use case driven approach?
==> dangers of use case driven approach ? (d)
Function versus Form
Use cases
specify function
Architecture
specifies form
==> process is use case driven (helps organizing work and models)
but architecture centric (is focus of models and work)
==> architecture and design patterns are not part of notation
but have to be designed into models
Other Elements of a Process
Definition
• Either predefined or project-specific
• Consider a process like Rational Unified just as a
framework where you plug in and derive from it the
project specific, adapted and detailed process definition
• Also project definition is created incrementally and refined
iteratively (inclusive project plan reviews) during the
project!
• Other elements? (d)
Download