The Software Life Cycle CSE 308: Software Engineering 1
Life Cycle Models A software life cycle model represents all of the activities and work products necessary to develop a software system Life cycle models allow us to deal with the complexity of the software development process make activities and their dependencies visible 2
Model Dependencies Forward engineering use case model analysis and design models analysis, design models implementation, test models Reverse engineering existing code analysis & design models Round-trip engineering 3
Use case model specified by Analysis model realized by distributed by Design model implemented by Deployment model verified by Implementation model Test model 4
Brief Outline Typical life cycle activities (IEEE standard 1074) Capability Maturity Model Life cycle models waterfall, V-model, spiral, unified software process 5
Modeling Approaches Activity-centered focus on software development activities most life cycle models take this approach Entity-centered focus on the content and structure of work products 6
Activity-Centered View Problem definition activity System development activity System operation activity 7
Entity-Centered View Software development Market survey document Lessons learned document Requirements specification document Executable system 8
Merging Both Views Activity Work product Problem definition activity System development activity System operation activity consumes produces consumes produces consumes produces Market survey document Specification document Executable system Lessons learned document 9
IEEE 1074 Standard Describes activities and processes that are mandatory for software development and maintenance Establishes a common framework, with examples, for developing life cycle models Contains 17 processes, divided into 6 process groups 10
IEEE 1074 Process Groups Life Cycle Modeling Project Management Pre-Development Development Post-Development Integral 11
IEEE 1074 Process Groups Life Cycle Modeling Selection of a Life Cycle Model Project Management Pre-Development Development Post-Development Integral 12
IEEE 1074 Process Groups Life Cycle Modeling Project Management Pre-Development Project Initiation Project Monitoring and Control Software Quality Management Development Post-Development Integral 13
IEEE 1074 Process Groups Life Cycle Modeling Project Management Pre-Development Development Concept Exploration System Allocation Post-Development Integral 14
IEEE 1074 Process Groups Life Cycle Modeling Project Management Pre-Development Development Post-Development Requirements Design Implementation Integral 15
IEEE 1074 Process Groups Life Cycle Modeling Project Management Pre-Development Development Post-Development Integral Installation Operation and Support Maintenance Retirement 16
IEEE 1074 Process Groups Life Cycle Modeling Project Management Pre-Development Development Post-Development Integral Verification and Validation Software Configuration Management Documentation Development Training 17
Capability Maturity Model Measures the maturity of an organization with respect to the structure of its life cycle processes Five levels: Initial, Repeatable, Defined, Managed, Optimized Very few companies are at CMM level 5 SEI uses key process areas (KPAs) to enumerate requirements for each CMM level 18
Software Model Maturity Initial Ad-hoc No client/developer interaction Repeatable Project-specific models, not shared across an organization Client interacts at well-defined points in time Defined Organization-specific model, customized per project Client knows model 19
Software Model Maturity Managed Metrics for activities and deliverables are used to understand and analyze model Client knows measures, understands risks Optimized Measurement data are used as feedback to improve model over the organization Constant organization/client interaction 20
A Comparison of Life Cycle Models Waterfall Prototyping Iterative/Spiral Timeboxing Agile Methods (Extreme Programming) 21
The Waterfall Model Activity-centered life cycle model All development/management processes are executed sequentially Constant verification activity Simplistic model that measures progress by the number of steps completed Royce, Managing the Development of Large Software Systems 22
Project Initiation Process Concept Exploration Process System Allocation Process Requirements Process Design Process Implementation Process Verification & Validation Process Installation Process Operation & Support Process 23
Prototyping Used for risky/unfamiliar development tasks Addresses risk by developing an initial version to explore the problem space Plan to throw the first one away Use prototype to generate more stable requirements Low cost prototype: no testing, prioritized feature set 24
The Spiral Model Iterative model Adds risk management, reuse, and prototyping to waterfall activities Focuses on addressing risks incrementally Each round has four phases: identify objectives, manage risks, realize prototype, review and plan for next round 25
26
Timeboxing Goal: speed up output from iterative development by executing stages in parallel Analogous to instruction pipelining in CPU design Unit of development is a time box fixed-duration length of time divided into equal-length stages (one per task) each stage has a dedicated team Increases flexibility, but sensitive to disruptions 27
Timeboxing Execution Requirements Build Deploy Requirements Build Deploy Requirements Build Deploy Requirements Build Deploy 28
Timeboxing Work Allocation 29
Next Time Agile Methods Introduction to Extreme Programming Scrum (agile project management) 30