- Smartphones such as the iPhone, the Samsung Galaxy
- Tablets such as the iPad, Google Nexus 7
- Electric cars such as the Tesla
Even software-only products exemplified by today's social networks, software-as-a-service (SaaS), etc., have, behind them, a huge cloud computing environment 2.
Now, why this elaborate preface? What methodology can be successfully employed in managing the development of such complex systems? A methodology that helps in conquering the system complexity. Hierarchy, it turns out, is a method to conquer the complexity of software. While the concept of hierarchy is not new, its effective utilization in managing software (or software-centric) projects tends to be.
In order to manage a development a software (or a software-centric) project effectively, a hierarchical set of requirements, at whose leaf nodes are the user stories 3,4, needs to be created. A user story, when fully implemented, i.e., done, is ready for end user consumption. User stories provide a unit of development, and measurement of the value, with a end user in mind.
Agile practitioners can use several concepts of hierarchy in managing the software development that suits their particular environment:
- The Difference Between Agile Themes, Epics and User Stories.
- Rally: Story Hierarchy
- Microsoft: Working with Linked Hierarchies (Tree of Work Items)