Technical Specification – CMMi

After having discussed in detail about the Requirement Development and Management, we are going to start with Technical Solution. But before we start with that, we would need to understand few terms:

What is Specification?

  • A software requirements specification (SRS) is a technical requirement document that describes in detail the externally visible characteristics of a software.
  • A SRS is not the same as a statement of user needs OR ‘Requirement docs’. The SRS says what the product will be.
  • The SRS can include Plain English text, structured text, diagrams, tables,rules, etc.
  • Parts of the SRS include:
    • Environmental requirements: OS, platform, interoperability, standards, etc.
    • Non-functional requirements: security, usability, efficiency, etc.
    • Feature specifications: precisely describe each feature
    • Use cases: examples of how a user accomplishes a goal by using one or more features

What is Design?

  • A design document explains the implementation that will satisfy the requirements of the SRS.
  • There are many aspects of the system that you need to design:
    • Division of the system into components
    • APIs and dependencies between components
    • Classes, attributes. operations, and relationships within each component
    • Data representation in the database or even files
    • Key algorithms and conditions that affect the overall design
  • Many notations are used in design
    • Plain English or structured English
    • Many types of UML diagrams
    • Pseudo-code, other diagrams as needed

What is the Difference Between SRS and Design?

  • The SRS describes precisely what the system will do.
    • It is based on customer needs
    • It defines stages for design and system testing
  • Customers should be able to review SRS and help validate it.
    • Validation of requirements means checking the written requirements against reality!
  • Design outlines how the system will work.
    • It is based on the SRS
    • It sets the stage for implementation as well as integration testing
  • Usually development team needs to review the design.

What Do They Have in Common?

  • Both SRS and Technical Design documents are technical documents that need to be precise.
    • At times the same notation is used for multiple purposes
  • Both need to be reviewed by stakeholders and defects must be corrected.

What Makes a Good Specification?

  • The 4-C’s of requirements states:
    • Clear: It should be understandable so that all stakeholders can participate in validation and developers know what to build and test
    • Concise: Short requirements are more understandable and maintainable. And, they often are more precise
    • Correct: Incorrect requirements will lead to major rework and reduced revenue.
    • Complete: Incomplete requirements also leads to major rework and last-minute schedule changes.
  • The specification should not bias the design or implementation.
    • Don’t get ahead of yourself, you will do design later, this is very important, and make sure you understand this!
    • Design details can make the SRS harder for non-technical stakeholders to understand
    • You may come up with better ideas for the design later but you should NEVER change the SRS unless your goals for the product change.

How do they do it – Requirement Management – CMMi

All right, so this is it for learning, and now is the time for all of us to understand and see the implementation in real world.

The theme is based on ‘How do you do it’?

Let’s get started, believe me this is going to be a fun ride and the knowledge you all will have by the end of 10 days goes beyond your imagination!

Requirement Management:

<<This comes under Basic & Advanced Maturity>>

Whenever you sit for the requirement management, make sure to follow the below mentioned rules:

Problem you should solve – Requirements are managed and inconsistencies with project plans and work products are identified!

Objective should be – Your objective here is to explicitly ask your requirement owners about the meaning of each and every requirement they come up with!

Please describe how project personnel develop and understanding of the requirement? Do you also interact with requirement providers?

And the evidence you need to support this would be:

  • Statement of Work
  • System & Software Requirements Specification (SRS)
  • Business & User Requirements Specification
  • Use Cases
  • Minutes of meetings

    Good to provide

  • Acceptance criteria as part of SoW
  • Review and approval records of SoW
  • Requirement Reviews
  • Approval of SRS/Use cases

Problem you should solve – Obtain commitment to the requirements from the project participants!

Objective should be – You should surely have the documented evidence!

How do you obtain the commitments to the requirements from the resources associated with projects? Do you review / approve the requirements?

And the evidence you need to support this would be:

  • Project plan with resources allocated
  • System & Software Requirements Specification (SRS)
  • Business & User Requirements Specification
  • Requirements change request logs, with commitment (e.g., emails) and estimates of impact (e.g: functionality impact, interface impact, design impact, validation impact etc…).

    Good to provide

  • Project Kick off MoM
  • Requirements Review and approval Records
  • Minutes of meeting
  • Effort estimation Reports

How the changes to the requirements are managed? Whenever a change happens how do you manage that change? How do you assess the changes?

You should have the answer with following artefacts

  • Change Request
  • Evidence of Project Plan Update
  • System & Software Requirements Specification (SRS) / Revision History of SRS
  • Review records of SRS, Use Cases
  • Requirements Traceability Matrix (RTM).
  • Revisions to work products resulting from changed requirements.

    Good to provide

  • Project Kick off MoM
  • Requirements Review and approval Records
  • Minutes of meeting
  • Effort estimation Reports

Much of requirements management is change management. Tracking the status of project change requests is an eye-opener: how many of them are open and how many closed? How many requests were approved and how many rejected? How much effort was spent implementing each approved change?

You should have answer of all these, and the above mentioned document should give you proper answers on these.

How do you maintain the traceability between your requirements, plan, and work products?

You should have the answer with following artefacts

  • Requirements Traceability Matrix (RTM) / Both Horizontal & Vertical traceability
  • System & Software Requirements Specification (SRS)
  • Checklist associated with RTM

    Good to provide

  • Email exchanges related to RTM review
  • SQA Audit/Internal Audit reports containing issues related to traceability among requirements
  • RTM Review Records

How do you identify the inconsistency between the project plan and the requirements that you have identified?

You should have the answer with following artifacts

  • Review and approval records of project plan and its associated plans
  • Documentation which identifies that there is inconsistency between the project plan / work product / requirements.
  • CR against the requirements
  • CCB meeting which identifies that this change has a resource available.

    Good to provide

  • Email exchanges related to RTM review
  • SQA Audit / Internal audit reports
  • RTM Review Records

This should be good for now…will come up with another process area which will be RD tomorrow 🙂 Cheers!