This Article 
 Bibliographic References 
 Add to: 
Structural Epochs in the Complexity of Software over Time
July/August 2008 (vol. 25 no. 4)
pp. 66-73
A case study using a new complexity measurement framework called Structure 101 tracked the structural complexity of three open source software products through their different releases. The analysis found that, as these software products evolved, a large proportion of structural complexity in early releases at the application-code level progressively migrated to higher-level design and architectural elements in subsequent releases, or vice-versa. This pattern repeated itself throughout the evolution of the software product. Refactoring efforts successfully reduced complexity at lower levels, but shifted the complexity to higher levels in the design hierarchy. Conversely, design restructuring at higher levels shifted complexity to lower levels. If this trend holds true for other software products, then mere code refactoring might not be enough to effectively managing structural complexity. Periodic major restructuring of software applications at the design or architectural level could be necessary.

1. J.D. McGregor, "Complexity, Its in the Mind of the Beholder," J. Object Technology, Jan./Feb. 2006, pp. 31–37;
2. T. McCabe, "A Complexity Measure," IEEE Trans. Software Engineering, Dec 1976, pp. 308–320.
3. W.P. Stevens, G.J. Myers, and L.L. Constantine, "Structured Design," IBM Systems J., vol. 13, no. 2, 1974, pp. 115–119.
4. S.R. Chidamber and C.F. Kemerer, "A Metrics Suite for Object Oriented Design," IEEE Trans. Software Engineering, June 1994, pp. 476–493.
5. R.C. Martin, Agile Software Development, Prentice Hall, 2003.
6. M. Larsson and P.A. Laplante, "On the Complexity of Design in Imaging Software," Proc. 11th IEEE Int'l Conf. Engineering of Complex Computer Systems (ICECCS 06), IEEE CS Press, 2006, pp. 37–42.
7. R. Sangwan, P. Vercellone-Smith,, and P. Laplante, "Measuring the Complexity of Design in Real-Time Imaging Software," Proc. 11th Real-Time Imaging Conf., SPIE, 2007, vol. 6486, pp. 1–6.
8. W. Scacchi, "Understanding Open Source Software Evolution," Software Evolution, N.H. Madhavji et al., eds., John Wiley &Sons, 2004.
9. S.R. Schach et al., "Maintainability of the Linux Kernel," IEE Proc.—Software, vol. 149, no. 1, 2002, pp. 18–23.
10. N. Smith, A. Capiluppi, and J.F. Ramil, "A Study of Open Source Software Evolution Data Using Qualitative Simulation," Software Process Improvement and Practice, vol. 10, no. 3, 2005, pp. 287–300.
11. Y. Crespo et al., "Language Independent Metrics Support towards Refactoring Inference," Proc. 9th ECOOP Workshop Quantitative Approaches in Object-Oriented Software Engineering, Springer, 2005, pp. 18–29.
12. Z. Xing and E. Stroulia, "Towards Experience-Based Mentoring of Evolutionary Development," Proc. 21st IEEE Int'l Conf. Software Maintenance (ICSM 05), IEEE CS Press, 2005, pp. 621–624.
13. Z. Xing and E. Stroulia, "Understanding the Evolution and Co-evolution of Classes in Object-Oriented Systems," Int'l J. Software Engineering and Knowledge Engineering, vol. 16, no. 1, 2006, pp. 23–52.
1. T. McCabe, "A Complexity Measure," IEEE Trans. Software Engineering, Dec. 1976, pp. 308–320.

Index Terms:
Packaging,Software packages,Open source software,Software measurement,Application software,Software testing,Software maintenance,Design methodology,Software design,Software systems,structural epochs,software evolution,software complexity,software structure,Structure 101
"Structural Epochs in the Complexity of Software over Time," IEEE Software, vol. 25, no. 4, pp. 66-73, July-Aug. 2008, doi:10.1109/MS.2008.96
Usage of this product signifies your acceptance of the Terms of Use.