When engaging with customers we aim to understand their goals and the situation they are in currently. This is, admittedly, not something one would not expect from good consultants. Actually, it is imperative that one adapts to the present situation. On the other hand, we find that in many cases methods, tools and paradigms are used in the software industry without reflecting their appropriateness in the given situation. While everybody claims that there is no “one size fits all” approach to anything, this is what happens most of the times.
This is also true for the development of software systems throughout their life cycle. While software matures over time and enters different stages of its life cycle, companies more often than not try to deal with it the same way all along. In this series, I will look at different aspects of software development, processes and organization during the different stages of a generic software life cycle. In today’s first part, I will define the life cycle stages as a base for further discussions.
The Life Cycle of a Software Product
As shown in the image below, we differentiate between for phases in the life of a software product. At the start of every product we are facing the Idea and induction phase. For us this the time between the first idea and concepts for a new product until the induction of a minimum viable product to the market. We define the feature set delivered as “core features”. Additionally the key differentiators are defined and, at least in part, delivered at that point.
The second phase within the product life cycle is the growth phase. This phase is defined by the “fast” growth of the product regarding its feature set and (hopefully) customer base. In this phase we develop the “base features” of the product and refine their implementation. Base features are functionalities which are required and used by the vast majority of customers, while not being completely essential to the minimum viable product.
The third phase of the life cycle is called maturity phase. This phase is characterized by the fact that the implemented base feature set is considered complete and we are looking at the differentiation of features, based on specific usages of the product in certain markets. That is to say, that a new feature will deliver value to a lower percentage of the customer base, as quite a number of users do not face the specific use case. We call these functionalities “extension features”, as they extend the scope of the product into a certain market or additional field of operation. The maturity phase is also characterized by an increased demand for maintenance of the product.
The final phase is the sunset phase. In that phase, the maintenance of the product shall consume most of the resources assigned to the product. Under normal circumstances no new features shall be developed in that time. This phase is characterized by phase out preparations and helping the remaining customers to switch to the next product generation.
In the upcoming articles of this series we will look at the following aspects of the life cycle.
- Typical tasks and focus areas
- Development models and release cycles
- Drivers and organizational changes
- Optimization focus in different phases
Furthermore, we will pay special attention to the key indicators showing that a product has reached a new phase of its life cycle. This is especially important when we look at the point in time where we should start working on the next product generation