Automated Software Processes Performance Analysis and
Transcription
Automated Software Processes Performance Analysis and
FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Automated Software Processes Performance Analysis and Improvement Recommendation César Barbosa Duarte Master in Informatics and Computing Engineering Supervisor: João Carlos Pascoal de Faria (PhD) 17 th February, 2012 Automated Software Processes Performance Analysis and Improvement Recommendation César Barbosa Duarte Master in Informatics and Computing Engineering Approved in oral examination by the committee:: Chair: Raul Vidal (PhD) External Examiner: João Miguel Fernandes (PhD) Supervisor: João Pascoal Faria (PhD) ____________________________________________________ 17 th February, 2012 Abstract Nowadays there is a huge need for quality in software as our lives may depend on it. The Personal Software Process (PSP) and the Team Software Process (TSP) are process improvement frameworks tailored to produce virtually defect free software and deliver it on time. Although these are great frameworks they need tool support to work efficiently and without proper tool support the amount of data produced by even relatively small projects is overwhelming. It is a fact that there are today a great number of tools to provide this support to PSP and TSP, some of them are semi-automated and require little effort by the developer. But they still lack automation in a very important part of the process, the data analysis. This is where the improvement actions are concluded from and it requires that the person doing this has a great deal of experience in PSP and TSP to reach to this improvement actions and conclusions just by looking at graphs and sheets (if using semi-automated data analysis tools). The result of this dissertation is a working prototype that does just that, automates the data analysis part and provides improvement actions even to the most inexperienced PSP user. Through an extensive research on several performance indicators, a performance model was made based on the Time Estimation Error performance indicator (PI). It is represented in a tree-like diagram and it shows the relationships (what affects what and how) between the PIs. By using this model it should be possible to determine the source of the problem and suggest improvement actions based on that. The model was applied in a tool created for this purpose called PSP PAIR. It uses as a basis a database with data from PSP projects and following the performance model, after calculating the value of each indicator, it shows a set of suggested improvement actions based on that. The PSP PAIR could provide a really good support to engineers using the PSP in their projects and help them speed up the analysis of all the data they collect with automation. i Resumo Hoje em dia existe uma grande necessidade de qualidade no software pois as nossas vidas podem depender disso. O Personal Software Process (PSP) e o Team Software Process (TSP) são ferramentas de melhoria de processos feitas para produzir software virtualmente livre de defeitos e entregá-lo dentro do tempo estipulado. Embora sejam ambas excelentes metodologias, necessitam de apoio de ferramentas automatizadas para trabalhar de forma eficiente. Pois sem o apoio de uma ferramenta adequada, até para projetos de pequena dimensão, a quantidade de dados produzidos por eles é esmagadora. É um fato que há hoje um grande número de ferramentas que fornece algum apoio ao PSP e ao TSP, sendo que algumas delas são semi-automatizadas e exigem pouco esforço por parte do utilizador. Mas todas elas têm um defeito, falta-lhes automatizar uma parte muito importante do processo, a análise dos dados. É nesta fase onde são feitas as conclusões que levam posteriormente a propostas de ações de melhoria. Isto requer que a pessoa que o está a fazer tenha uma grande experiência em PSP e TSP para chegar a ações de melhoria e conclusões apenas a partir de gráficos e tabelas de dados (isto se estiver a usar uma ferramenta que automatiza parte da análise de dados, ou seja, agrega os dados em gráficos e tabelas). O resultado desta dissertação é um protótipo de uma ferramenta que faz exatamente isto, automatiza a parte de análise de dados e sugere ações de melhoria que até mesmo o utilizador mais inexperiente de PSP deverá perceber. Depois de uma extensa pesquisa sobre diversos indicadores de desempenho, foi elaborado um modelo de performance com base no indicador de desempenho Time Estimation Error (erro na estimação do tempo). Este modelo é representado num diagrama em árvore onde é possível ver os relacionamentos entre os indicadores de desempenho (o que é que afeta o quê e como). Ao utilizar este modelo deve ser possível determinar a origem do problema e sugerir ações de melhoria com base nisso. O modelo foi aplicado numa ferramenta criada para o efeito chamada PSP PAIR. Esta ferramenta usa como base uma base de dados com os dados de projetos que usaram o PSP e depois de calcular o valor de cada indicador, mostra um conjunto de ações de melhoria sugeridas com base no modelo de desempenho elaborado. O PSP PAIR poderá proporcionar um apoio interessante para engenheiros que estão a usar o PSP nos seus projetos e ajudá-los a acelerar a análise de todos os dados que foram recolhidos com automação. ii Acknowledgments I would like to start by expressing my gratitude towards my supervisor, Professor Doutor João Pascoal de Faria, for always being available to share his expertise and extensive knowledge with me and to guide me along this fantastic and life-changing journey that was to do this dissertation. A special thanks to Professor Doutor António Manuel Andrade, for bearing with me as I was working on this dissertation and finishing my studies, and for giving me the time and guidance I needed. I must also acknowledge Professora Doutora Ana Paiva, for introducing me to the Software Engineering community at FEUP, that eventually led me to this dissertation. Last but not least, I would like to thank my family for all the support, values and ethical principles they provided me and instill me with through my entire life and in particular, to my partner and best friend, Sónia Dutra, for making me a better person with all her love, care and patience, and without whom I would probably not manage to accomplish everything I did. To those who I, unjustly, forgot to mention, my sincere gratitude. César Barbosa Duarte iii Contents 1 Introduction............................................................................................................................. 1.1 Context and Motivation...................................................................................................... 1.2 Problem Description........................................................................................................... 1.3 Goals and Expected Results............................................................................................... 1.4 Methodology...................................................................................................................... 1.5 Structure............................................................................................................................. 1 1 2 3 3 4 2 Related Work and Concepts................................................................................................... 5 2.1 Personal Software Process.................................................................................................. 5 2.1.1 Process Structure........................................................................................................ 6 2.1.2 Metrics........................................................................................................................ 8 2.1.3 Performance improvement results in the PSP training............................................. 10 2.1.4 Tools......................................................................................................................... 11 2.1.5 PSP Student Workbook............................................................................................ 12 2.1.6 Performance Analysis Report................................................................................... 14 2.2 Team Software Process.................................................................................................... 20 2.2.1 Process Structure...................................................................................................... 21 2.2.2 Tools......................................................................................................................... 21 2.3 Fully automated tool for collection, analysis, visualization, interpretation of data.........23 2.3.1 Architecture.............................................................................................................. 24 2.3.2 Sensors and Metrics................................................................................................. 24 2.4 Statistical Process Control................................................................................................ 27 2.5 Conclusions...................................................................................................................... 28 3 Data Analysis and Improvement Actions............................................................................ 3.1 Solution............................................................................................................................ 3.1.1 Time Estimation Error.............................................................................................. 3.1.2 Size Estimation Error............................................................................................... 3.1.3 Productivity Estimation Error.................................................................................. 3.1.4 Productivity Stability................................................................................................ 3.1.5 Process Stability....................................................................................................... 3.1.6 Defect Density.......................................................................................................... 3.1.7 Process Yield............................................................................................................ 3.1.8 Review Rate............................................................................................................. iv 29 30 30 32 36 37 38 38 40 41 3.1.9 Review to Development Ratio................................................................................. 3.2 Performance Model.......................................................................................................... 3.3 Recommended Improvement Actions.............................................................................. 3.4 Conclusions...................................................................................................................... 42 43 44 47 4 Implementation and Evaluation........................................................................................... 4.1 Architecture of the solution.............................................................................................. 4.2 PSP PAIR......................................................................................................................... 4.3 Evaluation......................................................................................................................... 48 48 51 56 5 Conclusions and Future Work............................................................................................. 63 5.1 Goal Achievement and Conclusions................................................................................ 63 5.2 Future Work..................................................................................................................... 64 References................................................................................................................................. 66 v List of Figures Figure 1.1: Software Process Dashboard Data Analysis [Initiative].............................................. 2 Figure 2.1: PSP Process Evolution [Humphrey, 2005].................................................................. 6 Figure 2.2: PSP Process Flow [Humphrey, 2002b] ....................................................................... 7 Figure 2.3: PSP Process Elements [Humphrey, 2002b] ................................................................ 8 Figure 2.4: Improvements in PSP Training Data [Hayes and Over, 1997].................................. 10 Figure 2.5: PSP Student Workbook – Main menu and Total Defect Density graph.................... 13 Figure 2.6: Time Estimation Charts............................................................................................. 17 Figure 2.7: Time Estimation Table............................................................................................... 18 Figure 2.8: Time Estimation - %Time per Phase and Hours/KLOC per phase........................... 19 Figure 2.9: Process Improvement Models [Humphrey, 2002a] .................................................. 20 Figure 2.10: TSP and CMM defects/KLOC [Davis and Mullaney, 2003].................................. 20 Figure 2.11: TSP Elements [Humphrey, 2002a] ......................................................................... 21 Figure 2.12: Hackystat Browser interface [Johnson, 2008]......................................................... 23 Figure 2.13: Hackystat Architecture [Lofi, 2005]........................................................................ 24 Figure 2.14: Examples of SPC Tools (Adapted from [Statit Software, 2007])............................ 28 Figure 3.1: Time Estimation Error recommended Controls Limits graph...................................31 Figure 3.2: The Probe Estimating Method [Humphrey, 2005]...................................................33 Figure 3.3: Size Estimation Error recommended Controls Limits graph..................................... 34 Figure 3.4: Part Estimation Error recommended Controls Limits graph.....................................35 Figure 3.5: Missing Parts recommended Controls Limits graph.................................................. 35 Figure 3.6: Expurious Parts recommended Controls Limits graph.............................................. 36 Figure 3.7: Productivity Estimation Error recommended Controls Limits graph........................37 Figure 3.8: Productivity Stability recommended Controls Limits graph.....................................38 Figure 3.9: DDUT recommended Controls Limits graph............................................................ 39 Figure 3.10: TotalDD recommended Controls Limits graph....................................................... 40 Figure 3.11: Process Yield recommended Controls Limits graph...............................................41 Figure 3.12: Review Rate recommended Controls Limits graph................................................. 42 Figure 3.13: Review to Development Ratio recommended Controls Limits graph.....................43 Figure 3.14: Performance Model Tree......................................................................................... 44 Figure 4.1: Architecture - Indicators............................................................................................ 49 Figure 4.2: Architecture – Control Limits.................................................................................... 50 Figure 4.3: Architecture – Performance Model............................................................................ 51 Figure 4.4: PSP PAIR Home........................................................................................................ 52 vi Figure 4.5: PSP PAIR Results Report.......................................................................................... 53 Figure 4.6: PSP PAIR Project Details.......................................................................................... 54 Figure 4.7: PSP PAIR XML Performance Model and Control Limits......................................... 55 vii List of Tables Table 2.1: PSP Measures Definitions [Hayes and Over, 1997].....................................................9 Table 2.2: PSP Tool Support........................................................................................................ 11 Table 2.3: TSP Tool Support (adapted from [Fahmi and Ho-Jin, 2008])....................................22 Table 2.4: Summary of sensor data types [Johnson, 2001].......................................................... 25 Table 2.5: Hackystat Sensors and Metrics (adapted from [Lofi, 2005])...................................... 26 Table 3.1: TEE calculations......................................................................................................... 30 Table 3.2: Recommended improvement actions.......................................................................... 45 Table 4.1: Comparative Analysis between PAR and PSP PAIR.................................................. 57 viii Abbreviations CAR CCC CMMI CMU COQ DDUT DLD EP IDE KPI LOC MP PartEE PEE PI PIP PPS PROBE PSP SEE SEI SOAP SPC TEE TSP XML Causal Analysis and Resolution Change and Configuration Control Capability Maturity Model Integration Carnegie Mellon University Cost of Quality Defect Density in Unit Test Detailed-Level Design Expurious Parts Interactive Development Environment Key Performance Indicator Lines of Code Missing Parts Part Estimation Error Productivity Estimation Error (not to be confused with Part Estimation Error) Performance Indicator Process Improvement Proposal Project Plan Summary Proxy-based Estimating Personal Software Process Size Estimation Error Software Engineering Institute Simple Object Access Protocol Statistical Process Control Time Estimation Error Team Software Process Extensible Markup Language ix 1 Introduction This introductory chapter presents the context and motivation of this dissertation and describes the problem addressed, the envisioned solution, the methodology and the expected results of the work. 1.1 Context and Motivation Nowadays software plays a huge role in our everyday life and it's very important, if not essential, that software quality is very high to ensure that there are no failures that may result in economic or human losses. The need to ensure the quality of software products in a costeffective way drives companies and organizations to seek to improve their software development process, as it is becoming more and more accepted in industrial production in general and in the software industry in particular that the quality of the process directly affects the quality of the product [Kenett, et al., 1999] . “There is a very strong link between software quality and the processes used to develop it.” [Kenett, et al., 1999] Software process improvement and measurement go hand in hand: measures are the only way to prove improvements in a process. “Measurements are key. If you cannot measure it, you cannot control it. If you cannot control it, you cannot manage it. If you cannot manage it, you cannot improve it.” [Harrington, 1991] Measurement is defined as “the evaluation or estimation of degree, extent, dimension, or capacity in relation to certain standards (i.e., units of measurement)” [Sciences, 2008]. 1 Introduction High maturity software development processes that make use of metrics and quantitative methods, such as the Personal Software Process (PSP) 1 and Team Software Process (TSP)2 of the SEI / CMU3, generate a significant amount of data that can be subjected to automated analysis, to identify performance problems, determine their causes, and recommend improvement actions. 1.2 Problem Description The amount of data generated by using high maturity software development processes, like PSP and TSP, can be overwhelming even to the more experienced [Burton and Humphrey, 2006]. Automation is vital for data collection and analysis. There are a lot of tools that automate a big part of the metrics collection, but most of these tools transform the data into charts and reports as shown in Figure 1.1, and this is not really automating the analysis of the data. Figure 1.1: Software Process Dashboard Data Analysis [Initiative] All this data requires a great amount of time to be analyzed thoroughly and, even though there are some tools to help and guide the programmer in analyzing the data, this analysis is mostly manual. The great amount of data to collect and analyze is also a problem, as Watts S. Humphrey says in [Humphrey, 2002a] : 1 2 3 Personal Software Process and PSP are registered service marks of Carnegie Mellon University Team Software Process and TSP are registered service marks of Carnegie Mellon University www.sei.cmu.edu 2 Introduction “Without proper tool support, the volume of data produced by even relatively small projects is almost unmanageable.” Furthermore, despite of PSP devise some guidelines, expert knowledge is needed to do a proper analysis of the data and obtain improvement actions. 1.3 Goals and Expected Results The main goal of this dissertation work is to develop a tool to fully automate the analysis of performance data and recommend improvement actions in the context of software development. In order to complete this goal a Performance Model must be developed. This work is limited to the PSP methodology but providing for extensibility to TSP and other methodologies. The performance model is going to: • identify the performance indicators (PI) and their derivation formulas from base measures; • define the PI control limits; • define cause-effect relationships among performance indicators; • indicate improvement actions for each root cause. It is expected that, given this performance model, the working prototype of the tool can receive as input the data from the use of PSP and interpret it using the performance model developed. The output should be the improvement actions resulting from the following procedure: 1. Compute the key performance indicators (KPI). 2. Identify performance problems. 3. Identify root causes. 4. Identify potential improvement actions. 5. Evaluate cost-benefit of each action. 6. Select and recommend actions. 1.4 Methodology A methodology is required to achieve the aforementioned goals. Therefore the following objectives and phases were established: • Elaboration of the State of The Art Report; 3 Introduction ◦ Investigation of cause-effect relationship between these metrics; • ◦ The result of this investigation should be the aforementioned performance model Creation of a prototype of the tool; • ◦ An assessment of existing technologies is required Testing and evaluation of the prototype; • ◦ • Thorough a rigorous study and extensive investigation all the subjects related to this dissertation, including the PSP and the TSP. Repository maintained by SEI/CMU of PSP course data will be used for evaluation purposes Writing of the final report and elaboration of a scientific paper. Some of these objectives may overlap in time because of the nature of this dissertation. The testing and evaluation phase will overlap with the writing of the necessary documentation. 1.5 Structure In addiction to the introduction that provides the context of the problem and explains how it will be solved, this document contains four other chapters. In chapter 2 it is presented the related work and concepts where the bibliographic review of the areas of investigation and key concepts is done. All scientific information collected and regarded as relevant is addressed in this chapter. In chapter 3 of this report a detailed description of the problem addressed in dissertation and the proposed solution is presented. The details of implementation of the tool that is the result of the research done in this dissertation are presented in chapter 4. Finally, the conclusions and future work are presented in the last chapter (5) where the main ideas to retain from this document are summarized and the goal achievement is presented. 4 2 Related Work and Concepts This chapter describes the state of the art. Related work is also presented in order to show what exists in the same area and what were the problems encountered. In the first section the PSP is explained in a summarized way, its structure, metrics and tools are addressed. The Performance Analysis Report is also addressed as it plays and important role in this dissertation. The focus of the second section is the TSP, its main ideas and goals are presented, as well as its structure and tools. In the third section, the Hackystat system is presented. Its architecture, sensors and metrics are explained in a somewhat detailed way. In the last section of this chapter, the Process Control Methods and Tools are presented as they are of the most importance for process control and improvement. 2.1 Personal Software Process The Personal Software Process (PSP) is a process framework whose purpose is to guide developers in defining their own processes, planning and tracking their own work and managing the quality of the products they produce [Humphrey, 2005]. The recommended approach for learning the PSP is by doing a sequence of small projects guided by a PSP instructor, using increasingly refined and more complete processes (see Figure 2.1). 5 Related Work and Concepts Figure 2.1: PSP Process Evolution [Humphrey, 2005] 2.1.1 Process Structure The PSP process flow is show in Figure 2.2. The first step of the process is planning, having as input the requirements. There is a script to guide the work and a plan summary to record the data in this first step. The other steps also have scripts to guide the work and logs to record the data. In the postmortem phase (PM), the data form the logs is summarized, the program size is measured and all of this is then recorded into the plan summary form. The output of this is the finished product and the completed plan summary form. It should be noted that (contrarily to the more complex TSP) the PSP is designed for guiding the development of small programs (or components of large programs) by individual engineers, reason why it does not include requirements gathering nor high-level (architectural) design. 6 Related Work and Concepts Figure 2.2: PSP Process Flow [Humphrey, 2002b] As illustrated in Figure 2.1 the PSP has six process versions that are labeled from PSP0 to PSP2.1. They all have a similar collection of scripts, forms, logs and standards. The scripts instruct the programmer, step by step, through each part of the process. To record data there are templates (for the logs and forms) and the standards that help guide the work. The elements described above are shown in Figure 2.3. 7 Related Work and Concepts Figure 2.3: PSP Process Elements [Humphrey, 2002b] 2.1.2 Metrics There are four base measures that are collected in the PSP to support project management, quality management and process improvement: • Time: ◦ • Size: ◦ • product size (LOC); Quality: ◦ • time spent in each process phase (i.e., effort); defects found on the product; Date: ◦ date of project or task completion. Every level of PSP offers new measures to aid developers in managing and improving their performance, and each one of these measures descend from the three basic PSP measures 8 Related Work and Concepts mentioned above. In Table 2.1 are presented and defined some of this derived measures available in the PSP. Table 2.1: PSP Measures Definitions [Hayes and Over, 1997] Measure Planned Time in Phase Actual Time in Phase Total Time Time in Phase to Date Total Time to Date Time in Phase to Date% Compile Time Test Time Defect Defect type Fix Time LOC (Size) LOC Type LOC/Hour (Productivity) Estimating Accuracy Test Defects/KLOC Compile Defects/KLOC Total Defects/KLOC Yield Appraisal Time Failure Time Appraisal Cost of Quality (COQ) Failure COQ Total COQ COQ Appraisal/Failure Ratio (A/FR) Review Rate Definition The estimated time to be spent in a phase for a project The sum of time spent (delta times in time log) for a phase of a project The sum of planned or actual time for all phases of a project The sum of Actual Time in Phase for all completed projects The sum of Time in Phase to Date for all phases of all projects 100 * Time in Phase To Date for a phase divided by Total Time in Phase To Date The time from the start of the first compile until the first clean compile The time from the start of the initial test until test completion Any element of a program design or implementation that must be changed to correct the program Each defect is classified according to a defect type standard. It includes 10 defect types in a simple classification scheme designed to support defect analysis. The time to find and fix a defect A logical line of code as defined in the engineers counting and coding standard There are 7 LOC types, Base, Deleted, Modified, Added, Reused, Added & Modified, Total LOC and Total New Reused Total added and modified LOC developed divided by the total development hours The degree to which the estimate matches the result. Calculated for time and size %Error = 100*(Actual-Estimate)/Estimate The defects removed in the test phase per added and modified KLOC. 1000*(Defects removed in Test)/Actual Added and Modified LOC The defects removed in compile per added and modified KLOC. 1000*(Defects removed in Compile)/Actual Added and Modified LOC The total defects removed per added and modified KLOC. 1000*(Total Defects removed)/Actual Added and Modified LOC The percent of defects injected before the first compile that are removed before the first compile 100*(defects found before the first compile)/(defects injected before the first compile) Time spent in design and code reviews Time spent in compile and test 100*(design review time + code review time)/(total development time) 100*(compile time + test time)/(total development time) Total Cost of Quality = Appraisal COQ + Failure COQ A/FR = Appraisal Time/Failure Time Lines of code reviewed per hour 60 * Added and Modified LOC/review minutes 9 Related Work and Concepts 2.1.3 Performance improvement results in the PSP training The results shown in Figure 2.4 show the effect of PSP on Productivity, Predictability and Quality. This data is from a study of PSP training conducted by the SEI to a total of 298 engineers/students from 23 classes. The results show that the PSP helps developers establish a mature and disciplined software engineering practice that: • improves cost and schedule predictability (determined mainly by effort); ◦ • reduces time to deliver the product; ◦ • Effort Estimation Error graphs When the PSP is applied in developing components of a larger system, large productivity gains will arise in the integration and system testing because of the much higher quality of those components. produces high-quality, reliable software. ◦ As the training evolves the number of defects per KLOC decreases as illustrated in the Defects graph Figure 2.4: Improvements in PSP Training Data [Hayes and Over, 1997] 10 Related Work and Concepts 2.1.4 Tools One of the PSP main strengths is the use of historical data to help developers to do a better job, but, in order to do this, data has to be collected and analyzed. To many people this can be a very boring and tedious task if done manually which can lead to frustration. The beneficial effects of this data collection may not be immediate and obvious. So all this leads ultimately to errors in the data gathering [Disney and Johnson, 1998]. A lot of tools have been developed over the years to tackle this problem of manual gathering and provide a semi or fully automated data collection. A comparison between PSP Studio [Team, 1997], Process Dashboard [Initiative], Hackystat [Laboratory, 2010], PSPA [Sison, 2005], Jasmine [Shin, et al., 2007] and PSP.NET [Nasir and Yusof, 2005] is shown in Table 2.2. Table 2.2: PSP Tool Support PSP Process Studio Dashboard Hackystat PSPA Jasmine PSP.NET Environment Windows Windows,Lin Eclipse, Visual Open Source IDE Eclipse, Only Scripting Data Collection Interface Planning Wizard ux, Mac,etc Java Manual Manual and and Auto Auto Simple GUI and easy to learn PSP Project Plan Template Template LOC Counter Manual Auto(but offline) No Defect Sharing No User Available Developer Developer Only Only No No User Privacy Report Other Features Studio, JBuilder, etc Java Auto Java,C Auto GUI GUI & Pop-up windows Project Plan Template Schedule Planning Template Auto(sensorbased) No Developer Only No Graphical PPS,Graph Summaries and analysis and Chart Graph report (Estimation and defect) Supports Data collected by PSP0 to 3 separate software tools 11 Windows Microsoft and UNIX Office, Platform JBuilder Java,XML PHP Auto Manual and Auto GUI GUI & Popup windows Project Plan Template Auto(sensor- Auto(senso based) r-based) Yes(Auto) No Developer and Developer Project Manager Only Yes(Login and No Privacy Task) PPS, Graph Test Report (Defect summary classification and Ranking) Consolidation of individual schedules/defects into the team ones Schedule Planning Template Auto Yes(Auto) Developer Only Yes (Login) Graph, and Report summary - Related Work and Concepts 2.1.5 PSP Student Workbook This is the tool used by SEI in their PSP course. It helps and guides students to gather and analyze all the data they need. It is a pretty good support for the learning of this methodology as it has a lot of support materials (course materials, scripts, forms, templates, etc). It has got a lot of so-called analysis tools to help the student in the analysis of the data, it basically transforms the data into graphs of known performance indicators (that require some calculations), as Time Estimation Error, Size Estimation Error and Productivity. In Figure 2.5 the main menu and an example of a graph of produced by this tool are shown. 12 Related Work and Concepts Figure 2.5: PSP Student Workbook – Main menu and Total Defect Density graph This is going to be the basis for the tool built as a result of this dissertation. All the data gathered using this tool is stored in a database that is going to be used in this tool. 13 Related Work and Concepts 2.1.6 Performance Analysis Report The Performance Analysis Report is the final exercise of the PSP Advanced Course. This advanced course covers advanced topics of PSP and expands on TSP concepts. As stated in [SEI-Training, 2011], it essentially teaches software engineers to optimize their process performance by: • applying sound design engineering and verification techniques • using a defined estimating process (PROBE) to estimate size and effort • tracking and prediction using earned value • demonstrating various quality techniques for improving the software process, product and programmer productivity • recognizing quality problems and knowing how to fix them • use of statistical methods to understand and improve planning and quality performance • showing how measures can be combined to provide useful data for future project plans, provide information on process effectiveness, and process improvements The Performance Analysis Report has a couple of prerequisites: to complete all PSP programs and to read the chapters 13 and 14 of the book [Humphrey, 2005]. Provided this prerequisites are completed, the objectives of this assignment are: • Define, instrument, and follow a process for personal use • Demonstrate performance analysis skills • Anticipate the challenges faced in using these processes and methods on the job and determine how to address them • Learn to update a personal process based on personal data To complete this assignment there are a few requirements that must be followed, but at a minimum the report must address three fundamental topics, Planning Performance, Quality Performance and Process Performance. Furthermore, the report must: • Characterize current performance • Contain the PIPs1 for improvement based on analysis of current performance • Set performance goals • Identify PIPs to implementation in order to achieve performance goals The analysis done in this report is based on the three fundamental topics earlier mentioned (Planning Performance, Quality Performance and Process Performance), and it is supported mostly on charts and tables from which conclusions can be derived (what went wrong, what 1 The Process improvement Proposal (PIP) is a process defect-reporting procedure. It is a part of the process improvement process. [Humphrey, 2005] 14 Related Work and Concepts went right, how to avoid doing the mistakes again and how to keep on doing the right things). These conclusions generally result in PIPs. Lastly a Process Performance Analysis is done. This includes and gathers all the conclusions from the other topics and PIPs, resulting on detailed improvement actions. The automation of this last point of the Performance Analysis Report, the Process Performance Analysis, is one of the specific objectives of this dissertation. Using the example [Faria, 2008] of time estimation error illustrated in the charts of Figure 2.6, in the table of Figure 2.7 and in Figure 2.8, one should analyze everything and conclude that: • Time estimation accuracy is poor. • Steady improvement of empirical time estimation from Program1 to Program4, considering that time underestimation in Program3 is caused by size underestimation (see Hours/KLOC chart in see Figure 2.8). In program 4, time estimation was based on historical productivity (3rd option in method C). • Inferior time estimation in program 5 is justified by process change and more time spent in DLD that was not gained in subsequent phases. • Inferior time estimation in program 6 can be justified by a much smaller program size (about one third compared to previous programs) • Strong time underestimation in program 7 is due mainly to the time spent in DLD, high for the program size at hand (see chart with hours per KLOC in Figure 2.8). Still, CODE and CodeReview time correlate well with program size. Looking in more detail at project artifacts and project data (PIPs), two reasons exist: ◦ Problematic reuse of a large code base with inferior quality standards (lack of design documentation for update degrades DLD, robustness problems degrade UT); ◦ Inefficient and unstable DLD process (equations edited in Word, too big compared to Added&Modified program size) degrade DLD time. Regarding Productivity stability: • • Overall bad correlation between time and size due to (see explanations above): ◦ process changes; ◦ impact of reuse; ◦ impact of other factors for very small sized programs; ◦ small size range. Chart of Hours/KLOC in Figure 2.8 shows stability of productivity, except for DLD. 15 Related Work and Concepts Regarding the Time distribution per phases in Figure 2.8: • Growing % of time in DLD, as expected, although too much. • Small decrease in % of time spent in UT and CODE, as expected. Doesn't currently compensate increased time in DLD. • % UT time has space for further reduction, by improving the effectiveness of DLD and DR, because most defects are injected in DLD (this is shown in the document cited in Quality Performance Analysis). These are the conclusions for the Planning Performance Analysis - Time Estimation. One has to do a similar analysis to Planning Performance Analysis - Size Estimation. The Quality Performance Analysis also has to be made to analyze the Quality Profile, the defect injection and the defect removal before testing (Yield) and come to a set of conclusions that will help improving the process. Lastly, the Process Performance Analysis is made and it should be based on the Planning and the Quality Performance analysis. It consists on a set of improvement actions derived from the conclusions of the aforementioned performance analysis. For example, it should state where there is a need of improvement, why there's this need, and how should this improvement be implemented. For example, from the conclusions shown above for Planning Performance Analysis – Time Estimation a programmer should derive that he must improve time estimation accuracy. The developer can do this by reducing the time estimation error. Currently the estimation error is between 25% and 75%; the goal can be reducing it to a number between 0% and 25%. He can reach this goal by, for example, implementing these couple of measures (improvement actions): • Stabilize and make more efficient the Detailed-Level Design (DLD) process to improve and stabilize productivity: avoid expensive DLD representations (e.g., equations in Word), avoid long DLD documents (compared to code size); do Logic Specifications that can be used as code comments and can be easily written. • Widen the size range to have more basis for estimations. 16 Related Work and Concepts Figure 2.6: Time Estimation Charts 17 Related Work and Concepts Figure 2.7: Time Estimation Table 18 Related Work and Concepts Figure 2.8: Time Estimation - %Time per Phase and Hours/KLOC per phase 19 Related Work and Concepts 2.2 Team Software Process Like the SEI Capability Maturity Model, the Team Software Process (TSP) is based on process improvement principles. As shown in Figure 2.9, the focus of the TSP is the team while the focus of the CMM is improving the organization's capability . Figure 2.9: Process Improvement Models [Humphrey, 2002a] The TSP adds a project management and team management layer to the PSP and guides teams in improving their performance and producing high quality products on budget and on time. It is designed for use of teams from 2 to 20 members. TSP is capable of producing virtually defect free (0.06 defects/KLOC) products as shown in Figure 2.10 [Davis and Mullaney, 2003]. Figure 2.10: TSP and CMM defects/KLOC [Davis and Mullaney, 2003] 20 Related Work and Concepts 2.2.1 Process Structure The principal elements of the TSP structure are show in Figure 2.11. It is required that all members of a TSP team are fully trained in PSP to provide them with the knowledge and skills essential to use the TSP. These elements are the building blocks of TSP. The PSP provides high-maturity practices for individuals; it provides process discipline, performance measures, estimating and planning skills and quality management skills. The TSP provides high-maturity practices for teams, through team building (goal setting, role assignment, tailored team process and detailed balanced plans) and team management (team communication and coordination, project tracking, risk analysis). Figure 2.11: TSP Elements [Humphrey, 2002a] 2.2.2 Tools The TSP addresses critical business needs like better cost and schedule management and effective quality management, but in order to properly fulfill these business needs there is one thing that is essential, a proper support tool. In a study conducted in 2003 with data from 20 TSP projects in 13 organizations [Davis and Mullaney, 2003] one of the most common comments about the shortfalls of the TSP were tool-related. Here are a couple of examples: 21 Related Work and Concepts “Currently, the most common issue is the TSP spreadsheet. The developers are finding that small mistakes in data entry can cause a lot of grief (shared by coaches). Getting a more robust tool would definitely help.” “Tool issues are preventing us from properly consolidating individual, team, and organization data. Multiple data entry is frustrating to practitioners.” So to tackle this major shortfall of the TSP several tools were developed over the years. In Table 2.3 a comparative study of some of these tools is shown. Table 2.3: TSP Tool Support (adapted from [Fahmi and Ho-Jin, 2008]) Team Dashboard Partially Automatic Data Collection No Data Validation Some Statistical Analysis Tool No Communication/Discussio n among Team Members No Access to Potential Materials (forms,templates) Numeric mainly with Visualization of Performance indicators some Graphs and Charts Database Backup only Experience Repository Yes Defect Management Yes Configuration Management User manual provided Process Guide / User Manual Minimal User Friendliness Partially Follow SEI provided forms and templates 22 Point TSPi Workbook tVista Manual No No No Manual No No No Automatic . No Partially Partially Yes Numeric Only No Yes Yes Numeric Only - No Yes No No Yes Yes No 1 page manual provided - Nominal Fully Nominal Fully - Related Work and Concepts 2.3 Fully automated tool for collection, analysis, visualization, interpretation of data The Hackystat1 system is an automated tool for software process improvement and “a technology initiative and research project that explores the strengths and weaknesses of a developer-centric, in-process, and non-disruptive approach to empirical software project data collection and analysis” [Johnson, 2001]. Hackystat is one of the first third generation tools as it provides fully automated support for metrics collection and analysis, which eliminates overhead and context switching. However, it changes the kind of metrics data that is collected, and introduces new privacy-related adoption issues of its own. The early tools build to support PSP were first generation tools and only contained manual support, while second generation tools had semi-automated support. As stated in Table 2.2, Hackystat makes both data collection and analysis entirely automatically. A screen-shot of Hackystat browser interface is show below. Figure 2.12: Hackystat Browser interface [Johnson, 2008] 1 http://hackystat.googlecode.com 23 Related Work and Concepts 2.3.1 Architecture In Hackystat the data collection is sensor-based. These software sensors are attached to the development tools and automatically send data to a centralized web server. Its architecture can be described as a client server system as shown in Figure 2.13. The “clients” are the developer's software tools (purple) and for each of these tools there is a custom sensor (i.e., plug-in for the given tool, in yellow) that automatically monitors characteristics of the developer’s process. This data is specific to the tool the sensor was developed for. Furthermore, in case that a network connection is unavailable, the data is cached and resent later. The data collected by the sensors is transmitted to the server (Hackystat Web Server, in green) using SOAP. The web service maintains a data repository for each developer and runs analysis on the “raw” data sent by the sensors everyday. Further analysis can be invoked in the Web Browser interface, in order to help developers interpret the data and use it to make improvements. The result of the analysis can be automatically emailed to the developers for feedback when new, unexpected, and/or potentially interesting analysis results become available [Lofi, 2005]. Figure 2.13: Hackystat Architecture [Lofi, 2005] 2.3.2 Sensors and Metrics The summary of Hackystat's original sensor data types is show in Table 2.4. Every sensor data type is partial because as Philip Johnson says in [Johnson, 2001] : “The system cannot collect the total project effort of a developer, or all of the defects that occur, or all of the times a certain file is edited or a system is compiled. A key validation task is to ensure that useful developer feedback can be provided even in the face of partial data about the product and process.” 24 Related Work and Concepts Table 2.4: Summary of sensor data types [Johnson, 2001] Sensor Data Type ToolTime IdleTime Activity File Name Module Total Size Differential Size C/K Complexity Defect/Syntax Defect/Unit test CM/Tag Defect/Runtime Description The time the developer is “busy” using a development environment tool. ToolTime data appears to be accurate only to within 15 minutes for a given session. The time during which a development environment tool is running but the user is not actively engaged with it such that activities are being recorded. An event that occurs while using a development environment tool. Activities are used both to detect idle time and to detect events such as file modification, compilation errors, and so forth. The name, including the directory path, of a file manipulated by a development environment tool. An aggregation of files. Modules can be identified through explicit representations such as “projects”, or implicitly through common directory structures and co-occurrence within recorded activity sequences. Refers to a collection of sensor data types that calculate different representations of the total size of a software product. The authors' initial total size measure will leverage their prior research results on structural size measurement and the resulting grammar-based tool called LOCC1. Measures the difference in size between two successive versions of a system. LOCC implements one approach to differential size measurement that has been successfully applied to incremental project planning. Measures the six Chidamber-Kemerer (C/K) object-oriented metrics: Weighted methods per class, depth of inheritance tree, number of children, coupling between object classes, response for a class, and lack of module cohesion. Initial language targets are Java and C++. [Hitz and Montazeri, 1996] The unsuccessful compilation of a file due to a syntax error. The sensors will not attempt to infer what specific syntax error occurred or how many were in the file. Invocation of a specific unit test and its result (pass/fail). An aggregation of files that have been tagged as belonging to a release. The unsuccessful compilation of a file due to a syntax error. The sensors will not attempt to infer what specific syntax error occurred or how many were in the file. The unsuccessful termination of a program due to a run-time error. Hackystat can determine only that a run-time error occurred and the “top-level” reason (such as “Null pointer exception”). In Table 2.5 all tools with Hackystat sensors are shown, their respective metric and type of tool. Currently sensors are implemented for IDEs, office productivity applications, size measurement, testing, configuration management and defect tracking tools. Some of these sensors are available as part of the Hackystat binary distribution (labeled as Released), others are labeled as Experimental, meaning that they are currently under development but are not part of the binary distribution. The sensors labeled as Archive are sensors that have been worked on in the past, but are not longer under active development. 1 LOCC is an extensible system for producing hierarchical, incremental measurements of work product size that are useful for estimation, planning, and other software engineering activities. [Dane, 1999] 25 Related Work and Concepts Table 2.5: Hackystat Sensors and Metrics (adapted from [Lofi, 2005]) Measure Metric Sensor Type of Tool Label Effort Active time Eclipse IDE Released Emacs IDE Released JBuilder IDE Released Vim IDE Released Visual Studio IDE Released MS Office Office Released Review time Jupiter Code Review Released Size BCML Structural Metrics Optional CCCC Structural Metrics Released LOCC BCML CCCC Dependency-Finder Junit Structural Metrics Structural Metrics Structural Metrics Structural Metrics Testing Released Optional Released Released Released JBlanket Testing Released Eclipse IDE Released CPPUnit JBlanket JIRA Jupiter Ant Testing Testing Issue Management Code Review Build No Information Released Released Released Released Unix CLI Build Released Eclipse IDE Released CVS Configuration Management Released Subversion Configuration Management Released Filemetrics OO metrics Complexity Testing Defects Build Versioning Profiling Call dependency Unit test results Coverage Trouble tickets Review defects Build invocation Commits Load testing Parallel computing hackyLoadTest hackyHPC 26 Released Released Related Work and Concepts 2.4 Statistical Process Control In this topic some process control methods are shown in order to understand what the tool, that this dissertation will result in, is going to adapt and interpret in order to fully automate the software process performance analysis and corresponding improvement recommendation. Basically Statistical Process Control is a comparison of what is currently happening with what happened in the past. A snapshot of how the process will perform is taken and the control limits for the excepted measurements of the output of the process are calculated. Then actual data from the process is collected and compared with the control limits previously established. Measurements that fall off this control limits are investigated and some could later be discarded [NIST/SEMATECH, 2010]. Key monitoring and investigating tools include: • Histograms • Check Sheets • Pareto Sheets • Cause and Effect Diagrams (also called Fishbone diagrams) • Defect Concentration Diagrams • Scatter Plot • Control Charts Some examples of these tools are illustrated in Figure 2.14. 27 Related Work and Concepts Figure 2.14: Examples of SPC Tools (Adapted from [Statit Software, 2007]) 2.5 Conclusions After the analysis conducted during the state of the art review it is clear that there are a great number of tools for PSP and TSP. However, this abundance has not resulted in the final resolution of the problem address so far. Although some of the previously mentioned tools can provide automated or semi-automated data collection, none of them really automate the data analysis part. This is a major shortfall of these tools as the peformance analysis is, as stated in chapter 2.1.6, where software engineers analyze and optimize their process performance. The “automated” data analysis of these tools is the conversion of all the data into graphs and sheets, but this requires an experienced analyzer to interpret all this data, and even so the amount of data can be overwhelming. The main focus of this dissertation is the automation of the 28 Related Work and Concepts performance data analysis of the PSP, and as shown in this document, to this date, there is no tool that is capable of such. 29 3 Data Analysis and Improvement Actions In this chapter it is presented a more detailed description of the problem addressed in this dissertation and the proposed solution. As mentioned in the introduction, high maturity software development processes can generate a huge amount of data that needs to be processed and analyzed. Earlier in this document it was shown that there are a lot of tools that gather and process all this data. Generally the data is presented in graphs to the user for a thorough analysis but none that does what is proposed here. The problem is that a great deal of knowledge and experience is needed to make the correct analysis of all this data, identify the problems and come up with improvement and corrective actions for them. If a programmer with no experience in PSP, or similar high maturity software development processes, looks at Figure 1.1, a visualization of the data in graphs of a known tool, he probably couldn't make sense of it, and even if he could, he would not have the knowledge on how to correct or improve the problems he identified in those graphs. So the need of a tool that automates this analysis is quite clear here, as even to an experienced PSP programmer it would make the analysis a lot easier and quicker. In order to automate this data analysis a study is required to identify the key performance indicators and all factors that affect or are affected by them. The PSP Student Workbook (chapter 2.1.5) only has analysis tools that basically transforms the data into graphs of known performance indicators (that require some calculations), as Time Estimation Error, Size Estimation Error and Productivity. This is going to be the basis for the tool built as a result of this dissertation. All the data gathered using this tool is stored in a database that is going to be used in this dissertations tool prototype. 30 Data Analysis and Improvement Actions 3.1 Solution To cope with the problem described a thorough investigation of the performance indicators was made in order to come up with an adequate Performance Model. It is common knowledge that delivering the product on time is one of the most important things in every project, from small companies to big enterprises. One of the biggest strengths that SEI claims on their PSP and TSP is the delivery of the product on time (or with comparatively little deviation) and virtually free of defects (as low as 0.06 Defects/KLOC as shown in Figure 2.10). So as the most important and extensive performance indicator seems to be time related we can use the Time Estimation Error (TEE from the PSP) to evaluate our time estimation accuracy (the deviation between the estimated time and the actual time). It will be shown that the TEE is largely influenced by other very important performance indicators and a very broad key performance indicator. 3.1.1 Time Estimation Error Time Estimation Error (also known as Time Estimating Accuracy) is calculated using the following formula: TEE = Actual Time− Estimated Time Estimated Time (3.1) The TEE is measured in percentage, so the result should be multiplied by 100. By doing a little bit of math, presented in table Table 3.1, it is shown that TEE is directly affected by Size Estimation Error and Productivity Estimation Error. Note that in the PSP, one arrives at a time (effort) estimate by first producing a size estimate (size of the deliverables) and then combining the size estimate with a productivity estimate (size units/time units) based on historical data. Table 3.1: TEE calculations 1 Estimated Time= 2 Actual Time= Estimated Size Estimated Productivity Actual Size Actual Productivity Actual Size 1+2 TEE = Actual Productivity Estimated Size Estimated Productivity 31 −1 Data Analysis and Improvement Actions Actual Size so TEE = Estimated Size Actual Productivity −1 Estimated Productivity 4 SEE= Actual Size−Estimated Size Actual Size = −1 Estimated Size Estimated Size 5 PEE = Actual Productivity−Estimated Productivity Actual Productivity = −1 Estimated Productivity Estimated Productivity 4+5 TEE = SEE+1 −1 PEE+1 so TEE +1= SEE+1 PEE+1 The proposed control limits for the TEE performance indicator value is shown below, in Figure 3.1. If the value is in Green there's no problem, if it is yellow there is probably a problem somewhere in the PIs that affect TEE and if the value is in Red there's certainly a problem with this PI. The values of the graphs are based on goal values usually considered for PSP and TSP projects, present on the literature or orally stated by experts that are "Certified Personal Software Process (PSP) Developer" and "Authorized PSP Instructor” qualified by SEI of "Carnegie Mellon University". Note that this applies for all the following control limits graphs in this document. One should also note that all the following control limits graphs are only for demonstration proposes only, as some of them are limited because of this. The real Performance Indicators maximum and minimum values can be different. For example, TEE maximum value is not limited to 100%. 32 Data Analysis and Improvement Actions Time Estimation Error Control Limits -100% -80% -60% -40% -20% 0% 20% 40% 60% 80% 100% Figure 3.1: Time Estimation Error recommended Controls Limits graph Now the question is, what affects Size Estimation Error and Productivity Estimation Error? 3.1.2 Size Estimation Error SEE, also know as Size Estimating Accuracy, is defined as: SEE= Actual Size −1 Estimated Size (3.2) The SEE is measured in percentage, so the result should be multiplied by 100. But the question is what affects SEE and the formula does not directly answer that. So how is the size estimated? PSP uses a method called PROBE to estimate size and effort. Using this method programmers store all their historical data of the effort and the size of past projects, broken into individual parts, classified by type (logic, calculation, etc.). Then this historical data is used to estimate the size and effort of a project's parts that correspond in type and sizes to the historical individual parts. It uses multiple formulas based on linear regression to calculate the estimates. The basic steps of the size estimating procedure are shown in Figure 3.2. 33 Data Analysis and Improvement Actions Figure 3.2: The Probe Estimating Method [Humphrey, 2005] In this formulas, used by PROBE, were identified three key indicators that affect the Size Estimation Error. These indicators are the Missing Parts, the Expurious Parts and Part Estimation Error. Part Estimation Error is the percentage of error in the Identified Parts, parts that were estimated and used. PEE is calculated by: PartEE %= ∑ ( Identified Part Actual Size) −1 ∑ ( Identified Part Estimated Size) The PartEE is measured in percentage, so the result should be multiplied by 100. 34 (3.3) Data Analysis and Improvement Actions Missing Parts are the parts that were estimated but not used in the project. The percentage of Missing Parts is calculated by: MP %= ∑ ( Missing Part Actual Size) ( ∑ (Missing Part Actual Size)+∑ ( Identified Part Actual Size)) (3.4) The MP is measured in percentage, so the result should be multiplied by 100. Expurious Parts are the parts that were not planned (nor estimated) but were used in the project. The percentage of Expurious Parts is calculated by: EP %= ∑ ( Expurious Part Estimated Size) ( ∑ ( Expurious Part Estimated Size)+∑ ( Identified Part Estimated Size)) (3.5) The EP is measured in percentage, so the result should be multiplied by 100. The proposed control limits for the values of Size Estimation Error (SEE), Part Estimation Error (PartEE), Missing Parts (MP) and Expurious Parts (EP) are shown below, in Figure 3.3, Figure 3.4, Figure 3.5, Figure 3.6. The Missing Parts value is always positive or zero because it is calculated using the parts that were estimated but not used and the Expurious Parts value is always negative or zero because it is calculated using the parts that were not estimated but were used. Size Estimation Error Control Limits -100% -80% -60% -40% -20% 0% 20% 40% 60% 80% Figure 3.3: Size Estimation Error recommended Controls Limits graph 35 100% Data Analysis and Improvement Actions Part Estimation Error Control Limits -90% -70% -50% -30% -10% 10% 30% 50% 70% 90% -100% -80% -60% -40% -20% 0% 20% 40% 60% 80% 100% Figure 3.4: Part Estimation Error recommended Controls Limits graph Missing Parts Control Limits 0% 10% 20% 30% 40% 50% 60% 70% 80% Figure 3.5: Missing Parts recommended Controls Limits graph 36 90% 100% Data Analysis and Improvement Actions Expurious Parts Control Limits -100% -90% -80% -70% -60% -50% -40% -30% -20% -10% 0% Figure 3.6: Expurious Parts recommended Controls Limits graph So now we know what affects the SEE, and how to calculate everything, but we still need to know what affects Productivity Estimation Error. 3.1.3 Productivity Estimation Error Productivity is the ratio of a product’s size to the time expended to develop that product, generally measured as size measure per hour [Pomeroy-Huff, et al., 2005]. Productivity Estimation Error is calculated using the following formula: PEE= Actual Productivity −1 Estimated Productivity (3.6) This formula does not directly suggest any performance indicator. However, since, in the PROBE method, the estimated productivity is based on historical productivity (past projects) , it is clear that the PEE is affected by the stability of the productivity. If the productivity is not stable, it cannot be used for prediction purposes. The PEE is measured in percentage, so the result should be multiplied by 100. The proposed control limits for the PEE performance indicator value is shown below, in Figure 3.7. 37 Data Analysis and Improvement Actions Productivity Estimation Error Control Limits -100% -80% -60% -40% -20% 0% 20% 40% 60% 80% 100% Figure 3.7: Productivity Estimation Error recommended Controls Limits graph 3.1.4 Productivity Stability Productivity Stability is the variation between productivity in the current project and historical productivity of past projects (average of latest projects). The Productivity Stability has the following formula: Productivity Stability= Current Productivity−Historical Productivity Historical Productivity (3.7) The Productivity Stability is measured in percentage, so the result should be multiplied by 100. So why and how does Productivity Stability affect PEE? Because if the productivity is not stable in the last projects there is a high probability that the PEE is going to have a bad value. To better understand where the problem is located the Productivity Stability was separated by phases: • Total Productivity Stability; • Plan and Postmortem Productivity Stability; • Detailed-Level Design and DLD Review Productivity Stability; • Code and Code Review Productivity Stability; • Unit Test Productivity Stability. 38 Data Analysis and Improvement Actions The proposed control limits for the Productivity Stability performance indicator value is shown below, in Figure 3.8. Productivity Stability Control Limits -100% -80% -60% -40% -20% 0% 20% 40% 60% 80% 100% Figure 3.8: Productivity Stability recommended Controls Limits graph Going deeper into the problem, what affects Productivity Stability? 3.1.5 Process Stability The Process Stability should affect Productivity Stability to some degree, because if the process is not stable, that is, if the process used keeps changing (PSP0, PSP0.1, PSP1, etc), it is likely that the productivity is not stable either. By changing the process, the programmer changes the way he does the work, therefore he probably won't be as efficient as he was before. The opposite can occur too, the programmer can have a higher productivity than in past projects as he uses a more advanced level of PSP. The way to calculate this performance indicator is quite simple; if the process used in the current project is different than the process used in the previous project, then the process is not stable. The Process Stability is measured as a Boolean value (true or false). 3.1.6 Defect Density Defect density is the number of defects found per size measure [Pomeroy-Huff, et al., 2005]. 39 Data Analysis and Improvement Actions The defect density affects the productivity stability as a programmer can never be certain of how much time he is going to take to correct a specific defect, it is quite unpredictable. So if there is a high defect density, it is highly probable that the productivity is going to be affected by it as large variations of productivity from project to project can occur (depending on how lucky we are in finding the location of the defects). In order to better understand where the problem is, the defect density was divided into two performance indicators, the Defect Density in Unit Test (DDUT ) and the Total Defect Density (TotalDD). Both their formulas are given below. DDUT = #Defects found in Unit Test Actual Size ( KLOC ) TotalDD= (3.8) #Defects found Actual Size ( KLOC ) (3.9) Both these performance indicators are measured in defects per thousand lines of code (Defects/KLOC). The proposed control limits for the Defect Density in Unit Test and Total Defect Density values are shown below, in Figure 3.9 and Figure 3.10. These values are based on the the process quality index (PQI). The PQI is produced by taking the product of the five dimensional values of the quality profile to produce a single quality figure of merit [Humphrey, 1998]. DDUT Control Limits 0 5 10 15 20 25 30 35 40 Figure 3.9: DDUT recommended Controls Limits graph 40 45 50 Data Analysis and Improvement Actions TotalDD Control Limits 0 50 100 150 200 250 Figure 3.10: TotalDD recommended Controls Limits graph There is a big difference between the values of the two graphs because, in the PSP is expected that most defects are discovered and removed in Detailed-Level Design Review (DLDR) and Code Review (CR) phases, before Unit Test (UT). 3.1.7 Process Yield Process yield is the percentage of defects removed (in DLDR and CR phases) prior to entering the compile phase (or before entering unit test if there is no compile phase) [PomeroyHuff, et al., 2005]. One can also call this performance indicator the Review Quality. The process yield directly affects the defect density in unit test (DDUT) as the greater the percentage of defects removed prior to the unit test (i.e. the greater the review quality), the lower the DDUT is and other way around is also true. This performance indicator has the following formula: PY = Defects removed before compile Defects injected before compile (3.10) The Process Yield is measured in percentage, so the result should be multiplied by 100. The proposed control limits for the Process Yield performance indicator value is shown below, in Figure 3.11. 41 Data Analysis and Improvement Actions Process Yield Control Limits 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% Figure 3.11: Process Yield recommended Controls Limits graph 3.1.8 Review Rate Review rate is just the speed at which a programmer does a review (design review or code review), i.e. the number of lines of code (or text) he reviews per hour. In the PSP, the speed of design review is also measured a posteriori in a normalized way in regard to to the size of final code and not the size of the design artifacts. It also provides a way to track and control review times. In this case it is measure in lines of code per hour (LOC/hour). This performance indicator is calculated by the following formula: RR= Actual Size Review Time (3.11) The results of [Kemerer and Paulk, 2009] show that the PSP review rate is a significant factor affecting defect removal effectiveness (i.e., the yield indicador described in 3.1.7), even after accounting for developer ability and other significant process variables. The recommended review rate of 200 LOC/hour or less was found to be an effective rate for individual reviews, identifying nearly two-thirds of the defects in design reviews and more than half of the defects in code reviews [Kemerer and Paulk, 2009]. [Humphrey, 2005] states that the rule of thumb for the control limits of RR is a maximum of 200 LOC/hour and a recommended of about 100 LOC/hour for effective review rates. The proposed control limits for the Review Rate performance indicator value is shown below, in Figure 3.12. 42 Data Analysis and Improvement Actions Review Rate Control Limits 0 50 100 150 200 250 300 350 Figure 3.12: Review Rate recommended Controls Limits graph 3.1.9 Review to Development Ratio Another set of useful quality measures is the ratio of the time spent in two process phases [Humphrey, 2005]. In this case the Review to Development Ratio was used. This PI shows the ratio between the time spent in reviews (DLD Review and Code Review) and the time spent in development (Code and Design). R2D affects the Process Yield because if one spends little time doing reviews and a lot of time coding and doing the design there is a high probability that a lot of defects will go on undetected (and therefore will not be removed). This affects the PY because PY is the percentage of defects removed prior to entering the compile phase (or before entering unit test if there is no compile phase). This performance indicator is calculated by the following formula: R2D Ratio= Actual Time of Reviews (DLD R+Code R) Actual Time of Development ( DLD+Code) (3.12) The proposed control limits for the Review to Development Ratio performance indicator value is shown below, in Figure 3.13. 43 Data Analysis and Improvement Actions Review to Development Ratio Control Limits 0 0,25 0,5 0,75 1 1,25 1,5 1,75 2 Figure 3.13: Review to Development Ratio recommended Controls Limits graph 3.2 Performance Model So what is the result of all the aforementioned? The result is the performance model shown in Figure 3.14. By using this performance model in the prototype it should be possible to locate the origin of a problem and recommend a improvement action based on that. This Performance model is for analyzing time estimating performance based on the main indicator TEE. It shows all the indicators and relationships between them (what affects or may affect what). Note that, even though there are a couple of relationships that require further validation, these dependencies are usually referred in the materials of PSP/TSP and held on experimental data. 44 Data Analysis and Improvement Actions Time Estimation Error affects cts ff e a Productivity Estimation Error Plan and Post Mortem Productivity Stability affects cts fe f a cts DLD and DLD Review affe Productivity Stability affects affe cts Process Stability DDUT af fe ct s Part Estimation Error Based on the formula Review Rate Defects Injected (Total Defect Density) affects aff ect s Review Quality (Process Yield) Symbol legend Unit Test Productivity Stability affects Expurious Parts s ct fe af Total affectsCode and Code Review Productivity Stability Productivity Stability affects Missing Parts affects affects Size Estimation Error Review to Development Ratio Validation required Figure 3.14: Performance Model Tree 3.3 Recommended Improvement Actions The recommended improvement actions are associated with the indicators that have the values off the “good” or green zone. Table 3.2 shows the indicators that have associated improvement actions. These are the indicators that are in the bottom levels of the tree shown in Figure 3.14, and affect and influence their respective parents. These improvement actions were defined based on the judgment and advice of PSP experts (more specifically, a PSP instructor). 45 Data Analysis and Improvement Actions Table 3.2: Recommended improvement actions Indicator Problems identified and Suggested Improvement Actions Missing Parts Problem with the identification of the parts. Recommended Actions: • A more careful Conceptual Design is recommended, with more detail or time spent in design. Expurious Parts Problem with the identification of the parts. Recommended Actions: • A more careful Design is recommended, with more detail or time spent in design. Part Estimation Error Problem in the relative-size table and/or Problem with the identification of the parts. Recommended Actions: • Review the types of the parts, their relative size and related topics. Productivity Stability – Plan and Postmortem Problem with the changes in the way of working. Recommended Actions: • Try to keep a stable productivity and check what has been modified lately. • If the productivity has increased try to keep it stable at that new value in future projects. Productivity Stability – Detailed-Level Design Problem with the changes in the way of and DLD Review working. Recommended Actions: • Try to keep a stable productivity and check what has been modified lately. • If the productivity has increased try to keep it stable at that new value in future projects. Productivity Stability – Code and Code Review Problem with the changes in the way of working. Recommended Actions: • Try to keep a stable productivity and check what has been modified lately. • If the productivity has increased try to keep it stable at that new value in future projects. 46 Data Analysis and Improvement Actions Indicator Problems identified and Suggested Improvement Actions Productivity Stability – Unit Test Problem with changes in the way of working. Recommended Actions: • Try to keep a stable productivity and check what has been modified lately. • If the productivity has increased try to keep it stable at that new value in future projects. Recommended Actions: • Try to keep the process stable. • Changing the process usually leads to a variation in productivity. Recommended Actions: • Improve the process quality. • Do an analysis on the more frequent and more expensive errors in order to not repeat them, define preventive actions. Recommended Actions: • If the value is too high, it is necessary to reduce it by doing the review more carefully and slowly. • If it is too slow (low value), do the review in a more focused and efficient way. • Check if the artifacts are understandable. Recommended Actions: • If the value is too high, it is necessary to do the review more carefully and slowly or code faster and more efficiently. • If the value is too low, do the review in a more focused and efficient way or take your time coding. • Check if the artifacts are understandable. Process Stability Total Defect Density Review Rate Review to Development Ratio 47 Data Analysis and Improvement Actions 3.4 Conclusions The proposed solution should broad enough so that it is able to address and cover all the necessary topics to solve the problem described. This includes the identification of performance indicators (PIs), calculated from base measures, the definition of the Pis control limits, the definition of the cause-effect relationships and the indication of improvement actions for each cause. The performance model scope should be extensive enough to discover the origin of a certain problem and allow the prototype implementation to recommend improvement actions based on that. All of the research and development work done and concluded in this chapter was verified and partially validated, as it is shown in the evaluation chapter (4.3) of this dissertation. 48 4 Implementation and Evaluation This chapter presents the details of implementation of the tool that is the result of the research done in this dissertation. It also presents the evaluation of the results. 4.1 Architecture of the solution The architecture of the solution was the subject of an extensive study to understand the best way to implement it. It had to be flexible enough so that one can extend the protototype resulting of this dissertation as future work. But in the other hand, it had to allow to implement the performance model described above with all those indicators and respective control limits. The architecture was sub-divided into 3 parts here, for demonstration and explanation purposes. In Figure 4.1 is shown the indicators part of the architecture. It has an abstract class named Indicator that has a couple of properties and methods that all the indicators, that are subclasses of it, also have, in addition to their own methods. 49 Implementation and Evaluation Figure 4.1: Architecture - Indicators Figure 4.2 shows the control limits part of the architecture. It has an abstract class named Limit that has two sub-classes named UpperBound and LowerBound. These classes, as their name indicate, are the upper and lower bound limits of a given indicator. The control limits of each indicator are all stored in a Performance Model class as shown further on. Note that the abstract class Limit (and its children) has two properties that represent the green and yellow limits. The nested type named lights is used for checking which is the color (Red, Yellow, Green or Null if the value is invalid) of a value. It is the return value of the checkViolation() function. 50 Implementation and Evaluation Figure 4.2: Architecture – Control Limits In Figure 4.3 the performance model class is shown. This class stores the relationship between the indicators in a tree collection 1 and maps the control limits of each indicator using a Dictionary. 1 This is a generic tree collection by Nicholas Butler (CPOL license), available in the Code Project website at http://www.codeproject.com/KB/recipes/treecollection2.aspx. 51 Implementation and Evaluation Figure 4.3: Architecture – Performance Model 4.2 PSP PAIR The tool made was named PSP PAIR, from Personal Software Process Performance Analysis and Improvement Recommendation. It should be easy and simple to use as its main goal is to automate the performance analysis of one or more projects performed by the same individual (with the data collected in the PSP Student Workbook) and suggest improvement recommendations, therefore making this task way more simpler than it was. The interface of the application is a quite usable and simple one. It has a button to load new data from another database (Microsoft Access *.mdb file, because this is the extension which the PSP Student Workbook export all its data), a button to load a new Performance model (xml file, example shown in Figure 4.7) and a button to load the default values, i.e., default database and default performance model. To start the analysis of the data the user needs to select the project or projects to be analyzed from the list of projects that were on the database. One can also choose to analyze all the projects at once by checking the “All” option on the list. An example execution is shown in Figure 4.4. PSP PAIR searches for a file named “PSP Assignments_be.mdb” in its content folder and loads it automatically. If the file doesn't exist or is not found, a Load File dialog appears so that the user can locate and load the file manually. 52 Implementation and Evaluation Figure 4.4: PSP PAIR Home In Figure 4.5 an example execution is shown, given that the user has chosen to analyze the data of the Projects 411 and 412. The results report main objective is to make the visualization of the data really easy, so one can understand the suggested improvement recommendations and analyze the data if needed. The performance model used is shown in a treeView, as this helps understanding the relationship between the indicators, and it shows all the indicators and its respective unit of measure. The recommended control limits of each indicator are always shown in the first column, followed by the value of a given indicator in a given project. Without even understanding the details, the user should be able to tell that in the first row of data associated with the indicator named “Time Estimation Error”, the value for Project 411 is "good", in the sense that this indicator's value is colored green. Similarly, one should be able to see that the value associated with the indicator "Process Yield" of Project 411 is "bad", in the sense that this indicator's is colored red. Finally, in Project 412, also for "Time Estimation Error", the value is colored yellow, which means that it is neither good nor bad, but somewhere in between. A bit like a “warning” sign, as it could suggest a potential problem. The last two columns are always the average values of each indicator for the selected projects and the percentage of red colored values of each indicator for the selected projects. These two columns give the user an overview of the state of all projects he selected for analysis. Although, if the user selected “All” in the main menu, the last two columns are the “All (Average)” and “All (% of reds)”. They provide an overview of all the projects contained in the loaded database, useful if the user wants to compare a specific project to the average of all the projects of the database or if he wants to compare the projects he selected to overall picture. 53 Implementation and Evaluation One can also choose to see the suggested improvement actions for the all the projects on the database (by selecting “All” in the main menu (Figure 4.4) and them clicking the respective button in the Results Report) or just for the selected and shown projects (by clicking in the “All Selected (Average)” button). Figure 4.5: PSP PAIR Results Report By clicking in the button of a given project, in the titles row of the table, the user can see the details and the suggested improvement actions of that project. This opens a new window, shown in Figure 4.6. It shows the project identification, the author of that project, the suggested recommendation based on the values of the indicators and a treeView similar to the one shown in Figure 4.5, but with the values, with the respective color, of the project selected. The problems identified and improvement actions are also with the color of the value of the indicator that trigger that problem. This helps understanding which problems should be addressed first. 54 Implementation and Evaluation Figure 4.6: PSP PAIR Project Details To load a new Performance model one must make a XML file similar to the one shown below in Figure 4.7. The XML allows to create a tree like collection (with concepts like parent and child) of indicators that is easy to understand and to load into the application. One can also use the attributes of the nodes to establish new control limits. For example, it is easy to see that in Figure 4.7 the root (or main) indicator is Time Estimation Error (TEE) and its control limits are Green from -20% to 20% , Yellow from -30% to -20% and from 20% to 30% and that if the value of TEE is below -30% and above 30% it is colored Red, as shown in the graph of Figure 3.1. 55 Implementation and Evaluation Figure 4.7: PSP PAIR XML Performance Model and Control Limits 56 Implementation and Evaluation 4.3 Evaluation To evaluate the prototype resulting of the research done in this dissertation, a Performance Analysis Report (PAR) made on a PSP Course was used for a comparative analysis between manual results (from the PAR) and the prototype results. This comparative analysis was made by providing the prototype of the tool, PSP PAIR, with the same data from a set of projects that was used to make this particular PAR [Faria, 2008]. Exception goes for program 7 (project 414) as the data that was used for making the PAR document is not quite the same as the data used in the PSP PAIR (some amendments were made that are not included in the database), despite this the project was included in the comparative analysis because the values are quite similar and valid for comparison purposes. In order to do this comparative analysis a normalization of the results must be made so that both set of results are related to the same things, as the results (problems and improvements actions) of the PAR are, generally, for all the projects and not from a specific one as it's possible in the PSP PAIR. However, in the PAR document, there are some conclusions and PIPs that are related to a specific project. In some cases the project ID is not stated, but it is possible to conclude what project the conclusions and Process Improvement Proposals (PIPs) belong to based on the data. The comparative analysis of the results is shown below, in Table 4.1. One must have in mind that the conclusions and PIPs of this PAR are all made by analyzing a wide range of data, including artifacts and the actual knowledge of the engineer on those specific projects. Even though much of the numeric data is all stored in the database, there is a lot of things that the PSP PAIR tool cannot analyze, such as documents and data that is not in the scope of this dissertation. These programs/projects were made in the learning process of the PSP. As PSP has several phases, program number 1 (project 408) uses the process PSP0 so it falls short on a lot of data needed to PSP PAIR analyze the project properly. Program number 2 (project 409) uses PSP1, project 410 and 411 use PSP2, and project 412, 413 and 414 use PSP2.1. Despite all this, the results are quite similar, the conclusions arrived in the PAR document (such as problems identified) are consistently present in the problems identified by the PSP PAIR based solely on the data of the indicators and their relationships represented in the performance model. 57 Implementation and Evaluation Table 4.1: Comparative Analysis between PAR and PSP PAIR Project ID Performance Analysis Report PSP PAIR Problems Time estimation Error value Project 408 is too high, but this was expected as no method was used for time estimation and no size estimation was made (no historical data). PIPs The global PIPs do not apply here because this project is not using historical data for estimation purposes. Problems The process was changed. PIPs Project 409 Problems Value of Time Estimation Error is on red (72,5%). Value of Indicator Total Defect Density suggests a potential problem. Recommended Improve the process quality. Do an analysis on the more Actions frequent and more expensive errors in order to not repeat them, define preventive actions. Problems Values of Productivity Stability in Plan+Postmortem and in Unit Test, and Process Stability suggests a problem. Problem with the changes in the way of working. (from Productivity Stability) These are the global PIPs Recommended Try to keep a stable based on the data from all the productivity and check what has Actions projects for the Time been modified lately. Estimation Error. If the productivity has increased P1: Stabilize and make more try to keep it stable at that new efficient the DLD process to value in future projects. improve and stabilize Improve the process quality. productivity: avoid expensive Try to keep the process stable. DLD representations (e.g., Changing it usually leads to a equations in Word), avoid variation in productivity. long DLD documents (compared to code size); do Logic Specifications that can be used as code comments and can be easily written. P2: Widen the size range to have more basis for estimations. 58 Implementation and Evaluation Project ID Performance Analysis Report PSP PAIR Problems Time underestimation is Problems caused by size underestimation. Size underestimation is due to underestimation of relative sizes. (corrected in subsequent programs/projects). The process was changed. PIPs Project 410 Values of Indicators Part Estimation Error, Productivity Stability (Plan+PM, Code + CR, UT) and Process Stability suggests a problem. Problem with the relative-size table and/ or Problem with the identification of the parts. (from PartEE) Problem with the changes in the way of working (from Productivity Stability) These are the global PIPs Recommended Review the types of the parts, based on the data from all the their relative size and related Actions projects for the Time topics. Estimation Error. Try to keep a stable P1: Stabilize and make more productivity and check what has efficient the DLD process to been modified lately. improve and stabilize If the productivity has increased productivity: avoid expensive try to keep it stable at that new DLD representations (e.g., value in future projects. equations in Word), avoid Improve the process quality. long DLD documents Try to keep the process stable. (compared to code size); do Changing it usually leads to a Logic Specifications that can variation in productivity. be used as code comments and can be easily written. P2: Widen the size range to have more basis for estimations. Project Problems 411 Problems 59 Values of Productivity Stability in DLD + DLDR and in UT suggests a problem. Value of Productivity Stability in Code + CR suggests a potential problem. Problem with the changes in the way of working. Implementation and Evaluation Project ID Performance Analysis Report PSP PAIR Recommended Try to keep a stable productivity and check what has Actions PIPs been modified lately. If the productivity has increased try to keep it stable at that new value in future projects. Improve the process quality. Problems Inferior time estimation is Problems justified by process change and more time spent in DLD that was not gained in subsequent phases. Values of Productivity Stability in Plan + Postmortem and in DLD + DLDR suggests a problem. Problem with the changes in the way of working. Problem identified in Process Stability. Values of Indicators Total Defect Density, Review Rate and Review to Development Ratio suggests a potential problem. Recommended Try to keep a stable productivity and check what has Actions PIPs been modified lately. If the productivity has increased try to keep it stable at that new value in future projects. Improve the process quality. Try to keep the process stable. Changing it usually leads to a variation in productivity. Improve the process quality. Do an analysis on the more frequent and more expensive errors in order to not repeat them, define preventive actions. Review Rate: The value is too low (slow RR), do the review in a more focused and efficient way. Check if the artifacts are understandable. R2D ratio: The value is too low, it is necessary to do the review more carefully and slowly. Project 412 60 Implementation and Evaluation Project ID Performance Analysis Report PSP PAIR Problems Inferior time estimation can Problems be justified by a much smaller program size (about one third compared to previous programs). PIPs Project 413 Values of Productivity Stability in Plan + Postmortem, in DLD + DLDR, in Code + CR and in UT suggests a problem. Problem with the changes in the way of working. Values of Total Defect Density and Review Rate suggests a problem. These are the global PIPs Recommended Try to keep a stable based on the data from all the productivity and check what has Actions projects for the Time been modified lately. Estimation Error. If the productivity has increased P1: Stabilize and make more try to keep it stable at that new efficient the DLD process to value in future projects. improve and stabilize Improve the process quality. productivity: avoid expensive Do an analysis on the more DLD representations (e.g., frequent and more expensive equations in Word), avoid errors in order to not repeat long DLD documents them, define preventive actions. (compared to code size); do Review Rate: The value is too Logic Specifications that can low (slow RR), do the review in be used as code comments a more focused and efficient and can be easily written. way. Check if the artifacts are P2: Widen the size range to understandable. have more basis for estimations. Project Problems Strong time underestimation is due mainly to the time 414 spent in DLD. 61 Problems Values of Indicators Missing Parts, Part Estimation Error, Review Rate and Review to Development Ratio, suggests a potential problem. Problem with the relative-size table and/ or Problem with the identification of the parts. (from PartEE and Missing Parts) Values of Productivity Stability in Plan + Postmortem, in DLD + DLDR, in Code + CR and in UT, and Total Defect Density suggests a problem. Problem with the changes in the way of working. Implementation and Evaluation Project ID Performance Analysis Report PIPs PSP PAIR These are the global PIPs Recommended A more careful design is based on the data from all the recommended, with more detail Actions projects for the Time or time spent in design. (for Estimation Error. Missing Parts) P1: Stabilize and make more Review the types of the parts, efficient the DLD process to their relative-size and related improve and stabilize topics. (for PartEE) productivity: avoid expensive Try to keep a stable DLD representations (e.g., productivity and check what has equations in Word), avoid been modified lately. long DLD documents If the productivity has increased (compared to code size); do try to keep it stable at that new Logic Specifications that can value in future projects. be used as code comments Improve the process quality. and can be easily written. Do an analysis on the more P2: Widen the size range to frequent and more expensive have more basis for errors in order to not repeat estimations. them, define preventive actions. Review Rate: The value is too low (slow RR), do the review in a more focused and efficient way. Check if the artifacts are understandable. R2D ratio: The value is too low, it is necessary do the review in a more focused and efficient way or take your time coding. Check if the artifacts are understandable. 62 Implementation and Evaluation Project ID Performance Analysis Report PSP PAIR Problems Time estimation accuracy Problems (same as time estimation error). Productivity, namely at DLD phase. Defect density in UT. Based on the average of all the projects, problems identified at: • • • • Time estimation error. Total productivity stability Productivity stability at DLD and DLD Review Defect Density in UT Value of Productivity Stability in DLD + DLDR suggests a problem. Problem with the changes in the way of working. Value of Total Defect Density suggests a potential problem. Global PIPs P1: Stabilize and make Recommended Try to keep a stable more efficient the DLD productivity and check what Actions process to improve and has been modified lately. stabilize productivity: avoid If the productivity has increased expensive DLD try to keep it stable at that new representations (e.g., value in future projects. equations in Word), avoid Improve the process quality. long DLD documents Do an analysis on the more (compared to code size); do frequent and more expensive Logic Specifications that can errors in order to not repeat be used as code comments them, define preventive actions. and can be easily written. P2: Widen the size range to have more basis for estimations. 63 5 Conclusions and Future Work In this chapter it is presented the main contributions of this dissertation as well as a summary of the work done. The guidelines for the future work are also presented. 5.1 Goal Achievement and Conclusions The objectives initially proposed for this dissertation were almost completely attained. The prototype of the tool does successfully implement the performance model that was made for this dissertation with good results, but the recommended improvement actions are quite generic and there was a lot of work that could be done to improve the application PSP PAIR. This is explained with detail in the Future Work chapter (5.2). The work done was quite satisfactory, as of all the goals and expected results defined in chapter 1.3 were achieved, with the aforementioned shortcomings. The main difficulty was to try to understand all of the concepts behind Personal Software Process in order to produce a effective performance model. This was mostly due to the fact that the knowledge I had about PSP and TSP in the beginning of this dissertation was very little. This difficulty was overcome with a extensive study of PSP and with a great interest in Software Engineering. The performance model (chapter 3.2) elaborated does what was defined in the beginning of the investigation for this dissertation: • identifies the performance indicators (PI) and their derivation formulas from base measures; • defines the PI control limits; • defines cause-effect relationships; • indicate improvement actions for each root cause. 64 Conclusions and Future Work All these topics are explained in detail in the solution chapter (3.1). Each indicator is described and explained with the respective control limits and relationships with other indicators. The performance model with the indicators and respective relationships are illustrated in tree like diagram in Figure 3.14. As shown in the evaluation chapter (4.3), in the comparative analysis the results were quite similar, the conclusions arrived in the PAR (such as problems identified) were consistently present in the problems identified by the PSP PAIR based solely on the data of the indicators and their relationships represented in the performance model. The results of this research support the idea that the performance model is valid and it can provide a really good support to engineers using the PSP in their projects and help them speed up the analysis of all the data they collected, by automating it. With some tweaks, it could maybe be adopted by all engineers using PSP. This comparative analysis was preceded by a testing phase as there was a lot of calculations made for each indicator and their values needed to be verified. This was done by comparing the values of the indicators in the PSP Student Workbook (chapter 2.1.5) with the values of the calculations made by PSP PAIR. The only fluctuation of values verified was due to the previously mentioned problem with the data of project 414 (the data is not exactly the same in both places). Initially, it was intended to validate the dependencies between indicators that do not result directly from the formulas. This validation was supposed to be based on data from SEI about the PSP courses (with hundreds of developers). But, unfortunately, this data was not provided in time of this dissertation. Therefore, it is a future work to perform the validation of these dependencies. 5.2 Future Work The PSP PAIR tool has everything to be a quite good support in the analysis of data from PSP projects, and due its architecture (chapter 2.3.1) it is quite easy to pick it up and expand it, as the architecture is simple and understandable. There are a few things that could help PSP PAIR be a lot better than it is right now, starting with the improvement recommendations. Presently they are quite generic and are associated with a specific indicator. There are a couple of ways to improve this, as taking into account multiple indicators and their values to give some sort of ranking to the improvement recommendations, possibly using a classification system to do this. Maybe if one indicator is more important than other it should have more weight in the final recommendations than the other. The PSP PAIR only accepts databases in the form of Microsoft Access (*.mdb) files, as the database used as basis for this work is the one that SEI uses in their PSP courses and it is in this format. However, it should be possible to import data from other sources, as SQL or, more simple, Excel. This tool could also increase its value exponentially if it included some kind of feedback from the user, and then used this feedback to improve its results (as suggested improvement 65 Conclusions and Future Work actions). For example, the user could give feedback by identifying which suggested improvement actions were useful and which were not, then this feedback would be used to improve future improvement recommendations. One last obvious thing to do as future work is the extension of this kind of tool for Team Software Process (TSP) as it would be way more useful for companies and organizations. But it would also be way more difficult to accomplish this, as it involves a lot more variables than PSP. 66 References [Burton and Humphrey, 2006] Symposium, 2006. D. Burton and W. S. Humphrey, "Mining PSP Data," in TSP [Dane, 1999] J. A. Dane, "Modular program size counting," master's thesis, Dept. of Information and Computer Sciences, Univ. of Hawaii, Honolulu, Hawaii, 1999. [Davis and Mullaney, 2003] N. Davis and J. L. Mullaney, "The team software process (TSP) in practice: A summary of recent results," 2003. [Disney and Johnson, 1998] A. M. Disney and P. M. Johnson, "Investigating data quality problems in the PSP," presented at the Proceedings of the 6th ACM SIGSOFT international symposium on Foundations of software engineering, Lake Buena Vista, Florida, United States, 1998. [Fahmi and Ho-Jin, 2008] S. A. Fahmi and C. Ho-Jin, "A Survey on Team Software Process Supporting Tools," in Convergence and Hybrid Information Technology, 2008. ICCIT '08. Third International Conference on, 2008, pp. 987-990. [Faria, 2008] J. P. Faria, "Performance Analysis Report," in PSP Advanced Course, SEI, ed, 2008. [Harrington, 1991] H. J. Harrington, Business process improvement: The breakthrough strategy for total quality, productivity, and competitiveness: McGraw-Hill Professional, 1991. [Hayes and Over, 1997] W. Hayes and J. W. Over, "The Personal Software ProcessSM (PSPSM): An Empirical Study of the Impact of PSP on Individual Engineers," 1997. [Hitz and Montazeri, 1996] M. Hitz and B. Montazeri, "Chidamber and Kemerer's Metrics Suite: A Measurement Theory Perspective," IEEE Trans. Softw. Eng., vol. 22, pp. 267-271, 1996. [Humphrey, 2005] W. Humphrey, Psp (sm): a self-improvement process for software engineers, 2005. [Humphrey, 2006] W. Humphrey, Tsp (sm)-coaching development teams, 2006. [Humphrey, 1998] W. S. Humphrey, "The software quality profile," Software Quality Professional, vol. 1, pp. 8-18, 1998. 67 References [Humphrey, 2002a] W. S. Humphrey, "Personal Software Process (PSP)," in Encyclopedia of Software Engineering, ed: John Wiley & Sons, Inc., 2002a. [Humphrey, 2002b] W. S. Humphrey, "Team Software Process (TSP)," in Encyclopedia of Software Engineering, ed: John Wiley & Sons, Inc., 2002b. [Initiative] T. S. P. D. Initiative. Functionality for Individuals [Online]. Available: http://www.processdash.com/functionality-personal Retrieved July 2, 2011 [Johnson, 2001] P. M. Johnson, "Project Hackystat: Accelerating adoption of empirically guided software development through non-disruptive, developer-centric, in-process data collection and analysis," Department of Information and Computer Sciences, University of Hawaii, 2001. [Kemerer and Paulk, 2009] C. F. Kemerer and M. C. Paulk, "The impact of design and code reviews on software quality: An empirical study based on psp data," Software Engineering, IEEE Transactions on, vol. 35, pp. 534-550, 2009. [Kenett, et al., 1999] R. S. Kenett, et al., Software Process Quality: Management and Control: Marcel Dekker Inc, 1999. [Laboratory, 2010] C. S. D. Laboratory. (2010). Hackystat [Online]. Available: http://code.google.com/p/hackystat/ [Lofi, 2005] C. Lofi, "Continuous {GQM}: An automated framework for the Goal-QuestionMetric paradigm," 2005. [Nasir and Yusof, 2005] M. H. N. M. Nasir and A. M. Yusof, "Automating a modified personal software process," Malaysian Journal of Computer Science, vol. 18, pp. 11–27, 2005. [NIST/SEMATECH, 2010] NIST/SEMATECH. (2010). e-Handbook of Statistical Methods [Online]. Available: http://www.itl.nist.gov/div898/handbook/ Retrieved July 3, 2011 [Pomeroy-Huff, et al., 2005] M. Pomeroy-Huff, et al., "The Personal Software Process (PSP) Body of Knowledge, Version 1.0," 2005. [Sciences, 2008] I. E. o. t. S. Sciences. (2008). Measurement [Online]. Available: http://www.encyclopedia.com/doc/1G2-3045301499.html Retrieved June 22, 2011 [SEI-Training, 2011] SEI-Training. (2011). Personal Software Process (PSP) Advanced [Online]. Available: http://www.sei.cmu.edu/training/p19b.cfm Retrieved July 20, 2011 [Shin, et al., 2007] H. Shin, et al., "Jasmine: A PSP Supporting Tool," in Software Process Dynamics and Agility. vol. 4470, Q. Wang, et al., Eds., ed: Springer Berlin / Heidelberg, 2007, pp. 73-83. 68 References [Sison, 2005] R. Sison, "Personal software process (PSP) assistant," in Software Engineering Conference, 2005. APSEC '05. 12th Asia-Pacific, 2005, p. 8 pp. [Statit Software, 2007] I. Statit Software. (2007). Statit Custom QC [Online]. Available: http://www.statit.com/statitcustomqc/ Retrieved July 3, 2011 [Team, 1997] D. S. Team. (1997). PSP Studio [Online]. http://csciwww.etsu.edu/psp/ Retrieved July 20, 2011 69 Available: