step-10-nonfunctional.md 11 KB


name: 'step-10-nonfunctional' description: 'Define quality attributes that matter for this specific product'

Path Definitions

workflow_path: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/prd'

File References

thisStepFile: '{workflow_path}/steps/step-10-nonfunctional.md' nextStepFile: '{workflow_path}/steps/step-11-complete.md' workflowFile: '{workflow_path}/workflow.md' outputFile: '{planning_artifacts}/prd.md'

Task References

advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'

partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'

Step 10: Non-Functional Requirements

Progress: Step 10 of 11 - Next: Complete PRD

MANDATORY EXECUTION RULES (READ FIRST):

  • 🛑 NEVER generate content without user input

  • 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions

  • 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding

  • ✅ ALWAYS treat this as collaborative discovery between PM peers

  • 📋 YOU ARE A FACILITATOR, not a content generator

  • 💬 FOCUS on quality attributes that matter for THIS specific product

  • 🎯 SELECTIVE: Only document NFRs that actually apply to the product

  • ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config {communication_language}

EXECUTION PROTOCOLS:

  • 🎯 Show your analysis before taking any action
  • ⚠️ Present A/P/C menu after generating NFR content
  • 💾 ONLY save when user chooses C (Continue)
  • 📖 Update frontmatter stepsCompleted: [1, 2, 3, 4, 5, 6, 7, 8, 9] before loading next step
  • 🚫 FORBIDDEN to load next step until C is selected

COLLABORATION MENUS (A/P/C):

This step will generate content and present choices:

  • A (Advanced Elicitation): Use discovery protocols to ensure comprehensive quality attributes
  • P (Party Mode): Bring technical perspectives to validate NFR completeness
  • C (Continue): Save the content to the document and proceed to final step

PROTOCOL INTEGRATION:

  • When 'A' selected: Execute {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
  • When 'P' selected: Execute {project-root}/_bmad/core/workflows/party-mode/workflow.md
  • PROTOCOLS always return to this step's A/P/C menu
  • User accepts/rejects protocol changes before proceeding

CONTEXT BOUNDARIES:

  • Current document and frontmatter from previous steps are available
  • Functional requirements already defined and will inform NFRs
  • Domain and project-type context will guide which NFRs matter
  • Focus on specific, measurable quality criteria

YOUR TASK:

Define non-functional requirements that specify quality attributes for the product, focusing only on what matters for THIS specific product.

NON-FUNCTIONAL REQUIREMENTS SEQUENCE:

1. Explain NFR Purpose and Scope

Start by clarifying what NFRs are and why we're selective:

NFR Purpose: NFRs define HOW WELL the system must perform, not WHAT it must do. They specify quality attributes like performance, security, scalability, etc.

Selective Approach: We only document NFRs that matter for THIS product. If a category doesn't apply, we skip it entirely. This prevents requirement bloat and focuses on what's actually important.

2. Assess Product Context for NFR Relevance

Evaluate which NFR categories matter based on product context:

Quick Assessment Questions:

  • Performance: Is there user-facing impact of speed?
  • Security: Are we handling sensitive data or payments?
  • Scalability: Do we expect rapid user growth?
  • Accessibility: Are we serving broad public audiences?
  • Integration: Do we need to connect with other systems?
  • Reliability: Would downtime cause significant problems?

3. Explore Relevant NFR Categories

For each relevant category, conduct targeted discovery:

Performance NFRs (If relevant):

"Let's talk about performance requirements for {{project_name}}.

Performance Questions:

  • What parts of the system need to be fast for users to be successful?
  • Are there specific response time expectations?
  • What happens if performance is slower than expected?
  • Are there concurrent user scenarios we need to support?"

Security NFRs (If relevant):

"Security is critical for products that handle sensitive information.

Security Questions:

  • What data needs to be protected?
  • Who should have access to what?
  • What are the security risks we need to mitigate?
  • Are there compliance requirements (GDPR, HIPAA, PCI-DSS)?"

Scalability NFRs (If relevant):

"Scalability matters if we expect growth or have variable demand.

Scalability Questions:

  • How many users do we expect initially? Long-term?
  • Are there seasonal or event-based traffic spikes?
  • What happens if we exceed our capacity?"
  • What growth scenarios should we plan for?"

Accessibility NFRs (If relevant):

"Accessibility ensures the product works for users with disabilities.

Accessibility Questions:

  • Are we serving users with visual, hearing, or motor impairments?
  • Are there legal accessibility requirements (WCAG, Section 508)?
  • What accessibility features are most important for our users?"

Integration NFRs (If relevant):

"Integration requirements matter for products that connect to other systems.

Integration Questions:

  • What external systems do we need to connect with?
  • Are there APIs or data formats we must support?
  • How reliable do these integrations need to be?"

4. Make NFRs Specific and Measurable

For each relevant NFR category, ensure criteria are testable:

From Vague to Specific:

  • NOT: "The system should be fast" → "User actions complete within 2 seconds"
  • NOT: "The system should be secure" → "All data is encrypted at rest and in transit"
  • NOT: "The system should scale" → "System supports 10x user growth with <10% performance degradation"

5. Generate NFR Content (Only Relevant Categories)

Prepare the content to append to the document:

Content Structure (Dynamic based on relevance):

When saving to document, append these Level 2 and Level 3 sections (only include sections that are relevant):

## Non-Functional Requirements

### Performance

[Performance requirements based on conversation - only include if relevant]

### Security

[Security requirements based on conversation - only include if relevant]

### Scalability

[Scalability requirements based on conversation - only include if relevant]

### Accessibility

[Accessibility requirements based on conversation - only include if relevant]

### Integration

[Integration requirements based on conversation - only include if relevant]

6. Present Content and Menu

Show the generated NFR content and present choices: "I've defined the non-functional requirements that specify how well {{project_name}} needs to perform. I've only included categories that actually matter for this product.

Here's what I'll add to the document:

[Show the complete NFR content from step 5]

Note: We've skipped categories that don't apply to avoid unnecessary requirements.

What would you like to do? [A] Advanced Elicitation - Let's ensure we haven't missed critical quality attributes [P] Party Mode - Bring technical perspectives to validate NFR specifications [C] Continue - Save this and move to Complete PRD (Step 11 of 11)"

7. Handle Menu Selection

If 'A' (Advanced Elicitation):

  • Execute {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current NFR content
  • Process the enhanced quality attribute insights that come back
  • Ask user: "Accept these improvements to the non-functional requirements? (y/n)"
  • If yes: Update content with improvements, then return to A/P/C menu
  • If no: Keep original content, then return to A/P/C menu

If 'P' (Party Mode):

  • Execute {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current NFR list
  • Process the collaborative technical validation and additions
  • Ask user: "Accept these changes to the non-functional requirements? (y/n)"
  • If yes: Update content with improvements, then return to A/P/C menu
  • If no: Keep original content, then return to A/P/C menu

If 'C' (Continue):

  • Append the final content to {outputFile}
  • Update frontmatter: add this step name to the end of the steps completed array
  • Load {project-root}/_bmad/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md

APPEND TO DOCUMENT:

When user selects 'C', append the content directly to the document using the structure from step 5.

SUCCESS METRICS:

✅ Only relevant NFR categories documented (no requirement bloat) ✅ Each NFR is specific and measurable ✅ NFRs connected to actual user needs and business context ✅ Vague requirements converted to testable criteria ✅ Domain-specific compliance requirements included if relevant ✅ A/P/C menu presented and handled correctly ✅ Content properly appended to document when C selected

FAILURE MODES:

❌ Documenting NFR categories that don't apply to the product ❌ Leaving requirements vague and unmeasurable ❌ Not connecting NFRs to actual user or business needs ❌ Missing domain-specific compliance requirements ❌ Creating overly prescriptive technical requirements ❌ Not presenting A/P/C menu after content generation ❌ Appending content without user selecting 'C'

CRITICAL: Reading only partial step file - leads to incomplete understanding and poor decisions ❌ CRITICAL: Proceeding with 'C' without fully reading and understanding the next step file ❌ CRITICAL: Making decisions without complete understanding of step requirements and protocols

NFR CATEGORY GUIDANCE:

Include Performance When:

  • User-facing response times impact success
  • Real-time interactions are critical
  • Performance is a competitive differentiator

Include Security When:

  • Handling sensitive user data
  • Processing payments or financial information
  • Subject to compliance regulations
  • Protecting intellectual property

Include Scalability When:

  • Expecting rapid user growth
  • Handling variable traffic patterns
  • Supporting enterprise-scale usage
  • Planning for market expansion

Include Accessibility When:

  • Serving broad public audiences
  • Subject to accessibility regulations
  • Targeting users with disabilities
  • B2B customers with accessibility requirements

NEXT STEP:

After user selects 'C' and content is saved to document, load {project-root}/_bmad/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md to finalize the PRD and complete the workflow.

Remember: Do NOT proceed to step-11 until user explicitly selects 'C' from the A/P/C menu and content is saved!