Managing Software Requirements the Agile Way
eBook - ePub

Managing Software Requirements the Agile Way

Bridge the gap between software requirements and executable specifications to deliver successful projects

  1. 214 pages
  2. English
  3. ePUB (mobile friendly)
  4. Available on iOS & Android
eBook - ePub

Managing Software Requirements the Agile Way

Bridge the gap between software requirements and executable specifications to deliver successful projects

About this book

Learn how to deliver software that meets your clients' needs with the help of a structured, end-to-end methodology for managing software requirements and building suitable systems

Key Features

  • Learn how to communicate with a project's stakeholders to elicit software requirements
  • Deal every phase of the requirement life cycle with pragmatic methods and techniques
  • Manage the software development process and deliver verified requirements using Scrum and Kanban

Book Description

Difficulty in accurately capturing and managing requirements is the most common cause of software project failure. Learning how to analyze and model requirements and produce specifications that are connected to working code is the single most fundamental step that you can take toward project success. This book focuses on a delineated and structured methodology that will help you analyze requirements and write comprehensive, verifiable specifications.

You'll start by learning about the different entities in the requirements domain and how to discover them based on customer input. You'll then explore tried-and-tested methods such as impact mapping and behavior-driven development (BDD), along with new techniques such as D3 and feature-first development. This book takes you through the process of modeling customer requirements as impact maps and writing them as executable specifications. You'll also understand how to organize and prioritize project tasks using Agile frameworks, such as Kanban and Scrum, and verify specifications against the delivered code. Finally, you'll see how to start implementing the requirements management methodology in a real-life scenario.

By the end of this book, you'll be able to model and manage requirements to create executable specifications that will help you deliver successful software projects.

What you will learn

  • Kick-start the requirements-gathering and analysis process in your first meeting with the client
  • Accurately define system behavior as features
  • Model and describe requirement entities using Impact Mapping and BDD
  • Create a feature-based product backlog and use it to drive software development
  • Write verification code to turn features into executable specifications
  • Deliver the right software and respond to change using either Scrum or Kanban
  • Choose appropriate software tools to provide transparency and traceability to your clients

Who this book is for

This book is for software engineers, business analysts, product managers, project managers, and software project stakeholders looking to learn a variety of techniques and methodologies for collating accurate software requirements. A fundamental understanding of the software development life cycle (SDLC) is needed to get started with this book. Although not necessary, basic knowledge of the Agile philosophy and practices, such as Scrum, along with some programming experience will help you to get the most out of this book.

Trusted by 375,005 students

Access to over 1.5 million titles for a fair monthly price.

Study more efficiently using our study tools.

Information

Year
2020
Print ISBN
9781800206465
Edition
1
eBook ISBN
9781800204997

Chapter 1: The Requirements Domain

Now that we know what this book is about, we can begin our exploration of the requirements domain. A domain is an area of knowledge within which we can operate. As software professionals, we move between different domains daily: the coding domain, the testing domain, as well as client-specific domains such as banking, engineering, education, and so on. In every domain, we deal with specific domain entities that represent items of knowledge or interactions within the domain. In the coding domain, for instance, we deal with entities such as data structures, algorithms, functions, and so on. These entities reflect how we capture and utilize domain knowledge. The aim of this chapter is to introduce you to the requirements domain and its entities.
We will start by explaining the meaning of requirements and specifications, and discussing the requirement life cycle. We will then define the role of stakeholders and actors and talk about the goals they have in relation to our system. Lastly, we will consider the importance of bridging the gap between requirements and specifications and how this book will be approaching this problem. The main sections herein are as follows:
  • The requirements domain
  • Identifying stakeholders
  • Identifying goals
  • Goals, requirements, and specifications: a traveling analogy
  • Crossing from requirements to specifications
By the end of the chapter, you will know the difference between and the importance of requirements and specifications, as well as the stages requirements move through during a project's life cycle. You will also be able to create and validate stakeholder goals, understanding the importance of writing specifications, the pitfalls with current approaches, and how this book will be tackling this subject.

The nature of requirements and specifications

Requirements can arrive at any time in the project life cycle and from a variety of people: directors, CEOs, business owners, business analysts, project managers, product owners, and end users will all at some point require or expect something of the system we are building. Our job as system builders is to analyze, validate, scope, and classify these requirements. We start this process by mapping requirements into a requirements domain model. A domain model is a representation of all the important entities and their relationships within a specific domain.
So, for instance, in the pizza-making domain (one of my favorites), we would expect to find entities such as base, toppings, restaurant, oven, and delivery person, as well as the relationships between them. Knowing what these entities are and how they are connected allows us to create and deliver pizzas. Similarly, in the requirements domain, we'd expect to find entities and relationships that help us define, conceptualize, and deliver requirements. We'll be exploring requirements domain entities and activities throughout this book.
As with every business domain, it is imperative to ensure that the domain entities and terms used herein are clearly defined and understood. After all, ambiguity ruins productivity and one of the goals of this book is to actualize a productive requirements management methodology, so let's start at the beginning…

What is a requirement?

Simply put, a requirement is a stakeholder's expression of a need, wish, or desire with regard to the system being built. Requirements come in different shapes, forms, and sizes, and from various sources. They may be provided verbally, on paper, or as computer files. Requirements may be provided as follows:
  • Formal statements (for example, the system must provide a document searching facility)
  • Business rules (for example, accounts with monthly deposits larger than $1,000 receive 2% higher interest)
  • Examples (for example, Joe didn't have to pay for his coffee because it was his eleventh one in that store)
  • User stories (for example, as a loyalty card holder)
  • Business processes, that is, sets of tasks and activities that are executed in tandem in order to accomplish an organizational goal
  • Screen mock-ups or wireframes
  • Narratives or storyboards
  • Flow-charts, activity charts, or some other type of diagram
Requirements, on their own, are not really useful. In order to be able to implement and deliver requirements, we must give them context and scope and fit them within a user workflow. In other words, we need to turn them into specifications.

What are specifications?

A specification is a description of the system behavior required in order to fulfil or realize a requirement. So, if our requirement states that The system shall provide a document searching facility, a specification should tell us what the system will do to allow the user to search for documents. A specification is just a way of defining how we're going to realize a requirement. Nothing more, nothing less.
Requirements without specifications are pretty useless when it comes to delivering a working system. Unless we analyze and define the impacts (that is, expected behaviors) the requirements have on our system, we stand little chance of building a system that does what its intended users want it to do. Our coding prowess, software engineering skills, and technical expertise stand for nothing unless we can build the right system. To paraphrase an old adage, Most developers know how to build the system correctly. Not many know to build the correct system.
Having specifications is a great start towards building the correct system. Being able to analyze and map the requirements into proper specifications is a major step towards ensuring we will be building the system that our stakeholders need and want.

The requirements life cycle

Requirements management, like many other software engineering disciplines, consists of distinct stages, as illustrated in the following diagram:
Fig. 1.1 – Requirements life cycle stages
Fig. 1.1 – Requirements life cycle stages
Let's take a closer look at what each stage involves:
  • Elicitation: The collection of requirements, which can be done in many different ways.
  • Validation: Ensuring that the requirements fulfill a realistic and useful business need.
  • Modeling: Having a structured and consistent way to describe and store requirements.
  • Specification: This is where we translate the requirements into concrete and clear system behaviors.
  • Documentation: It should go without saying that requirements must be well described, detailed, and documented.
  • Tracing: Knowing which requirements affect system behaviors and which behaviors are necessitated by specific requirements.
  • Classification: Requirements can be classified according to the area of the system they affect, their complexity level, their risk level, and many other factors.
  • Prioritization: This is usually done according to impact and precedence.
  • Verification: Ensuring that our system functions in a way that fulfills the requirements.
  • Change Management: Dealing with changes to requirements.
Any and all of these stages may and do occur repeatedly throughout a software project's life cycle.
This book provides methods and techniques to address all of these stages. However, before we get into them, let's define and understand our requirement domain entities, starting with stakeholders.

Identifying stakeholders

A stakeholder is someone, or something, that derives value, benefits from, or influences our system. There is a stakeholder sub-set we call Actors. These are stakeholders who interact with our system, either directly or indirectly.
All actors are stakeholders, but a stakeholder is not necessarily an actor. This is because there is another sub-set of stakeholders we call non-acting stakeholders. These would usually be people like directors, business owners, enterprise architects, or senior managers. These usually are our business sponsors. They have a stake in the system, and they will probably make decisions that influence the system, but don't expect to see them sitting down in front of a screen and using the system any time soon. The following diagram illustrates the relationship between actors and non-acting stakeholders:
Fig. 1.2 – Stakeholders
Fig. 1.2 – Stakeholders
Actors may be further divided into two categories:
  • Primary actors interact with the system directly through a UI or API in order to achieve a specific goal.
  • Secondary actors are actors that the system needs to be assisted by. This makes it possible to achieve the primary actor's goal.
Secondary actors may or may not have goals that they need to reach by using the system. Primary actors always have a goal that they expect to reach by using the system. Let's take the example of an online loan system. The credit consumer using the system expects to get a loan. The system will provide the loan only if it receives a positive response from a credit reference agency, such as Experian or Equifax. The credit consumer is a primary actor as they interact directly with the system in order to accomplish a specific goal. The credit reference agency is a secondary actor as the system relies on it in order to achieve the primary actor's goal.
Important note
System developers are not actors. Developers are an intrinsic part of the system; they act as system proxies. Actors are always external to the system.
We will be talking more about discovering and defining actors in Chapter 5, Discovering Requirements.

Identifying goals

Our stakeholders will have their own goals and objectives for using or sponsoring the system we are building. Understanding these goals is critical to the successful elicitation, analysis, and modeling of requirements. Stakeholder goals usually fall within two categories, depending on whether the stakeholder is a non-acting stakeholder or an actor. Actors have goals related to the domain in which they operate, for e...

Table of contents

  1. Managing Software Requirements the Agile Way
  2. Why subscribe?
  3. Preface
  4. Chapter 1: The Requirements Domain
  5. Chapter 2: Impact Mapping and Behavior-Driven Development
  6. Chapter 3: Writing Fantastic Features with the Gherkin Language
  7. Chapter 4: Crafting Features Using Principles and Patterns
  8. Chapter 5: Discovering and Analyzing Requirements
  9. Chapter 6: Organizing Requirements
  10. Chapter 7: Feature-First Development
  11. Chapter 8: Creating Automated Verification Code
  12. Chapter 9: The Requirements Life Cycle
  13. Chapter 10: Use Case: The Camford University Paper Publishing System
  14. Other Books You May Enjoy

Frequently asked questions

Yes, you can cancel anytime from the Subscription tab in your account settings on the Perlego website. Your subscription will stay active until the end of your current billing period. Learn how to cancel your subscription
No, books cannot be downloaded as external files, such as PDFs, for use outside of Perlego. However, you can download books within the Perlego app for offline reading on mobile or tablet. Learn how to download books offline
Perlego offers two plans: Essential and Complete
  • Essential is ideal for learners and professionals who enjoy exploring a wide range of subjects. Access the Essential Library with 800,000+ trusted titles and best-sellers across business, personal growth, and the humanities. Includes unlimited reading time and Standard Read Aloud voice.
  • Complete: Perfect for advanced learners and researchers needing full, unrestricted access. Unlock 1.5M+ books across hundreds of subjects, including academic and specialized titles. The Complete Plan also includes advanced features like Premium Read Aloud and Research Assistant.
Both plans are available with monthly, semester, or annual billing cycles.
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1.5 million books across 990+ topics, we’ve got you covered! Learn about our mission
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more about Read Aloud
Yes! You can use the Perlego app on both iOS and Android devices to read anytime, anywhere — even offline. Perfect for commutes or when you’re on the go.
Please note we cannot support devices running on iOS 13 and Android 7 or earlier. Learn more about using the app
Yes, you can access Managing Software Requirements the Agile Way by Fred Heath in PDF and/or ePUB format, as well as other popular books in Computer Science & Project Management. We have over 1.5 million books available in our catalogue for you to explore.