Safeguard
Security Guides•

How do you split must-have from nice-to-have security requirements?

Sort requirements into must, should and could using three tests: what breaks without it, who is affected, and whether you can verify it. A worked example.

Safeguard Security Team
6 min read

Sort each requirement by asking what breaks without it. If the answer is a blocked release, a failed audit or a missed environment, it is a must. If it saves time but has a workaround, it is a should. If it is pleasant but not needed this year, it is a could. Then test every must for verifiability.

The three buckets

BucketMeaningWhat a vendor gap does
MustWithout it the tool cannot be used hereDisqualifies the vendor
ShouldStrongly wanted, with a workaroundCosts points in scoring
CouldNice if free, not worth paying forBreaks ties only

This is the familiar MoSCoW method with the fourth bucket ("won't this time") dropped. Writing a short "not now" list is still a good idea, because it stops scope creep during demos.

Three tests for a must

  1. The break test. What stops working if this is missing? Name it. "We would not be able to scan our Gradle projects" is a must. "Dashboard themes" is not.
  2. The audience test. Who is affected? A requirement that only one engineer cares about is probably a should.
  3. The proof test. Can you verify it on your own code or from a document? A must you cannot verify is a wish. Rewrite it until you can check it, for example "detects the vulnerable version in our lockfile, in a pull request, within one working day of publication."

A worked example

Suppose a platform team of twelve wants dependency risk tooling.

Must

  • Reads lockfiles for the ecosystems in production.
  • Runs in pull requests and reports back in the review.
  • Exports a machine-readable bill of materials.
  • Supports single sign-on for the reviewers.

Should

  • Marks which vulnerable functions the code actually calls.
  • Opens fix pull requests that a human approves.
  • Maps findings to the audit framework the company uses.

Could

  • Custom report themes.
  • A mobile app.
  • Chat integrations beyond the one the team uses.

Notice how the musts are about fit and the shoulds are about efficiency. That pattern holds up well.

Common traps

  • Everything is a must. If the list has thirty musts, you have no list. Cap musts at about eight to twelve.
  • Musts copied from one vendor's sheet. Rewrite them in your own words, tied to your environment.
  • Musts nobody tests. Put the test next to the requirement in the same row.
  • Musts that change in week three. Freeze the list before the first demo and log any change with a reason.

Writing each must so it can be tested

A requirement is only a must if you can check it. Here are five weak musts and their testable rewrites.

WeakTestable
Good coverageReads lockfiles and manifests for the five ecosystems listed in our environment section, shown on one of our repos
Works with CIPosts a result into a pull request in our hosted CI within the time our reviewers will wait, shown during the trial
Easy to useA developer who has never seen the tool can find the reason for a finding and its fix in under five minutes, observed with two volunteers
SecureSupports single sign-on with our identity provider and records administrative actions in a log we can export
ScalesCompletes the first scan of our largest repository within the window we state, shown in the trial

Each rewrite names an object, a condition and a test.

Ranking shoulds with a simple vote

When the should list grows, use a quick vote to rank it. Give each panelist five dots to spread across the shoulds, with at most two on any item. Add the dots. The top three or four become scored items. The rest are tie-breakers. This takes ten minutes and avoids a long meeting.

Handling a must that no vendor meets

Sometimes every candidate fails one of your musts. That tells you either that the requirement is unusual or that it is a preference in disguise. Options include:

  1. Relax it to a should, with a written reason.
  2. Plan a workaround you can build yourself, and cost it.
  3. Keep the requirement and widen the search, perhaps to a different approach.

Do not quietly waive a must after the fact. Record the change and who approved it.

Handling a must that every vendor meets

A requirement that everyone passes does not help you choose. Keep it as a gate, and move your scoring weight to items that separate vendors. That is where your decision actually lives.

Review musts at the end

After the test, look back. Did any must turn out not to matter? Did you discover a new must that you had not listed, such as the way a tool handled monorepos? Update the template for next time. Over a few rounds, your requirements become a durable asset instead of a one-off document.

Try it yourself

Click through it at your own pace, or open it full screen. Watch how a pull request gate reports a finding, then decide whether "reports in the review" is a must or a should for your team.

Quick check

How many musts are reasonable?

About eight to twelve for most security tools. More than that usually means preferences have crept in.

Should a vendor that misses one must stay in the running?

No, by definition. If you would keep them anyway, the item was a should.

Who should approve the final must-have list?

The budget owner and the security lead, after the daily users have reviewed it. Freeze it before the first demo and log any later change.

When you reach scoring, Safeguard, whose GA capabilities include dependency scanning, SBOMs, reachability analysis, and policies and gates, can be checked against your musts like any other vendor. A free scan at https://gold.safeguard.sh/scan shows its output on your own repo.

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.