Performance is always a crucial issue for software products, especially for real-time systems such as telecommunication systems and automatic control systems. During my previous work and study, I investigated several software systems and architectures, such as CORBA, mobile agent, and DFC (Distributed Feature Composition). I found that software designer often sacrifice performance in order to achieve other quality requirements such as maintainability, scalability, reliability, flexibility, etc. They are usually tradeoffs.
Software architecture is the high level abstraction of a software system. Decisions on it should be made in the early stage of design, and it has impact on software quality requirements mentioned above. Therefore, it is necessary to have quantitative prediction for the adopted architecture regarding these requirements.
Software designer usually use mature architectural patterns to speed up the designing and avoid traps. There are many popular software patterns such as Client/Server pattern, Pipe & Filter pattern, Layered pattern, Blackboard pattern, etc. Since evaluation of a software pattern answers a set of questions concerning a problem domain, it is more important than evaluation of the architecture of a specific application.
UML and LQN (Layered Queuing Network) are two efficient tools for software performance research. UML provides standardized description for software architecture design. We can use LQN model to represent the design and solve it by simulation or mathematical analysis. By this way, performance characteristics can be obtained at early stage of design instead of measured after complete implementation. These characteristics can help us to locate hardware or software bottleneck and to optimize the architecture design. Optimization can be achieved by multi-threading bottleneck component, adding extra resources such as processors or buffers, minimize service time, or modifying component composition, etc. UML profiles for schedulability, performance and time specification has adopted by OMG. It provides advantages in deriving performance models that could be used to make quantitative prediction regarding these characteristics and, in turn, facilitate optimization in software design.
I would like to investigate into this area during my Ph.D. research, to explore issues concern software architecture design, analysis, and optimization, and try to find out generic principles. A paper represented my current progress has been submitted to Performance TOOLS 2003. Further study will focus on performance evaluation results interpreting and feedback to improvement reasoning.