Improving the Improving the Productivity of Software Productivity of Software
DevelopmentDevelopmentEssential Steps & ProblemsEssential Steps & Problems
TopicsTopics
IntroductionIntroduction Organizational impactOrganizational impact Four steps an improvement effort should Four steps an improvement effort should
includeinclude Measurement of initial productivityMeasurement of initial productivity Identification and measurement of relevant Identification and measurement of relevant
productivity driversproductivity drivers Analysis and adjustments to identified productivity Analysis and adjustments to identified productivity
driversdrivers Reevaluation and comparison of overall process Reevaluation and comparison of overall process
productivityproductivity
IntroductionIntroduction
One study found that a 20 percent improvement One study found that a 20 percent improvement in software productivity would be worth 90 billion in software productivity would be worth 90 billion dollars world wide during the last decade of the dollars world wide during the last decade of the twentieth century twentieth century
From 1990 to 1995, the software industry had a From 1990 to 1995, the software industry had a 10 percent drop in productive 10 percent drop in productive
Many blame the increasing size and complexity of Many blame the increasing size and complexity of applicationsapplications
Others counter with the development of new tools Others counter with the development of new tools such as CASEsuch as CASE
Regardless, Productivity is an important issueRegardless, Productivity is an important issue
IntroductionIntroduction
Common output measureCommon output measure SLOC SLOC
Useful in overall productivity assessment Useful in overall productivity assessment Relatively useless in improvement efforts (not Relatively useless in improvement efforts (not
adjustable)adjustable) Racecar example Racecar example
Top speed similar to SLOC (one measure of total output/performance) Top speed similar to SLOC (one measure of total output/performance) Other output/performance measures should be usedOther output/performance measures should be used
Acceleration Acceleration GripGrip
Any performance improvement requires adjustment to performance driving Any performance improvement requires adjustment to performance driving characteristics of the car (Compression ratio, fuel to air mixture, timing, etc.)characteristics of the car (Compression ratio, fuel to air mixture, timing, etc.)
Similarly in software developmentSimilarly in software development Composite input/output metrics should be usedComposite input/output metrics should be used Measure and adjust adjustable drivers of productivityMeasure and adjust adjustable drivers of productivity
Organizational ImpactOrganizational Impact Software Engineering Laboratory (SEL) - A software Software Engineering Laboratory (SEL) - A software
improvement activity at NASA Goddard Space Flight Center, improvement activity at NASA Goddard Space Flight Center, aided by the University of Maryland and Computer Sciences aided by the University of Maryland and Computer Sciences Corporation Corporation Goal - Improve productivity software projects at NASAGoal - Improve productivity software projects at NASA Existed for 25 yearsExisted for 25 years A review of the 25 years of SEL identified 13 lessons learnedA review of the 25 years of SEL identified 13 lessons learned
SEL found that a rigorous process and professional staff SEL found that a rigorous process and professional staff must be used for collection and analysis of production datamust be used for collection and analysis of production data Part-time undergrads were insufficient Part-time undergrads were insufficient
Organizations will also need full-time software improvement Organizations will also need full-time software improvement staffstaff
SEL found a 10% overhead allocation is necessary.SEL found a 10% overhead allocation is necessary.
Step 1: Measurement of Current Step 1: Measurement of Current ProductivityProductivity
You can’t improve what you can’t measure.You can’t improve what you can’t measure. Two fundamental measures any productivity Two fundamental measures any productivity
measurementmeasurement InputInput OutputOutput
Productivity = Productivity = TotalTotal software process output / software process output / TotalTotal software process input software process input
Measurement of Current Measurement of Current ProductivityProductivity
This simple equation carries significant This simple equation carries significant implicationsimplications Comparability of productivity values when identical Comparability of productivity values when identical
metrics and instrumentation are used in the collection of metrics and instrumentation are used in the collection of datadata
Productivity of X is half as productive as 2XProductivity of X is half as productive as 2X Importance of accuracy Importance of accuracy
Do the metrics used actually reflect productivityDo the metrics used actually reflect productivity Example - Two software improvement efforts measuring the same Example - Two software improvement efforts measuring the same
process, but using different metrics might give diametric results process, but using different metrics might give diametric results Productivity values will result in organizational changeProductivity values will result in organizational change Organizational change based on inaccurate data is not a Organizational change based on inaccurate data is not a
good ideagood idea
Measurement of Current Measurement of Current Productivity Productivity
Common input measuresCommon input measures Person-hoursPerson-hours MoneyMoney
Common output measuresCommon output measures SLOCSLOC Function Point Analysis Function Point Analysis
Measurement of Current Measurement of Current ProductivityProductivity
Revenue/Investment
•Problems
•Inflation
•Only one value for input and output
•A software development effort has relatively little relation to revenue generation
•Revenue is more dependent on market factors
Measurement of Current Measurement of Current ProductivityProductivity
•SLOC should reflect the current development effort
•Not all code delivered to the customer is developed under the current effort
•Not all code produced under the current effort is delivered to customers
•Still, additional metrics of output are needed.
Measurement of Current Measurement of Current ProductivityProductivity
Additional outputAdditional output application-domain knowledge gained application-domain knowledge gained Software development experience gainedSoftware development experience gained documentation and other artifacts documentation and other artifacts complexity of the productcomplexity of the product quality of the product quality of the product
ExampleExample TeamATeamA
Extensive application-domain knowledgeExtensive application-domain knowledge Extensive software development experience Extensive software development experience
TeamBTeamB Little application-domain knowledgeLittle application-domain knowledge Little software development experience Little software development experience
Both teams produce functionally equivalent products using 20,000 SLOCBoth teams produce functionally equivalent products using 20,000 SLOC Effort from TeamA is 500 person-monthsEffort from TeamA is 500 person-months Effort from TeamB is 1000 person-monthsEffort from TeamB is 1000 person-months
TeamA is twice as productive as TeamB?TeamA is twice as productive as TeamB? TeamB produced additional outputTeamB produced additional output
Application-domain knowledge gainedApplication-domain knowledge gained Software development experience gainedSoftware development experience gained
Size alone doesn’t capture total output of a software development effortSize alone doesn’t capture total output of a software development effort
Measurement of Current Measurement of Current ProductivityProductivity
SolutionSolution Use composite input/output valuesUse composite input/output values
Problems for managersProblems for managers What are the constituent values of the composite What are the constituent values of the composite
input/output valuesinput/output values What weights to assign themWhat weights to assign them How to aggregate them into one valueHow to aggregate them into one value
Ensure productivity is accurately representedEnsure productivity is accurately represented Total input and output are captured in the productivity Total input and output are captured in the productivity
equationequation
Step 2: Identification and Step 2: Identification and measurement of productivity measurement of productivity
driversdrivers Product, process, and production setting Product, process, and production setting
characteristics individually and collectively affect characteristics individually and collectively affect the overall productivity of the software process the overall productivity of the software process
Productivity driversProductivity drivers
Identification and Identification and measurement of productivity measurement of productivity
driversdrivers Product-related drivers Product-related drivers
Intrinsically related to productIntrinsically related to product Typically not adjustableTypically not adjustable ExamplesExamples
Computing resource constraints Computing resource constraints ComplexityComplexity SizeSize
Based on customer requestsBased on customer requests Organizations must deliverOrganizations must deliver While not directly adjustable, product-related drivers are While not directly adjustable, product-related drivers are
still important determinants of productivitystill important determinants of productivity
Identification and Identification and measurement of productivity measurement of productivity
driversdrivers Production setting-related driversProduction setting-related drivers
Moderately controllableModerately controllable Can differ within departments of the same organizationCan differ within departments of the same organization ExamplesExamples
Programming language usedProgramming language used Differences between host (development) and target (end-user) Differences between host (development) and target (end-user)
systemsystem Extent of client participation Extent of client participation
Restricted by organizations practices and standardsRestricted by organizations practices and standards
Identification and Identification and measurement of productivity measurement of productivity
driversdrivers Process-related driversProcess-related drivers
Most ControllableMost Controllable Present real opportunities for improvementPresent real opportunities for improvement ExamplesExamples
Frequency and distribution of changes in operational system Frequency and distribution of changes in operational system requirements requirements
Effort applied to detailed software unit design Effort applied to detailed software unit design Effort applied to architectural design Effort applied to architectural design
Many process-related drivers are essentially the levels of Many process-related drivers are essentially the levels of effort applied to activities of the software development effort applied to activities of the software development process (requirements analysis, design, integration, process (requirements analysis, design, integration, testing, etc . . .)testing, etc . . .)
Step 3: Analysis and Step 3: Analysis and adjustment of productivity adjustment of productivity
driversdrivers Problem for managersProblem for managers
Identify relationships between levels of output and Identify relationships between levels of output and productivity driversproductivity drivers
What adjustments need to be madeWhat adjustments need to be made Buggy product code might imply lack of effort Buggy product code might imply lack of effort
applied to software requirements specifications or applied to software requirements specifications or requirements tracing.requirements tracing. Clearly deeper analysis is requiredClearly deeper analysis is required
Analysis and adjustment of Analysis and adjustment of productivity driversproductivity drivers
Diminishing returns is an economic law stating, if Diminishing returns is an economic law stating, if one production factor is increased while other are one production factor is increased while other are held constant, eventually productivity will start to held constant, eventually productivity will start to fall.fall.
This implies specific levels of effort applied to This implies specific levels of effort applied to process-related drivers which should maximize process-related drivers which should maximize productivityproductivity
However effort is applied thorough variable However effort is applied thorough variable humans (not like machines)humans (not like machines)
Difficult to find the maximal level of effortDifficult to find the maximal level of effort
Analysis and adjustment of Analysis and adjustment of productivity driversproductivity drivers
Relationships between productivity drivers and levels of Relationships between productivity drivers and levels of output are hard to comprehend and expensive to identify output are hard to comprehend and expensive to identify (10%)(10%) Confounded by interrelations of productivity driversConfounded by interrelations of productivity drivers Especially the human factorEspecially the human factor
Solution . . .Solution . . . Theoretical knowledge based system that models software Theoretical knowledge based system that models software
production production Set up to mirror current situationSet up to mirror current situation
Product characteristicsProduct characteristics Process characteristics Process characteristics Production setting characteristics Production setting characteristics
query the model and conduct “what if” analysis on the current query the model and conduct “what if” analysis on the current situation . . . Immediate answerssituation . . . Immediate answers
Successful implementation of such a model would eliminate Successful implementation of such a model would eliminate 80 to 90% of software improvement costs.80 to 90% of software improvement costs.
Analysis and adjustment of Analysis and adjustment of productivity driversproductivity drivers
Management should formulate an organizational Management should formulate an organizational change plan based on analysis of data collected change plan based on analysis of data collected with the aid of the data collection and analyzation with the aid of the data collection and analyzation team.team.
Commitment is importantCommitment is important 2/3 of all change efforts fail due to lack of commitment 2/3 of all change efforts fail due to lack of commitment
across all levels of the organizationsacross all levels of the organizations Lesson 11 at SEL involved having upper managements Lesson 11 at SEL involved having upper managements
support for continued improvement in productivitysupport for continued improvement in productivity
Analysis and adjustment of Analysis and adjustment of productivity driversproductivity drivers
Resistance to change is naturalResistance to change is natural Technology Acceptance Model (TAM) and the Technology Acceptance Model (TAM) and the
Theory of Planned Behavior (TPB) both study such Theory of Planned Behavior (TPB) both study such adoption issues and predict intention to use and adoption issues and predict intention to use and actual usage of workplace technology actual usage of workplace technology
Certain aspects of these models used to Certain aspects of these models used to overcome initial resistance of the improvement overcome initial resistance of the improvement plan and assimilate change in the workplace plan and assimilate change in the workplace
Step 4: Reevaluation and Step 4: Reevaluation and comparison of overall comparison of overall process productivityprocess productivity
Reevaluate productivityReevaluate productivity Use identical metricsUse identical metrics Use identical instrumentation Use identical instrumentation Ensures comparability and accuracy of the comparisonEnsures comparability and accuracy of the comparison
Establish the degree of success or failure of the Establish the degree of success or failure of the improvement attempt improvement attempt What went wrongWhat went wrong What went rightWhat went right
Continuous iteration of these steps means Continuous iteration of these steps means continuous improvement in productivity in spite continuous improvement in productivity in spite of the ever increasing size and complexity of of the ever increasing size and complexity of products.products.
ConclusionConclusion
Following these four basic steps, and with a Following these four basic steps, and with a knowledge of problems that will be encountered, knowledge of problems that will be encountered, managers will be able to improve productivity of managers will be able to improve productivity of their software development efforts.their software development efforts.
Development of the theoretical software simulation Development of the theoretical software simulation model will significantly reduce the cost and model will significantly reduce the cost and complexity of this process.complexity of this process.