T. E. Potok - University of Tennessee CS 594 Software Engineering Lecture 2 Dr. Thomas E. Potok
2 Software Engineering CS 594T. E. Potok - University of Tennessee Agenda Review Requirements, JAD, and Use Case Modeling Project Size Estimates Software Development Life-Cycles Software Development Productivity
3 Software Engineering CS 594T. E. Potok - University of Tennessee Admin Power point files accessible? Articles accessible? AMI - American Magnetics Main requirements Estimate how much time the project will take Estimate the cost of the project
4 Software Engineering CS 594T. E. Potok - University of Tennessee What is relevant? Test are open book and open notes Know CMM – What are the benefits to a company adopting CMM? Know requirements modeling – What is the fundamental difference between the output of a JAD session and use cases?
T. E. Potok - University of Tennessee Review
6 Software Engineering CS 594T. E. Potok - University of Tennessee Entity Relationship Modeling Entities represent things Attributes represent characteristics of the things Relationship represent associations between things Entities: Cat, Dog, Person, Car, Building Attributes: name, age, height, weight Relationships: owns, drives, pets, builds
T. E. Potok - University of Tennessee Project Size Estimations
8 Software Engineering CS 594T. E. Potok - University of Tennessee Metrics Measuring the output of a process is the first step to analyzing the process. Automobile companies measure how many manufacturing hours go into producing a car. As with any measurement, there are problems. You are trying to summarize a great deal of information into a single or small number of values. How much does the high and low temperatures really tell you about the weather, or the barometric pressure, or the wind direction. Looking at any one of these measures it is easy to find flaws, and short comings. – Should the temperature be recorded at ground level? or a top a central tower? in the shade or in the sunlight.
9 Software Engineering CS 594T. E. Potok - University of Tennessee Lines-of-code What unit of measure should be used to measure software output? The traditional and much maligned metric is called lines-of-code or LOC. A summary of concerns with LOC: – Capers Jones notes: – 1) should the code count include non-executable code, such as comments, or explanatory information. – 2) how are differences between high-level and low-level languages represented. – 3) Whether non-delivered code should be represented in a LOC count. – So, it appears that LOC counts may not be the best way to measure software development output.
10 Software Engineering CS 594T. E. Potok - University of Tennessee Function Points If not LOC, then what?? Many other metrics have been developed. Most of these metrics have major flaws. Albrecht developed Function Point Analysis (FPA) in the late 70’s This method assumes that “the amount of function to be provided by the application (program) can be estimated from an itemization of the major components of data to be used or provided by it”. Albrecht believes that the complexity of a software project is determined by the functions of the software.
11 Software Engineering CS 594T. E. Potok - University of Tennessee More on Function Points FPA breaks the functionality of a software project into five areas. Then for each area, the number of simple, average, and complex functions is determined, followed by a technical complexity factor calculated from 14 software system characteristics. These 14 characteristics are tied to Halstead’s Software Science Metrics which are tied to Putnam’s cost estimation models, which are based on Norden’s Rayleigh Curve model first published in the late 50’s based on computer hardware development.
12 Software Engineering CS 594T. E. Potok - University of Tennessee So LOC is not so bad after all A big problem with Rayleigh Curves is that for early software development data, the curves appear to fit, but no one can explain why. Beside that fact that function points have a shaky theoretical background, it is much harder to generate function points than LOC, therefore few use them. Like the imperial measurement system, it is clearly inferior to the metric system, however, until people use the metric system, it will be of little relevance to most people. Therefore, we will proceed with using line-of-code, being careful to minimize Jone’s issues
13 Software Engineering CS 594T. E. Potok - University of Tennessee How long will the project take? Estimate of the size of a project – Lines of code – Function points – Person-months Based on requirements and experience or mathematical model
T. E. Potok - University of Tennessee Software Development Life- cycle
15 Software Engineering CS 594T. E. Potok - University of Tennessee Typical Life-cycle Requirements Design Code Test Maintenance
16 Software Engineering CS 594T. E. Potok - University of Tennessee Software Development Effort A team of programmers puts effort into developing software Ideally measured in person-months, with distinctions made for the type of effort – Design – Programming – Testing – Training Often all that is available is the calendar time spend on developing software
17 Software Engineering CS 594T. E. Potok - University of Tennessee Productivity Team Productivity = Project Output/Project Effort Programmer productivity = Programmer Output/Programmer Effort Productivity typically measured in LOC/Person-month
18 Software Engineering CS 594T. E. Potok - University of Tennessee Productivity Example Need to produce 10,000 LOC, 10 KLOC. Average programmer productivity = 200 LOC/Person-month (US average) How many people do I need? How long will it take?
19 Software Engineering CS 594T. E. Potok - University of Tennessee Productivity Example
20 Software Engineering CS 594T. E. Potok - University of Tennessee Productivity Example
21 Software Engineering CS 594T. E. Potok - University of Tennessee People vs Months
22 Software Engineering CS 594T. E. Potok - University of Tennessee Results We can develop 10 KLOC in one month with 50 people, or 2 People in 25 months Assumes that the interaction among people does not results in a productivity penalty Total of 50 Person-months of effort needed
23 Software Engineering CS 594T. E. Potok - University of Tennessee Productivity Loading Curve Assumes two people can start immediately and work full-time on the project
24 Software Engineering CS 594T. E. Potok - University of Tennessee Software development life- cycle Early researchers found that labor distribution of hardware and software development follows a Rayleigh distribution Where t = month, t D = month at peak effort
25 Software Engineering CS 594T. E. Potok - University of Tennessee Rayleigh Curves Peak effort at 7 months - Requiring 5 People 50 total person-months of effort required
26 Software Engineering CS 594T. E. Potok - University of Tennessee Life-Cycle RequirementsDesignCodeTestMaintenance
27 Software Engineering CS 594T. E. Potok - University of Tennessee Putnam’s Slim Model Where S is the number of lines of code PR is the average productivity y is the Rayleigh loading curve t is time C is the state of technology K is the effort applied
28 Software Engineering CS 594T. E. Potok - University of Tennessee Effort Comparisons
T. E. Potok - University of Tennessee Productivity Studies
30 Software Engineering CS 594T. E. Potok - University of Tennessee Background Statistical Model – Little knowledge of the underlying system – Given there is sufficient data, and that the data is normally and independently distributed! – Regression provides a linear model that provides a least squares fit to the data
31 Software Engineering CS 594T. E. Potok - University of Tennessee Linear Regression Where is an estimate of the mean of Y, and are numerical estimated of the parameters
32 Software Engineering CS 594T. E. Potok - University of Tennessee Multiple Regression Similar processing to linear regression Provides the ability to determine what factors are most significant
33 Software Engineering CS 594T. E. Potok - University of Tennessee Many early studies applied regression Data gathered from multiple software project Log-linear relationship found between project size and effort Where PM are person-months, KLOC is thousands of lines of code
34 Software Engineering CS 594T. E. Potok - University of Tennessee Typical Effort Vs Project Size Curve
35 Software Engineering CS 594T. E. Potok - University of Tennessee Some interesting results Diseconomy of scale - larger projects need proportionately more effort Many factors influencing productivity – Early studies show people are the major factor in productivity – High productivity project have experienced, well trained people
36 Software Engineering CS 594T. E. Potok - University of Tennessee Summary Project Size Estimates Software Development Life-Cycles Software Development Productivity