Software System Design and ImplementationITCS/ITIS 6112/8112 001Fall 2008
Dr. Jamie PaytonDepartment of Computer ScienceUniversity of North Carolina at Charlotte
September 2, 2008
Lecture 3:Software Process Models
2
Software Process Models
A software process model is a structured set of activities required to develop a software system
Provides an abstract representation of a process Provides guidance concerning order of and transitions between different phases of a project• What should we do next?• How long should we continue doing it?
3
Software Process Models
Waterfall modelClassic life cycleSeparate and distinct process activity phases followed in linear fashion
Incremental process modelsComplete a sequence of the process activities in linear fashion to address a portion of requirementsEach iteration through the activities results in a piece of the final product
Evolutionary process modelsSpecification, design, and validation activities are interleavedEach iteration through activities develops a limited prototype to extract feedback from customer• Details of product design are delayed • Prototype often serves as primary form of design documentation
5
Lecture Overview
Process ModelsWaterfallIncrementalEvolutionaryHybrids• Spiral model• Unified process model
Specialized models• Formal models• Component-based reuse models
6
Spiral Development Model
Combines features of Waterfall and EvolutionaryProvides structure of explicit phases (waterfall-like)Promotes iterative development (prototyping-like)• Initial version developed• Modified based on input from customersSupports prototyping at any point to address risks
Two defining characteristicsProcess represented as a spiral of activitiesProcess focuses on assessing and addressing risks
7
Spiral Development Model Characteristics
Process is represented as a spiral of activitiesEach loop in the spiral represents a process phaseActivities within loops are adjusted based on what is required
Risks are explicitly assessed and resolved throughout the process
Evaluation performed at conclusion of each loop• Protoyping sometimes used to address risksEvaluation at milestones• Artifacts and conditions • Customer can terminate project
9
Spiral Model SectorsObjective setting
Identify specific objectives for the phaseRisk assessment and reduction
Assess riskIdentify activities to reduce key risks• Prototyping may be used to clarify needs or assess risks
Development and validation (a.k.a. engineering)Choose development model for the system • Can be any of the generic process models
Develop requirements/designPlanning
Customer reviews projectDesigners plan next phase of the spiral if customer approves
10
Lecture Overview
Process ModelsWaterfallIncrementalEvolutionaryHybrids• Spiral model• Unified process model
Specialized models• Formal models• Component-based reuse models
11
Rational Unified Process (RUP)
Hybrid generic process model derived from work on UML and an object-oriented process
An instantiation of the spiral modelElements of multiple generic process models• Waterfall• Evolutionary Development• CBSE
Promotes “best practices” in specification and design
12
Unified Process Principles
Best practices1. Develop software iteratively2. Manage requirements3. Use component-based architectures4. Visually model software5. Verify software quality6. Control changes to software
13
Perspectives on theUnified Process (UP)
Dynamic perspectiveDescribed in terms of phases of process over time
Static perspectiveDescribed in terms of process activities, participants, and results
Practice perspectiveDescribed in terms of good practices to be used during process
15
UP Dynamic Perspective
Life Cycle
time
Iterative phase model
Phases terminate in a milestonePoint in time at which critical decision must be madeBased on availability of a set of artifacts in a particular state
16
The Rational Unified Process:
Static + DynamicC
ore
Sup
porti
ng
Workflows
©Rational Software
time
content
17
More Software Process Models
Several variants of these process modelsFormal development • Formal mathematical specification • Specification refinement leads to implementation• Result is provably correct
Several specialized process models Component-based software development model• The system is assembled from existing components
Aspect-oriented software development model
18
Lecture Overview
Process ModelsWaterfallIncrementalEvolutionaryHybrids• Spiral model• Unified process model
Specialized models• Formal models• Component-based reuse models
19
Formal Systems Development
Goal: improve software quality through rigor and detailed analysis of mathematicsApproach
Transform a mathematical specification through different representations to an executable programTransformations are ‘correctness-preserving’• Straightforward to show that program conforms to spec
Embodied in the ‘cleanroom’ approach to software development
No need to test for defects
20
Types of Formal Development Processes
Algebraic-basedSystem described in terms of operations and their relationships
Model-basedModel of system is constructed using mathematical constructs• E.g., sets and sequencesSystem operations are defined by how they modify system stateExamples• Z, CSP, Petri Nets
22
EvaluatingFormal Systems Development
ProblemsQuality vs. time to marketNeed for specialized skills and training to apply the techniqueDifficult to formally specify some aspects of the system • e.g, user interfaceTypically does not scaleChanges require new transformations and proofs
ApplicabilityCritical systems • Emergent properties are important
E.g., safety, reliability, security
23
Specialized Process Models:Component-based Software Engineering
Systematic reuse of existing software components Custom componentsCommercial-off-the-shelf (COTS) components
Process stagesComponent analysisRequirements modificationSystem design with reuseDevelopment and integration
24
Evaluating CBSE
Fact 16: Reuse-in-the-large (components) remains a mostly unsolved problem, even though everyone agrees it is important and desirable. – Robert GlassFact 17: Reuse-in-the-large works best in families of related systems and thus is domain-dependent. This narrows the potential applicability of reuse-in-the-large. -- Robert Glass
25
Summary
Software processes are the activities involved in producing and evolving a software system
Specification Design and ImplementationValidationEvolution
Software process models are abstractions of processesWaterfall modelIncremental process modelEvolutionary process modelHybridsSpecializations
Iterative process models help with changing requirements