5.1 what is requirement analysis?



When someone says “requirements analysis” in the context of systems or software, think of it like this: you’re building something (say, a mobile app, a robot, or an airport baggage system), and before you touch a tool or write code, you have to understand what that thing is supposed to do. But you can’t just ask one person. You’ve got users, managers, technicians, investors, regulators—everyone has needs, and those needs can clash.


Your job in requirements analysis? Talk to them all. Extract their needs. Sort through contradictions. Turn confusion into clarity.


Now, doing this carefully and thoroughly has a formal name: requirements engineering. Same idea, more structure. Some people use softer terms like “gathering” or “capturing” requirements, but they’re all part of this same discipline. Just don’t be fooled—these aren’t synonyms for one single task. Gathering is about hearing people out. Analysis is about figuring out what’s actually needed. Documentation is about writing it down properly. Each of those is a different move.


And whatever requirement you end up writing down must pass a kind of “sanity check”: can we measure it? Can we test it? Does it actually relate to a business goal or opportunity? And is it written precisely enough so a designer or coder knows what to do with it?




Now, let’s talk about the concept of a software requirement. Imagine you’ve been asked to solve a real-world problem with software. Let’s say: reduce checkout time at a grocery store. The software might need to speed up scanning, or predict item categories, or suggest restocking. That “need to reduce checkout time” filters down into many specific properties the software must have. Each of those becomes a requirement.


Every requirement is really a must-have behavior or trait in the final software. It exists for a reason—usually to solve some real-world pain point. But life isn’t simple. Maybe you’re not just helping cashiers; you’re also helping managers track inventory, or IT people maintain uptime. Each group pushes its own goals into the mix. So requirements often come from many directions, and they get layered, messy, political even. Your role is to make sense of all that.


But again, every requirement you allow into the plan must be verifiable. Can we check if it’s fulfilled? This is crucial. If someone says, “Make it fast,” you can’t work with that. But if they say, “Make it handle 100 users in under 3 seconds,” now we’re talking.


Some of these requirements may need serious effort to verify. Like throughput for a call center—you might need to simulate calls just to prove the system can keep up. That’s time, tools, money. Which is why requirements aren’t just about behavior—they also come with attributes like priority (how badly do we need this?) and status (is it done yet?). And to manage all this across years of development, each requirement gets a unique ID. It’s a living contract.




Now let’s look at how requirements differ based on focus.


Say you’re building a course registration system for a college. Someone tells you: “Only students who meet prerequisites can register.” That’s a product requirement—it’s about what the software needs to do.


Then someone else says: “It must be built using Ada.” That’s not about the product—it’s a process requirement, because it restricts how you build the thing.


But sometimes, the product pushes you into a process. Like, maybe verifying performance means you need simulation tools. Boom—you’ve just inherited an implicit process constraint. Also, third parties—like safety regulators—might directly impose process rules. They don’t care what the app does; they care how it’s built.




Let’s switch to the nature of the requirement: functional or non-functional.


Functional is straightforward: What is the system doing? Is it formatting text? Accepting input? Logging in users?


But non-functional? That’s the environment the function lives in. How fast? How reliable? How secure? Non-functional requirements don’t describe what the system does, but how it behaves around those actions. They put limits. Constraints. Boundaries. Like: “It should crash no more than once every 10,000 uses.”


These non-functional demands often break down further: performance (speed), maintainability (ease of updates), safety, reliability, and more. They’re usually harder to measure—but absolutely vital.




Here’s a weird but important class: emergent properties.


Think of a car. You can describe the engine, the brakes, the wheels—but “safety” isn’t just in one part. It’s how they all work together. Same thing with software. Some requirements emerge from the interaction of components.


Take that call center example again. No single piece—neither the phone system, the app, nor the people—is responsible for throughput. But together? That’s where it comes from. So to satisfy these kinds of requirements, you have to look at the system architecture. Holistically.




Let’s now focus on precision. Vague requirements kill projects.


Saying, “This app should be reliable” is like saying, “This car should be nice.” Useless. But saying, “The app should have no more than one fatal error every billion hours of operation”? That’s a quantified requirement. It gives us a target. It tells architects what to plan for. It gives testers something to verify.


Quantification helps you design right. If the system needs to be lightning-fast or rock-solid reliable, that affects your tech choices early. You’ll need better tools, deeper testing, and probably more time and money.




And finally, let’s zoom out to the biggest level: the system.


A system isn’t just code. It’s everything that works together to deliver value: hardware, software, people, rules, networks, buildings. All of it.


So system requirements are big-picture. They describe what the whole thing needs to achieve. Then, once you know that, you extract the software requirements—just the part the code needs to handle.


Sometimes people call these top-level requirements “user requirements,” but that can be misleading. Not all requirements come from users. Some come from laws, or organizations, or physical limitations. So system requirements include user needs, yes—but they go way beyond that.




What is Requirements Analysis?



Requirements analysis is the process of figuring out what a new or modified system needs to do. It involves understanding the needs of various stakeholders (like users, businesses, or regulators), even if those needs sometimes conflict.


This step is critical in systems or software engineering because if you don’t understand what people want and need, you can’t build the right thing.





Other Names You Might Hear



  • Requirements engineering – a more formal term.
  • Requirements gathering or requirements capture – informal ways to say it.
  • Requirements specification – usually refers to writing the requirements down.
  • Requirements analysis – specifically refers to understanding and analyzing the requirements.






What is a Software Requirement?



At its core, a software requirement is something the software must do or a condition it must meet. For example:


  • Automating a task
  • Controlling a machine
  • Supporting a business process



Because the real world is complex, the requirements often reflect a mix of needs from different people and systems.





Key Qualities of Good Requirements



  • Measurable
  • Testable
  • Related to actual business needs
  • Detailed enough for designers and developers



If you can’t test a requirement, you can’t confirm it’s working.





Product vs Process Requirements



  • Product requirements are about what the software should do (e.g., “verify prerequisites before course registration”).
  • Process requirements are about how the software should be built (e.g., “written in Ada”).



Sometimes, a product requirement can lead to an implicit process requirement (e.g., needing simulation tools to test performance).





Functional vs Non-Functional Requirements



  • Functional requirements: What the software should do (e.g., calculate totals, send emails).
  • Non-functional requirements: Constraints or qualities (e.g., speed, reliability, security).



Example:


  • Functional: “The system shall allow users to reset their password.”
  • Non-functional: “The system shall respond to login attempts within 2 seconds.”






Emergent Properties



Some behaviors or requirements emerge only when components work together.

Example: Call center throughput depends on the software, phone system, and human operators—all working together.





Quantifiable Requirements



Avoid vague terms like “user-friendly.” Instead, write things quantitatively:


  • Bad: “System should be fast.”
  • Good: “System shall respond within 1 second 95% of the time.”






System Requirements vs Software Requirements



  • System: All parts working together (hardware, software, people, processes).
  • Software: Just the software part, often derived from the overall system requirements.



Some call “system requirements” the user requirements, but this isn’t always accurate because system requirements can include needs from regulators or technical constraints too.








Comments