Michele Marchesi Copyright © 2003, Michele Marchesi. All rights reserved.
Modern software systems are perhaps the most sophisticated and complex systems ever designed and built by man. This huge complexity should be managed by following detailed methodologies for software development and maintenance. This is the field of software engineering, which strives to apply to software development the sound practices of traditional engineering, a method that has proved effective in developing very complex systems. The development is done through the phases of requirements elicitation, analysis, design, coding, testing, and deployment. The activities preceding coding may take more than 50% of the total cost and time of the project. They must be accurate enough to enable the system to be coded and released based only on analysis and design documents. These documents usually include many diagrams in the Unified Modeling Language (UML). In big systems, the analysis and design phases may last for years, which is too long, even if requirements are stable. This is called analysis paralysis. To avoid this, a strict waterfall approach to software development is seldom applied. More likely, a spiral approach [Boehm1988] is followed, in which the various phases are iterated several times, each time evaluating risks and performing the needed corrective actions. Even with the spiral model, however, each iteration may last several months, often more than a year. If system requirements are stable as in the big space and military projects of the '60s, when software engineering was born the traditional approach enables controlling the development process and obtaining systems that are well structured and documented. Nowadays, however, we live in the Internet Age. The technology and the market are changing at a speed unthinkable even a few years ago. Consequently, the requirements of software systems are very unstable. Traditional software engineering simply cannot release software systems on time and keep up with the continual requirement changes of the Internet Age. |