Evolutionary Rapid Development

Evolutionary Rapid Development

Evolutionary Rapid Development or ERD is a software engineering technique developed by the Software Productivity Consortium, a technology development and integration agent for the Information Technology Office of DARPA.

:Fundamental to ERD is the concept of composing software systems based on the reuse of components, the use of software templates and on an architectural template. Continuous evolution of system capabilities in rapid response to changing user needs and technology is highlighted by the evolvable architecture, representing a class of solutions. The process focuses on the use of small artisan-based teams integrating software and systems engineering disciplines working multiple, often parallel short-duration timeboxes with frequent customer interaction.

:Key to the success of the ERD-based projects is parallel exploratory analysis and development of features, infrastructures, and components with and adoption of leading edge technologies enabling the quick reaction to changes in technologies, the marketplace, or customer requirements.ref_num|9|9

ignificant Customer/End-User Participation

The vision for the system and how it could be used must evolve along with the users' understanding of their needs. As the system gains capability, the users become aware of additional needs and set updated priorities for the features to include in the system.

To elicit customer/user input, frequent scheduled and ad hoc/impromptu meetings with the stakeholders are held. Demonstrations of system capabilities are held to solicit feedback before design/implementation decisions are solidified. Frequent releases (e.g., beta) are made available for use to provide insight into how the system could better support user and customer needs. This assures that the system evolves to satisfy existing user needs.

Tools and techniques

The ERD process is structured to use demonstrated functionality rather than paper products as a way for stakeholders to communicate their needs and expectations. Central to this goal of rapid delivery is the use of the "time box" method. Time boxes are fixed periods of time in which specific tasks (e.g., developing a set of functionality) must be performed. Rather than allowing time to expand to satisfy some vague set of goals, the time is fixed (both in terms of calendar weeks and person-hours) and a set of goals is defined that realistically can be achieved within these constraints.

The ERD process is based on an aggressive strategy that systematically identifies and uses government, industry, or academia-provided components, tools, and technology as a basis for composing the system. The COTS-based approach for incorporating reuse into the development process leverages the use of templates and frameworks whenever possible; and in some cases may require that new templates be synthesized from existing components or example software.

The ERD process invests heavily in maintaining its human resources. Highly experienced individuals are cloistered together and provided liberal amounts of computer infrastructure, tooling, and access to technical literature and knowledge bases. The process includes a set of roles defining responsibilities within the development team. The roles establish a career path whereby junior individuals can participate in highly specialized programming roles and learn from more senior members through activities such as code reviews and testing using a test buddy approach.

The Process

Since it is an iterative strategy, evolutionary development allows for re-specifying the need and the technology as the user, business, and technology environments change. Unproductive iteration is controlled by an overriding vision, or concept, for the product and its use. Each iteration either further refines the vision or incrementally produces versions to satisfy all or part of the vision. Feedback between increments provides for both adjusting the vision and determining the features to implement across each iteration.

Analysis and planning for change is central to the ERD process. Cusp identification deals with identifying trends in the emergence and use of technology within an industry. This practice requires tracking the publishing and acceptance of standards, identifying changes in the marketplace for price/performance, observing the number of applications using a technology, and identifying trends within industry surveys. The objective is to position the development (e.g., the architecture) to anticipate and react to beneficial changes at the right time.

The design framework for the system is based on using existing published or de facto standards. The system is organized to allow for evolving a set of capabilities that includes considerations for performance, capacities, and functionality. The architecture is defined in terms of abstract interfaces that encapsulate the services and their implementation (e.g., COTS applications). The architecture serves as a template to be used for guiding development of more than a single instance of the system. It allows for multiple application components to be used to implement the services. A core set of functionality not likely to change is also identified and established.

To keep development from degenerating into a "random walk," long-range plans are defined to guide the iterations. These plans provide a vision for the overall system and set boundaries (e.g., constraints) for the project. Each iteration within the process is conducted in the context of these long-range plans. The time period that the long-range plan covers is extended as necessary. There is a continuum from concept through composition and deployment/enhancement. Decisions about the process or product are made from a life-cycle perspective.

Once an architecture is established, software is integrated and tested on a daily basis. This allows the team to assess progress objectively and identify potential problems quickly. Since small amounts of the system are integrated at one time, diagnosing and removing the defect is rapid. User demonstrations can be held at short notice since the system is generally ready to exercise at all times.


*Software Productivity Consortium. PPS 10-13.
# Software Productivity Consortium: Evolutionary Rapid Development. SPC document SPC-97057-CMC, version 01.00.04, June 1997. Herndon, Va. Page 6.

Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Look at other dictionaries:

  • development — noun 1 developing sth ADJECTIVE ▪ full ▪ School should encourage the full development of a student s talents. ▪ gradual ▪ rapid ▪ accelerated …   Collocations dictionary

  • Evolutionary history of plants — Plants have evolved through increasing levels of complexity, from the earliest algal mats, through bryophytes, lycopods, ferns and gymnosperms to the complex angiosperms of today. While the simple plants continue to thrive, especially in the… …   Wikipedia

  • Evolutionary history of life — Although evidence of early life is scarce and often difficult to interpret, it appears that life appeared on Earth relatively soon (on the geologic time scale) after the planet had cooled enough for liquid water to be present. The dominant theory …   Wikipedia

  • Plant evolutionary developmental biology — For a more ecological discussion on the evolution of plant morphology, refer to Evolutionary history of plants Evolutionary developmental biology (evo devo) refers to the study of developmental programs and patterns from an evolutionary… …   Wikipedia

  • Modern evolutionary synthesis — Evolutionary theory redirects here. For the sociological theory, see sociobiology. Part of a series on Evolutionary Biology …   Wikipedia

  • History of evolutionary thought — This article is about the history of evolutionary thought in biology. For the history of evolutionary thought in the social sciences, see Sociocultural evolution. For the history of religious discussions, see History of the creation evolution… …   Wikipedia

  • Child development — For other uses, see Child development (disambiguation). Exploring Child development refers to the biological and psychological and emotional changes that occur in human beings between birth and the end of adolescence, as the individual progresses …   Wikipedia

  • Software development methodology — A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system. Contents 1 History 1.1 As a noun 1.2 As a… …   Wikipedia

  • animal development — Introduction  the processes that lead eventually to the formation of a new animal starting from cells derived from one or more parent individuals. Development thus occurs following the process by which a new generation of organisms is produced by …   Universalium

  • Agile software development — poster Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self organizing, cross functional teams. It… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”