Wednesday, April 15, 2009

Requirements Management & Traceability

Requirements management and traceability has always been a pain in the Software Development Life Cycle (SDLC). Luckily, for majority of small and medium sized Software companies in Pakistan, this is not an issue, because they are way ahead in their SDLC right from the word go, and often found them selves in the middle of the development phase while skipping the initial ones with out much deliberation. Too smart… if it hurts, cut it out !

Through out my career, I’ve seen very few projects following proper requirements management processes. Why I said “projects” and not “companies”? because in some cases a company which follows standard procedures and practices in one project, resort to ad hoc processes (or no processes) on other projects. There can be a number of constraints involved which ultimately boils down to time and effort (and hence cost). Though, reluctance to “change” is also a major factor.

I’m not going to argue on how to strike a balance in different working environments and circumstances in this post (next time inshaAllah (God willing)). My intention here is to share a solution with you, which we recently brain stormed and which helps us to manage requirements effectively.

Motivation: Resolve to manage & track requirements properly
Project Type: Product
Size: Medium to Large
Duration: 5 years or more
First Cut: Within a year

Hierarchy of Artifacts:

  • Project/Product (PRJ/PRD) – namespace – text - 1
    • System Requirements (SYS) – details - text – 0*
      • Sub Requirements – system requirements – SYS – 0*
    • Sub systems or Modules (MOD) – namespace - text – 0*
      • Business Processes (BPR) – flowchart – image – 0*
        • User Interface Screens (SCR) – wireframes – image – 0*
          • Screen Elements (SCE) – details – image/text – 0*
            • Screen Validation Rules (SCV) – text – 0*
        • Business Rules (BZR) – details – text – 0*
        • Sub processes – business process – BPR – 0*

Example:

  • PRD-001 – Supply Chain Management System SCMS
    • SYS-001-001 – Cross Platform (details…)
      • SYS-001-001.001 – Database (details…)
      • SYS-001-001.002 – Cross Browser UI (details…)
      • SYS-001-001.003 – …
    • SYS-001-002 – Scalable (details…)
      • SYS-001-002.001 – Web Server (details…)
      • SYS-001-002.002 – Middleware (details…)
      • SYS-001-002.003 – DB Server (details…)
      • SYS-001-002.004 – …
    • SYS-001-003 – …
    • MOD-001-001 – Inventory
      • BPR-001-001-001 – Move Stock – flowchart Image
        • SCR-001-001-001-001 – Stock Out – wireframe image
          • SCE-001-001-001-001-001 – Source Location (details…)
            • SCV-001-001-001-001-001-001 – Mandatory
            • SCV-001-001-001-001-001-002 – …
          • SCE-001-001-001-001-002 – …
        • SCR-001-001-001-002 – …
        • BZR-001-001-001-001 – …
        • BZR-001-001-001-002 – …
      • BPR-001-001-002 – …
    • MOD-001-002 – …

Now, you can map these requirement artifacts to QA (Test Cases – TC), Dev (Source Code - SC) and Content (Manuals, Guides, Help - CNT) artifacts easily to have comprehensive Traceability Matrices.

PRD SYS TC SC CNT
         
         
PRD MOD BPR SCR SCE SCV TC SC CNT
                 
                 
PRD MOD BPR BZR TC SC CNT