From the course: Software Design: Developing Effective Requirements
Requirement development vs. management
From the course: Software Design: Developing Effective Requirements
Requirement development vs. management
- [Instructor] Requirements drive the software development lifecycle. So to develop and manage requirements, many activities need to be performed that can be grouped into two categories, requirements development and requirements management. Requirements development involves eliciting the requirement specifying them into some form of document or a model, analyzing them, and then validating them with the customer whether you got them right. Requirements management on the other hand is about figuring out which requirement to develop first, that is prioritize, how long it will take to develop them, that is estimate, when or in which iteration or sprint they will be taken up, that is schedule, and then track their progress as you follow them through the project lifecycle. Now all these activities need to be done no matter which software development methodology you have chosen for your project. What differs is how you do them or which techniques or tools you use. Let us take the example of how you would do this if you are following scrum methodology. The first step of prioritizing is nothing but creating your product backlog or a prioritized list of features to be developed over next several sprints. Requirements can be prioritized based on risk, business urgency, cost, or other such factors. Once you have prioritized them, you then pick a few requirements for the next sprint. That means you need to estimate the effort required for them. This combination of activities that is creating the product backlog with a prioritized list of requirements and coming up with the effort estimates for them is also called as grooming. For estimation, while there are conventional techniques such as calculating function points or creating work breakdown structure, scrum recommends the technique of planning poker, which we will discuss later in the course. Now let us assume that your team picks up top two highest priority requirements to be completed in the next sprint. You put these two requirements into the sprint backlog. Finally, you track the progress of delivering these requirements using the technique of burndown chart. There are other activities that come under the purview of requirement management. For example, establishing requirement traceability, version control, and change management. But we will focus just on these four in this course. Whether you are following scrum or any other methodology, as you carry out these activities you start creating some work items or artifacts. In scrum, you create user stories. In Unified Process, you create use case specifications. In scrum, you use burndown charts to track progress. In Kanban, you use Kanban board. While these artifacts can be created and managed in small projects without any specific software tools to manage and track them, as software projects get larger, more complex, and with distributed global teams, it becomes important to use certain platforms that offer tools and templates to create and maintain these artifacts. Gardner named such platforms as application development lifecycle management or ADLM tools, which it later renamed to Enterprise Agile Planning or EAP tools. In its recently published magic quadrant for EAP tools, it lists tools such as Agile Craft, Atlassian's Jira, and Microsoft's Azure Board as some of the industry leading products. These tools help you keep all your work items related to requirement management and development in one place and track them as they progress in the development lifecycle. Another kind of platform that those that offer templates, best practices, and guidelines. For example, Microsoft has Microsoft Solutions Framework. IBM offers Rational Unified Process as a process framework. It's rational method composer is a platform to create process libraries for projects following Rational Unified Process methodology. One such library was created by IBM in collaboration with Eclipse Foundation and is now available as an opensource framework, OpenUP. Some of these frameworks can be a good starting point for composing your own customized software development methodology and using some of the templates and best practices that may help your project.
Practice while you learn with exercise files
Download the files the instructor uses to teach the course. Follow along and learn by watching, listening and practicing.