It has been known for years that although software development constantly strives towards constant improvement, it will never completely be 100% perfect. An application’s performance, in turn, can only be as good as in comparison to its performance objectives. Performance problems affect all types of systems, regardless of whether they are client/server or Web application systems. It is imperative to understand the factors affecting system performance before embarking on the task of handling them. Generally speaking, the factors affecting performance may be divided into two large categories: project management oriented and technical.
Project Management Factors Affecting Performance
In the modern Software Development Life Cycle (SDLC), the main phases are subject to time constraints in order to address ever growing competition. This causes the following project management issues to arise:
➤ Shorter coding time in development may lead to a lower quality product due to a lack of concentration on performance. ➤ Chances of missing information due to the rapid approach may disqualify the performance objectives. ➤ Inconsistent internal designs may be observed after product deployment, for example, too much cluttering of objects and sequence of screen navigation. ➤ Higher probability of violating coding standards, resulting in unoptimized code that may consume too many resources. ➤ Module reuse for future projects may not be possible due to the project specific design. ➤ Module may not be designed for scalability. ➤ System may collapse due to a sudden increase in user load.
Technical Factors Affecting Performance While project management related issues have great impact on the output, technical problems may severely affect the application’s overall performance. The problems may stem from the selection of the technology platform, which may be designed for a specific purpose and does not perform well under different conditions. Usually, however, the technical problems arise due to the developer’s negligence regarding performance. A common practice among many developers is not to optimize the code at the development stage. This code may unnecessarily utilize scarce system resources such as memory and processor. Such coding practice may lead to severe performance bottlenecks such as: ➤ memory leaks ➤ array bound errors ➤ inefficient buffering ➤ too many processing cycles ➤ larger number of HTTP transactions ➤ too many file transfers between memory and disk ➤ inefficient session state management ➤ thread contention due to maximum concurrent users ➤ poor architecture sizing for peak load ➤ inefficient SQL statements ➤ lack of proper indexing on the database tables ➤ inappropriate configuration of the servers
These problems are difficult to trace once the code is packaged for deployment and require special tools and methodologies.
This post is part of the Performance Monitoring Best Practices series - you may see all of the posts under PerfMonitoring tag.