You are on page 1of 19

Software Engineering

Lab Session
Session 1 Introduction to the
practicum
Jorge Aranda, 2005
Overview
What is it about?

Why are we doing this?

How to get a good grade

The Personal Software Process

Assignment 1
What is it about?
Based on Watts Humphreys Personal
Software Process
Outlined in A Discipline for Software
Engineering
You should have finished reading Chapters 1-4
already!

Six relatively easy programming assignments
On C
Focus on learning and understanding the process
Assignments map to Humphreys 1A-6A exercises
What is it about?
Youll be submitting one assignment per
week
Except on Thanksgiving and the midterm week
Therell also be weekly reading assignments

The process will be increasingly elaborated
as we go along
Why are we doing this?
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)
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
Its a personal activity, but it can be extended to teams
and organizations
Itll look good on your resume
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 engineers own time and what
she 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 practicum will help you find answers to those
questions

Its 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 youll get used to it
If you like it, great! Youll have an important skill for
your professional career.
And if you dont like it, remember you only have to do it
this term
How to get a good grade
Short story:
Its very easy, really. Just follow the process thoroughly
and youll do great.

Longer story:
Read A Discipline for Software Engineering
conscientiously.
Warning: Humphrey is not especially fun or concise
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 cant control what you cant measure

Basic idea #2: Control yourself
Improve your estimates
Improve the quality of your software
The Personal Software Process
PSP is incremental:
PSP0
Whatever youre 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 well go
PSP2 -> PSP3
We wont have the time to go there
I admit it does get hairy at this point
The Personal Software Process
PSP0
Youll be using three forms:
Project Plan Summary
Time Recording Log
Defect Recording Log

Refer to Humphreys book for correct usage of these
forms

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
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 Humphreys classification of activities:
Planning, Design, Code, Compile, Test, Postmortem

The Personal Software Process
PSP0
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 shouldnt interfere with your creative
processes!
Assignment 1
Write a program to calculate the mean and standard
deviation of a sample of n real numbers.

Hints
Remember were 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
Be nice to the TA that will mark your work and that of 150
other persons
Although it shouldnt take too long, start soon. We can tell if
youre rushing to finish your assignment
Am I missing something?
Questions?

You might also like