Conventional software projects focused on the sequential development of software artifacts: build the requirements, construct a design model traceable to the requirements, build an implementation traceable to the design model, and compile and test the implementation for deployment. This process can work for small-scale, purely custom developments in which the design representation, implementation representation, and deployment representation are closely aligned. For example, a single program that is intended to run on a single computer of a single type and is composed entirely of special-purpose custom components can be constructed with straightforward traceability among all the representations.
However, this approach doesn't work very well for most of today's software systems, in which the system complexity (in many dimensions) results in such numerous risks and subtle traceability relationships that you cannot efficiently use a simplistic sequential transformation. Most modern systems are composed of numerous components (some custom, some reused, some commercial products) intended to execute in a heterogeneous network of distributed platforms. They require a very different sequence of artifact evolution and a very different approach to traceability.
Over the past 20 years, the software industry has matured and has transitioned the management process to be iterative. Rather than being built sequentially, the artifacts are evolved together, and the constraints, the different levels of abstractions, and the degrees of freedom are balanced among competing alternatives. Recurring themes
Key Points a The artifacts of the process are organized into five sets: management, requirements, design, implementation, and deployment.
a The management artifacts capture the information necessary to synchronize stakeholder expectations.
a The requirements, design, implementation, and deployment artifacts are captured in rigorous notations that support automated analysis and browsing.
from successful projects demonstrate that the software artifacts evolve together with balanced levels of detail. Artifacts do not evolve in a one-way, linear progression from requirements to design to implementation to deployment. Choices about implementation and deployment affect the way in which the requirements are stated and the way in which the design proceeds. Information and decisions can flow in various ways among artifacts. The purpose of a good development process is to remove inappropriate, premature constraints on the design and to accommodate the real engineering constraints.
And what is the impact of iterative development on evolving artifacts? The primary difference from the conventional approach is that within each life-cycle phase, the workflow activities do not progress in a simple linear way, nor does artifact building proceed monotonically from one artifact to another. Instead, the focus of activities sweeps across artifacts repeatedly, incrementally enriching the entire system description and the process with the lessons learned in preserving balance across the breadth and depth of information.
Was this article helpful?
What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.