A Software Engineering Lecture by Steven Choy
Lecture Overview:
In this lecture, we will revisit the activities described in previous lectures from the perspective of software life cycle modeling. Software life cycle models enable managers and developers to deal with the complexity of the process of developing software. We will study some well-known software life cycle models that help us better understand, measure, and control the software development process. Those models make the software development activities and their dependencies visible and manageable.
We will also look at the Capability Maturity Model (CMM), which is a well-known method to characterize the maturity of software life cycle models. CMM provides a way to assess the capability of an organization based on its process maturity. The maturity level can be used to predict the outcome of future software projects run by the organization. The CMM also provides a path for an organization to improve its process maturity.
Reading: Chapter 15 of the textbook Software Life Cycle
The Goal of Software Development
Software Development Activities
We can arrange like this
What we will discuss today?
- Software Development Life Cycle (SDLC)
- Waterfall Model
- Spiral Model
- Rational Unified Process (RUP)
- Process Maturity
- Capability Maturity Model (CMM)
SDLC: Why?
Software Life Cycle Model
Overview
- A general model of the software management process, including all activities and work products required to develop a software
- Model types:
- Activity-centered: Focus on the activities of software development
- Entity-centered: Focus on work products created by the activities
- Sequential, iterative, or incremental
- Some Software Life Cycle Models: Waterfall Model, V-Model, Spiral Model
Waterfall Model
- An activity-centred life cycle model
- Prescribes sequential executions of development processes and management processes
Waterfall Model Processes
Characteristics of Waterfall Model
- Complete each activities one by one and never "look back"
- Freeze requirement before design
- Avoid coding until you have a detailed design
- Complete unit testing before integration
- Provides a simple view of software development that measures progress by the number of tasks completed
- But does the progress really reflect where we are?
V-Model
- Also a sequential activity-centred model
- A variant of waterfall model
- Goal: Associates development activities with verification activities
V-Model Illustrated
Spiral Model
- Also an activity-centred model
- But spiral model is designed to address the weaknesses in waterfall model, in particular, to accommodate infrequent change during software development
Spiral Model Illustrated
Activities in Spiral Model
- 1st Phrase (Upper-left quadrant)
- Identify objectives and define constraints and
- 2nd Phrase (Upper-right quadrant)
- Identify and resolve risks
- 3rd Phrase (Lower-right quadrant)
- Develop and verify next-level product
- 4th Phrase (Lower-left quadrant)
Unified Process
- Better known as Rational Unified Process (RUP)
- Developed by Booch, Jacobson and Rumbaugh from Rational Software Corporation (now part of IBM)
- Explicitly designed to support the implementation of best practices
- Characteristics:
- Use-case Driven
- Advocates use-case over traditional functional specification
- Architecture Driven
- Emphasizes on the use of modeling
- Iterative
The Six Practices
- Develop iteratively
- It's more practical to divide a complex project into small project and grows it incrementally
- Allows increase understanding of the problem
- Each iteration ends with an executable release
- Better accommodates for requirement, schedule or feature changes
- Manage requirements
- Describe how to elicit and document requirement, features and constraints
- Use-case model
- Use component-based architecture
- Support component-based development
- Describe how to design a flexible architecture that accommodates changes and promotes reuse
- Model visually
- Describe how to model software visually to capture the structure and behaviour of components
- Do you remember those UML diagrams?
- Verify quality continuously
- Quality assessment is built into the process, in all activities and involves all participants
- Quality is reviewed respect to the requirement
- Manage change
- Describe how to track, control and monitor changes
- Changes: code change, requirement change, design change
Rational Unified Process
Phases and Iterations
- The software lifecycle is broken in phases
- Inception
- Elaboration
- Construction
- Transition
- Each phase can be further divided into several iterations
Inception Phase
- Focus on establishment of business case and where concurrence among all stakeholders on the objectives for the project
- Outcome:
- A vision document: core project requirements, key features and associated constraints
- An initial use case model (10-20% complete)
- An initial business case
- An initial risk assessment
- A project plan
- Preliminary prototypes
Elaboration Phase
- Establishes the software architecture that provides a stable foundation for the design and implementation
- Outcome:
- A use case model (~80% complete)
- A software architecture description
- An executable software prototype
- A revised risk assessment and business case
- An updated development plan
Construction Phase
- Complete the development of the system based on the baselined architecture in elaboration phrase
- Clarifies the remaining requirements
- Outcome:
- A product ready to put in the hand of end users
- User manual
- Release note
Transition Phase
- Deploy the system to user environment for evaluation and testing
- Typically this phase includes several iterations:
- Beta release
- General availability release
- Bug fix or enhancement release
RUP: An Iterative Approach
- Each phase comprises with one or several iterations
- Each complete iteration results a release
- The final system is grown incrementally from iteration to iteration
- Benefit:
- Risk is mitigated earlier
- Learn along the way
- Change is more manageable
- Better overall quality
RUP Workflows
- RUP activities are known as workflows:
- Business Modeling
- Requirements
- Analysis and Design
- Implementation
- Test
- Configuration Management
- Project Management
- Environment
- Deployment
- In an iteration, all the workflows are performed
Summary
- Inception
- Milestone - Lifecycle objective
- Goal - to define the project scope
- Elaboration
- Milestone - Lifecycle architecture
- Goal - to build an executable architecture for the application
- Construction
- Milestone - Initial operational capability
- Goal - to flesh out the architectural skeleton with most of the application's capabilities
- Transition
- Milestone - Product release
- Goal - to transition the application to the end-user community
- Each RUP phase is further divided into iterations, each ending with a minor milestone.
Designing Software Life Cycle Process
None of the existing process models suits my organization's need.
How can I create my own?
Designing SLCP
- IEEE 1074 standard is designed to help architect/project manager to design Software Life Cycle Process (SLCP) after selecting a software life cycle model (SLCM)
- Seeks to establish a common framework for developing life cycle models
- Describes a set of activities and processes that are mandatory for the development and maintenance of software
Core Activity Groups
- Project Management
- Project Initiation
- Project Planning
- Project Monitoring & Control
- Pre-development
- Concept Exploration
- System Allocation
- Software Importation
- Development
- Requirements
- Design
- Implementation
- Post-development
- Installation
- Operation & Support
- Maintenance
- Retirement
- Integral
- Evaluation
- Software Configuration Management
- Documentation Development
- Training
Process Maturity
Software Process Maturity
- What does maturity mean to you?
- A "mature" process reduces the risk of project failure and increase the predictability/quality of software project
- A software organization is said to be mature if
- The development activities are well-defined and documented
- Products are always delivered on schedule and within budget (Of course, without compromising the quality)
- The software process is accurately communicated to both existing staffs and new comers, and work activities are carried out according to the planned process
Measuring Process Maturity
- Capability Maturity Model for Software (SW-CMM / CMM)
- Developed by Software Engineering Institute (SEI) of Carnegie Mellon University (CMU)
- What's CMM?
- A framework describing an evolutionary path from ad-hoc, chaotic process to mature, disciplined software process
- Establishes a set of criteria describing the characteristic of mature software organization
- Covers practices for project planning, engineering and management
- Chinese Translation: CMM = 能力成熟度模型
Capability Maturity Level
- CMM classifies maturity into five levels
- Initial (Level 1)
- Ad-hoc development, no formal project plan, no documentation, code & fix style
- Success depends on individual effort
- Products are often delivered late and with poor quality
- Repeatable (Level 2)
- Basic project management processes to manage software projects (track cost, schedule)
- Earlier successes can be repeated
- Defined (Level 3)
- With established organization-wide standard processes for software development
- All projects follow the organization-wide processes to develop and maintain software
- Managed (Level 4)
- Activities are measured quantitatively to provide feedback for better resource management
- Optimizing (Level 5)
- Process is continuously improved by feedback of quantitative measurement
What does Maturity Level indicate?
- Each level indicates a level of predictability of your project performance
- Initial level: Random, unpredictable performance. Schedule and cost are typically overrun
- Repeatable level: Repeatable performance from project to project. Plan based on past experience is more realistic
- Defined level: Better performance based on well-defined organization-wide process
- Managed level: Project performance continues to improve based on quantitative understanding of the process
- Optimized level: Project performance continues to improve
CMM Structure
CMM: Key Process Areas
- Each maturity level is decomposed into several key process areas
- Each key process area identifies a cluster of related activities that, when performed collectively, achieve a set of goals considered important for enhancing process capability.
- To achieve a maturity level, an organization must fulfill all key process areas (KPA) defined for that level
Key Practices
- Each KPA is described in terms of Key Practices that contribute to satisfying its goals
- The key practices describe the infrastructure and activities that contribute most to the effective implementation of the key process area
- Each Key Practice consists of a single sentence (followed by detailed description), describing "what" to be done, but not "how"
Example of Key Practice
How is CMM used in practice?
- Improve the software development process of your organization
- CMM has specific value in the area of action planning, implementing action and defining processes
- Compare existing practices against the goals of key process areas in CMM
- Evaluate outsourcing vendors/contractors
- CMM maturity level also serves as an indicator of how well the software development process an organization has
- A vendor with high maturity level is preferred than the lower counterpart
- So, most outsourcing vendors adopts CMM and tries to achieve level 5 maturity
- Example: Infosys from India: CMM-level5
- More can be found at
Who gives me the Appraisal?
- Okay, I know my organization deploys all key process areas for Level-3. Can I say my organization is at CMM Level-3?
- But one thing is exceptional:
- Everyone can say, "I'm at CMM Level-1"
CMM Assessment
- Team Selection
- Maturity Questionnaire
- Response Analysis
- On-site Visit, with interviews and document review
- Report findings based on the CMM
- Prepare KPA Profile
Benefits of CMM
- Increased the control of project (more predictable in terms of both cost and schedule)
- Predictability of the effect of a software change on project cost or schedule
- Better the development process
Capability Maturity Model Integration
- Abbreviated as CMMI
- An upgrade version of CMM
- Changes:
- Added new process areas
- Example: Added measurement and analysis to process areas at level-2
- Added Modern best practices
- Split into staged and continuous representation
Figure: CMMI Maturity Level - An Improvement Path for Organization and Project Performance
Extra materials for your to probe further
「質量承諾 - 中環承諾向客戶提供高質量的IT解決方案和服務。我們建立了業務流程規程和方法,保證高質量標準。中環在1997年通過了香港品質保證局在提供軟體諮詢服務,軟體發展和系統集成服務方面的ISO 9001 認證。我們的工作流程在2002年通過了SW-CMM模型五級評估,在2003年通過軟體工程能力成熟度模型(CMMI-SW)五級認證。這些模型建立了在軟體發展中所採用流程的成熟度評估標準。我們是在大中華區第一家,在東南亞是第一批通過SW-CMM五級認證的公司。另外,中環也是香港第一批通過 CMMI-SW五級認證的公司。」
Thanks for Reading
If you would rather like to have this lecture note in printed format, please click the print action link in the top right corner.
If you find any problem in this lecture note, please feel free to tell Steven by steven@findaway.hk