66 G.T. Heineman et al. (Eds.): CBSE 2005, LNCS 3489, pp. 66-81, 2005. Springer-Verlag Berlin Heidelberg 2005 Evaluating Performance Attributes of Layered Software Architecture Vibhu Saujanya Sharma 1 , Pankaj Jalote 1 , Kishor S. Trivedi 2 1 Department of Computer Science and Engineering, Indian Institute of Technology Kanpur, Kanpur, INDIA, 208016 {Vsharma, Jalote}@cse.iitk.ac.in 2 Department of Electrical and Computer Engineering, Duke University, Durham, NC 27708, USA Kst@ee.duke.edu Abstract. The architecture of a software system is the highest level of abstrac- tion whereupon useful analysis of system properties is possible. Hence, per- formance analysis at this level can be useful for assessing whether a proposed architecture can meet the desired performance specifications and can help in making key architectural decisions. In this paper we propose an approach for performance evaluation of software systems following the layered architecture, which is a common architectural style for building software systems. Our ap- proach initially models the system as a Discrete Time Markov Chain, and ex- tracts parameters for constructing a closed Product Form Queueing Network model that is solved using the SHARPE software package. Our approach pre- dicts the throughput and the average response time of the system under varying workloads and also identifies bottlenecks in the system, suggesting possibilities for their removal. 1 Introduction Software architecture is an important phase in software lifecycle as it allows taking early design decisions about a system. Moreover it is also the earliest point in system development at which the system to be built could be analyzed [7], [9]. Analysis of a system at the architectural level enables the choice of the right architecture for the system under consideration, thus saving major potential modifications later in the development cycle or tuning the system after deployment. Out of the various attributes that could be assessed, performance attributes are most sought after in any software system. Performance is an umbrella term describing various aspects, such as responsiveness, throughput, etc. of the system. Assessing and optimizing these aspects is essential for the smooth and efficient operation of the software system. There have been many approaches [2],[3],[4],[5],[12] for perform- ance evaluation of software systems, the pioneering work being done by C.U. Smith, [2] which introduced the concept of Software Performance Engineering (SPE). Layered software architecture is a very prevalent software architectural style that is followed by almost all client-server and web based systems. Layered architecture