lab01 introduction

Upload: ale-cano

Post on 03-Jun-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/12/2019 Lab01 Introduction

    1/19

    Software EngineeringLab Session

    Session 1 Introduction to thepracticum

    Jorge Aranda, 2005

  • 8/12/2019 Lab01 Introduction

    2/19

    Overview

    What is it about?

    Why are we doing this?

    How to get a good grade

    The Personal Software Process

    Assignment 1

  • 8/12/2019 Lab01 Introduction

    3/19

    What is it about?

    Based on Watts Humphreys PersonalSoftware Process

    Outlined inA 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

  • 8/12/2019 Lab01 Introduction

    4/19

    What is it about?

    Youll be submitting one assignment perweek

    Except on Thanksgiving and the midterm week

    Therell also be weekly reading assignments

    The process will be increasingly elaboratedas we go along

  • 8/12/2019 Lab01 Introduction

    5/19

    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)

  • 8/12/2019 Lab01 Introduction

    6/19

    Why are we doing this?

    But software engineers are frequently too busy tolearn 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 andweaknesses, and to improve them

    Its a personal activity, but it can be extended to teamsand organizations

    Itll look good on your resume

  • 8/12/2019 Lab01 Introduction

    7/19

    Why are we doing this?

    Think about the term Software Engineer

    What defines an engineer?

    What do engineers measure/control/plan?

    Do software developers reallydo engineering?

  • 8/12/2019 Lab01 Introduction

    8/19

    Why are we doing this?

    Software engineering:

    Management of resources

    Main resource is the engineers own time and whatshe does with it!

    Estimation

    Progress tracking

    Quality Assurance

    Defects injected into product

    Conformance of product to requirements

  • 8/12/2019 Lab01 Introduction

    9/19

    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 manyare design or requirements errors?

    What percentage of your time goes into coding? Whatpercentage 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 andstrengths as a developer? (Fast coder, high quality, good

    architecture?)

  • 8/12/2019 Lab01 Introduction

    10/19

    Why are we doing this?

    This practicum will help you find answers to thosequestions

    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 foryour professional career.

    And if you dont like it, remember you only have todo itthis term

  • 8/12/2019 Lab01 Introduction

    11/19

    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

  • 8/12/2019 Lab01 Introduction

    12/19

    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

  • 8/12/2019 Lab01 Introduction

    13/19

    The Personal Software Process

    PSP is incremental:

    PSP0

    Whatever youre currently doing, plus somemeasurements

    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

  • 8/12/2019 Lab01 Introduction

    14/19

    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 theseforms

    Project Plan Summary After understanding the requirements, estimate how many

    minutes will the assignment take

    After finishing the assignment, write down how much timeit actually took, and how many defects you found

    It is OK to be absolutely wrong in your initialestimates

  • 8/12/2019 Lab01 Introduction

    15/19

    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 emailmake sure your log has the corresponding InterruptionTime entries

    Some details will feel embarrassing (two hours fixing abug, 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

  • 8/12/2019 Lab01 Introduction

    16/19

    The Personal Software Process

    PSP0

    Defect Recording Log

    Again, record everydefect

    If you designed your routines incorrectly, write thedefect 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 belongsto, write your assumptions in the defect description

  • 8/12/2019 Lab01 Introduction

    17/19

    The Personal Software Process

    The three forms of PSP0 will become thefoundation of later assignments It willfeel weird at the beginning

    Give it some time

    With time, you will be recording your time anddefects naturally Appreciating the advantages of this process will take

    a while

    It shouldnt interfere with your creativeprocesses!

  • 8/12/2019 Lab01 Introduction

    18/19

    Assignment 1

    Write a program to calculate the mean and standarddeviation of a sample of nreal numbers.

    Hints Remember were interested in that you learn a process, notin

    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 startcoding

    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 150other persons

    Although it shouldnt take too long, start soon. We can tell ifyoure rushing to finish your assignment

  • 8/12/2019 Lab01 Introduction

    19/19

    Am I missing something?

    Questions?