Few peoplewould disagreewith the fact that building a large-scale, high-performance,
and scalable software system is a complex task. This is evidenced by the magnitude of
required up-front and ongoing financial costs and personnel commonly seen at every
large software development organization. Seeking effective, efficient, and economical
approaches to developing large-scale software is of interest to the entire software
Regardless of its complexity and scope, every software development project is
driven by a few common factors:
† It is required to be on schedule because of urgency to be first to market in order
to gain a competitive edge.
† It is required to be within budget under the pressure of showing profit and return
on investment (ROI) as soon as possible.
† It is required to provide customers with all major functionalities at a minimum.
† And it is required to meet customer’s expectations on performance and scala-
bility to be usable.
While management is responsible for providing sufficient budget to cover per-
sonnel, development, test infrastructure, and so on, we, the technical staff (developers,
quality assurance engineers, and performance engineers), are accountable for deliver-
ing the software product under development on schedule and within budget while
meeting high standards on performance and scalability.
However, it’s not uncommon to see that performance and scalability are pushed
aside by the following higher priority activities:
† Analyzing system functionality requirements
† Deciding on the right architecture and design patterns
† Choosing appropriate programming paradigms and efficient development tools
† Starting coding and delivering early builds that meet major functionality require-
ments as soon as possible
† Implementing automated functionality test frameworks