Tuesday, October 30, 2007

Types of Requirements

I’m trying to write a DOS bat file that runs an Access macro to import a CSV output file from my COBOL program. Any help would be appreciated

There are basically three types of requirements:

Conscious Requirements

Conscious requirements are those that the stakeholders are particularly aware of.

Unconscious Requirements

Unconscious requirements are those that the stakeholder knows the requirement so well that he thinks that it's not worth mentioning.

Undreamed Requirements

Undreamed requirements are those that the stakeholders do not ask for, either because he thinks they are not possible or because they are new ideas that have occurred to them.

Non-Functional Requirements

Non-functional requirement basically talks about hardware and software requirement of an application. It also talks about application performance, number of normal and concurrent users, page response time. They address business risk.

Non-functional requirements are properties the product/project must have, such as the desired look and feel, usability, performance, cultural aspects, availability, reliability, maintainability, extensibility, security and so on.

Requirement Gathering Techniques

Requirements are the What
Design is the How

Studies have shown that as many as 4 out of 5 software development projects go over time, over budget or don't deliver expected results (The Chaos Report, 1994 Standish Group). With such long odds, it pays to put in the effort upfront to minimize the risk of failure. The question is, how do we achieve this?

There is no one perfect method for gathering and analyzing a project's requirements. If there was, we'd all be using it. Rather, there are many approaches to choose from

  • Analysts report that poor requirements management accounts for as much as 71% of software project failures
  • A structured approach to requirements capture and management resolves these problems and is the only way all stakeholders can be confident that all requirements have been understood and incorporated into the project plan
  • Using a structured approach to gathering requirements allows us to develop S.M.A.R.T objectives (Specific, Measurable, Achievable, Realistic, and Time-based) which nearly guarantees the success of the project
  • The overall goal is to ensure a focused project direction, a solid schedule, and an accurate budget
  • Scientific approach requires a constant description of all activities, objectives and corrective measures to counter potential loopholes
  • One can do better requirement gathering using a scientific approach rather than random technique selection

Apprenticing Technique

AppTech

What is Apprenticing and when to use it?

  • Analyst observes what the Business User does and understands
  • Analyst becomes a part of what Business User does
  • Useful when Business Users cannot spare enough time
  • Useful when the stake holder has trouble in communicating the requirements

Note: Effective for Unconscious Requirements

Brainstorming Technique

Brainstorming involves two phases. They are Idea Generation and Idea Reduction and Voting.

Method:

  • Give each participant to sticky sheets with marker for jotting ideas.

Rule:

  • No criticism or debate
  • Let Imaginations Soar
  • Generate as many ideas as possible
  • Mutate and combine ideas

a) Idea Generation

  • Facilitator explains the objective of process

For example:

    • What features would you like to see in your product?
    • What services would you like to see product provide?
    • What things would you like product to keep track of?

Each participant then reads his ideas and notes it down.

  • No criticism, and if natural silence occur, let it exist

b) Idea Reduction and Voting

  • Prune ideas not worthy of further investigation
  • If any disagreement about some idea, let it remain
  • The index of healthy brainstorming session is the number of ideas discarded which proves people are thinking out of the box
  • Group ideas according to
    • New features
    • Performance Issues
    • Enhancements to current features
    • UI and Ease of use
  • Else group ideas based on capability like
    • Marketing and Sales
    • Customer Service
    • Accounting
  • Once ideas have been grouped, walk through each idea and get feature definition from contributor
  • Prioritize the idea and have cumulative voting to distribute amongst ideas

Benefits of Brainstorming technique:

  • Encourages participation from all
  • Allows participant to piggyback on other’s ideas
  • Results in broad set of solutions
  • Encourages out of box thinking
  • Most effective ideas originate from multiple seemingly unrelated ideas

What is Brainstorming and when to use it?

  • Helps in getting as much as ideas as possible in different perspectives
  • Consolidate the ideas and evaluate it to get the requirements
  • Useful when there is a group of stake holders addressing the same problem

Note: Effective for Undreamed Requirements

Mind Mapping

In mind mapping, we will discover the fragments of knowledge that we can capture by observing, listening, questioning and suggesting.

Below is the summary of mind mapping laws:

a) Use Emphasis

  • Always use a central image
  • Use images throughout your mind map
  • Use three or more colors per central image
  • Use dimension in images and around words
  • Use variations of printing, line and image
  • Use organized spacing

b) Use Association

  • Use arrows when you want to make connections within and across branch pattern
  • Use colors
  • Use codes

c) Be Clear

  • Use only one Keyword per line
  • Print all words
  • Make major branches connect to central image
  • Connect lines to other lines
  • Make your images as clear as possible

d) Layout

  • Use Hierarchy
  • Use Numerical Order

What is Mind Mapping and when to use it?

  • By observing, listening, questioning and suggesting you will discover fragments of knowledge that you can capture
  • Use Pictures, Colors, Symbols that your brain perceives the subject matter
  • Useful when you are summarizing your understanding
  • Mind map is a way to take more extensive and meaningful notes

Note: Effective for Undreamed Requirements

Use Case Workshops Technique

Use case workshops technique is more popular now days. In this technique, we collect the requirement in step by step manner. Also it helps both requirement analyst team and customers to understand that even the obvious and minute details should not be ignored. It is easy to document and written in natural language.

Advantages of Use Case Workshops Technique:

  • Use cases can be described very simply to prospective user of system
  • Written in natural language and easy to document
  • Provides simple structured format where development team and user can work together to define behavior of existing or new system
  • Early feedback can be obtained about user interfaces

What are Use Case Workshops and when to use it?

  • Capture details of requirement in step-by-step manner
  • Normally, people converse in transaction mode. Use Case Workshops help to force a step-by-step narration mode
  • Helps both the requirements analyst team and customers to understand that even the obvious and minute details should not be ignored or omitted

Note: Effective for Conscious Requirements

Interviewing Technique

This Interviewing technique is useful when you have time and opportunity to talk to business user. In this technique we fix up the time with business user and attend the session and note down the information in notebook. Below table describes little clear idea about interviewing technique.

Stakeholder 1 Stakeholder 2 Stakeholder n
Requirements #1 Definition
Scope
Date of Interview
Deadlines & Boundaries
Requirements #2 Definition
Scope
Date of Interview
Deadlines & Boundaries

What is Interviewing and when to use it?

Guidelines:

  • Define a purpose and boundary
  • Have a fixed time limit
  • Talk to stake holders who have hands-on experience
  • Use Models and sketches
  • LISTEN, LISTEN, LISTEN

- Most useful when you have time and opportunity to talk to the Business User.

Note: Effective for Conscious Requirements

Family Therapy Technique

This technique refers to all stake holders in the project. This technique works based on the model Intake –> Meaning –> Significance –> Response. Below table structure describes little clear idea about Family Therapy technique.

Stakeholder 1 Stakeholder 2 Stakeholder n
Requirements #1 Intake/Idea
Meaning
Significance
Response/Consolidations
Requirements #2 Intake/Idea
Meaning
Significance
Response/Consolidations

What is Family Therapy and when to use it?

  • Family in this context refers to all stakeholders in the project
  • This model is based on: Intake –> Meaning –> Significance –> Response
  • The analyst tells a idea (Intake), stake holders attach a meaning to it (Meaning), decide how we feel (Significance) and the analyst consolidates it (Response)
  • Useful with diverse group of people

Note: Effective for Conscious Requirements

Reusing Requirement Technique

This technique is used when multiple things are present for single common purpose. In some project, there could be possibility that, two and more modules have same functionality. In this case we can re-use the functionality and save the time.

How to Re-use the requirements?

  • There might be number of functionalities inter-connected by a common purpose. Try to re-use them
  • It is possible that the requirement might be useful in another part of the project. Try to re-use them

Note: Effective for Un/Conscious Requirements

Videos and Photographs

This technique applies to all type of requirements. When we are not able to understand the requirement properly in that case, we can re-visit the videos and photographs and get more clarity on the requirements.

Videos and Photographs, when do they help us?

  • When you cannot understand the requirements immediately, Videos help you to revisit and get more clarity
  • Prevents communication loss / gap between on-site and off-shore teams as off-shore team’s gets access to direct version from the customer

Note: Effective for all types of Requirements

Prototyping

In this Prototyping technique, generally we create prototype of an application and will be presented to the customer to make sure we and customer are having same understanding of an application. In this technique, customer will check only the functionality aspect not how/what code is written in prototype. Customer will traverse the prototype application and these prototypes will provide a data flow functionality overview from one end to another end of an application. Generally prototype application contains hard coded values, to display specific valid data on the page to the customer.

Prototypes are basically mock ups of the screens of an application which allow customers to visualize the application that is not yet constructed. Prototypes help customers get an idea of what the system will look like, and make it easier for design team to make design decisions without waiting for the system to be built. Major improvements in communication between customers and developers were often seen with this prototypes technique. Early views of the screens led to fewer changes later and hence reduced overall costs considerably. This has been a very powerful tool to capture and gain customers confidence and almost all projects do it.

Advantages of Prototyping Technique:

  • Gain customer confidence about our understanding
  • Reduce the overall costs considerably as changes to prototype would be fewer
  • Improvements in communication between developers and customers
  • Design team can make design decision freely with the help of prototype
  • Receive early feedback from the customer

Relative Strengths in Requirement Gathering Techniques

The following table explains the strength of each requirement technique.

RelativeTechStrenghs