Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 1 of 39
CS3600: Software Engineering:Standards in Process Modeling
CMM and PSP
Vasudeva [email protected] 2002
International Institute of Information Technology, Hyderabad
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 2 of 39
Quick Review
• Discuss Product and Process concepts
• Look at various software Process models
• Discuss CMM and PSP
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 3 of 39
What Makes You Better?
• Why are you a better programmer than a first-year student?
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 4 of 39
Some Answers...
• More training– Know how to use tools– Have seen some problems before– Know how things fit together
• Familiar with language– Object, semaphore, recursion, etc
• Better process!
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 5 of 39
Examples of Better Processes
• Incremental coding– Code a little, test a little– Compare to writing entire program and
testing
• Error prevention versus debugging– Cheaper and easier to prevent than to find
bugs
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 6 of 39
What Makes Organizations Better?
• Why are some organizations better than others?– Deliver software on time– Deliver with high quality and few defects
• Do some of the same things for a personal level scale up to organizations?
• Assume two groups are doing same project, why would one be better than another?
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 7 of 39
Some Answers...
• Great people
• Smart management
• Better tools
• Good processes, standards and policies that all team members know and follow
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 8 of 39
What is the Point of Processes?
• Basically, so we don’t reinvent the wheel!• Learn from mistakes
– Never make the same mistake twice!
• Incorporate best practices– Something works better than another
• Routinization of standard tasks– Do it right once and then reuse it
• Predictability
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 9 of 39
SEI-CMM
• Software Engineering Institute Capability Maturity Model (SEI-CMM, or CMM)
• CMM was developed by SEI at the request of the DoD in 1987
• Based on – Statistical quality control (Deming’s TQM, Juran)– Quality management (Crosby)– Feedback from industry and government projects
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 10 of 39
CMM Organization
• Evolutionary path to increase software process maturity– Guide organizations in selecting improvement
strategies– Small but continuous improvements
• Descriptive, not prescriptive– Describes goals but not how to achieve them
• Maturity characterized in five levels
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 11 of 39
CMM Components
• Maturity levels
• Process capabilities
• Key process areas
• Goals and common features
• Key practices
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 12 of 39
CMM
Components
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 13 of 39
CMM
Maturity
Levels
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 14 of 39
Level 1 - Initial
• Process is ad hoc, occasionally chaotic• Few and informally defined processes• No mechanism to ensure they are used consistently• Ineffective planning• Reaction-driven management• Unpredictable• Success due to heroic efforts• ~80% of software organizations worldwide
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 15 of 39
Level 2 - Repeatable
• Basic management processes, quality assurance and configuration control procedures in place
• Can repeat earlier successes • Realistic project commitments based on results of
previous projects• Still has frequent quality problems• Stable planning and tracking• ~15% of software organizations worldwide
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 16 of 39
Level 3 - Defined
• Documented, standardized, and integrated management and engineering processes
• Procedures are in place to insure they are followed• Projects tailor organization’s standard to develop own
process• Software Engineering Process Group (SEPG)• Stable foundation for software engineering and
management• ~5% of software organizations worldwide
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 17 of 39
Level 4 - Managed
• Quality and performance is measured using metrics and can be predicted
• Quality and productivity quantitative goals are established
• Exceptional cases are identified and addressed• Challenge of new domains can be managed
• Process is measured and operates within limits• < 1% of software organizations worldwide
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 18 of 39
Level 5 - Optimizing
• Organization focuses on continuous process improvement
• Goal is to address and prevent problems by analyzing their cause in the process
• Process improvement is budgeted, planned, and part of the organization’s process
• Identify and quickly transfer best practices• Only a handful of organizations worldwide
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 19 of 39
Why Five Levels?
• Reasonably represents historical phases in actual software organizations
• Reasonable measure of improvement from previous level
• Suggests interim goals and measures
• Prioritize improvements
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 20 of 39
Key Process Areas (KPA)
• Issues to address to reach each maturity level
• Related activities for achieving goals
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 21 of 39
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 22 of 39
Key Process Areas—Repeatable(2)
• Requirements management
• Software project planning
• Software project tracking and oversight
• Software quality assurance
• Software configuration management
• Software subcontract management
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 23 of 39
Key Process Areas—Defined (3)
• Organization process focus
• Organization process definition
• Training program
• Integrated software management
• Software product engineering
• Intergroup coordination
• Peer reviews
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 24 of 39
Key Process Areas—Managed (4)
• Quantitative process management
• Software quality management
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 25 of 39
Key Process Areas—Optimized(5)
• Defect prevention
• Technology change management
• Process change management
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 26 of 39
CMM outcomes
• Fewer project overruns
• Better cost prediction (dollars, time)
• Predicted performance improvements
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 27 of 39
The SEI ProcessMaturity Model ...
or Capability Maturity Model (CMM)– is the best available description of the goals,
methods and practices needed for the industrial practice of software engineering
But how do we do this in the classroom?– this is the role of the PSP
i.e. the Personal Software Process
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 28 of 39
The Personal Software Process or PSP
• PSP Objectives:– To introduce individuals to a process-based approach to
developing software
– To show individuals how to measure, estimate, schedule, and track their work
– To show individuals how to improve the quality of their programs
– In general PSP improves quality and productivity• The time saved in testing because of better quality reduces
time across the project by 20-40%
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 29 of 39
The Personal Software Process or PSP…
a self improvement process designed to
help you be a better software engineer help you control, manage and improve the way you
work
requires research and study of your work needs personal motivation to pay off
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 30 of 39
The Personal Software Process
PSP helps you to:» manage your work & assess/build your talents/skills» plan better» track your performance precisely» measure the quality of your software products
- as a framework for determining:» why you make errors and how you find them» the quality of your reviews» the types of errors you make
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 31 of 39
The Personal Software Process
PSP has a maturity framework like CMM
- some KPAs are removed e.g.. training program
Structure:PSP0: establish a measured performance baseline
PSP1: make size, resource and schedule plans
PSP2: learn defect and yield management
PSP3: scale up PSP methods to larger projects
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 32 of 39
The Personal Software Process
Baseline Process - PSP0– includes some basic measurements and a reporting
format
– the process you currently use to write software but enhanced to provide measurements
PSP0.1 - PSP0 enhanced by adding: » a coding standard
» size measurement and size counting standard
» process improvement proposal (PIP)
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 33 of 39
The Personal Software Process
The Personal Planning Process (PSP1)– adds planning steps to PSP0
» test report» size and resource estimation
PSP1.1– establishes a performance rate for planning– PSP1 enhanced by adding
» task planning» schedule planning
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 34 of 39
The Personal Software Process The Personal Quality Management Process
(PSP2)– adds review techniques to PSP1 to help you
find defects early» design reviews
» code reviews
PSP2.1– establishes design completeness criteria
» design templates
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 35 of 39
The Personal Software Process
A Cyclic Personal Process (PSP3)– for large programs e.g. 10,000 LOC– subdivide into PSP2-sized modules– enhance the base module in iterative cycles– in each iteration do a complete PSP2 including
design, code, compile, test– effective scale up from base module to large
program if each increment is of a high quality
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 36 of 39
The Personal Software Process• The PSP uses 3 types of measures:
– Effort, Size and Defects
• Effort measurement• Measured in minutes• Individuals keep records of time spent on tasks• Interruption time is recorded and subtracted
• Size measurement• Size will be measured in number of lines of code and FP
• Defect measurement• Students record changes to correct an error• Fix time and defect type is recorded
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 37 of 39
The Personal Software Process PSP Logic
- based on the Principles:• Measured historical data is needed for effective
planning• A defined and structured process can improve
working efficiency• Defined personal processes should fit the
individual skills of the software engineer• Continuous process improvement is enhanced by
rapid and explicit feedback
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 38 of 39
The Personal Software Process
Summary– Society is demanding more and better quality
software faster and cheaper– Competent work is possible when professionals
know the basic methods of their field and practice them with discipline
Software Engineering - Spring 2003 (C) Vasudeva Varma, IIITH Class 04 - 39 of 39
Summary
The CMM sets out the principal practices for managing the processes in large-scale software development
The PSP sets out the principal practices for defining, measuring and analyzing an individual’s own processes