This Article 
 Bibliographic References 
 Add to: 
Using Genetic Search for Reverse Engineering of Parametric Behavior Models for Performance Prediction
November/December 2010 (vol. 36 no. 6)
pp. 865-877
Klaus Krogmann, Karlsruhe Institute of Technology (KIT), Karlsruhe
Michael Kuperberg, Karlsruhe Institute of Technology (KIT), Karlsruhe
Ralf Reussner, Karlsruhe Institute of Technology (KIT), Karlsruhe
In component-based software engineering, existing components are often reused in new applications. Correspondingly, the response time of an entire component-based application can be predicted from the execution durations of individual component services. These execution durations depend on the runtime behavior of a component which itself is influenced by three factors: the execution platform, the usage profile, and the component wiring. To cover all relevant combinations of these influencing factors, conventional prediction of response times requires repeated deployment and measurements of component services for all such combinations, incurring a substantial effort. This paper presents a novel comprehensive approach for reverse engineering and performance prediction of components. In it, genetic programming is utilized for reconstructing a behavior model from monitoring data, runtime bytecode counts, and static bytecode analysis. The resulting behavior model is parameterized over all three performance-influencing factors, which are specified separately. This results in significantly fewer measurements: The behavior model is reconstructed only once per component service, and one application-independent bytecode benchmark run is sufficient to characterize an execution platform. To predict the execution durations for a concrete platform, our approach combines the behavior model with platform-specific benchmarking results. We validate our approach by predicting the performance of a file sharing application.

[1] E. Albert, P. Arenas, S. Genaim, G. Puebla, and D. Zanardini, "Experiments in Cost Analysis of Java Bytecode," Electronic Notes in Theoretical Computer Science, vol. 190, no. 1, pp. 67-83, 2007.
[2] S. Becker, J. Happe, and H. Koziolek, "Putting Components Into Context—Supporting QoS-Predictions with an Explicit Context Model," Proc. Workshop Component Oriented Programming, R. Reussner, C. Szyperski, and W. Weck, eds., June 2006.
[3] S. Becker, H. Koziolek, and R. Reussner, "The Palladio Component Model for Model-Driven Performance Prediction," J. Systems and Software, vol. 82, pp. 3-22, 2009.
[4] A. Bertolino and R. Mirandola, "CB-SPE Tool: Putting Component-Based Performance Engineering into Practice," Proc. Seventh Int'l Symp. Component-Based Software Eng., I. Crnkovic, J.A. Stafford, H.W. Schmidt, and K.C. Wallnau, eds., pp. 233-248, 2004.
[5] W. Binder and J. Hulaas, "Flexible and Efficient Measurement of Dynamic Bytecode Metrics," Proc. Fifth Int'l Conf. Generative Programming and Component Eng., pp. 171-180, 2006.
[6] W. Binder and J. Hulaas, "Using Bytecode Instruction Counting as Portable CPU Consumption Metric," Electronic Notes in Theoretical Computer Science, vol. 153, no. 2, pp. 57-77, 2006.
[7] E. Bondarev, P. de With, M. Chaudron, and J. Musken, "Modelling of Input-Parameter Dependency for Performance Predictions of Component-Based Embedded Systems," Proc. 31st EUROMICRO Conf. Software Eng. and Advanced Applications, 2005.
[8] L.C. Briand, Y. Labiche, and J. Leduc, "Toward the Reverse Engineering of UML Sequence Diagrams for Distributed Java Software," IEEE Trans. Software Eng., vol. 32, no. 9, pp. 642-663, Sept. 2006.
[9] E. Bruneton, R. Lenglet, and T. Coupaye, "ASM: A Code Manipulation Tool to Implement Adaptable Systems," Adaptable and Extensible Component Systems, 2002.
[10] C. Cadar, D. Dunbar, and D. Engler, "KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs," Proc. Eighth USENIX Symp. Operating Systems Design and Implementation, Dec. 2008.
[11] M. Courtois and C.M. Woodside, "Using Regression Splines for Software Performance Analysis," Proc. Second Int'l Workshop Software and Performance, pp. 105-114, Sept. 2000.
[12] N. Cristianini and J. Shawe-Taylor, An Introduction to Support Vector Machines and Other Kernel-Based Learning Methods. Cambridge Univ. Press, 2000.
[13] J. Donnell, "Java Performance Profiling Using the VTune Performance Analyzer," 2004.
[14] D. Doval, S. Mancoridis, and B.S. Mitchell, "Automatic Clustering of Software Systems Using a Genetic Algorithm," Proc. Conf. Software Technology and Eng. Practice, pp. 73-81, 1999.
[15] M.D. Ernst et al., "The Daikon System for Dynamic Detection of Likely Invariants," Science of Computer Programming, vol. 69, nos. 1-3, pp. 35-45, Dec. 2007.
[16] J.H. Friedman, "Multivariate Adaptive Regression Splines," The Annals of Statistics, vol. 19, no. 1, pp. 1-141, 1991.
[17] G.H. Golub, M. Heath, and G. Wahba, "Generalized Cross-Validation as a Method for Choosing a Good Ridge Parameter," Technometrics, vol. 21, pp. 215-223, May 1979.
[18] M. Harman, "The Current State and Future of Search Based Software Engineering," Proc. Future of Software Eng., pp. 342-357, May 2007.
[19] C. Herder and J.J. Dujmovic, "Frequency Analysis and Timing of Java Bytecodes," Technical Report SFSU-CS-TR-00.02, Computer Science Dept., San Francisco State Univ., 2000.
[20] C.E. Hrischuk, C.M. Woodside, and J.A. Rolia, "Trace-Based Load Characterization for Generating Performance Software Models," IEEE Trans. Software Eng., vol. 25, no. 1, pp. 122-135, Jan./Feb. 1999.
[21] E.Y.-S. Hu, A.J. Wellings, and G. Bernat, "Deriving Java Virtual Machine Timing Models for Portable Worst-Case Execution Time Analysis," Proc. OTM Workshops, On The Move to Meaningful Internet Systems, R. Meersman and Z. Tari, eds., pp. 411-424, 2003.
[22] T. Israr, M. Woodside, and G. Franks, "Interaction Tree Algorithms to Extract Effective Architecture and Layered Performance Models from Traces," J. Systems and Software, vol. 80, no. 4, pp. 474-492, Apr. 2007.
[23] T. Kappler, H. Koziolek, K. Krogmann, and R.H. Reussner, "Towards Automatic Construction of Reusable Prediction Models for Component-Based Performance Engineering," Proc. Software Eng., pp. 140-154, Feb. 2008.
[24] J.R. Koza, Genetic Programming—On the Programming of Computers by Means of Natural Selection, third ed., MIT Press, 1993.
[25] K. Krogmann and R.H. Reussner, "Palladio: Prediction of Performance Properties," The Common Component Modeling Example, pp. 297-326, Springer-Verlag, 2008.
[26] M. Kuperberg and S. Becker, "Predicting Software Component Performance: On the Relevance of Parameters for Benchmarking Bytecode and APIs," Proc. Workshop Component Oriented Programming, R. Reussner, C. Czyperski, and W. Weck, eds., July 2007.
[27] M. Kuperberg, K. Krogmann, and R. Reussner, "Performance Prediction for Black-Box Components using Reengineered Parametric Behaviour Models," Proc. 11th Int'l Symp. Component-Based Software Eng., pp. 48-63, Oct. 2008.
[28] M. Kuperberg, M. Krogmann, and R. Reussner, "ByCounter: Portable Runtime Counting of Bytecode Instructions and Method Invocations," Proc. Third Int'l Workshop Bytecode Semantics, Verification, Analysis and Transformation, 2008.
[29] J. Lambert and J.F. Power, "Platform Independent Timing of Java Virtual Machine Bytecode Instructions," Proc. Workshop Quantitative Aspects of Programming Languages, Mar. 2008.
[30] P. McMinn, "Search-Based Software Test Data Generation: A Survey," Software Testing, Verification, and Reliability, vol. 14, no. 2, pp. 105-156, June 2004.
[31] K. Meffert, "JGAP—Java Genetic Algorithms Package," http:/, 2008.
[32] M. Meyerhöfer and K. Meyer-Wegener, "Estimating Non-Functional Properties of Component-Based Software Based on Resource Consumption," Electronic Notes in Theoretical Computer Science, vol. 114, pp. 25-45, 2005.
[33] B.S. Mitchell, S. Mancoridis, and M. Traverso, "Search Based Reverse Engineering," Proc. 14th Int'l Conf. Software Eng. and Knowledge Eng., pp. 431-438, 2002.
[34] C.U. Smith, Performance Engineering of Software Systems. Addison-Wesley, 1990.
[35] C. Szyperski, D. Gruntz, and S. Murer, Component Software: Beyond Object-Oriented Programming, second ed., ACM Press and Addison-Wesley, 2002.
[36] M. Woodside, D.C. Petriu, H. Shen, T. Israr, and J. Merseguer, "Performance by Unified Model Analysis (PUMA)," Proc. Fifth Int'l Workshop Software and Performance, pp. 1-12, 2005.
[37] X. Zhang and M. Seltzer, "HBench:Java: An Application-Specific Benchmarking Framework for Java Virtual Machines," Proc. ACM Conf. Java Grande, pp. 62-70, 2000.
[38] T. Zheng, C.M. Woodside, and M. Litoiu, "Performance Model Estimation and Tracking Using Optimal Filters," IEEE Trans. Software Eng., vol. 34, no. 3, pp. 391-406, May/June 2008.

Index Terms:
Genetic search, genetic programming, reverse engineering, performance prediction, bytecode benchmarking.
Klaus Krogmann, Michael Kuperberg, Ralf Reussner, "Using Genetic Search for Reverse Engineering of Parametric Behavior Models for Performance Prediction," IEEE Transactions on Software Engineering, vol. 36, no. 6, pp. 865-877, Nov.-Dec. 2010, doi:10.1109/TSE.2010.69
Usage of this product signifies your acceptance of the Terms of Use.