Paper Menu >>
Journal Menu >>
J. Software Engineering & Applications, 2010, 3: 1-10 doi:10.4236/jsea.2010.31001 Published Online January 2010 (http://www.SciRP.org/journal/jsea) Copyright © 2010 SciRes JSEA 1 Models for Improving Software System Size Estimates during Development William W. AGRESTI1, William M. EVANCO2, William M. THOMAS3 1Carey Business School, Johns Hopkins University, Baltimore, USA; 2Statistical Solutions, Philadelphia, USA; 3The MITRE Corpo- ration, McLean, VA, USA. Email: agresti@jhu.edu, wevanco@verizon.net, bthomas@mitre.org Received August 28th, 2009; revised September 16th, 2009; accepted September 29th, 2009. ABSTRACT This paper addresses the challenge of estimating eventual software system size during a development project. The ap- proach is to build a family of estimation models that use information about architectural design characteristics of the evolving software product as leading indicators of system size. Four models were developed to provide an increasingly accurate size estimate throughout the design process. Multivariate regression analyses were conducted using 21 Ada subsystems, totaling 183,000 lines of code. The models explain from 47% of the variation in delivered software size early in the design phase, to 89% late in the design phase. Keywords: Software Size, Estimation, Ada, Regression, Re-Estimation, Metrics 1. Introduction Before software development projects start, customers and managers want to know the eventual project cost with as much accuracy as possible. Cost estimation is extremely important to provide an early indicator of what lies ahead: will the budget be sufficient for this job? This need has motivated the development of software cost estimation models, and the growth of a commercial market for such models, associated automated tools, and consulting sup- port services. When someone who is new to the use of cost estima- tion models looks at the estimation equation, it can be quite disconcerting. The only recognizable variable on the right-hand side is size, surrounded by a few modify- ing factors and shape parameters. So, if the project is just beginning, how do you know the size of the system? More experienced staff members explain that you must first estimate the size so that you can supply that value in the equation, thus enabling you to estimate cost. How good can the cost estimate be if it depends so strongly on a quantity that won’t be known until the end of the pro- ject? The underlying logic prompting this question is irrefutable. This situation is well known and recognized (e.g., [1, 2]). Users of such cost estimation models are dependent, first and foremost, on accurate size estimates. Of course, there are other ways to estimate costs (e.g., by analogy and experience), but the more analytically satis- fying models estimate cost as a function of size. Thus, the need for an accurate cost estimate often translates into a need for an accurate size estimate. This paper addresses size estimation, but distinguishes between estimation before development and during de- velopment. Size estimation prior to the start of a software project typically draws on analogy and professional judgment, with comparisons of the proposed system to previously developed systems of related functionality. Function point counts may also be used to provide an estimate of size, but, of course, the accuracy of the size estimate depends on accurate knowledge of the entities being counted. Once the project begins, managers would like to keep improving their size estimate. However, we are moti- vated by our observations of current practice in which managers, during development, revert to predevelopment estimates of size (and effort and cost) because of a lack of effective ways to incorporate current development information to refine their initial estimates [3]. Ideally there would be straightforward methods to improve the predevelopment estimates based on early project experi- ences and the evolving product. In this paper we focus on the evolving product as a source of information for up- dating the size estimate. The research reported in this paper addresses the ques- tion of how to improve our capability for estimating the size of software systems during a development project. More specifically, it reports on building a family of models for successively refining the size estimate during Models for Improving Software System Size Estimates during Development 2 the development process. The notion of a family of mod- els is intended to address the challenge of successively refining the initial estimate as the project unfolds. The research has three motivations: the widely known poor record of large software projects to be delivered on time and on budget (due in part to poor estimation capability), the persistent illogic of needing to know size to estimate cost, and the challenge of successive size reestimation during a project. The remainder of the paper discusses related work, the design and implementation process, the estimation mod- els, the empirical study, statistical results, limitations of the analyses, and future directions. 2. Related Work Reasonably accurate size estimates may be achievable when an organization has experience building systems in the domain of the new project. The new system may be analogous to previous ones or related to a product line that is familiar. There may even be significant reuse of class libraries, designs, interfaces, or code to make the estimation easier. But accurately estimating eventual system size grows more difficult when the new system ranks higher in novelty or, using the nomenclature of systems engineering, is unprecedented. Even when the application domains are similar, new projects may re- quire significantly more code to account for enhanced requirements for security and robustness that were not associated with previous systems. An especially appealing category of estimation models is one that consists of models that use early constructs from the evolving system. The analyses that are closest to the research reported here were done as part of the evolution of COCOMO models over the years. CO- COMO II has the characteristic of the models being built in this paper by recognizing the need for a family of models. For COCOMO II, the models take advantage of increased learning during the project: the early prototyp- ing stage, early design stage, and postarchitecture stage [4]. As development gets underway in a project, the repre- sentations used in specification and design provide op- portunities for the measurement of key constructs used in those representations. Then models can be built to relate values from those constructs to measures of system size. This practice has been in place for decades. One of the earliest and most influential of such models was Tom DeMarco’s Bang metric that related values from data flow diagrams and other notations to eventual code size. [5]. Similar models have been built, based on capturing measures of entity-relationship and state-transition dia- grams from early system specifications [6]. Bourque and Cote [7] performed an experiment to develop and vali- date such a predictive model based on specification measures that were obtained from data flow and entity- relationship diagrams. It was found that a model using the number of data elements crossing an elementary pro- cess in the data flow diagram as the sole explanatory variable performed fairly well as a predictive model. Much of the research using early system artifacts for estimation is directed at estimating effort and cost. Pau- lish, et al., discussed the use of the software architecture document as the primary input to project planning [8]. Mohagheghi et al., described an effort estimation model based on the actual use cases of the system being built [9]. Pfleeger used a count of objects and methods as a size measure in a model of software effort [10]. Jensen and Bartley investigated the use of object information obtained from specifications in models of programmer effort [11]. They proposed that development effort is a function of the number of objects, operations, and inter- faces in the system, and that counts of these entities can be obtained from a textual specification. More closely related to the current paper is reported research that is focused on estimating size. Laranjeira [12] provided a method for sizing object-oriented systems based on successive estimations of refinements of the system objects. As the system becomes more refined, a greater confidence in the size estimates is obtained. He proposed the use of statistical techniques to determine a rate of convergence to the actual estimate. The estimation is still subjective, but the method gives an indication of progress toward the convergence of the estimates, and as such provides an objective, statistically based confidence interval for the estimates. Minkiewicz [13] offers a useful overview of the evolu- tion and value of various measures of size, including the most widely used, lines of code and function points. The model in [14] estimated size, as measured by function points [15] directly from a conceptual model of the sys- tem being built. Tan et al. built a model to estimate lines of code based on the counts of entities, relationships, and attributes from the conceptual data model [16]. A model by Diev [17] related early information on use cases into a size estimate, measured in function points. The models in [18] produce lines-of-code estimated from a VHDL-based design description. Antoniol et al. investi- gated the adapting of function points to object-oriented systems by defining object-oriented function points (OO FPs) [1]. They first identified constructs in object- ori- ented systems (e.g., classes and methods) to use as pa- rameters for OOFPs, then built a flexible model to esti- mate system size. Their pilot study showed that the model was promising as a way to estimate lines of code from OOFPs. There has been considerable research on ways to use object-oriented designs in the Unified Modeling Lan- guage (UML) to estimate size as measured in function points. Capturing the design in UML facilitates develop- ing an automated tool to extract counts of entities and Copyright © 2010 SciRes JSEA Models for Improving Software System Size Estimates during Development Copyright © 2010 SciRes JSEA 3 other data that can be used in empirical studies to de- velop size estimation models. Most similar to the re- search here are studies that developed families of models that provided a succession of estimates as more design information is known. For example, Zivkovic et al. [19] developed automated approaches to estimating function point size using UML design information, including data types and transactional types. Hericko and Zivkovic’s analysis [20] was most similar to the research reported here because it involved basing the size estimate on more detailed information about a UML design. The first esti- mate used use case diagrams, the second estimate added information from activity diagrams, and the final esti- mate added information from class diagrams. The esti- mates, which did improve as new information was in- corporated into the models, produced an estimate meas- ured in function points, as opposed to the lines of code used in the research in this paper. 3. The Design and Implementation Process Our analysis and model building relies on assumptions concerning the progress of design and implementation. This section discusses these assumptions. We are investigating systems that were built in Ada, which proceeds from specifying relationships among larger units (packages) to a specification of the interior details of these units. Ada was used as a design notation, which means that a machine-readable design artifact is available for observation and analysis. Royce [21] was one of the first to discuss this use of a single language in the Ada process model: “Regardless of level, the activity being performed is Ada coding. Top-level design means coding the top-level components (Ada main programs, task executives, global types, global objects, top-level library units, etc.). Lower-level design means coding the lower-level program unit specifications and bodies.” The development teams used a generic object-oriented design process with steps to identify the objects, identify the operations, establish the visibility of the operations, specify the interface, and implement the objects. Fol- lowing such a method implies that certain information about the design will be available at earlier times in the development process than other information. For exam- ple, a count of the number of operations will be available prior to a count of the number of parameters that will be needed. While there is iteration involved in the method, and the process must be repeated at various levels of ab- straction, following such a process should result in a steady release of successively more detailed information about the evolving system. Figure 1 attempts to capture this unfolding of information by showing notional growth curves for several entities in an Ada development process. The number of library units stabilizes first, fol- lowed by the context coupling, number of visible pro- gram units, and so on until finally all the source lines of code are defined when the objects are fully implemented. Our approach in size estimation is to take advantage of this evolving machine-readable product, using character- istics of the design artifact to refine our size estimates at successive stages in the development process, where each stage corresponds to a time when a particular aspect of the design has stabilized (e.g., a count of the number of library units). Figure 1. Notional growth curves of design features Models for Improving Software System Size Estimates during Development 4 Figure 2. Four size models: design representations and features Figure 2 depicts one view of the successive design and implementation of an Ada system. In Figure 2, we iden- tify four intermediate stages (A, B, C, and D) as the sys- tem is built. More detailed information is available at each stage and this information can be used to obtain more accurate size estimates. We acknowledge that the approach and, therefore, the applicability of the results, depend on the assumptions concerning how the design evolves. In the process model described here, the needed behavior and functionality of the system are first organized into loci of capabilities that are captured in the design artifact as library units. This view is consistent with Royce's identification of top-level design activities in the quote above, and with the first process step of identifying the objects. Thus, Stage A in Figure 2 corresponds to a stage where all library units have been identified. As the design becomes more detailed, designers iden- tify the visible program units in each library unit (Stage B). The visible program units are the operations accessi- ble by other units; at this stage, designers are also identi- fying relationships among library units. For a particular library unit to fulfill its role in the design, it needs re- sources of other units and these resources are provided through context coupling. This corresponds to the second and third process steps, in which the operations are iden- tified and the visibility established. More is known about the design at Stage C. To im- plement the visible program units, the developer defines hidden program units to perform necessary, but local, functions in support of the visible operations. This stage corresponds to the process step of implementing the ob- jects. Stage D is well into the detailed coding of the system. At this stage all declarations have been made. Admittedly, at this stage, the source lines of code are building and the actual system size (in terms of lines of code) is becoming known. However, having an explicit Stage D recognizes cases in which the declarations may be relatively com- plete, but the procedural code is not. 4. Estimation Models The stages shown in Figure 2 provide a logical progres- sion for system development. The information available at each of these stages has the potential to be used to de- termine size estimates with greater accuracy than those estimates derived at the inception of the project. What is needed, of course, are models that show how to use the information to estimate size. The models for estimated size (Size) are of the form: Size = alx1 + a2x2 + ...+ where Size is measured in source lines of code; x1, x2... are the explanatory variables; al, a2... are the parameters Copyright © 2010 SciRes JSEA Models for Improving Software System Size Estimates during Development5 to be estimated; and is an error term. Four different models were built, corresponding to the four different stages in the design phase as shown in Fig- ure 2. These models show source lines of code estimated from ---- • Model A: the number of library units. • Model B: the number of visible and imported pro- gram units declared. • Model C: the number of visible, imported, and hid- den program units declared. • Model D: the number of types and objects declared. At Stage A in Figure 2, the number of library units de- fined serves as an early indicator of system size. The size model at this stage is a coefficient multiplied by the num- ber of user defined library units in the system. Thus, the model for estimating source lines of code is: SizeA = al * (#of library units) + Stage B is further into the design process and more is known about the details of the library units that were the basis for the estimation at Stage A. So, at Stage B, the number of visible program units declared and program units imported from other subsystems by library units through the context coupling mechanism are the parame- ters of the size model. The rationale is that the number of visible program units is a proxy for the functionality of a package. Statistically we expect that more program units will translate into a need for more lines of Ada code. The rationale for the number of imported program units is that they are being imported because they are needed, so they must enter into the code of the receiving library unit. So, if there are more imports, statistically we expect that there will be more lines of code required in the library unit. Thus, the model appears as: SizeB = al * (# of visible program units) + a2 * (# of imported program units) + At Stage C, the size estimation model depends on the same information as Stage B, but with the inclusion of the number of hidden program units. Again, hidden pro- gram units perform local processing needed to support the visible program units. The model is of the form: SizeC = al * (# of visible program units) + a2 * (# of imported program units) + a3 * (# of hidden program units) + As the design progresses, more detailed declarations become available. The size estimation model at stage D uses the number of declarations of types and objects as the basis for its estimate of system size. This model ap- pears as: SizeD = al * (# of type/subtype declarations + #object declarations) + 5. Empirical Study To estimate the parameters of the models, we analyzed a collection of 21 Ada subsystems, from four projects de- veloped at the Software Engineering Laboratory of the National Aeronautics and Space Administration/Goddard Space Flight Center [22]. The analysis was restricted to subsystems containing more than one Ada library unit, and consisting of at least 1,000 source lines of code. The subsystems in our data set ranged in size from 2,000 to 27,000 source lines of code, excluding comment and blank lines. A locally developed Ada source analyzer program was used [23], although other static analysis tools could yield the same data. We extracted counts of source lines of code; library units; visible, imported, and hidden pro- gram units; and type and object declarations from the delivered product. These counts were used in regression analyses to develop models of delivered product source lines of code. Because the explanatory variables were taken from completed project code data, we cannot make claims as to whether all of the entities (library units, visible pro- gram units declared and imported, hidden program units, and declarations) were defined at stages A, B, C, and D in strict adherence to the process model. For example, while the model for Stage B depends on the number of visible program units, and the process model calls for defining the visible program units at that stage in the process, it may be that some number of additional visible program units were added very late in the process (e.g., due to a requirements change). However, the process model does provide for successive elaboration of the design and code in a seamless way with Ada as both a design and implementation language. For example, one of the authors (WA) was technical manager of one pro- ject using this process model and had over 35,000 lines of compiled Ada at the time of Critical Design Review. That is, the compiled Ada was essentially the design structure of the system, and, because it was in Ada, it was amenable to automated analysis. If a size reestima- tion model like this is used in practice, the model could be calibrated and validated on an ongoing basis during projects, so that the model is based on the actual number of visible program units defined at Stage B. 6. Statistical Results Size estimates can be made throughout the design phase based on information with increasing detail. Because of the additional information, we would expect these esti- mates to be more accurate as the project moves into the later design phases. In terms of the statistical analyses, a greater fraction of the variation in lines of code (as Copyright © 2010 SciRes JSEA Models for Improving Software System Size Estimates during Development Copyright © 2010 SciRes JSEA 6 measured by the coefficient of determination of a regres- sion analysis) would be explained as the design phase progresses. In this section we present the results of re- gression analyses of size estimation models. As discussed previously, these models progress through greater levels of information availability as the design progresses, and they can be used to update the size esti- mates for the purposes of project management. Regres- sion analysis was used to build the models, with the ex- pected outcome that the size estimates will become more accurate as more design information becomes available. The regressions for all four models were linear in both the source lines of code and the explanatory variables. A zero intercept term was assumed since zero values for the explanatory variables used to explain the source lines of code would necessarily imply that no lines of code would be generated. Unpublished results of regression analyses for models with the intercept terms resulted in intercept estimates that were not significantly different from zero, a conclusion also reached by Antoniol [1]. The first column of Table 1 shows the regression re- sults for Model A. These results can be translated into the equation, SizeA = 303.8 * (# of library units). The corre- sponding predicted vs. actual plot is given in Figure 3. The adjusted R2 is 0.47 (Note 1) and the coefficient for the number of library units is highly significant as meas- ured by the standard error associated with the coefficient estimate. Note that the coefficient estimate indicates that about 304 source lines of code will be generated for each library unit that is defined early in the design phase. However, the plot of Figure 3 shows a few observations for which the predicted vs. actual values are strongly discrepant. Table 1. Linear regression results for source lines of code Variable Model A Model B Model C Model D Librar y Uni t s303.8 (33.6)a Visible Program Units 48.0 36.8 (6.9) (6.6) Imported Program Units 3.0 2.8 (0.4) (0.4) Hidden Program Units 71.7 (21.9) Types and Objects 22.2 (1.0) R2 .47 .77 .87 .89 aStandard error of associated coefficient. All coefficient estimates are significant to within the 1% level of significance. Actual size* *Size measured as non-comment source lines of code Figure 3. Model A for system size: predicted vs. actual Models for Improving Software System Size Estimates during Development7 Actual size* *Size measured as non-comment source lines of code Figure 4. Model B for system size: predicted vs. actual Actual size* *Size measured as non-comment source lines of code Copyright © 2010 SciRes JSEA Models for Improving Software System Size Estimates during Development Copyright © 2010 SciRes JSEA 8 Figure 5. Model C for system size: predicted vs. actual Actual size* *Size measured as non-comment source lines of code Figure 6. Model D for system size: predicted vs. actual Model B focuses on the program units contained in the library units. More specifically, only those program units are considered that are visible, and hence can be exported or imported. The identification of such program units is expected to be the next step after the library units have been declared. Table 1 shows the regression results and Figure 4 shows the plot for Model B. This model is a substantial improvement over Model A. The regression explains 77% of the variation in lines of code. Each visible program unit declaration contrib- utes about 48 source lines of code, while an imported program unit declaration accounts for about 3 source lines of code. The coefficient estimates are again highly significant. From Figure 4, we see that Model B leads to a significantly better fit between actual and predicted values. The outliers apparent in Figure 3 are pulled closer to the 45-degree line along which predicted values would exactly equal the actual values. Model C is an enhancement to Model B whereby the number of hidden program units is added to the analysis. This model represents the next logical step in the devel- opment of the design. Program units, declared and hence hidden in the bodies of packages and subprograms, are identified after the overall architecture of the system is established through the identification of visible and im- ported program units. Table 1 shows the regression results and Figure 5 shows the plot for Model C, which explains approxi- mately 87% of the variation in source lines of code. Each visible program unit declared contributes about 37 source lines of code, each hidden program unit contributes about 72 source lines of code, and each imported program unit contributes about 3 lines of code. These coefficient esti- mates are all highly significant. The fact that hidden program units contribute more source lines of code than the visible program units indi- cates that many of the implementation details of the visi- ble units are postponed until the implementation of the hidden units. The visible program units essentially make calls to the hidden program units for needed functionality. The points plotted in Figure 5 hug the 45-degree line a bit tighter than in Model B. Finally, Model D utilizes information about all types and objects in the system, whether visible or hidden. This information might be available only after the design process was substantially complete, and in some cases after implementation had been partly accomplished. Table 1 shows that the Model D explains about 89% of the variation of source lines of code. Each type or object Models for Improving Software System Size Estimates during Development9 accounts for about 22 source lines of code, and the coef- ficient estimate is highly significant. Figure 6 shows that the predicted values of source lines of code are close to the actuals. 7. Limitations of Analyses The analyses discussed above would be expected to have high levels of predictability for projects in an environ- ment similar to the one for which the empirical analyses were conducted. However, in a different environment, the use of alternative development methodologies (e.g., web-based applications, prototyping and Commercial- off-the-Shelf (COTS) integration), the application of dif- ferent quality assurance criteria, and variations in the application domain might have an impact on these esti- mates. For example, a quality assurance criterion limiting the number of lines of code in a library unit would affect the results of any empirical analysis using library units as an explanatory variable. Similarly, two different design methodologies could lead to different decompositions of the design into library units and program units. It is therefore recommended that a software develop- ment organization use these results as evidence that it is possible to build a family of models for the successive re-estimation of software size. The key to building useful models is to assess the development process being used, and then identify entities that are defined at successive stages in the process. Collect data on ongoing projects, recording the counts of these entities. With data from multiple projects that use the same process, an organiza- tion can then perform its own empirical analyses to de- termine the values of the coefficients for the models, guided by the approach used here. Once the family of models is then validated by use on additional projects, the models will become more valuable in estimating software size at various stages during a development project. 8. Summary and Future Directions We have built a family of models for estimating software size based on successively available design information. The models demonstrate that the estimates can improve as more design information becomes available. The analyses were conducted at the subsystem level. Another possibility is to develop modules using library units as the unit of observation. The larger number of empirical observations at the library unit level would permit the exploration of a greater variety of explanatory variables. If desired, the library unit estimates could then be rolled up to get size estimates for subsystem or project levels. As we have stressed, rather than using the model coef- ficients established here, a software development orga- nization may use the modeling approach here but con- duct its own empirical analyses to assure applicability to its unique environment. The resulting coefficient esti- mates could be included in handbooks for managers to use in refining their size estimates. With increasingly more accurate size estimates during a project, there is improved manageability, thus reducing the chances of cost and schedule variances. 9. Acknowledgements We acknowledge the U. S. Air Force Research Laborato- ries and the MITRE Corporation for their support of the original analysis. Note 1. The measure of adjusted R2 used here is de- fined as recommended by Kvalseth for models without an intercept term [24]. That is, for a sample of n observa- tions and a model with k parameters, if pi denotes the fitted value of yi, and m the sample arithmetic mean of the yi, then R2 = 1 - a * (pi - yi)2/ (yi - m)2, where a = n/(n-k). REFERENCES [1] G. Antoniol, C. Lokan, G. Caldiera, and R. Fiutem, “A function-point-like measure for object-oriented software,” Empirical Software Engineering, Vol. 4, 263–287, 1999. [2] M. Ruhe, R. Jeffrey, and I. Wieczorek, “Cost estimation for web applications,” Proceedings of the 25th International Conference on Software Engineering, Portland, Oregon, USA, ACM Press, New York, pp. 285–294, 2003. [3] W. W. Agresti, “A feedforward capability to improve software reestimation,” in: N. H. Madhavji, J. Fernan- dez-Ramil, D. E. Perry (Eds.), Software Evolution and Feedback, John Wiley & Sons Ltd., West Sussex, Eng- land, pp. 443–458, 2006. [4] B. W. Boehm, C. Abts, A. W. Brown, C. Chulani, B. K. Clark, E. Horowitz, R. Madachy, D. Reifer, and B. Steece, Software Cost Estimation with COCOMO II, Prentice Hall, Upper Saddle River, NJ, USA, 2000. [5] T. DeMarco, “Controlling software projects,” Yourdon Press, Englewood Cliffs, NJ, USA, 1982. [6] W. W. Agresti, “An approach to developing specification measures,” Proceedings of the 9th NASA Software Engi- neering Workshop, NASA Goddard Space Flight Center, Greenbelt, MD, USA, pp. 14–41, 1984. [7] P. Bourque and V. Cote, “An experiment in software sizing with structured analysis metrics,” Journal of Sys- tems and Software Vol. 15, 159–172, 1991. [8] D. J. Paulish, R. L. Nord, and D. Soni, “Experience with architecture-centered software project planning,” Proceed- ings of the ACM SIGSOFT ’96 Workshops, San Francisco, CA, USA, ACM Press, New York, pp. 126–129, 1996. [9] P. Mohagheghi, B. Anda, and R. Conradi, “Effort estima- tion of use cases for incremental large-scale software de- velopment,” Proceedings of the 27th International Con- ference on Software Engineering, St. Louis, MO, USA, ACM Press, New York, NY, pp. 303–311, 2005. Copyright © 2010 SciRes JSEA Models for Improving Software System Size Estimates during Development Copyright © 2010 SciRes JSEA 10 [10] S. L. Pfleeger, “Model of software effort and productiv- ity,” Information and Software Technology, Vol. 33, 224–231, 1991. [11] R. L. Jensen and J. W. Bartley, “Parametric estimation of programming effort: An object–oriented approach,” Jour- nal of Systems and Software, Vol. 15, pp. 107–114. 1991. [12] L. Laranjeira, “Software size estimation of object–oriented systems,” IEEE Transactions on Software Engineering, Vol. 16, 510–522, 1990. [13] A. Minkiewicz, “The evolution of software size: A search for value,” CROSSTALK, Vol. 22, No. 3, pp. 23–26, 2009. [14] P. Fraternali, M. Tisi, and A. Bongio, “Automating func- tion point analysis with model driven development,” Pro- ceedings of the Conference of the Center for Advanced Studies on Collaborative Research, Toronto, Canada, ACM Press, New York, pp. 1–12, 2006. [15] A. Albrecht and J. Gaffney, “Software function, source lines of code and development effort prediction,” IEEE Transactions on Software Engineering, Vol. 9, 639–648, 1983. [16] H. B. K. Tan, Y. Zhao, and H. Zhang, “Estimating LOC for information systems from their conceptual data mod- els,” Proceedings of the 28th International Conference on Software Engineering, Shanghai, China, ACM Press, New York, pp. 321–330, 2006. [17] S. Diev, “Software estimation in the maintenance con- text,” ACM Software Engineering Notes, Vol. 31, No. 2 pp. 1–8, 2006. [18] W. Fornaciari, F. Salice, U. Bondi, and E. Magini, “De- velopment cost and size estimation from high-level speci- fications,” Proceedings of the Ninth International Sympo- sium on Hardware/Software Codesign, Copenhagen, Denmark, ACM Press, New York, NY, pp. 86–91, 2001. [19] A. Zivkovic, I. Rozman, and M. Hericko, “Automated software size estimation based on function points using UML models,” Information and Software Technology, Vol. 47, pp. 881–890, 2005 [20] M. Hericko and A. Zivkovic, “The size and effort esti- mates in iterative development,” Information and Soft- ware Technology, Vol. 50, pp. 772–781, 2008. [21] W. Royce, “TRW's Ada process model for incremental development of large software systems,” Proceedings of the 12th International Conference on Software Engineer- ing, Nice, France, pp. 2–11, 1990, [22] F. E. McGarry and W. W. Agresti, “Measuring Ada for software development in the Software Engineering Labo- ratory,” Journal of Systems and Software, Vol. 9, pp. 149–159, 1989. [23] D. Doubleday, “ASAP: An Ada static source code ana- lyzer program,” Technical Report 1895, Department of Computer Science, University of Maryland, College Park, MD USA, 1987. [24] T. O. Kvalseth, “Cautionary note about R2,” The Ameri- can Statistician, Vol. 39, pp. 279–285, 1985. |