CH 2 Processes
CH 2 Processes
Outline:
1. What is a software process?
A. Four primary software engineering activities
Software Processes 2. Traditional software process models
A. Waterfall
B. Incremental development
!
! C. Spiral model
Chapter 2 D. Reuse-oriented software engineering
3. Coping with change
4. Example process: Rational Unified Process
!1 !2
• It is a description of Error
problem Error
problem
!5 !6
!9 !10
Requirements
definition
• Good features:
- Simple and easy to implement (better than no process)
- Easy for managers to track the progress of the project
System and
software design
• Can be used for large projects when a system is developed
at several sites.
Implementation
and unit testing - Plan-driven nature of the this model helps coordinate the work.
!15 !16
Incremental development benefits Incremental development problems
• Early versions can implement the most important, - Refactoring: disciplined technique for restructuring an existing body of
code, altering its internal structure without changing its external behavior.
urgent, or risky features - Modifying a program to improve its structure, reduce its complexity, or
make it easier to understand.
!17 !18
• Good for high-risk projects. • The system is assembled from existing components.
- Often used in combination with other process models. • Components may be in the form of
• In practice, the model is rarely used as published. - source code that must be compiled into the final product OR
- already compiled code that can be accessed from other programs.
!
• Somewhat similar to incremental development, but • Process stages:
- Risk assessment is incorporated into the process - Requirements specification (similar to other process models)
- Component analysis: search for close matches to requirements
- Development is not required to be incremental:
- Requirements modification: to reflect available components
✦ prototypes and results of previous loops can be discarded.
- System design with reuse: organize framework around acceptable
✦ production development could be postponed until the last loop.
components (may require designing new code).
- Development and integration: components are integrated along with
new code
- System validation (similar to other process models)
!21 !22
!25 !26
• Allows users to see how well system could support • Must be developed quickly!
their work
• Users test the prototype and evaluate it with respect
• May lead to new ideas for requirements to the objectives
• As prototype is developed, may reveal errors and • Prototypes should be discarded after use!
omissions in the requirements - It may be impossible to tune the prototype to meet performance
and reliability requirements
• Can check feasibility of design - Prototypes are normally undocumented
- For a database, make sure it efficient for most common queries - The structure is usually degraded through quick and dirty design
- For a user interface, user understands a prototype much better - The prototype probably will not meet normal organizational
than a text description (get better feedback). quality standards.
!27 !28
Incremental delivery Incremental delivery problems
• Special case of Incremental Development where • Generally same problems as Incremental
each version is delivered to users. Development
- Difficult to design and implement common facilities needed by
• Generally same advantages as Incremental all versions
Development - Constant upgrading can degrade structure of code
- Good response to changing requirements
• Major system functionality is available to users earlier. • Contract negotiations are more difficult
- The specification is developed in stages
• Early increments act as a prototype to help elicit - Unable to use it as part of the development contract.
requirements for later increments.
• Difficult to get feedback when replacing an existing
• Highest priority requirements are included in early system:
increments, so they receive the most testing. - Users won’t be motivated to use the less functional new
system.
!29 !30
• Project Management
- scheduling, managing resources
!33 !34
of the process
❖ manages documentation
!35