Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

step-09-functional.md 9.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. # Step 9: Functional Requirements Synthesis
  2. **Progress: Step 9 of 11** - Next: Non-Functional Requirements
  3. ## MANDATORY EXECUTION RULES (READ FIRST):
  4. - 🛑 NEVER generate content without user input
  5. - 📖 CRITICAL: ALWAYS read the complete step file before taking any action - partial understanding leads to incomplete decisions
  6. - 🔄 CRITICAL: When loading next step with 'C', ensure the entire file is read and understood before proceeding
  7. - ✅ ALWAYS treat this as collaborative discovery between PM peers
  8. - 📋 YOU ARE A FACILITATOR, not a content generator
  9. - 💬 FOCUS on creating comprehensive capability inventory for the product
  10. - 🎯 CRITICAL: This is THE CAPABILITY CONTRACT for all downstream work
  11. - ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
  12. - ✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`
  13. ## EXECUTION PROTOCOLS:
  14. - 🎯 Show your analysis before taking any action
  15. - ⚠️ Present A/P/C menu after generating functional requirements
  16. - 💾 ONLY save when user chooses C (Continue)
  17. - 📖 Update output file frontmatter, adding this step name to the end of the list of stepsCompleted
  18. - 🚫 FORBIDDEN to load next step until C is selected
  19. ## CONTEXT BOUNDARIES:
  20. - Current document and frontmatter from previous steps are available
  21. - ALL previous content (executive summary, success criteria, journeys, domain, innovation, project-type) must be referenced
  22. - No additional data files needed for this step
  23. - Focus on capabilities, not implementation details
  24. ## CRITICAL IMPORTANCE:
  25. **This section defines THE CAPABILITY CONTRACT for the entire product:**
  26. - UX designers will ONLY design what's listed here
  27. - Architects will ONLY support what's listed here
  28. - Epic breakdown will ONLY implement what's listed here
  29. - If a capability is missing from FRs, it will NOT exist in the final product
  30. ## FUNCTIONAL REQUIREMENTS SYNTHESIS SEQUENCE:
  31. ### 1. Understand FR Purpose and Usage
  32. Start by explaining the critical role of functional requirements:
  33. **Purpose:**
  34. FRs define WHAT capabilities the product must have. They are the complete inventory of user-facing and system capabilities that deliver the product vision.
  35. **Critical Properties:**
  36. ✅ Each FR is a testable capability
  37. ✅ Each FR is implementation-agnostic (could be built many ways)
  38. ✅ Each FR specifies WHO and WHAT, not HOW
  39. ✅ No UI details, no performance numbers, no technology choices
  40. ✅ Comprehensive coverage of capability areas
  41. **How They Will Be Used:**
  42. 1. UX Designer reads FRs → designs interactions for each capability
  43. 2. Architect reads FRs → designs systems to support each capability
  44. 3. PM reads FRs → creates epics and stories to implement each capability
  45. ### 2. Review Existing Content for Capability Extraction
  46. Systematically review all previous sections to extract capabilities:
  47. **Extract From:**
  48. - Executive Summary → Core product differentiator capabilities
  49. - Success Criteria → Success-enabling capabilities
  50. - User Journeys → Journey-revealed capabilities
  51. - Domain Requirements → Compliance and regulatory capabilities
  52. - Innovation Patterns → Innovative feature capabilities
  53. - Project-Type Requirements → Technical capability needs
  54. ### 3. Organize Requirements by Capability Area
  55. Group FRs by logical capability areas (NOT by technology or layer):
  56. **Good Grouping Examples:**
  57. - ✅ "User Management" (not "Authentication System")
  58. - ✅ "Content Discovery" (not "Search Algorithm")
  59. - ✅ "Team Collaboration" (not "WebSocket Infrastructure")
  60. **Target 5-8 Capability Areas** for typical projects.
  61. ### 4. Generate Comprehensive FR List
  62. Create complete functional requirements using this format:
  63. **Format:**
  64. - FR#: [Actor] can [capability] [context/constraint if needed]
  65. - Number sequentially (FR1, FR2, FR3...)
  66. - Aim for 20-50 FRs for typical projects
  67. **Altitude Check:**
  68. Each FR should answer "WHAT capability exists?" NOT "HOW it's implemented?"
  69. **Examples:**
  70. - ✅ "Users can customize appearance settings"
  71. - ❌ "Users can toggle light/dark theme with 3 font size options stored in LocalStorage"
  72. ### 5. Self-Validation Process
  73. Before presenting to user, validate the FR list:
  74. **Completeness Check:**
  75. 1. "Did I cover EVERY capability mentioned in the MVP scope section?"
  76. 2. "Did I include domain-specific requirements as FRs?"
  77. 3. "Did I cover the project-type specific needs?"
  78. 4. "Could a UX designer read ONLY the FRs and know what to design?"
  79. 5. "Could an Architect read ONLY the FRs and know what to support?"
  80. 6. "Are there any user actions or system behaviors we discussed that have no FR?"
  81. **Altitude Check:**
  82. 1. "Am I stating capabilities (WHAT) or implementation (HOW)?"
  83. 2. "Am I listing acceptance criteria or UI specifics?" (Remove if yes)
  84. 3. "Could this FR be implemented 5 different ways?" (Good - means it's not prescriptive)
  85. **Quality Check:**
  86. 1. "Is each FR clear enough that someone could test whether it exists?"
  87. 2. "Is each FR independent (not dependent on reading other FRs to understand)?"
  88. 3. "Did I avoid vague terms like 'good', 'fast', 'easy'?" (Use NFRs for quality attributes)
  89. ### 6. Generate Functional Requirements Content
  90. Prepare the content to append to the document:
  91. #### Content Structure:
  92. When saving to document, append these Level 2 and Level 3 sections:
  93. ```markdown
  94. ## Functional Requirements
  95. ### [Capability Area Name]
  96. - FR1: [Specific Actor] can [specific capability]
  97. - FR2: [Specific Actor] can [specific capability]
  98. - FR3: [Specific Actor] can [specific capability]
  99. ### [Another Capability Area]
  100. - FR4: [Specific Actor] can [specific capability]
  101. - FR5: [Specific Actor] can [specific capability]
  102. [Continue for all capability areas discovered in conversation]
  103. ```
  104. ### 7. Present MENU OPTIONS
  105. Present the functional requirements for review, then display menu:
  106. - Show synthesized functional requirements (using structure from step 6)
  107. - Emphasize this is the capability contract for all downstream work
  108. - Highlight that every feature must trace back to these requirements
  109. - Ask if they'd like to refine further, get other perspectives, or proceed
  110. - Present menu options naturally as part of conversation
  111. **What would you like to do?**"
  112. Display: "**Select:** [A] Advanced Elicitation [P] Party Mode [C] Continue to Non-Functional Requirements (Step 10 of 11)"
  113. #### Menu Handling Logic:
  114. - IF A: Invoke the `bmad-advanced-elicitation` skill with the current FR list, process the enhanced capability coverage that comes back, ask user if they accept the additions, if yes update content then redisplay menu, if no keep original content then redisplay menu
  115. - IF P: Invoke the `bmad-party-mode` skill with the current FR list, process the collaborative capability validation and additions, ask user if they accept the changes, if yes update content then redisplay menu, if no keep original content then redisplay menu
  116. - IF C: Append the final content to {outputFile}, update frontmatter by adding this step name to the end of the stepsCompleted array, then read fully and follow: ./step-10-nonfunctional.md
  117. - IF Any other: help user respond, then redisplay menu
  118. #### EXECUTION RULES:
  119. - ALWAYS halt and wait for user input after presenting menu
  120. - ONLY proceed to next step when user selects 'C'
  121. - After other menu items execution, return to this menu
  122. ## APPEND TO DOCUMENT:
  123. When user selects 'C', append the content directly to the document using the structure from step 6.
  124. ## SUCCESS METRICS:
  125. ✅ All previous discovery content synthesized into FRs
  126. ✅ FRs organized by capability areas (not technology)
  127. ✅ Each FR states WHAT capability exists, not HOW to implement
  128. ✅ Comprehensive coverage with 20-50 FRs typical
  129. ✅ Altitude validation ensures implementation-agnostic requirements
  130. ✅ Completeness check validates coverage of all discussed capabilities
  131. ✅ A/P/C menu presented and handled correctly
  132. ✅ Content properly appended to document when C selected
  133. ## FAILURE MODES:
  134. ❌ Missing capabilities from previous discovery sections
  135. ❌ Organizing FRs by technology instead of capability areas
  136. ❌ Including implementation details or UI specifics in FRs
  137. ❌ Not achieving comprehensive coverage of discussed capabilities
  138. ❌ Using vague terms instead of testable capabilities
  139. ❌ Not presenting A/P/C menu after content generation
  140. ❌ Appending content without user selecting 'C'
  141. ❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions
  142. ❌ **CRITICAL**: Proceeding with 'C' without fully reading and understanding the next step file
  143. ❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols
  144. ## CAPABILITY CONTRACT REMINDER:
  145. Emphasize to user: "This FR list is now binding. Any feature not listed here will not exist in the final product unless we explicitly add it. This is why it's critical to ensure completeness now."
  146. ## NEXT STEP:
  147. After user selects 'C' and content is saved to document, load ./step-10-nonfunctional.md to define non-functional requirements.
  148. Remember: Do NOT proceed to step-10 until user explicitly selects 'C' from the A/P/C menu and content is saved!