Definition/ Use |
There are a growing number of technological, social and economic trends that are shaping how a new generation of software systems are being developed that exploit the Internet and World Wide Web. These include the synchronize and stabilize techniques popularized by Microsoft and Netscape at the height of the fiercely competitive efforts to dominate the Web browser market of the mid 1990's /Cusumano, 1999/, /MacCornack, 2001/. They also include the development of open-source software systems that rely on a decentralized community of volunteer software systems that are incrementally enhanced, released, experienced, and debugged in an overall iterative and cyclic manner /DiBona, 1999/, /Fogel, 1999/, /Mockus, 2000/. The elapsed time of these incremental development life cycles on some projects may be measured in weeks, days, or hours! The centralized planning, management authority and coordination imposed by the traditional system life cycle model has been discarded in these efforts, replaced instead by a more organic, participatory, reputation-based, and community oriented engineering practice. Software engineering in the style of rapid iteration and incremental evolution is one that focuses on and celebrates the inevitability of constantly shifting system requirements, unanticipated situations of use and functional enhancement, and the need for developers to collaborate with one another, even when they have never met /Truex, 1999/. As such, we are likely to see more research and commercial development aimed at figuring out whether or how software process models can accommodate rapid iteration, incremental evolution, or synchronize and stabilize techniques whether applied to closed, centrally developed systems, or to open, de-centrally developed.
|