Knowledge Sharing Pattern Language


Pattern

KSP06
Discovered Bones

Dimensions and Knowledge Flow:
 


I3
Knowledge Sharing
in Customer Supplier Relationship

 


Requirements
L1 Project Establishment
 

Project
Manager  

<----> 

Customer


   
Problem Customer and the supplier not having common understanding of the requirements for the project.
 
Initial Context A new project is planned or about to be started or a separate pre-study including requirements definition is about to start. A preliminary understanding of project objectives exist (Shared Understanding, KSP05).
 
Roles A Project Manager or a Requirements Manager with the project team define requirements for the project together with the customer representatives.
 
Forces Requirements defined and shared with the customer are the representation of the customer and other stakeholders' need. The set of defined requirements guide the implementation of a project and act as a "skeleton" for the project linking different phases and products together. Or, like Clements and Northrop (2002, p. 110) say: "Requirements Engineering is not just an upfront activity but rather has ramifications over the entire development and maintenance effort."

In the establishment phase of a project the requirements for the project must be well established and shared between the customer and the supplier. Requirements are required also for other than pure software development projects. For example, integration projects have project requirements in addition to the requirements of the product to be integrated.

Depending on the planned commercial model the definition of requirements can be general (detail definition to come later) or as detailed as possible.
 

Solution

A general (can be iterative/incremental) procedure for defining requirements for a project is the following. See also section Practices for references to different approaches.

  1. Identify Stakeholders. Define who benefits in a direct or indirect way from the system which is being developed or is affected some way from the system.
  2. Check if you can use already existing requirements (See: Not Wasted, KSP23)
  3. Ask for Requirements, Give Requirements, Gather Requirements. Collect requirements and document those with the source of the requirements.
  4. Analyze Requirements. Check for possible conflicts or missing requirement details. Update the requirements based on findings.
  5. Negotiate Conflict Resolution. Negotiate resolution to possible conflicts and collect possible missing details.
  6. Establish Requirements Specification. Document requirements as a requirements specification (document, database etc.). Check that an adequate detail level has been achieved. Define which requirements can not be made specific enough and have those as items in risk follow-up.
  7. Review and Agree. Review requirements with all relevant stakeholders and agree upon the baseline for requirements.
     
Resulting Context Well (or adequately) defined requirements to be the basis of the project and change management in the project.
 
Instances To be used always when defining requirements for a project.

One potential pitfall is that the commitment will not be forthcoming from the customer. In practice, this would mean not having adequate shared understanding between the customer and the supplier. This could result in a project that is difficult to close.
 

Process Connection Project Management - Project establishment.
 

Practices

Requirements definition can be implemented using different approaches. The general practice has been defined above. More detailed examples could be examined from different software engineering approaches. In addition, the agreement type and status between the supplier and the customer may give some freedom or restrictions. In the following chapters, two different approaches have been introduced for requirements definition: traditional and agile approach.

Traditional Approach

OMT++ (Jaaksi et al. 1999) is used here as an example of the traditional, plan driven approach. There, a project is started with the phase Requirements Capture.

Requirements Capture phase collects raw requirements from various sources (several different stakeholders) and documents them explicitly (after preliminary analysis) as requirement statements (Jaaksi et al. 1999, p. 9). Use cases have been used as one very important tool for this phase. Like Jaaksi et al. (1999, p. 12) says: "On one hand, end users and software developers must be able to discuss the requirements and form a common understanding of what kind of system will be developed. On the other hand, software developers need a deeper and more detailed understanding of the functionality of the system." Use cases have solved this successfully for them. 

Even though projects are normally implemented incrementally the main effort of requirements development and documenting is in the beginning of the project when the list of requirements is also frozen and after that changes are approved based on processed change requests.

Agile Approach

Scrum (Schwaber and Beedle, 2002) has been used here as an example of an agile approach to defining requirements. In Scrum the requirements are frozen only for a certain Sprint, a thirty-day iteration. The requirements are collected to a list called Product Backlog. This list is constantly prioritized and managed only by a Product Owner. For every Sprint the requirements to be implemented are prioritized by the Product Owner. Anything that represents work to be done in the project is added to the Product Backlog list. It is a list of all features, functions, technologies, enhancements, and defect fixes that are required in the future releases. It originates from many sources and the contents of it are discussed with many shareholders, including the customer. (Schwaber and Beedle, 2002, pp. 3-9 and 33).

In Scrum the Product Backlog is the list of requirements for a project (or product) of which the highest prioritized ones are implemented in the next Sprint and frozen for the duration of the Sprint.  The solution given in this pattern should then be applied as an iterative procedure, selecting the highest priority topics from the Product Backlog list for each Sprint. This is not easy and not always possible to implement e.g. in fixed scope and price projects. Then, some semi agile solution might be required to have the project adequately agreed on at the beginning giving the basis for scope and cost management.

 

References

Clements, P. and Northrop, L. (2002). Software Product Lines: Practices and Patterns. SEI Series in Software Engineering. Addison-Wesley.

Jaaksi, A., Aalto, J-M., Aalto, A. And Vättö, K. (1999). Tried & True Object Development: Industry-Proven Approaches with UML. SIGS Books, Cambridge University Press.

Schwaber, K. and Beedle, M. (2002). Agile Software Development with Scrum. Prentice Hall Series on Agile Software Development, Upper Saddle River, New Jersey.

Sommerville, I and Sawyer, P. (1997). Requirements Engineering: A Good Practice Guide. John Wiley & Sons, Chichester, UK.

Home
Catalog

Last changes at 20th July 2007