SE 501 Software Development Processes Dr. Basit Qureshi College of Computer Science and Information Systems Prince Sultan University Lecture for Week 6
Contents • The Personal Software Process • Introduction to Lab and Assignment #4 SE 501 Dr. Basit Qureshi
Bibliography • Humphrey, Watts (1995). A disciple for Software Engineering. • The Personal Software Process. http://www.sei.cmu.edu/library/abstracts/reports/00tr022.cfm SE 501 Dr. Basit Qureshi
Personal software process SE 501 Dr. Basit Qureshi
Intro to PSP • Hardly surprising facts: • 1 – Most software projects go wrong • 2 – Most software projects do not follow *any* development process • 3 – Software projects that do follow some process have a much better chance of survival • It really can be almost any process • Extreme Programming and other Agile styles • Cleanroom • Capability Maturity Model (CMM)
What Does a PSP Provide? • A stable, mature PSP allows you to • estimate and plan your work • meet your commitments • resist unreasonable commitment pressures • You will also • understand your current performance • be better equipped to improve your capability
What Does the PSP Provide? • The PSP provides • a proven basis for developing and using an industrial-strength personal process • 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 the PSP? • The PSP is a personal process for developing software or for doing any other defined activity. The PSP includes • defined steps • forms • standards • It provides a measurement and analysis framework for characterizing and managing your personal work. • It is also a defined procedure that helps you to improve your personal performance.
The PSP Process Flow
The Personal Software Process • The PSP process is designed for individual use. • It is based on scaled-down industrial software practice. • The PSP course demonstrates the value of using a defined and measured process. • It helps you and your organization meet the increasing demands for high quality and timely software.
Learning the PSP -1 • The PSP is introduced in six upward-compatible steps. • You write one or more module-sized programs at each step. • You gather and analyze data on your work. • You use the results to improve your personal performance.
Learning the PSP -2
Learning the PSP -3 • PSP0: You establish a measured performance baseline. • PSP1: You make size, resource, and schedule plans. • PSP2: You practice defect and yield management.
Why are we doing this? • But software engineers are frequently too busy to learn software processes • The best time for you to learn them is now • We chose the Personal Software Process (PSP) • Will help you think about software development in a disciplined way • Will help you to know your own strengths and weaknesses, and to improve them • It’s a personal activity, but it can be extended to teams and organizations • It’ll look good on your resume • PSP certifications: PSP Developer, PSP Instructor, SEI-certified Coach
Why are we doing this? • Think about the term ‘Software Engineer’ • What defines an engineer? • What do engineers measure/control/plan? • Do software developers really do engineering?
Why are we doing this? • Software engineering: • Management of resources • Main resource is the engineer’s own time and what he does with it! • Estimation • Progress tracking • Quality Assurance • Defects injected into product • Conformance of product to requirements
Why are we doing this? • Would you be able to respond accurately to these questions? • On average, how many defects do you inject in the code you write (per 1,000 lines of code)? • How many of those defects are coding errors, and how many are design or requirements errors? • What percentage of your time goes into coding? What percentage goes into fixing defects? • How many lines of code have you written in the past year? How many classes, methods or routines? Of what kind? • By what percentage are your estimates normally off? • Developers are all different –what are your weaknesses and strengths as a developer? (Fast coder, high quality, good architecture…?)
Why are we doing this? • This set of Lab sessions will help you find answers to those questions • It’s harder than it sounds! • You need to be disciplined about your own work • Use a structured process • Keep track of a lot of little details • Little by little you’ll get used to it • If you like it, great! You’ll have an important skill for your professional career. • And if you don’t like it, remember you only have to do it this term…
What is it about? • Based on Watts Humphrey’s Personal Software Process • Outlined in A Discipline for Software Engineering • Six relatively easy programming assignments • On C • Focus on learning and understanding the process • Assignments map to Humphrey’s 1A-6A exercises
How to get a good grade • Short story: • It’s very easy, really. Just follow the process thoroughly and you’ll do great. • Longer story: • Stick to the process while doing the exercises • Use the forms appropriately • Extract insights from your own work, and report them • Reflections on your performance and on the process • Work on two levels • Quality of your code, quality of your process • Submit your assignments on time
The Personal Software Process • Basic idea #1: Measure yourself • Know how much time you spend in programming tasks • Know how many defects your code has • Know how well you estimate your effort • You can’t control what you can’t measure • Basic idea #2: Control yourself • Improve your estimates • Improve the quality of your software
The Personal Software Process • PSP is incremental: • PSP0 • Whatever you’re currently doing, plus some measurements • PSP0.1 -> PSP1 -> PSP1.1 • Increasingly detailed estimates, controls • You start to apply regression to your estimates • You start getting efficiency and other quality metrics • This is as far as we’ll go • PSP2 -> PSP3 • We won’t have the time to go there…
The Personal Software Process • PSP0 • You’ll be using three forms: • Project Plan Summary • Time Recording Log • Defect Recording Log • Refer to Humphrey’s book for correct usage of these forms 1. Project Plan Summary • After understanding the requirements, estimate how many minutes will the assignment take • After finishing the assignment, write down how much time it actually took, and how many defects you found • It is OK to be absolutely wrong in your initial estimates…
The Personal Software Process • PSP0 2. Time Recording Log • Have it handy when you work on your assignments • Record everything • If you get up from your desk, get a call, read email… make sure your log has the corresponding ‘Interruption Time’ entries • Some details will feel embarrassing (two hours fixing a bug, for example…). Record them anyway • Use minutes, not hours • Low-tech works better than hi-tech at this point • Use Humphrey’s classification of activities: • Planning, Design, Code, Compile, Test, Postmortem
The Personal Software Process • PSP0 3. Defect Recording Log • Again, record every defect • If you designed your routines incorrectly, write the defect in the log • If you made an off-by-one error, write it in the log • If your automated tests were wrong, write it in the log • …you get the idea… • If unsure as to what ‘defect type’ each defect belongs to, write your assumptions in the defect description
The Personal Software Process • The three forms of PSP0 will become the foundation of later assignments • It will feel weird at the beginning • Give it some time • With time, you will be recording your time and defects naturally • Appreciating the advantages of this process will take a while • It shouldn’t interfere with your creative processes!
Assignment #4 • Write a program to calculate the mean and standard deviation of a sample of n real numbers. • Hints • Remember we’re interested in that you learn a process, not in that you know how to program a standard deviation routine! • Your report on insights and impressions is important – it will show us if your brain is engaged in the exercise or not • Make sure you understand the requirements before you start coding • Document all assumptions • Automated tests are (almost) always better than manual tests
Assignment #4 • Refer to a sample of completed PSP0 forms for an example by Dr. Honig at • http://info.psu.edu.sa/psu/cis/biq/se501/a/a4/ISmartPSP.doc
Summary • Introduction to PSP • Assignment #4 SE 501 Dr. Basit Qureshi