The Beauty and the Beast: Separating Design from Algorithm
We present an approach that partitions a software system into its algorithmically essential parts and the parts that manifest its design. Our approach is inspired by the notion of an algorithm and its asymptotic complexity. However, we do not propose a metric for measuring asymptotic complexity (efficiency). Instead, we use the one aspect of algorithms that drives up their asymptotic complexity – repetition, in the form of loops and recursions – to determine the algorithmically essential parts of a software system. Those parts of a system that are not algorithmically essential represent aspects of the design. A large fraction of inessential parts is indicative of “overdesign”, where a small fraction indicates a lack of modularization. We present a metric, relative essence, to quantify the fraction of the program that is algorithmically essential. We evaluate our approach by studying the algorithmic essence of a large corpus of software system, and by comparing the measured essence to an intuitive view of design “overhead”.
Unable to display preview. Download preview PDF.
- 1.Bacon, D.F., Sweeney, P.F.: Fast static analysis of c++ virtual function calls. In: OOPSLA 1996: Proceedings of the 11th ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications, pp. 324–341. ACM, New York (1996)Google Scholar
- 2.Blackburn, S.M., Garner, R., Hoffman, C., Khan, A.M., McKinley, K.S., Bentzur, R., Diwan, A., Feinberg, D., Frampton, D., Guyer, S.Z., Hirzel, M., Hosking, A., Jump, M., Lee, H., Moss, J.E.B., Phansalkar, A., Stefanović, D., VanDrunen, T., von Dincklage, D., Wiedermann, B.: The DaCapo benchmarks: Java benchmarking development and analysis. In: OOPSLA 2006: Proceedings of the 21st annual ACM SIGPLAN conference on Object-Oriented Programing, Systems, Languages, and Applications, oct 2006, pp. 169–190. ACM Press, New York (2006)CrossRefGoogle Scholar
- 3.Brooks Jr., F.P.: The mythical man-month. (anniversary ed.)Addison-Wesley Longman Publishing Co., Inc., Boston (1995)Google Scholar
- 12.ObjectWeb. ASM. Web pages at, http://asm.objectweb.org/
- 16.Skiena, S.S.: Compiler optimization by detecting recursive subprograms. In: ACM 1985: Proceedings of the 1985 ACM Annual Conference on The Range of computing: mid-80’s Perspective, pp. 403–411. ACM, New York (1985)Google Scholar
- 17.SPEC. SPECjvm2008 (Java Virtual Machine Benchmark), http://www.spec.org/jvm2008/
- 19.Steensgaard, B.: Sequentializing program dependence graphs for irreducible programs. Technical Report MSR-TR-93-14, Microsoft Research (October 1993)Google Scholar
- 20.Tempero, E., Anslow, C., Dietrich, J., Han, T., Li, J., Lumpe, M., Melton, H., Noble, J.: Qualitas corpus: A curated collection of java code for empirical studies. In: 2010 Asia Pacific Software Engineering Conference (APSEC 2010) (December 2010)Google Scholar
- 21.Zaparanuks, D., Hauswirth, M.: Characterizing the design and performance of interactive java applications. In: IEEE International Symposium on Performance Analysis of Systems Software (ISPASS 2010), March 28-30, pp. 23–32 (2010)Google Scholar