Software development life cycle is usually presented as circle of steps, such as Requirements & Analysis, Design & Architecture, Developing & Coding, Testing and Maintenance. Steps are connected with arrows in that order.
Are steps really done in that order?
Let’s look at Reversed software development life cycle. Let’s start with the first step when it is development of a new product started.
Step: Requirements & Analysis
When you start building a new product, you do not have the product yet. Imagine your product. What problem will it solve. How will it be used. How would the world look like, if product existed. You can define requirements and make analysis on imaginary product that does not exist.
In software development processes Test-driven development and Behavior-driven development tests are written before a production code is written. The product is tested before it even exists. The product can not exist if it does not pass all tests or if tests do not exists.
Step: Developing & Coding
You write the production code for tests.
Step: Design & Architecture
From Principles behind the Agile Manifesto: The best architectures, requirements, and designs emerge from self-organizing teams. It does not state when design or architecture emerge. Let’s say that the design and the architecture is implemented after some of the product is made. This means after some of the production code is written.
After all tests passed the product is prepared for a production use. This is the last step in the cycle.
Reversed software development life cycle
Reversed software development life cycle is not completely reversed Software development life cycle. Steps Maintenance and Requirements & Analysis are switched. In Reversed software development life cycle is the first step the same step as in Software development life cycle. It is same for the last step.