The Making of a Requirement Analyst

Why Requirement Analyst job is significant: A talented requirement analyst can make the difference between a project that succeeds and the one that struggles. Projects having capable and experienced analysts require only half the effort of similar projects with least capable and inexperienced analysts.

The role of requirement analyst include
1. Gather, analyse, document, and validate the needs of the project stakeholders. 2. Helps stakeholders find the difference between what they say, they want versus what they really need.
3. Educates the stakeholders, questions, listens, organizes and learns.
4. Serves as a principal conduit through which requirements flow between the customer community and the software development team as shown below.

What happens on the practical field: It is not reasonable to assume any talented developer or knowledgeable user will automatically be an effective requirement analyst without training, resource materials and coaching. They will not do good job and they will find the experience frustrating.

The making of an effective requirement analyst: An effective analyst combines intangible soft skills (like strong communication, facilitation and interpersonal skills) along with tangible regular tasks that revolve around technical and domain knowledge. Thus for beginners, we must train him/her on soft skills as well as technical/domain related knowledge. But maturity and capability comes with passion, commitment, patience and genuine desire to work with people and thus add value to the profession of requirement engineering.

Part -1] Soft skills needed:

Active Listening involves

- Eliminating distractions, maintaining an attentive posture and eye contact and restating the key points to confirm your understanding.
- Grasp what people are saying and also to read between the lines to detect what they might be hesitant to say.

Interviewing and Questioning Skills: Most requirements come through discussions so the analyst must be able to collaborate with diverse user groups to learn their needs. As an analyst, you must probe beneath the surface of the requirements the customers present to understand their true needs. Some tricks of framing questions

- Simply asking “why” several times can move the discussion from a presented solution to solid understanding of the problem that needs to be solved?
- Ask open-ended questions to help you understand the users’ current business processes and to see how the new system could improve their performance.
- Inquire about the possible variations and workarounds in the user tasks
- Probe around exceptions.
* What could prevent the user from successful completing a task?
* How should system respond to various error conditions?

It can be intimidating to work with senior managers and highly opinionated or aggressive individuals. You need to ask right questions to surface essential requirements information. With experience, analyst becomes skilled in the art of asking questions that reveal and clarify uncertainties, disagreements, assumptions and unstated expectations.

Analytical Skills: It requires two types of scenarios

1) Given high level information, analyst must be able to drill down into details
2) From specific need, analyst must be able to generalized set of user requirements that satisfy many other user classes.

Facilitation Skills: With effective facilitation, a neutral analyst can build trust and improve relationship between business and information technology staff with his/her strong questioning, observational and neutral attitude.

Observational Skills: By observing the pauses made during user discussions, analyst might be able to detect user needs that are not mentioned. Strong observational skills sometimes expose new areas for elicitation discussions, revealing additional requirements that no one has mentioned yet. By watching a user perform his job, a good observer can detect needs of user that user is unable to mention.

Writing Skills: This is the most important skill expected out of an analyst. By writing clear specification, analyst communicates the information among customers, marketing and technical staff.

Organizational Skills: While capturing requirements, analyst gathers wide variety of jumbled information. Analyst must be able to organize the gathered information into coherent and related information classes/categories.

Modeling Skills: Analyst must able to use modeling tools that range from flow chart, structured analysis models (data flow diagram, entity-relationship diagram) to contemporary unified Modeling language (UML) notations. A picture is worth 1024 words. Some model notations will be useful when communicating with users and others when communicating with developers.

Interpersonal Skills: Analysts need the ability to get people with competing interests to work together. An analyst should feel comfortable talking with individuals in diverse job functions and at all levels of the organization.

Creativity: The analyst is not merely scribe who records what customers say. Analyst must be able to visualize the market/business opportunity and should be able to delight the customer with his innovating and intuitive thinking.

Part -2] Analyst’s tangible & Regular tasks: The analyst must first understand the users’ goals for the new system and define functional and quality requirements that allow the project managers to estimate, developers to design and build, and testers to verify the product.

Define Business requirements: Business requirements help understand “why are we undertaking the project”. It includes a statement of organization’s business objectives and the ultimate vision of what the system will be and do.

Identify project and stakeholders and user classes: Identify the important user classes and other stakeholders for the product. Work with the business sponsors to select appropriate representatives for each user class, enlist their participation and negotiate their responsibilities. User reps might hesitate to participate in requirement exploration until they know exactly what analyst expect from them.

Elicit requirements: Elicitation is all about bringing out user needs from respective user classes.
Users naturally emphasize the system’s functional requirements, so steer the discussions to include quality attributes, performance goals, business rules, external interfaces and constraints.
Elicitation involves below techniques:

- Interviews
- Facilitated workshops
- Document analysis
- Surveys
- Customer site visits
- Business process analysis
- Work flow and task analysis
- Event Lists
- Competitive product analysis
- Reverse Engineering of existing systems
- Retrospectives performed on the previous project

It’s appropriate to challenge user assumptions (don’t try to force your own beliefs on users). Some user requirements might seem absurd, but if the user confirms that they are correct, there is nothing to gain from pushing the point.

Analyze the requirements: Specify functional requirements at a level development team feel comfortable to implement them. Spot the vague, weak words that cause ambiguity. Point out conflicting requirements and areas that need more detail.

Write requirement specifications: The analyst is responsible for writing well-organized specifications that clearly express this shared understanding among the stakeholders.

Model the requirements: The analyst should determine when it is helpful to represent requirements using methods other than text. Analysis models depict information at a higher level of abstraction than does the detailed text. Analyst must able to use modeling tools that range from flow chart, structured analysis models (data flow diagram, entity-relationship diagram) to contemporary unified Modeling language (UML) notations. A picture is worth 1024 words. Some model notations will be useful when communicating with users and others when communicating with developers.

Lead requirement Validation: The analyst must ensure that all the requirement statement are complete, consistent, modifiable and traceable. They should ensure that baselined requirements must satisfy user needs. They should also review design, code and test phase gates just to ensure that requirements are properly implemented.

Facilitate requirement prioritization: Collaborate with various user classes and the developers to ensure that sensible prioritization of requirements are arrived.

Manage Requirements: A requirements analyst is involved throughout the entire software development life cycle, so he should help create, review, and execute the project’s requirement management plan. After establishing the requirement baseline, the analyst focus shifts to managing those requirements and verifying their satisfaction in the product.

Requirement Management involves
- Tracking individual functional requirements through various phases
- Tracking the traceability of functional requirements to design, coding and test scenarios
- Manage changes to base lined requirements by using a change-control process and tool.