Software Estimation Technique Based on Arithmetic ...

3 downloads 18 Views 833KB Size Report
the proposed model SDLC with five phases as Requirement, Design, Coding, Testing and ... overruns in the early stages of software development [1,11,12].
Software Estimation Technique Based on Arithmetic Progression Abdul Wahid1,∗ , Mudasir M. Kirmani2 , Ankur Chaudhary3 and Khaleel Ahmad4 1,4 Department

of CS & IT, Maulana Azad National Urdu University, Hyderabad, India. Scholar, Department of CS&IT, MANUU, Hyderabad, India. 3 Department of Computer Science, Subharti University, India. e-mail: [email protected]

2 Research

Abstract. The most critical and important activity of software development process is to estimate efforts or cost. The Software Industry since inception has been facing challenging task to estimate cost of software in the early stage of development process. There are many techniques, models and mathematical formulas available which have been designed with great care to estimate efforts of a software process well in advance. These methods or models have been designed by experts of the related domains to cater to the needs of the Software Industry. These techniques have been developed based on the statistical data from different Industries related to already completed projects or processes and based on certain assumption. However, purely algorithmic approach has not been used to estimate efforts/cost of software. In this paper, a software cost estimation technique based on arithmetic progression using a purely algorithmic approach has been proposed. An effort has been made to relate the Software Development Life Cycle (SDLC) with the effort estimation process and an approach/ method to estimate cost of software has been designed and is presented in this paper. Keywords:

Arithmatic progression, Software development life cycle, Cost estimation, Effort estimation.

1. Introduction In today’s competitive software development environment, it is very important to deliver the software products as per the deadline with desired quality and within budget. The volatile nature of software process has led to so many failure stories wherein software were either running out of schedule or time. The key to manage a software project effectively is estimation of size, effort, resource allocation etc which empowers a project leader to have number to deal with. However, as the rapid increase in software development units there is stiff competition between different players in the market which has led to decrease in the margin of error in general and profit margin in particular. Therefore, it is important to estimate the effort required, resources need, size and schedule of a specific project in the early stages of software development life cycle. The software estimation is an art of management in which all aspects related to development like what can be the possibility of errors, cost related to fixing of errors, managing different functions, maintaining standards, ensuring quality, project overheads, safety margins etc. related to the a particular software. The estimation process has to be carried out with great care and caution as it should not be implements in haste or haphazard fashion. It should indeed be a well planned activity wherein all the related values of software process are included. The different estimation values that are calculated for software process are resources estimation, cost estimation, function point estimation, process-based estimation, estimation with use-cases, reconciling estimation etc [1,12]. There are different structures estimation models available and one of the popular estimation model is Constructive Cost Model (COCOMO) and its different versions. Software cost estimation gives an insight to a software developer about how much effort, time and staff will be required to develop a new software system in its early stage. The project effort estimation attributes used for estimating cost are primarily derived from the software requirements specifications. Therefore, it is very important to understand the requirements clearly without any ambiguity and as per the needs of the customer. ∗ Corresponding author

422

© Elsevier Publications 2014.

Software Estimation Technique Based on Arithmetic Progression

Mostly models and methods of software estimation depend on the mathematical terms and formula. Mathematics plays a vital role in any type of simulation in the software Industry. In this paper use of pure mathematics has been proposed to be used in tandem with software effort estimation method. In order to have more accurate estimated using the proposed model SDLC with five phases as Requirement, Design, Coding, Testing and Maintenance phases has been proposed. Most of the software effort estimates are less accurate due to ambiguity in the requirements which result in cost overruns in the early stages of software development [1,11,12]. In this paper, adaptive approach based on arithmetic progression has been presented and the method to approximate efforts of a software product/process in order to achieve effective and efficient estimates. 2. Literature View A good number of software effort estimation models are available however, a very few are performing well in the software development domain wherein software maintenance related cost is included in the effort estimation in the early stages of development. Some of the known models that include software maintenance attribute for estimating effort are COCOMO 2.0 reuse model, FP and ACT to name a few. Different software estimation model consider different key units like SLOC, FP and Object Point as sizing units for determining the effort estimation including the effort related to software maintenance. The efforts related to source code can be approximated using ACT model as it takes into account the reusability and change-request into consideration resulting in effective estimates [12,13], and [14]. Organization having chronological data for annual maintenance, cost estimation uses ACT model which is derived originally from COCOMO model. ACT model has some limitations such as results of estimation are likely to be unreliable if the system is completely new and has no historic data of completed projects. ACT model has high risk as it does not determine the effort independently. The application functionality, conversion functionality, user requirements, and 14 Value Adjustment Factors (VAF) with varying intensity range based on software characteristics come under Function Point estimation and are used to determine software maintenance effort estimation [16,17]. COCOMO 2.0 uses KLOC as sizing unit and 2.0 is the version of the COCOMO which is also used for the software maintenance and COCOMO consider 17 effort VAFs such as required software reliability, database size, required reusability, documentation, product Complexity, etc in multiplicative manner. The software effort estimation using agile methodology has its own estimation techniques and expert opinion, analogy, disaggregation are most commonly used techniques for estimating in agile methodology [17,18]. For reduction of estimation time, agile method provides expert opinion-based approach to estimation. Expert has some intuition according to the project or the software and provides an estimate and assign story point or ideal-day to user stories. For such methods, estimators should have knowledge of different disciplines and also should have previous consequences of a project. In analogy technique, estimator compares one or more story being estimated to one or more other stories. If the story is twice the size, it is assigned as an estimate twice as large. For easy story estimation comparison, we used the disaggregation technique. It breaks the large story or feature into multiple smaller stories. The Planning poker technique is an effective and pleasant approach which generates a compound of expert opinion, analogy, and disaggregation way of estimation. It provides reliable estimation results quickly. Participants in planning poker include programmers, database engineers, analysts, testers, user interaction designers etc. It is same as wide band Delphi approach of estimation [17]. 3. Cost Estimation Method The Software Cost estimation models [2,3] are categorized into three main categories: • Traditional cost estimation method. • Analogy software cost estimation method. • Modern software cost estimation method. Traditional Cost estimation models were used and are still used in some software houses were the data about the completed projects does exist and the same is updated on regular basis. As the complexity of software has increased from simple to complex with due course of time the need for advanced estimation models has also changed the way estimation process was looked at in the software development process. Software Development Organizations do not stick to any one model, rather the models of estimation are selected based on the nature of the problem and even © Elsevier Publications 2014.

423

Abdul Wahid, et al.

combination of more than one estimation model is used to approximate cost for a software project in the early phases of development. The bottom line for any software process estimation process is that type of project development should be unambiguous and transparent. The modern cost estimation and Analogy software estimation methods is used when any software to be developed resembles with the already completed software process and using the data related to the previous project, the approximation for the new project is evaluate keeping in mind the overheads. The historical data about the completed project within the same organization and of the same type is used to predict the estimated amount of effort required to develop a new system. Traditional and Modern cost estimation approaches use a common method which is Analogy estimation. It is likely to stand the test of time as automated estimation models also use past historical data of completed projects to predict future ones when requirements are clear and unambiguous. When requirements are fully unknown Analogy estimation can be applied in the early stage of development. To ensure the accuracy and the consistency for the development of a system it depends on the quality and accuracy of the historical data, as this data helps the developer to find similarity between the previous and the new project. The limitation of the analogy method is that it is treated as an underperformer if the statistical data about the already completed projects is not correct and complete. Modern software cost estimation methods are classified on the basis of automated solutions, manual techniques, software development methodology, project size and the complexity level. Capers Jones (2007) classifies the modern software cost estimation methods into classes and several sub-classes, namely manual software-estimating methods and automated software-estimating methods. Manual software-estimating methods are further sub-divided into three levels [1]. • Manual project-level estimation using rules of thumb • Manual phase-level estimation using ratios and percentages • Manual activity-level estimation using work-breakdown structures 3.1 Cost estimation issues To use any evaluation method for a software development project an estimator has to prepare a systematic sequence of steps which needs to be followed holistically in order to achieve accurate estimates. There are different issues which are very critical to the accuracy of software estimates but the most important is clearity of software requirements. The cost estimation process as discussed above helps a developed to leverage from investment when the estimated are evaluated early in the development process of software. Therefore, understanding user requirements plays pivotal role in freezing and documenting all requirements of the candidate system. Software requirements describe the behaviour and attributes of a project and also lay the foundation for all subsequent project development tasks. Both sizing and cost estimates of a software are derived from the requirements and analysis phase of the SDLC. The correct the analysis and understanding of requirements has an impact on the accuracy of the software size and cost estimate. If the requirements are not specified as per the need of the project it will result in allowing a problem/error to move to the different phases of SDLC and it will become impossible for a software development organization to fix these errors/problems in ending stages of SDLC paving way to stoping the project development. The cost of fixing errors in the earlier stages is very less compared to fixing the same errors in the advanced stages of the SDLC. Although many analyses have tried to improve software requirements like time, cost, effort, schedules and the quantification of requirement size, and also quantification of requirements errors and defect removal efficiency have always been on the missing list. 4. Software Sizing Issues The cost estimation process begins with the prediction of the size of deliverables to be developed in a software using software sizing method. Software sizing helps a developed in approximating the size of the software on the basis of the software requirement specification. In order to increase the accuracy of the approximation using software sizing the developed should prepare the software requirement documents as per the quality standards of IEEE or SEI set of standards. Using these standards ensures the correctness, completeness and consistency of requirement specifications document [2,6,7]. There are many factors which also defined the software sizes like programming language, modulation of the software, approach of the modulation, complexity of the programme, which type of functions will performed by the program on the basis of the modulation, reliability of the programme. To develop a system size depends also on 424

© Elsevier Publications 2014.

Software Estimation Technique Based on Arithmetic Progression

the type of model we are using or development of the new software solution for an organization or an individual. For any new software project development, analyst should have clear understanding of the scope and complexities of the project. There are lots of techniques to estimate the size of software in the software engineering domain. The different prediction methods used in software effort estimation: • • • • • • •

Size can be predicted in several ways including; Size prediction using an estimating tool’s built-in sizing algorithms; Sizing by extrapolation; Sizing by analogy of previous projects size; Guessing the size by using manager’s intuition; Used statistical methodologies for sizing; and Size prediction by using programmer’s intuition.

The complexity of the software like data structure complexity, secure language use, platform of development, and scope for flexibility of the software are also driving factors for estimating size of software. Despite the fact that a lot of research has been conducted in this field but with the rapid development of technology in the software sector the Industry is facing an uphill task in the cost/effort estimation domain in the early phase of development. 4.1 Software metric issues Software metrics measures the efforts needed to develop an application based on the different tools, techniques & technologies to increase the importance of estimation process in software engineering. Software metrics and measurement provides meaningful information about the estimates for a software project to manage the time taken for completion of the software development process and at the same time helps a project manager with number using which the management & monitoring become easier. The purpose of the software metrics is to measure the product process, resources, and the project goal. It also defines and measures the process and the sub process of the software development. It is very important to select an appropriate type of metrics to manage the software development process and at the same time the review of the results needs to be verified continuously to ensure the project runs on time and as per the budget [8]. 4.2 Software complexity issues Software process complexity has always been a challenging task for software Industry to deal with and to mitigate the impact of complexity on software effort estimation. Software complexity is treated as a task which is difficult to design and implement in comparison to less complex tasks. Complexity affects a number of independent and dependent variables which are critical in cost-estimation of software projects. Software complexity increases when the development team is bigger in size as it is said that a small team yields higher productivity rate per head than a large team. The software with more number of complex processes does cost more in comparison to the simple software with less number of complex processes. Software complexities do affect a wide cross section of activities in software development life cycle from inception till maturity like time over-run of development schedules, increase in number of errors, decrease in defect removal rates, decreased development productivity rates, increased maintenance staffing needs, increased number of test cases needed for testing and decrease in efficiency rates [1,9,13,16,17]. Based on the activities and their impact on software development process an appropriate value for system complexity can be calculated. The most common complexities identified based on Capers Jones (2007) especially while using the software sizing and automated estimation tools include [1]. • Algorithmic complexity is related to the length and structures of the algorithms for computable problems and affects development quality, development productivity and maintenance productivity; • Code complexity that concerns subjective views of development and maintenance personnel about whether the code they are responsible for is complex. The opinions are used for calibration of formal complexity metrics such as essential and cyclomatic complexities; • Data complexity that deals with a number of attributes associated with entities. It is a key factor in dealing with data quality lacks metric parameter for evaluation and is only done through subjective ranges; • Essential complexity supported by variety of software tools and is often applicable as a warning indicator for potential software quality problems; © Elsevier Publications 2014.

425

Abdul Wahid, et al. Table 1. List of estimation methods with implementation support. S. no. 1

Estimation methods Analogy-based estimation

Category Formal estimation model

2 3

Parametric models Size-based estimation models

Formal estimation model Formal estimation model

4

WBS-based (bottom up)

Expert estimatio

5 6

Group estimation Judgmental combination

Expert estimation Combination-based estimation

7

Mechanical combination

Combination-based estimation

Examples of support of implementation of estimation approach ANGEL, Weighted Micro Function Points COCOMO, SLIM, SEER-SEM Function Point Analysis, Use Case Analysis, Software Size Unit, Story points-based estimation in Agile software development Company specific activity templates, Project managemen Planning poker, Wideband Delphi Expert judgment based on estimates from a parametric model and group estimation Average of an analogy-based and a Work breakdown structure-based effort estimate

• Function point complexity that refers to a set of adjustment factors needed to calculate function point total of a software project. It handles the variations in function point for example the U.S. Function points as defined by IFPUG (International Function Point User Group) has 14 complexity adjustment factors. The SPR (Standard Function Point) and feature point metrics uses three complexity adjustment factors and the British Mark-II function point uses nineteen complexity factors. • Problem complexity which deals with the subjective opinions of real people and is considered important in the calibration of objective complexity measures.

5. Software Approaches There are many ways of categorizing estimation approaches. The top level categories are the following [19]: Expert estimation: This category uses judgmental processes to evaluate estimates for a software process; Formal estimation model: This approach is based on mechanical processes e.g., the use of a formula derived from historical data; and Combination-based estimation: This method is a combination of judgmental and mechanical of estimates from different sources. In order to give an insight into different software estimation approaches with their support for implementation and estimation approach has been given in table 1:

6. Algorithm using Arithmetic Progression Algorithm Step-1. Step-2. Step-3. Step-4.

Obtain an . Replace n by n + 1 in an to get an+1 Calculate an+1 − an . If an+1 − an is independent of n, the given sequence is an A.P Otherwise it is not an A.P. Sum of n terms of an A.P is T n = (n/2)[2a + (n − 1)d]

Where T n, a, n and d are four quantities. If any three of them are known, the fourth can be determined. Sometimes two of these quantities are given, in such cases remaining two quantities are either derived or a substitute method has to be used to get the two quantities. The flow chart for the algorithm is given in figure 1. 426

© Elsevier Publications 2014.

Software Estimation Technique Based on Arithmetic Progression

Figure 1.

Flow chart for model using arithmetic progression.

Figure 2.

Basic five phases of SDLC.

7. Proposed Work At present most of the software estimation models do not incorporate the concept of arithmetic progression, therefore, creating an opportunity for researchers to explore the domain of having a perfect blend of different approaches to achieve better estimates. In this paper software cost estimation method has been proposed using arithmetic progression. However, it is very important to develop effort estimation for software development process using the different phases/stages of SDLC. The basic approach used to develop software is SDLC which corresponds of different phases and it will be beneficial to use effort estimation method which is implemented in all the phases to have better visibility and accurate results for a software development process. The SDLC approach for software development corresponds of five basic steps and the same has been shown in figure 2. Arithmetic Progression Formula: n  [2a + (n − 1)d Tn = 2 where: T n is total sum of n terms; a is first term from n terms; d is the difference between two terms; and n = 1, 2, 3, 4 . . . n. From the above formula, we can estimate the cost of software by using the five step of the SDLC. The section of stages depends on the developer. Assuming the statistical data about previously completed projects is available Suppose we take an assumed estimated cost from past record of same project or different software cost from expert interview. But the estimated costs will be assumed on the basis of the type of the software being developed. Based on the five stages of SDLC the algorithm will be: Step-1. Requirement analysis is the first step of the SDLC, so we will select it as term a of the given formula of AP. Step-2. Assume an estimated cost of Requirement Analysis according to the need of the software requirements. Example: 20 k. Step-3. again assumes the estimated cost of the next phase of SDLC is Design. Step-4. in T n = n/2[2a + (n − 1)d]d is the difference between the first and the next term. So, the difference between the assumed estimated cost of the Requirements Analysis and the Design is [COST OF DESIGN-COST OFREQUIREMENTS ANALYSIS] is [d = 40 K − 20 K = 20 K]. The difference between two terms (d) is 20 k. Step-5. Now we have all the values for AP formula. We can put all the values in the given formula and an assumed estimated cost will be calculated. T n can be calculated easily by this method. Which is the total estimated cost of the software? © Elsevier Publications 2014.

427

Abdul Wahid, et al.

Step-6. In the same manner we can calculate the estimate cost of the each stage of the SDLC. Step-7. Now, the one important thing come under the light that is if our expenditure on the first term of SDLC is less than our assumed cost then we can reduce the estimated cost of the next stage of SDLC is Design then automatically our difference between first and the next term will also be reduced according to the need. All five stages of SDLC will have the same difference with each other. When there is any modification takes place in the assumed cost then its effect the whole cost of each individual stage of the SDLC. In the same manner, if we need more cost to add in the first stage then our difference will increase and the cost of the stage will also increase. Again whole stages will effect by this and an equal amount of assumed cost will add in the each stage of the SDLC by the formula. Step-8. By this method our cost will be nearby to the accurate cost to develop a software. Each stage will considered individually by the formula. 7.1 Mathematical simulation-example Based on the assumption of estimate cost for a = 20000 which is of Requirement Analysis stage of SDLC. b = 40000 which is of the Design stage of SDLC. Therefore, the difference between these two given stages will be: d =b−a d = 40000 − 20000. d = 20000. As ‘n’ is the number of steps in the SDLC so the value of n is 5. To find the value of T n, the values of a, b, d need to substituted in the equation given below: T n = n/2[2a + (n − 1)d]. T n = 5/2[2 ∗ 20000 + (5 − 1)20000]. T n = 5/2[40000 + (4)20000]. T n = 5/2[40000 + 80000]. T n = 5/2[120000]. T n = 5[60000]. T n = 5 ∗ 60000 = 300000. The estimated cost d 3000 k to develop this software. The steps for estimation will be repeated based on the modifications or changes in the requirements till the freezing of requirements which will result in a effective and efficient estimate in comparison to other methods within the same domain. 8. Discussion and Conclusion The basic characteristics of a forecasting method should be its correctness and accuracy. The primary function of the AP is to predict the effort/cost of a software product using the data that available with higher levels of accuracy. Arithmetic progression method includes mean, standard deviation and minimum & maximum values of a range which makes it a good forecast due to usage of multiple numbers. An effort has been made to incorporate the advantages of Arithmetic Progression in line with the cost estimation methodologies in a fashion to cater to the needs of the changing needs of the software development Industry early in the process of software development. However, a lot needs to be explored in terms of different categories of software like simple, semi-detached and organic in nature. It is also very important to validate the results of the model using the current data from the already completed projects. Using the arithmetic progression a researcher can understand the project cost and estimate and different factors influencing the effort/cost estimation results and the importance of these cost drivers in software development form inception till its maturity. 428

© Elsevier Publications 2014.

Software Estimation Technique Based on Arithmetic Progression

References [1] Jones C. Estimating Software Costs: Bringing Realism to Estimating, New York: McGraw Hill Professional, (2007). [2] C. Kanaracus, ERP Software Project Woes Continue to Mount, Survey Says [online]. Framingham: Computerworld; February 2013. URL:http://www.computerworld.com/s/article/9236984/ERP− software− project− woes− continue− to− mount− survey− says. Accessed 11th March, (2013). [3] M. Chemuturi, Software Estimation Best Practices, Tools, and Techniques: A Complete Guide for Software Project Estimators, Florida: J. Ross Publishing, (2009). [4] D. Sundar, Software Engineering, New Delhi: Laxmi Publications, Ltd. (2010). [5] S. Conte, H. Dunsmore and V. Shen, Software Engineering Metrics and Models Michigan University: Benjamin/Cummings Pub., Co., (1986). [6] N. Birrell and M. Ould, A Practical Handbook for Software Development United Kingdom: Cambridge University Press, (1988). [7] B. Leonard, GAO Cost Estimating and Assessment Guide: Best Practices for Developing and Managing Capital Program Costs, Pennsylvania: Diane Publishing, (2009). [8] P. Oman and S. Pfleeger, Applying Software Metrics, Los Alamitos, CA: John Wiley & Sons, (1997). [9] T. Szmuc and K. Zielinski, Software Engineering: Evolution and Emerging Technologies, Baltimore: IOS Press, (1981). [10] P. Keil, Cost Estimation for Global Software Development [online], Technische Munich University: CiteseerX; 2006. URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.93.4601.Accessed 10th March, (2013). [11] R. Lewis, F. Wu and S. Pfleeger, Software Cost Estimation and Sizing Methods, United States: Rand Corporation, (2005). [12] W. Harrison and C. Cook, Insights on Improving the Maintenance Process Through Software Measurement, In Proceedings of International Conference on Software Maintenance, (San Diego, CA, USA November 26–29, 1990). IEEE Computer Society Press, pp. 37–45, (1990). [13] B. W. Boehm, Software Engineering Economics, Prentice-Hall, pp. 596–599. [14] H. Schaefer, Metrics for Optimal Maintenance Management. In Proceedings Conference on Software Maintenance, (Washington, 1985), IEEE Computer Society Press, pp. 114–119, (1985). [15] A. J. Albrecht, AD/M Productivity Measurement and Estimate Validation, IBM Corporation, New York, (1984). [16] C. R. Symons, Function Point Analysis: Difficulties and Improvement, IEEE Transactions on Software Engineering, pp. 2–11, January (1988). [17] M. Cohen, Agile Estimation and Planning, Pearson Low Price Edition Asia, (2006). [18] C. Stiendl and P. Krogdahl, Estimation in Agile Projects, In Proceedings of Best Practices in Project Estimation Conference, IBM Academy of Technology, (2005). [19] http://en.wikipedia.org/wiki/Software− development− effort estimation-last accessed on 19 Jan. (2014).

© Elsevier Publications 2014.

429

Suggest Documents