Improving the Productivity of Software Development Essential Steps & Problems.

23
Improving the Improving the Productivity of Productivity of Software Development Software Development Essential Steps & Problems Essential Steps & Problems

Transcript of Improving the Productivity of Software Development Essential Steps & Problems.

Page 1: Improving the Productivity of Software Development Essential Steps & Problems.

Improving the Improving the Productivity of Software Productivity of Software

DevelopmentDevelopmentEssential Steps & ProblemsEssential Steps & Problems

Page 2: Improving the Productivity of Software Development Essential 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

Page 3: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 4: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 5: Improving the Productivity of Software Development Essential Steps & Problems.

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.

Page 6: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 7: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 8: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 9: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 10: Improving the Productivity of Software Development Essential Steps & Problems.

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.

Page 11: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 12: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 13: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 14: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 15: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 16: Improving the Productivity of Software Development Essential Steps & Problems.

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 . . .)

Page 17: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 18: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 19: Improving the Productivity of Software Development Essential Steps & Problems.

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.

Page 20: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 21: Improving the Productivity of Software Development Essential Steps & Problems.

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

Page 22: Improving the Productivity of Software Development Essential Steps & Problems.

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.

Page 23: Improving the Productivity of Software Development Essential Steps & Problems.

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.