Graceful Object‐Based Performance Evolution

Object-based design and development are thought to facilitate graceful evolution of functionality, and thus enhance the reusability of software components. They can also facilitate graceful performance evolution. The performance of a layered object-based component can be made tunable to meet changing needs by permitting clients to ‘plug in’ appropriate implementations for its constituent components through generic parameters. If the components and their constituents are carefully designed, then performance tuning is possible without direct modification to the internal details of the participating components, thus significantly lowering the cost for performance evolution. The contribution of this paper is to software practice. It explains how software engineers can build performance-tunable components using C ++ templates. It includes empirical results confirming that tuning produces expected performance improvements with minimal code change. The results are especially significant because they are scalable to arbitrarily large and heavily layered software components and subsystems.

[1]  Stuart H. Zweben,et al.  Reusable Software Components , 1991, Adv. Comput..

[2]  Murali Sitaraman,et al.  Recasting algorithms to encourage reuse , 1994, IEEE Software.

[3]  Dennis M. Volpano,et al.  The Transform - a New Language Construct , 1990, Struct. Program..

[4]  Bertrand Meyer,et al.  Reusability: The Case for Object-Oriented Design , 1987, IEEE Software.

[5]  Don S. Batory,et al.  Reengineering a complex application using a scalable data structure compiler , 1994, SIGSOFT '94.

[6]  B.W. Weide,et al.  The Effects of Layering and Encapsulation on Software Development Cost and Quality , 1995, IEEE Trans. Software Eng..

[7]  Jeannette M. Wing A specifier's introduction to formal methods , 1990, Computer.

[8]  Grady Booch,et al.  Object-oriented development , 1986, IEEE Transactions on Software Engineering.

[9]  Michael J. Vilot,et al.  Standard template library , 1996 .

[10]  Joseph Eugene Hollingsworth Software component design-for-reuse: a language-independent discipline applied to ADA , 1992 .

[11]  Murali Sitaraman A class of programming language mechanisms to facilitate multiple implementations of the same specification , 1992, Proceedings of the 1992 International Conference on Computer Languages.

[12]  Bruce W. Weide,et al.  Copying and Swapping: Influences on the Design of Reusable Software Components , 1991, IEEE Trans. Software Eng..

[13]  Murali Sitaraman Performance-Parameterized Reusable Software Components , 1992, Int. J. Softw. Eng. Knowl. Eng..

[14]  John V. Guttag,et al.  Using specialized procedures and specification-based analysis to reduce the runtime costs of modularity , 1994, SIGSOFT '94.

[15]  Murali Sitaraman,et al.  A Practical Performance Criterion for Object Interface Design , 1997, J. Object Oriented Program..

[16]  William F. Ogden,et al.  Modular Verification of Data Abstractions with Shared Realizations , 1994, IEEE Trans. Software Eng..

[17]  Kenneth E. Iverson,et al.  A programming language , 1899, AIEE-IRE '62 (Spring).

[18]  Bertrand Meyer,et al.  Reusable Software: The Base Object-Oriented Component Libraries , 1994 .