# Presentation: 334304

## Disciplined Software Engineering Lecture #1

**Software Engineering Institute**
**Carnegie Mellon University**
**Pittsburgh, PA 15213**
**Sponsored by the U.S. Department of Defense**

## Course

**Text**
**“****A Discipline for Software Engineering” Watts S. Humphrey**
**Grading**
**Homework – 40%**
**Midterm – 30%**
**Final – 30%**

## General

**The book will be followed very closely.**
**Class time**
**50 minute lecture**
**10 break**
**Office Hours**
**1 hour before/after class **_**by appointment**_
**Email or phone calls are fine**
**GTA**
**Chaoyang Liu**

## Contact Information

**Dr. Tom Potok**
_**[Potokte@ornl.](mailto:Potokte@ornl.gov)**__**[gov](mailto:Potokte@ornl.gov)**_
**www.csm.ornl.gov/~v8q**
**574-0834**

## Computational Engineer Position

**Modeling and Simulation Group**
**The Computational Sciences and Engineering Division in the Computing and Computational Sciences Directorate at the Oak Ridge National Laboratory (ORNL) seeks to hire a Computational Engineer with a strong interest and proficiency in computational solutions to engineering problems in the area of structural mechanics. The successful candidate will be expected to ensure that state-of-the-art finite element techniques are employed in applications to structural analysis problems and to participate in developing additional sources of funding that support research and development work within the Group. **
- _[http://computing.](http://computing.ornl.gov/)__[ornl](http://computing.ornl.gov/)__[.](http://computing.ornl.gov/)__[gov](http://computing.ornl.gov/)__[/](http://computing.ornl.gov/)_
- http://ornl7.ornl.gov/employment/detail.cfm?id=143
- Qualified candidates are invited to send a current resume and a list of three or more references to: **D.M. Hetrick, Computational Sciences and Engineering Division, Oak Ridge National Laboratory, PO Box 2008, Oak Ridge, TN 37831-6415 or E-mail **_**[hetrickdm](mailto:hetrickdm@ornl.gov)**__**[@](mailto:hetrickdm@ornl.gov)**__**[ornl](mailto:hetrickdm@ornl.gov)**__**[.](mailto:hetrickdm@ornl.gov)**__**[gov](mailto:hetrickdm@ornl.gov)**_
*ORNL, a multiprogram research facility managed by UT-Battelle, LLC, for the U.S. Department of Energy, is an equal opportunity employer committed to building and maintaining a diverse work force.*

## Schedule

## Software Engineering

**What is it?**
**What is a process?**

## Course Objectives

**To introduce you to a process-based approach to developing software**
**To show you how to measure and analyze your personal software process (PSP)**
**To show you how to use process data to improve your personal performance **
**To show you how to apply these methods to your other tasks**

## General Information

**Prerequisites**
**You must know a programming language.**
**Helpful background**
**familiarity with basic statistics**
**ability to read simple formal notations**
**Facilities**
**an available development environment **
**spreadsheet capability**

## Course Overview

**Introduction - 1 lecture**
**Planning the process - 4 lectures**
**Defect management - 3 lectures**
**The design process - 2 lectures**
**Scaling up the process - 1 lecture**
**Design verification - 2 lectures**
**Process development - 1 lecture**
**Using the PSP - 1 lecture**

## Lecture #1 Overview

**PSP principles**
**costs and benefits**
**personal software process (PSP) overview**
**The capability maturity model (CMM)**
**process maturity**
**the CMM and the PSP**
**The initial PSP0 process**

## PSP Principles - 1

**The quality of a software system is governed by the quality of its worst components.**
**The quality of a software component is governed by the individual who developed it.**
**This is governed by your**
**knowledge **
**discipline**
**commitment **

## What is this?

## The last picture taken from the Mars Lander

**... ****A software flaw probably caused the Mars Polar Lander to shut off its descent engines prematurely, sending it on a fatal plunge into the red planet, according to a report released Tuesday...**
**"There was inadequate software design and testing. The software should have been designed to prevent premature engine shutdown," he said. "In space, one strike and you're out." **
**The loss to taxpayers was approximately $165M.**

## Process Examples

**Top quarterbacks knows what was his pass completion record for last year.**
**Top sales people know how much money they brought in.**
**Racing teams know how minor changes to their cars will affect performance**
**What do you know about your software development skills?**

## PSP Principles - 2

**As software professionals you should know your own performance.**
**You should measure, track, and analyze  your work. **
**You should learn from your performance variations.**
**You should Incorporate these lessons in your personal practices.**

## With a Stable PSP

**You can**
**estimate and plan your work **
**meet your commitments**
**resist unreasonable commitment pressures**
**You will also**
**understand your ability**
**be better able to improve**
**   **

## A PSP Also Provides

**A proven basis for developing and practicing     industrial-strength personal disciplines**
**A discipline that shows you how to improve your personal process**
**The data to continually improve the productivity, quality, and predictability of your work**

## What is a PSP?

**A personal process for developing software**
**defined steps **
**forms **
**standards **
**A measurement and analyses framework to help you characterize your process**
**A defined procedure to help you to  improve your performance**

## The CMM and the PSP - 1

**The capability maturity model (CMM) was developed by the SEI with the help of leading software groups.**
**The CMM characterizes the most effective large-scale software practices.**
**The PSP:**
**applies the CMM **
**is for individual work**

## SEI Capability Maturity Matrix

**Broadly agree to define how a software organization matures and improves**
**Based on manufacturing process improvement and “best practices” from software engineering**
**Some dramatic successes...**

## Capability Maturity Matrix

**Developed by the Software Engineering Institute (SEI) by Watts Humphry and Mark Paulk.**
**Five levels of maturity for an organization**
**Level 1 - *****Initial*****; **
**Level 2 - *****Repeatable*****; **
**Level 3 - *****Defined*****; **
**Level 4 - *****Managed*****; **
**Level 5 - *****Optimizing*****. **

## Initial

**Poorly defined procedures and controls**
**No management mechanism to to ensure they are followed**
**Heroic efforts by one or two people saves the day.**
**Projects are late, crisis to crisis**

## Repeatable

**Basic project controls**
**Quality problems**
**No framework for orderly improvement**
**Fault data is being collected**

## Defined

**Commitment to software process evaluation and improvement**
**Appropriate software engineering standards and methods are in place**
**Strong qualitative understanding of the process**

## Managed

**Process is quantified**
**Quality and productivity measured for each key task**
**Wide dissemination of process related information**
**Errors can be predicted with acceptable accuracy**

## Optimizing

**Process improvement feed-back and feed-forward controls**
**Rigorous defect causal analysis and defect prevention**
**Proactive management**

## More on CMM

**There are 18 key process areas defined by CMM, including**
**Requirements Management, **
**Software Configuration Management **
**Process Change Management**
**Defect Prevention **
**Each key process area has five common features: **
**1) goals to be achieved; **
**2) ability to perform; **
**3) activities performed; **
**4) measurement and analysis; **
**5) verification**

## The CMM and the PSP - 2

**Level 2**
**Software configuration management**
**Software quality assurance**
**Software subcontract management**
**Software project tracking and oversight***
**Software project planning***
**Requirements management**

***PSP key process areas**

**Level 3**
**Peer reviews***
**Intergroup coordination**
**Software product engineering***
**Integrated software management***
**Training program**
**Organization process definition***
**Organization process focus***

**Level 4**
**Quality management***
**Process measurement and analysis***

**Level 5:**
**Process change management***
**Technology innovation***
**Defect prevention***

**Level 1**

**1**

**2**

**3**

**4**

**5**

## The CMM and the PSP - 3

**The CMM provides the framework for effective process management.**
**It assumes that the software professionals will follow disciplined personal methods.**
**The PSP provides the framework for disciplined individual work. **
**It assumes effective process management.**

## The CMM and the PSP  - 4

**E**
**P**
**G**

**S**
**Q**
**A**
**/**
**S**
**C**
**M**

**Management**

**The CMM and the PSP  - 4**

**The**
**Software**
**Engineering**
**Work**

**SEPG - software engineering process group**
**SQA - software quality assurance**
**SCM - software configuration management**

**the Engineers**

## PSP Overview - 1 

**The PSP is introduced in 7 upward compatible steps**
**You write 1 or 2 small programs at each step**
**You gather and analyze data on your work**
**You use these and analyses to improve your work **

## PSP Overview - 2 

**PSP0**
**Current process**
**Time recording**
**Defect recording**
**Defect type standard**

**PSP1**
**Size estimating**
**Test report**

**PSP2**
**Code reviews**
**Design reviews**

**PSP3**
**Cyclic development**

**PSP2.1**
**Design templates**

**PSP1.1**
**Task planning**
**Schedule planning**

**PSP0.1**
**Coding standard**
**Size  measurement**
**Process improvement**
**proposal (PIP)**

## PSP Overview - 3

**PSP0 -  you establish a measured performance baseline**
**PSP1 -  you make size, resource, and schedule plans**
**PSP2 -  you practice defect and yield management **
**PSP3 -  you scale up PSP methods to larger projects**

## At Course Conclusion

**You will have practiced the key elements of a level 5 industrial process.**
**You will understand which methods are most effective for you.**
**You will do better work.**
**You will have long-term improvement goals.**

## Other Course Results

**The following charts show how others have improved during the PSP course.**
**These data are for 12 students who took the PSP course at Carnegie Mellon University in the spring of 1994.**
**The data are on:**
**compile time**
**test defects**
**productivity**

## 14 hours to 3 hours

**14 hours to 3 hours**

## 39 Errors to 1 on average

**39 Errors to 1 on average**

## Big drop in defects

**Big drop in defects**
**Big potential increase**
**In productivity**

## The PSP0 Process 

**A simple defined personal process**
**Use your current design and development methods.**
**Gather data on your work:**
**time spent by phase**
**defects found in compile and test**
**Prepare a summary report. **

## The PSP0 Process Elements

**A process script**
**A project plan summary form**
**A time recording log**
** **
**A defect reporting log**
**A defect type standard**

## The PSP0 Script - 1

**Reference - Table C10, page 652**
**Planning - estimate development time **
**Development - develop the product using your current methods**
**Postmortem - complete the project plan summary, with the time spent and defects found and injected in each phase.**

## The PSP0 Script - 2

**Design - design the program, using your current design methods**
**Coding - Implement the program **
**Compile - compile until defect free **
**Test - test the program and fix all defects **
**Record defects in the defect log and time per phase in the time log.**

## PSP0 Plan Summary - 1

**Reference - Table C14, page 655**
**Header - name, date, program, instructor, language**
**Enter your best estimate of the total time the development will take.**
**Enter the actual time in minutes you spent in each phase.**

## Slide 45

## PSP0 Plan Summary - 2

**Time - To Date -  Enter the total time spent in each phase to date.  For program 1A, this is the time spent on program 1A.**
**Time - To Date % -  Enter the percent of the total To Date time that was spent in each phase.**
**Defects injected and removed -  Enter the actual numbers of defects injected and removed in each phase.**

## PSP0 Plan Summary - 3

**Defects  - To Date -  Enter the total defects injected and removed in each phase to date.  For program 1A, this is the defects injected and removed with program 1A.**
**Defects  - To Date % -  Enter the percent of the total To Date defects injected and removed in each phase.**

## PSP0 Time Recording Log - 1

**Reference - Table C16, page 657**
**Header - name, date, instructor, and program number**
**Date -  Enter the current date.**
**Start -  Enter the time in minutes when you start a project phase.**

## Slide 49

## PSP0 Time Recording Log - 2

**Stop -  Enter the time in minutes when you stop work on a project phase, even if you are not done with that phase.**
**Interruption time -  Enter any time you lost due to interruptions in the start to stop period.**
**Delta time -  Enter the elapsed start to stop time less the interruption time.**

## PSP0 Time Recording Log - 3

**Phase**
**note the phase on which you were working**
**use the phase name**
**Comments - describe**
**the interruption**
**the task you were doing**
**anything else that significantly affects your work**

## Defect Recording Log - 1

**Reference - Table C18, page 659**
**Header - enter the name, date, instructor, and program number**
**Date -  Enter the date when you found and fixed the defect.**
**Number -  Enter a unique number for this defect.  Start each project with 1.**

## Slide 53

## Defect Recording Log - 2

**Type -  Enter the defect type from the defect type standard.**
**Inject -  Enter the phase during which you judge the defect was injected.**
**Remove -  Enter the phase in which you found and fixed the defect.   **

## Defect Recording Log - 3

**Fix time -  Enter the time you took to fix the defect.  You may time it exactly or use your best judgment.  **
**Fix defect -  If this defect was injected while fixing another defect, enter the number of that defect or an X if you do not know.**
**Note -  A defect is anything in the program that must be changed for it to be properly developed, enhanced, or used.**

## Defect Type Standard - 1

**Reference - Table 20, page 661**
**The defect type standard provides a general set of defect categories.  **
**While you may replace this standard with your own, it is generally wise to stick with simple type definitions until you have data to guide your changes.**

## Defect Type Standard - 2

**The PSP defect types are:**
**  ****10 -  Documentation**
**  ****20 -  Syntax**
**  ****30 -  Build, package**
**  ****40 -  Assignment**
**  ****50 -  Interface**
**  ****60 -  Checking**
**  ****70 -  Data**
**  ****80 -  Function**
**  ****90 -  System**
**100 -  Environment**

## Assignment #1

**Read preface and chapters 1 and 2 of the text.**
**Use PSP0 to write program 1A.  **
**See Appendix D for the program specifications.**
**See Appendix C for the PSP0 definitions and examples.**
**Follow the specifications in Appendix C on the materials to submit and their order and content.**

## Program 1A

**Program 1A**

**Calculates the standard deviation of a list of numbers.  The n numbers are held in a linked list.  The standard deviation is calculated as follows:**
**i is an index to the numbers, and Xavg is the average value of the numbers.**

## Suggestions

**Keep personal copies of what you turn in**
**Submit your programs on diskettes or to Chaoyang by e-mail.**
**Chaoyang@cs.utk.edu**
**Software must be a windows executable!**
**Please keep accurate track of time. **
**YOU WILL NOT BE GRADED ON YOUR TIME OR QUALITY!!**

## Some Suggestions - 1

**Keep your programs simple.  You will learn as much from small programs as from large ones.**
**Keep your reports and standards simple and short.**
**Do not hesitate to copy or build on the PSP materials.**
**Do it right the first time.  If you are not sure, find out.**

## Slide 62

## Some Suggestions - 2

**Software is not a solo business so you do not have to work alone.**
**   **
**You must, however, produce your own estimates, designs, and code.**
**You may have others review your work and you may change it as a result.**
**You should note this help in your process report, include the review time you and your associates spend, and log the defects found.**

## PSP0 Evaluation Criteria

**Your process report must be:**
**complete **
**legible **
**in the specified order**
**Your process data must be:**
**accurate**
**precise**
**self-consistent **
**   **

## Messages to Remember from Lecture 1 

**1 -  The PSP is a defined process to help you do**
**       ****better work.**
**2 -  Once you have completed this course, you**
**      ****will know how to adjust and extend the PSP **
**      ****to meet your future needs.**
**3 -  In using PSP0, your principal objective is to **
**      ****gather and report accurate and complete **
**      ****data on your work.   **