❌ A common misstep here — one that’s not particularly critical and only considered a "mistake" from the perspective of a purist analyst working within a conventional, textbook framework (i.e., it may not even be a mistake for an analyst whose responsibilities shift the standard boundaries of their role) — is crossing the line between this level of requirements and the next.
But wait — you might point out — there is no “next” level, and you'd be right. So what we're actually talking about is the boundary between requirements and design specifics.
I’ve already referenced an article that explains this in detail, but here’s a summary: based on the requirements, experts from the development team will build the solution. So how do you know when you've done your job — when you've finished defining the requirements and further details fall into the domain of other experts? Put simply: once you find yourself venturing into a domain for which there is already a designated expert on the team, you're stepping beyond the requirements space and into design territory, which is outside your responsibility.
Here are a couple of anti-examples — situations where a seemingly appropriate requirement is actually incorrect in a certain context:
If the team has a UX specialist or a UI designer, the following requirement would be invalid:
❌ 1.1. When the user opens the system, the system must display a “Login” page where the user must enter a username and password to log in.
Why is this incorrect? As an analyst, you're operating in terms of “pages” and “enter” but the concept of the UI and the way users interact with the system is not your responsibility. By framing the requirement this way, you limit the specialist’s freedom to design the most appropriate interaction model.
A more appropriate formulation would be to abstract the requirement from the UI specifics and phrase it like this:
✅ 1.1. When the user opens the system, the system must provide the user with the ability to specify a username and password to authenticate with their account.
Similarly, if the team has someone responsible for system architecture or component design, and that person isn’t you, then the following examples are also problematic:
❌ When the user confirms the login, the system must check whether a exists in the database with the user's account.
❌ When the user confirms login on the frontend, the system must send a request to the backend to verify the account's validity.
At the requirements stage, we don’t yet know how the system will be implemented in terms of components. Sure, we can clarify those things with the team — but why should we, when it’s more correct to abstract the requirements from their implementation and avoid stepping outside our role?
You’re buying a microwave for yourself
This isn’t an information system, so data requirements don’t apply — unless the microwave’s software includes a component that needs to store information (like a history of heating cycles).
A mass-market product: a thermometer for extreme temperatures
Data:
1) Temperature Measurement
1.1. Measurement Date (required; format: DD/MM/YYYY)
1.2. Temperature (required; format: degrees Celsius, range: -100 to +100)
Software system: A web app for ordering office lunches
Data:
1) User Account
…
2) Daily Menu
…
3) Menu Item
…
4) Order
4.1. Order Author (required; reference to a user account)
4.2. Order Date (required; format: DD/MM/YYYY)
4.3. Dishes in the order (required; array of references to Menu Items)
4.4. Portion count per dish (required; array of positive integers)
4.5. Total cost (required; positive float with two decimal places)
You’re buying a microwave for yourself
Usability: The microwave handle must be designed to allow a full hand grip (preferably considering average hand size).
Performance: The microwave must accommodate containers at least 30 cm in diameter and 20 cm in height.
It must heat a dish weighing X to temperature Y at power level Z.
Availability/Reliability: The microwave must be able to operate continuously for up to 1 hour at maximum power.
Security: —
Installability: The microwave’s packaging must allow it to be unpacked by hand, without requiring any additional tools.
Safety: The microwave handle must not cause burns, regardless of the power setting or heating duration.
Efficiency: The microwave must consume no more than X units of electricity per Y time unit when operating at maximum power.
Portability: —
Reusability (for the manufacturer): The microwave handle must comply with standard X so that it can be used across the entire microwave product line.
Scalability: —
Modifiability (or more accurately, Maintainability): The heating element must comply with standard Z to simplify service and maintenance.
Verifiability: —
A mass-market product: a thermometer for extreme temperatures
Usability: The thermometer must have a 4×4 cm measurement initiation button so it can be operated while wearing protective gloves.
Performance: The thermometer must display the temperature within 3 seconds of starting the measurement.
Availability/Reliability: The thermometer must remain operational in ambient temperatures ranging from -100°C to +100°C.
Security: —
Installability: —
Safety: —
Efficiency: The thermometer must use no more than 1% of the battery charge per temperature measurement.
Portability: The thermometer must be equipped with a carrying strap.
Reusability: —
Scalability: The thermometer must support batteries of different capacities (standards X, Y, and Z).
Modifiability: —
Verifiability: —
Software system: A web app for ordering office lunches
Usability: The user must be able to access the menu within no more than 3 actions after opening the system's start page.
Performance: Page load times must not exceed 2 seconds with a local network bandwidth of ≥100 Mbps.
Availability/Reliability: The system must be available 100% of the time between 12:00 and 14:00 on working days.
Security: Only the creators of orders and users with the "Payroll Department" role must be able to view existing orders.
Installability: —
Safety: All dishes listed in the system must be labeled with potential allergy risks.
Efficiency: System data must occupy no more than 1 GB of hard disk space on the server.
Portability: —
Reusability: The authentication module must be designed as a reusable component for future corporate web applications of the client.
Scalability: The hosting environment must support up to 300 simultaneous users without requiring upgrades or migration.
Modifiability: Developers must be able to update dish prices without interrupting system operation.
Verifiability: The system must include a hidden option (not available to regular users) to test layout compatibility across various devices.
❌ Just as with functional requirements, it's better to abstract from implementation details (“how”) and focus on the value of the requirement to stakeholders (“what”). This distinction can be blurry, but in all of the following anti-examples, the logic is that it’s up to the development team experts — not the analyst — to determine whether the requirement’s proposed implementation is appropriate, especially when it falls outside the analyst’s responsibilities.
The ‘Menu’ page must be available as a first-level system menu item.
JavaScript scripts must load in under 1.5 seconds at ≥100 Mbps network speed, and image files must not exceed 1 MB in PNG format.
The system must be developed using the ultra-language ProgrammingScript2.0 to ensure maximum security against unauthorized access.
Dish prices must be stored in XML files, dynamically retrieved without requiring code recompilation.
You’re buying a microwave for yourself
✅ The interior coating of the microwave must be made of non-toxic material — this stems from national regulations in the country where the product will be manufactured.
A mass-market product: a thermometer for extreme temperatures
You could create a similar statement here that limits the manufacturing team’s freedom. Just don’t confuse constraints with other types of requirements — constraints refer to implementation specifics, not functional or non-functional characteristics (even if dictated by external sources like regulations). Constraints are about how to implement a requirement, not what to implement.
Software system: A web app for ordering office lunches
✅ The system must be implemented in Java — because the client insists on this due to their internal team's expertise.
✅ The code must use CamelCase notation — for example, if the client plans to submit the code for government audit, which requires that convention.
❌ The most common error here is confusing team-made implementation choices with constraints. Analysts often see examples that include “implemented in Java” and assume they need to list the entire tech stack. That’s incorrect.
The development team has its own internal documentation for these decisions. It’s not the analyst’s job to dictate implementation unless external factors impose a requirement. Analysts should only document constraints that are mandated from outside and that the team must follow.