Software Engineering – Lab Session

advertisement
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 Humphrey’s 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 Humphrey’s 1A-6A exercises
What is it about?

You’ll be submitting one assignment per
week



Except on Thanksgiving and the midterm week
There’ll 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
It’s a personal activity, but it can be extended to teams
and organizations
It’ll 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 engineer’s 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

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…
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:

Read ‘A Discipline for Software Engineering’
conscientiously.


Stick to the process while doing the exercises


Reflections on your performance and on the process
Work on two levels


Use the forms appropriately
Extract insights from your own work, and report them


Warning: Humphrey is not especially fun or concise
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


PSP0.1 -> PSP1 -> PSP1.1





Whatever you’re currently doing, plus some
measurements
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…
I admit it does get hairy at this point…
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

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 Humphrey’s 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


With time, you will be recording your time and
defects naturally


Give it some time
Appreciating the advantages of this process will take
a while
It shouldn’t 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 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
Be nice to the TA that will mark your work and that of 150
other persons
Although it shouldn’t take too long, start soon. We can tell if
you’re rushing to finish your assignment
Am I missing something?

Questions?
Download