Focusing on Value
Actual system use is the basis for determining value.
This is one of a series of blogs connecting the principles described in the Use Case 2.0 eBook to agile legacy modernization. The principles are:
- Keep it simple by telling stories
- Understand the big picture
- Focus on value
- Build the system in slices
- Deliver the system in increments
- Adapt to meet the team’s needs
Agile use case modeling for legacy modernization tries to retain essential business functionality, and not start from scratch. Use case technology is a means of focusing on the existing value of the legacy application and adding value, Principle #3 of Use Case 2.0.
User goals and the associated stories are the mechanism for estimating, prioritizing and tracking functionality. They are the basis for use cases slices and the associated work items. In other words, prioritized functionality is connected to project work items. Focusing on the stories that provide value is a natural way to prioritize work items.
User goals are based on current use of the system, which may deviate from the intended use, back when the legacy application was first written. The primary goals provide the main flows. “… start with the simplest possible way to achieve the goal.” [1] For system re-architecture it is important to identify up front the most valuable system functions. To avoid waterfall development, make these valuable stories the basis for re-architecture. The alternative ways of achieving the user goal will provide the alternative flows and may receive lower priority.
Legacy modernization is clearly not about re-creating obsolete functionality or dragging dead code into the re-architected application. Understanding the functional model is an important basis for knowing what is current and what has no value for the user. The goal is not to create a user manual for the legacy application, but to understand current, key capabilities. Modernization is thus an opportunity to manage scope and focus on the most direct route for reaching user goals.
The use case model can be used to identify important new user goals and the associated stories. The use case model and underlying details provide scope control and iteration planning. Depending the scope of new functionality, it may be necessary to identify legacy baseline functionality and identify new functionality separately in the model. Use case modeling provides techniques differentiating current vs. new functionality. There are several different possible approaches, e.g. use of the extends association use case model versioning, etc.
As we will see with use case slices (Principle #4). it is necessary to connect stories to the legacy code. Mapping use cases flows to specific parts of the code may require an automated solution. It can be significant if portions of code are not exercised via the identified functions.
- [1] http://www.ivarjacobson.com/Use_Case2.0_ebook/, page 7 ↩















