Upload
dana-jennings
View
212
Download
0
Embed Size (px)
Citation preview
Capability Maturity Models
• Software Engineering Institute (supported by DoD)
• The problems of software development are mainly caused by poor process management
• Five process maturity levels are defined
• Each maturity level has its associated key process areas (KPAs)
• Level 1: Initial Level
Everything is done on an ad hoc basis; few processes are defined
Unpredictable - success depends on individual effort
Capability is a characteristic of the individuals, not of the organization.
The majority of software organizations are Level 1 organization
June 7, 1999
Capability Maturity Models (2)
• Level 2: Repeatable
Basic project management processes are established to track cost and schedule (measurements)
The necessary process discipline is in place to repeat earlier success on similar projects
Processes may differ among projects in a Level 2 organization
KPAs
• Software configuration management
• Software quality assurance
• Software subcontract management
• Software project tracking and oversight
• Software project planning
• Requirements management
Capability Maturity Models (3)
• Level 3: Defined
The software process for both management and engineering activities is documented, standardized, and integrated into an organization-wide software process
Projects tailor the organization’s standard software process to develop their own defined software process, which accounts for the unique characteristics of the project. (Project Defined Software Process)
KPAs
• Peer review
• Intergroup coordination
• Software product engineering
• Integrated software management
• Training program
• Organization process definition
• Organization process focus
Capability Maturity Models (4)
• Level 4: Managed
The organization sets quantitative quality goals for both software products and processes.
Quality and productivity are continuously measured
An organization-wide software process database is used to collect and analyze the data available form the projects’ defined software process
Corrective actions are taken when there are unacceptable deviations from the goal
KPAs
• Software quality management
• Quantitative process management
Capability Maturity Models (5)
• Level 5: Optimizing
Focused on continuous process improvement
Cost/benefit analyses of new technologies and proposed changes to the organization’s software process.
Innovations that exploit the best software engineering practices are identified and transferred throughout the organization
KPAs
• Process change management
• Technology change management
• Defect prevention
Process Capability and the Prediction of Performance
•Figure 2.2 from the CMM handout
•Software process is the way we produce software. It incorporates the software life-cycle model, the tools we use and, most important of all, the individuals building the software.
Chapter 3: Software Life-Cycle Models
• The series of steps through which the product progresses is called the life-cycle model
• Build-and-fix model
• Waterfall model (most commonly used)
• Rapid prototyping model (most commonly used)
• Incremental model
• Synchronize-and-stabilize (or daily build) model (Microsoft)
• Spiral model (Boehm)
• Object-oriented Life-cycle models Fountain (Henderson-Sellers), Baseball (Coad), and others
Build-and-Fix Model
• Figure 3.1
• No specifications and design
• Build (implement) the product and rework the product as many times as necessary to satisfy the client
• Strength and Weakness
Work well on small programs
High rework cost
Maintenance is difficult (without specifications and design documents)
Waterfall Model
• Waterfall model (Royce, 1970) (Figure 3.2)
• A critical point regarding the waterfall model is that no phase is complete until the documentation for that phase has been completed.
• Strength
Enforced disciplined approach
• Documentation provided (documentation-driven model)
• The products of each phase being carefully checked by SQA
• Inherent in every phase of the waterfall model is testing
• Weakness
In general, specification documents are long, detailed, and hard to read
The first time that the client sees a working product is only after the entire product has been coded
Rapid Prototyping Model
• A rapid prototype is a working model that is functionally equivalent to a subset of the product
• Figure 3.3
• Build a rapid prototype and let the client or end-users interact with the rapid prototype and experiment with it; specification follows
• Strength
The feedback loops of the Waterfall model are less likely to be needed in the rapid prototyping model
• the prototype has been “validated” through interaction with the client
• Design teams can gain insights from the rapid prototype
• Weakness?
Incremental Model
• The product is designed, implemented, integrated, and tested as a series of incremental “builds”
• Each build consists of code pieces from various modules interacting together to provide a specific functionality capability
• Strength
Early delivery of “useful” and “usable” products to the client
Allow time for the client to learn and adjust to the new product
The client can stop the development of the product at any time
Requirements change can be incorporated in later builds (releases)
• Weakness
Each additional build has to be incorporated into the existing structure without destroying what has been built to date -- success relies on product has an “open architecture”
Project control becomes more difficult
Synchronize-and-Stabilize Model
• Prioritized features
• Specification
• Divide the set of features into three or four builds
• Each build is carried out by a number of small teams (six to eight people) working in parallel
• At the end of each day all the teams synchronize (put together the partially completed components and test the resulting product (daily build)
• Stabilization is performed at the end of each build (milestone); the contents of the build is frozen
Synchronize-and-Stabilize Model (2)
• Advantages
Repeated synchronization ensures that the various components always work together (I.e., always has something working to ship)
Early insight into the operation of the product help revise and refine requirements
Spiral Model
• Software development involves unavoidable risks
The delivered product does not satisfy client’s real needs
Key personnel resigns while the development is still in progress
Essential difference between small scale product and large scale product.
• Use “prototyping” as a risk reduction mechanism
• Figures 3.6, 3.7, and 3.8
• Strength and Weakness
The iterative framework realistically reflects the real world (software evolves)
Risk-driven: demands considerable risk assessment expertise
Suitable for large-scale software development
Project termination legal issues
Object-Oriented Life-Cycle Models
• Fountain Model (Figure 3.9)
• Undisciplined form of software development
• A better way to proceed is to have as an overall objective a linear process as well as appreciate the realities of the OO paradigm concerning the features as frequent iteration and refinements.
• “Iteration” is an intrinsic property of software production in general and the OO paradigm in particular
Comparison of Life-Cycle Models
•Figure 3.10