This Article 
   
 Share 
   
 Bibliographic References 
   
 Add to: 
 
Digg
Furl
Spurl
Blink
Simpy
Google
Del.icio.us
Y!MyWeb
 
 Search 
   
A Study of Design Characteristics in Evolving Software Using Stability as a Criterion
May 2006 (vol. 32 no. 5)
pp. 315-329
There are many ideas in software design that are considered good practice. However, research is still needed to validate their contributions to software maintenance. This paper presents a method for examining software systems that have been actively maintained and used over the long term and are potential candidates for yielding lessons about design. The method relies on a criterion of stability and a definition of distance to flag design characteristics that have potentially contributed to long-term maintainability. It is demonstrated by application to an example of long-lived scientific software. The results from this demonstration show that the method can provide insight into the relative importance of individual elements of a set of design characteristics for the long-term evolution of software.

[1] W.W. Agresti and W.M. Evanco, “Projecting Software Defects from Analyzing Ada Designs,” IEEE Trans. Software Eng., vol. 18, no. 11, pp. 988-997, Nov. 1992.
[2] M. Alshayeb and W. Li, “An Empirical Study of System Design Instability Metric and Design Evolution in an Agile Software Process,” J. Systems and Software, vol. 74, pp. 269-274, 2005.
[3] N. Anquetil and T. Lethbridge, “Extracting Concepts from File Names; a New File Clustering Criterion,” Proc. Int'l Conf. Software Eng., pp. 84-93, 1998.
[4] A.I. Anton and C. Potts, “Functional Paleontology: The Evolution of User Visible System Services,” IEEE Trans. Software Eng., vol. 29, no. 2, pp. 151-166, Feb. 2003.
[5] D.C. Arnold and J.J. Dongarra, “Developing an Architecture to Support the Implementation and Development of Scientific Computing Applications,” Proc. IFIP TC2/WG2.5 Working Conf. Architecture of Scientific Software, Oct. 2000, http://seg.iit.nrc.ca/wg25woco822.pdf.
[6] V. Basili, L. Briand, S. Condon, Y.-M. Kim, W.L. Melo, and J.D. Valett, “Understanding and Predicting the Process of Software Maintenance Releases,” Proc. Int'l Conf. Software Eng., pp. 464-474, 1996.
[7] K. Beck, Extreme Programming Explained. Addison-Wesley, 2000.
[8] K.H. Bennett and V.T. Rajlich, “Software Maintenance and Evolution: A Roadmap,” Int'l Conf. Software Eng., Proc. Conf. Future of Software Eng., pp. 73-87, 2000.
[9] The Architecture of Scientific Software, R.F. Boisvert and P.T.P. Tang, eds. Kluwer Academic, 2001.
[10] R. Brooks, “Towards the Theory of the Comprehension of Computer Programs,” Int'l J. Man-Machine Studies, vol. 18, pp. 543-554, 1983.
[11] D.N. Card and R.L. Glass, Measuring Software Design Quality. Prentice Hall, 1990.
[12] B. Curtis, S.B. Sheppard, P. Milliman, M.A. Borst, and T. Love, “Measuring the Psychological Complexity of Software Maintenance Tasks with the Halstead and McCabe Metrics,” IEEE Trans. Software Eng., vol. 5, no. 2, pp. 96-104, Mar. 1979.
[13] S.G. Eick, T.L. Graves, A.F. Kerr, J.S. Marron, and A. Mockus, “Does Code Decay? Assessing the Evidence from Change Management Data,” IEEE Trans. Software Eng., vol. 27, no. 1, pp. 1-12, Jan. 2001.
[14] K. El Emam, S. Benlarbi, N. Goel, W. Melo, H. Lounis, and S.N. Rai, “The Optimal Class Size for Object-Oriented Software,” IEEE Trans. Software Eng., vol. 28, no. 5, pp. 494-509, May 2002.
[15] N. Fenton, “Software Measurement: A Necessary Scientific Basis,” IEEE Trans. Software Eng., vol. 20, no. 3, pp. 199-206, Mar. 1994.
[16] M.W. Godfrey and Q. Tu, “Evolution in Open Source Software: A Case Study,” Proc. Int'l Conf. Software Maintenance, pp. 131-142, 2000.
[17] T.L. Graves, A.F. Kerr, J.S. Marron, and H. Siy, “Predicting Fault Incidence Using Software Change History,” IEEE Trans. Software Eng., vol. 26, no. 7, pp. 653-661, July 2000.
[18] D. Hand, H. Mannila, and P. Smyth, Principles of Data Mining, A Bradford Book. MIT Press, 2001.
[19] S. Henry and D. Kafura, “Software Structure Metrics Based on Information Flow,” IEEE Trans. Software Eng., vol. 7, no. 5, pp. 510-518, Sept. 1981.
[20] D. Kafura and G.R. Reddy, “The Use of Software Complexity Metrics in Software Maintenance,” IEEE Trans. Software Eng., vol. 13, no. 3, pp. 335-343, Mar. 1987.
[21] I. Kaplansky, Set Theory and Metric Spaces. Allyn and Bacon Inc., 1975.
[22] D.F. Kelly, “An Exploration of Evolutionary Change in an Example of Scientific Software,” PhD thesis, Royal Military College of Canada, July 2004.
[23] C. Kemerer and S. Slaughter, “An Empirical Approach to Studying Software Evolution,” IEEE Trans. Software Eng., vol. 25, no. 4, pp. 493-509, July/Aug. 1999.
[24] K. Kreyman, D.L. Parnas, and S. Qiao, “Inspection Procedures for Critical Programs that Model Physical Phenomena,” CRL Report No. 368, McMaster Univ., Feb. 1999.
[25] A. Lakhotia, “Understanding Someone Else's Code: Analysis of Experiences,” J. Systems Software, vol. 23, pp. 269-275, 1993.
[26] M.M. Lehman and F.N. Parr, “Program Evolution and Its Impact on Software Engineering,” Proc. Int'l Conf. Software Eng., pp. 350-357, 1976.
[27] M.M. Lehman, “Rules and Tools for Software Evolution Planning and Management,” Feast 2000 Pre-prints, Imperial College, London, July 2000, www.doc.ic.ac.uk/~mml/feast2/papers/pdf611_2.pdf .
[28] S. Letovsky, “Cognitive Processes in Program Comprehension,” Proc. Workshop Empirical Studies of Programmers, pp. 58-79, 1986.
[29] T. Nakamura and V.R. Basili, “Metrics of Software Architecture Changes Based on Structural Distance,” Proc. IEEE Int'l Software Metrics Symp., pp. 8-17, Sept. 2005.
[30] D. Parnas, “Software Aging,” Invited Plenary Talk, Proc. Int'l Conf. Software Eng., pp. 279-287, 1994.
[31] D.E. Perry and A.L. Wolf, “Foundations for the Study of Software Architecture,” ACM SIGSOFT, Software Eng. Notes, vol. 17, no. 4, pp. 40-52, Oct. 1992.
[32] D. Perry, “Dimensions of Software Evolution,” Proc. Int'l Conf. Software Maintenance, 1994, http://citeseer.nj.nec.com82523.html.
[33] A.L. Powell, “A Literature Review on the Quantification of Software Change,” Computer Science Yellow Report YCS 305, Univ. of York, 1998.
[34] V. Rajlich, J. Doran, and R.T.S. Gudla, “Layered Explanations of Software: A Methodology for Program Comprehension,” Proc. Third IEEE Workshop Program Comprehension, pp. 46-54, 1994.
[35] M. Shepperd and D.C. Ince, “A Critique of Three Metrics,” J. Systems and Software, vol. 26, pp. 197-210, 1994.
[36] D.M. Weiss and V.R. Basili, “Evaluating Software Development by Analysis of Changes: Some Data from the Software Engineering Laboratory,” IEEE Trans. Software Eng., vol. 11, no. 2, pp. 157-168, Feb. 1985.
[37] S.S. Yau and J.S. Collofello, “Some Stability Measures for Software Maintenance,” IEEE Trans. Software Eng., vol. 6, no. 6, pp. 545-552, Nov. 1980.
[38] S.S. Yau and J.S. Collofello, “Design Stability Measures for Software Maintenance,” IEEE Trans. Software Eng., vol. 11, no. 9, pp. 849-856, Sept. 1985.

Index Terms:
Software evolution, scientific software, maintainability, distance metric, software design, stability, software architecture.
Citation:
Diane Kelly, "A Study of Design Characteristics in Evolving Software Using Stability as a Criterion," IEEE Transactions on Software Engineering, vol. 32, no. 5, pp. 315-329, May 2006, doi:10.1109/TSE.2006.42
Usage of this product signifies your acceptance of the Terms of Use.