Sunday, December 30, 2007

Introduction

Measure twice, cut once   Questions
  Look before you leap

What do these sayings have in common?

They're about thinking before acting.

Why? Because it saves time, money, effort and embarrassment.

It's plain common sense, yet, when it comes to software development, this common sense seems to disappear.

All too often, projects start before thought has been put into the project's purpose, its desired results, and how its success will ultimately be measured.

What is Requirements Gathering?

Requirement gathering is a process of collecting the user needs to solve a problem or issues and achieve an objective.

It is basically a software capability needed by the user to solve a problem or achieve an objective.

This is really an important phase/milestone in a project lifecycle. Because if the requirement gathering is not done properly/completely, all below hierarchy phases get incomplete. No matter how best the design, until unless requirements are incomplete.

It is not quite accurate to say that requirements are in the minds of clients; it would be more accurate to say that they are in the social system of client organization. They have to be invented, not captured or elicited and that invention has to be a cooperative venture involving the clients, the users and developers. The difficulties are mainly social, political and cultural and not technical.

Types of Software Projects

A minute saved at the start is just as effective as one saved at the end

  • New Development: Services & products
  • Implementation: customization on existing software (service or product)
  • Research: proof of concept for new ideas
  • Bug Fixing & Modifications: on existing software (service or product)
  • Maintenance & Support: on existing software (service or product)

Software Development Lifecycle

Tell me and I'll forget,

show me and I may remember,

involve me and I'll understand

For more info about Software Development Lifecycle refer to SDLC.

Project SDLC

Why do Projects Fail?

The sooner you begin coding the later you finish

A Standish group research report says that, 31% of all projects are cancelled before they ever get completed and nearly 53% of projects cost almost twice their original estimates. The reasons are:

  • 31% of all projects are cancelled before they ever get completed
  • 53% of projects cost almost twice their original estimates

Reasons are:

  • Users have trouble in explaining what they want
  • Developers have trouble in translating user requirements into working programs and databases
  • Both the business worlds and technology worlds are constantly changing

“If you don’t know where you’re going, any road will take you there”

- Lewis Carroll


Thursday, November 29, 2007

Requirements Gathering Activities

A user will tell you anything you ask about, but nothing more

Conceptually, requirements analysis includes three types of activity:

Eliciting Requirements

The task of communicating with customers and users to determine what their requirements are.

Analyzing Requirements

Determining whether the stated requirements are unclear, incomplete, ambiguous, or contradictory, and then resolving these issues.

Recording Requirements

Requirements may be documented in various forms, such as natural-language documents, use cases, user stories, or process specifications.

Requirement Gathering Challenges

A user is somebody who tells you what they want the day you give them what they asked for

Have you experienced these situations in the project?

  • Scope and Vision not clearly defined
  • All requirements are critical, no priority is defined
  • Signed-off requirements keep changing
  • New requirements get added in the middle of the project
  • Users/ Customers are busy and not available to specify requirements
  • Functionality built, rarely or never used

If we are experienced in the above points, it is an indication that, we would not be delivering the final product to the customer successfully in time. Because the impact of above points are huge in project/ product lifecycle. Assume if the scope of the project is not clearly defined, it means that we are not sure about the objectives. We need to clearly define and state what is in the scope of the particular project and what is out of scope. Once we have it on paper, we need to get review from the customer and agree to this definition of scope to ensure everyone is clear about what will be delivered at the completion of project. If signed-off document is changing frequently which means that we have not collected the requirement properly or customer had not gone through the document properly before sign off. No project team member will have control over the requirements if requirements changes frequently. Due to this project plan, estimations and other project management aspects gets affected and also our milestone deliverables changes. It is not a best practice even though we are handling the requirement changes using change management process. We always make sure that customer had gone though each and every point specified in the document and had got clear understanding of application needs before sign-off. The impact of change in requirement would be more and affect the entire project plan and consumes extra time to do impact analysis, estimation, creating traceability matrix and resource etc. To delver the project to the customer successfully in time, we should not get experienced in any one of the above points.

Stakeholder Issues

Steve McConnell, in his book Rapid Development, details a number of ways users can inhibit requirements gathering:

  • Users don't understand what they want or users don't have a clear idea of their requirements
  • All requirements are critical, no priority is defined
  • Scope and Vision not clearly defined
  • Users won't commit to a set of written requirements
  • Users insist on new requirements after the cost and schedule have been fixed
  • Communication with users is slow
  • Users often do not participate in reviews or are incapable of doing so
  • Users are technically unsophisticated
  • Users don't understand the development process
  • Users don't know about present technology
  • This is not what we wanted!” feedback

carrepair

Engineer/Developer Issues

Possible problems caused by engineers and developers during requirements analysis are:

  • Technical personnel and end users may have different vocabularies
  • Consequently, they may wrongly believe they are in perfect agreement until the finished product is supplied
  • Engineers and developers may try to make the requirements fit an existing system or model, rather than develop a system specific to the needs of the client
  • Analysis may be often carried out by engineers or programmers, rather than personnel with the people skills and the domain knowledge to understand a client's needs properly

What If These Challenges Were Not Beaten?

If we don’t beat these challenges, we would not be delivering the final product to the customer successfully in time. Because the impact of above points are huge in project/product lifecycle. Assume if the scope of the project is not clearly defined, it means that we are not sure about the objectives. We need to clearly define and state what is in the scope of the particular project and what is out of scope.

Once we have it on paper, we need to get review from the customer and agree to this definition of scope to ensure everyone is clear about what will be delivered at the completion of project. The business analyst should help users reviewing the documentation till getting them signed off.

Due to this project plan, estimations and other project management aspects gets affected and also our milestone deliverables changes.

The impact of change in requirement would be more and affect the entire project plan and consumes extra time to do impact analysis, estimation.

To deliver the project to the customer successfully in time, we should not get experienced in any one of the above points.

BusinessConflict

“What if users developed their own applications?!”


Requirements Volatility Causes

What is not on paper has not been said

There are two types of requirement volatility causes.

Internal Factors

  • Not capturing requirements from all relevant stakeholders
  • Not using right requirement capturing technique depending on the context
  • Not capturing all relevant details
  • Not having measures such as check-list to ensure completeness of requirements captured
  • Not having measures to ensure clarity

External Factors

  • Market driven
  • Need to be handled and managed

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

Saturday, September 29, 2007

Helper Guidelines

Users don't know what they want until you show it to them

Focus and Clarity

Focus is the most import aspect of any requirements document. A good requirements document clearly states the objective of the project and defines its scope, to clarify what the project does and does not cover.

A Format for Specifying Requirements

Discussing the many ways in which requirements can be gathered can end up in a heated and impractical debate. The short answer is that you should gather requirements using whichever method works for you, the most important outcome is that the people who need to understand the requirements can do so. If the people that form the project team (client, stakeholders, designers, developers) are happy with the format, that's half the battle won.

This is not to say that all formats of requirements documentation are equal. If you happen to believe that use cases are effective, but your client doesn't understand UML, then it's going to be difficult for them to effectively review the document and identify any errors. This increases the risk of misinterpretation. If the document is too technical, the client is likely to assume it's correct because they don't really know otherwise. These sorts of assumptions don't surface until the work is done, at which point it becomes far more expense to fix. This scenario brings us back to the purpose of a requirements document: to avoid these mistakes in the first place.

So, if you have a format that you, your client and your project team are comfortable with, stick to it.

The Author of the Requirements Document

The art of writing requirements takes great skill and, like writing code, the end result is usually cleaner and more consistent if there's a single author. Great care should be taken in selecting the author. It's a matter of balancing the need for a thorough understanding of the project domain (i.e. the client's business) against understanding the process of software development. An author with a great understanding of the project domain but no experience with software development is a risky choice. So is an author with no understanding of the project domain but extensive experience in software development. Ideally, you want to aim for an author that has both.

The Language of Requirements

If there's only one rule in the use of language then it's to use the same language as your client. It's that simple. If the language is consistent, it greatly lowers the risk of misinterpretation of the requirements. For example, a recent project contains a product catalogue for seeds. In the first draft we categorized the seeds into 'types', 'categories' and 'sub-categories'. While this made sense to us, the client and other stakeholders use the terms 'crop', 'type' and 'variety'. This was bound to cause problems if we didn't use the same terms as the client. A useful technique to avoid this problem is to include a glossary of terms and definitions in the requirements document.

Accuracy is Critical

There's little use writing requirements if they are not an accurate reflection of what the client wants. We've found the best way to deal with this is to walk the client through the requirements, as they'll rarely read them on their own. If it takes five reviews to get it right, then so be it. While it can become a drain to do multiple reviews, persistence pays off. Remember: it costs many times more to fix things in testing than in the requirements phase.

Having said that, don't expect to get the requirements 100% correct. You need to allow for human nature. A requirements document is a statement of 'what' the end result has to achieve. Even with the best intentions in the world, sometimes when we arrive at the end result, it just doesn't work the way we expected -- it's a fact of life. So, the requirements should capture what the client wants, but allow for change as long as the objectives are still being met.

Minimize the Risk of Errant Interpretation

Being clear and unambiguous is difficult. In law, there are rules for interpretation, but even then, those rules are applied by judges who have their own interpretations of how to apply the rules. What does that mean for requirements? It's important to ensure everyone has the same understanding. One of the best ways to minimize the risk of different interpretations is to include examples: diagrams, pictures, or sample data that illustrates what the requirements mean.

Best Practices

Don’t give me best practices, they are yesterday’s news.

Give me emerging practices, they are tomorrow’s news.

What “Requirements Gathering” is all about is info transferring and sharing. The “Requirements” document can be considered as the real project contract between the user and the developer, and it is also the first draft of the project plan.

In brief:

The Requirements Document is
the Business coded version of
the User’s Specifications written using
the Human Programming Language!

To approach this description, there are some advised best practices to make sure that the user’s business requirements will be smoothly translated into the “required” program. Among these best practices are some suggested tips to be taken into consideration while producing the requirements artifact be it a document, a prototype, a list of features… using the aid of whichever techniques of the previously mentioned ones.

The requirements should include the following:

Approvals

The “Approvals” section is the first step determining stakeholders even if they don’t participate in the requirements gathering exercise. Approvals list includes the stakeholders names, their titles and their signatures.

Objectives

The “Objectives” section also known as the “Problem Statement” section gives the reader of the document a brief idea about the purpose of the project and the needed system. It gives an overview about the system and may describe the background of the problem and the impact of implementing the requirements.

Scope

The “Scope” section clearly states what should be covered by the proposed solution and what will not covered. It determines the “In Scope” and “Out of Scope” requirements.

Business Goals

The “Business Goals” section helps developer and business stakeholders understanding the goal of the project and sharing the same view.

Assumptions

As requirements gathering and analysis is an intermediate step between the business requirements and the to-be developed system, it is very important to ensure that all stakeholders and developers have a common understanding. As humans, this is almost impossible to achieve, at which point the importance of the “Assumptions” section emerges, it helps all stakeholders viewing, as much as possible, the requirements from the same viewpoint. Assumptions may include business, technical and planning assumptions.

Constraints & Risks

The “Constraints & Risks” section helps identifying problems facing the product implementation at early stages, thus facilitating decision making and project planning. Constraints and risks may be business and/or technical.

Pre-requisites

In the “Pre-requisites” section you can define any dependencies the project will be rely on and will not be launched unless they exist.

References

The “References” section refers to other helper systems or documentation.

System Actors/Users

In the “System Actors/Users” section, we define the users who will have access to the system with a brief description about their roles.

As an example, we can use a table to represent actors and their roles:

User/Actor Role Comments
Student Review schedule  

Functionality

Then comes the “Functionality” section in which each of the roles/functions is described clearly. As a best practice, you can give a little description about the functionality, the expected fields to be manipulated and the actions to be performed to achieve the required function.

Example:

After logging in to the system, the student should be able to review the schedule by viewing the list of subjects, dates and time. Fields to be accessed by the student can be:

FiledsList

Actions to be performed by the student are:

Actions

GUI Requirements

The “GUI Requirements” section headlines the user needs for the GUI. It can describe the look and feel, include some screen shots or refer to the prototype.

Non-functional Requirements

The “Non-functional Requirements” section includes the user’s requirements regarding 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.

Questionnaires

It is also healthy to use questionnaires. Questionnaires help getting quick and precise answers to vague requirements. A proposed template is:

Questionnaire

Signoff

Signoff is the final and most important step in the requirements gathering process. By signoff, the requirements should be freezed and later request for changes should be treated separately. Before signoff, it is a good practice to take a second opinion about the requirements, it is preferable to involve technical opinion in the requirements to ensure their feasibility before finalizing the agreement with the customer. To ensure the effectiveness of the requirements, it is better to review them with the customer before the signoff process.

Friday, August 31, 2007

Business Analyst Qualifications

I know that you believe that you understand what you think I said but I am not sure you realize that what you heard is not what I meant.

To be able to understand users, needs, system requirements and improve suggestions, a good Business Analyst should be involved. The Business Analyst must have the majority of the following skills:

Technical Skills

  • Engineering systems concepts and principles
  • Technical computer knowledge
  • Complex modeling techniques
  • Technical writing

Analytical Skills

  • Analytical and conceptual expertise
  • Planning, documentation, analysis and business requirements management techniques
  • Object-oriented analysis
  • Evaluation of profitability/risk
  • Testing, verification and validation techniques
  • Administrative and reporting abilities

Business Skills

  • Knowledge of business processes
  • Ability to have a business-oriented vision
  • Improvement of business and engineering processes
  • Strategic planning
  • Case development
  • Business writing

Management Skills

  • Decision-making
  • Fundamentals of project management
  • Management of customer relationships
  • Time management and personal organization skills

Communication Skills

  • Ability to formulate concepts
  • Communication of technical information to a non-technical audience
  • Communication of business information to a technical audience
  • Negotiation
  • Tact

Thursday, August 30, 2007

Conclusion

Continuous effort to improve the quality of software development activities

There is no silver bullet, no one answer, no perfect approach method or technique to requirements gathering. Developing a good requirements document is about giving your project the best chance of success. To do so, you must reduce the risk of common mistakes that arise from a lack of communication or understanding. Keep this in mind as you gather your requirements, and the documentation - and project as a whole - will have the best chance of success.