© George Koelsch 2016

George Koelsch, Requirements Writing for System Engineering, 10.1007/978-1-4842-2099-3_9

9. How to Collect Requirements

George Koelsch

(1)Herndon, Virginia, USA

The last eight chapters have spent extensive time defining what requirements to collect. In this chapter, you will learn how to collect them. The amount of time devoted to this approach does not diminish the importance of collecting all the requirements for a system. This chapter will spend a good deal on how best to do this. The simple answer says perform whatever works. Ah, there’s the rub—finding out what way works. Dissertations have been written on this. At its foundation, you have to ask the stakeholders.

How you do this is affected by your organizational structure. Is it a larger organization that has a process established and you are one of several requirements engineers? If so, you are lucky. Not only do you not need to help define good processes, but also you are fortunate that you will have experienced REs to help you.

Alternatively, are you in a small team where you are the only RE and you do not have defined processes? This is the other end of the spectrum. You will be challenged to not only help set up the requirements team but run it as well. This book may not provide everything you need, but it should be a good start.

You are likely to be somewhere between the two ends of the spectrum.

More importantly is where you are in the requirements process. Are you at the very beginning of the project, where you are just beginning the requirements process? If so, you will be picking up someone else’s work. In that case, you will not be able to influence or improve the process much as they are likely established and sometimes difficult to change—people can resist change at many levels. On the other hand, coming into a project that is underway, you do not have to try to set requirements processes in place, so that actually can make your job easier. You just need to follow what they currently perform.

Note

Usually, in my career, I have come in during the definition process, and sometimes even in the operations and maintenance phase. It is likely you will experience similar exposure during your career.

I will introduce the concept of eliciting or collecting requirements. Specifically, I will talk about techniques to collect these requirements from questionnaires, group meetings, interviewing, following people, doing document analysis, prototyping, use cases, doing the work yourself, and reverse engineering. Finally, I will talk about analyzing the problems with elicitation.

Elicitation

What does elicitation /collecting mean in the requirements context?

Merriam-Webster’s Collegiate Dictionary defines elicit as follows (for requirements engineering particular purposes): “to call forth or draw out (as information or a response).”1 Elicitation is the noun of the verb elicit; it is the act of eliciting, or drawing forth the information from your stakeholders.

Merriam-Webster defines collect as follows: “to get (things) from different places and bring them together.”

There is some discussion in the requirements engineering industry regarding the use of the word collection versus elicitation. Some say that you cannot collect requirements like you can collect seashells on the beach, just by wandering around and picking them up when you see them. They will go on about how much harder requirements are than seashells to find. They may have a point, emphasizing the drawing forth of the requirements.

Note

In most of my career, however, I have heard (and used) the word collect rather than elicit.

Purists would insist on using elicitation over collection. The word choice is left to you; just know that you may have to be flexible should your audience (management, stakeholders, or users) prefer one definition over the other. Just a minor point, but it reinforces use of jargon discussed earlier.

Some sources recommend you use the term gatheringinstead of either of the other two. Merriam-Webster’s Collegiate Dictionary defines gather as follows: “to choose and collect (things)” and “to get or take (things) from different people or places and bring them together.”2

This last one seems to be closer to the collecting definition, but it is another one you can use. The objection by certain purists is that the collect and gather definitions do not transform the user statements into true requirements, which a good RE must do. The reality of this is that in most cases, you are not massaging the statements into requirements in the initial meeting but just gathering or collecting the users’ statements. You perform the analysis later. After that transformation, then you get back with the users to validate what they said is captured correctly. The use of gather or collect is valid in the initial meeting phase.

What is key here is the communications of the process to the stakeholders. If they understand gathering or collecting better than eliciting, then use their word. Whatever terminology you employ, you should avoid giving the impression that the stakeholders are reluctant to give it to you. The truth is, it may be hard to get it from them, but you don’t tell them that. You are trying to gain their trust and respect. Hinting at difficulty from them does not ingratiate you with them. Keep that in mind in the next section when you learn ways to extract requirements from the various sources. (REs do not define extract as have other people, as that hints at something like pulling teeth without painkillers—an analogy you do not want to make.)

The next section of this chapter will spend a significant amount of time addressing the various techniques to collect/elicit/gather requirements.

Techniques of Elicitation

Which one is the best? The best way to answer that is—it depends. On what? It depends on your situation, your environment, your experience, your stakeholders’ experience, your judgment, your management commitment, and your timeline to capture all the requirements. The correct answer is whatever techniques allow you to capture of them—vis-à-vis a combination of the techniques. It will likely change with time, different projects, different organization, and everyone’s needs. It is difficult to answer because you must apply judgment to each project. The net result will likely be that you may not collect them all, with only a few techniques, hence the combination.

Elicitation Basics

Knowing you may be likely to miss some requirements, through no fault of you or the stakeholders, recall from Chapters 4 and 5 that the function and nonfunctional lists give you clues to topics you should ask about and investigate. When a user or stakeholder says that they do not need a particular aspect that is useful information too, as you have now bounded the problem. Remember, the boundary of a project is important so you know what to include and what to exclude.

Before you look at specific techniques, you need to consider a good categorization of the requirement sources.

Requirements Sources

Before you look at the techniques in the upcoming table, you need to consider a good categorization. You should do so with the following requirement sources. Think of them as people, paper, and projects (as a simple way to remember them); documents may be soft copy, so to keep the alliteration alive, use pixels then.

  • Stakeholders

  • Documents

  • System in operation

These three sources come from the book Requirements Engineering Fundamentals (Rocky Nook Computing 2011), by Klaus Pohl and Chris Rupp.

Stakeholders

These are the people and organizations that directly or indirectly affect the system requirements. You will spend the most time collecting requirements with them. In some cases, you may collect more candidate requirements in documents, but that will take less time to do so. That will become clear when you examine each technique.

Note

Just because one or more techniques takes more time does not diminish the importance or goodness of these requirements. Some techniques take longer by their nature.

Documents

These documents contain information important to the system that can contain requirements. Legacy system requirements documents, concepts of operations, policy documents, architecture documents, or anything that influences the system in question are important.

System in Operation

This could be the legacy systems (not always fully automated), predecessor system, or even competing systems; these all could influence what requirements apply to the system in question.

Next, we will introduce the technique overview mentioned earlier.

An Overview of Elicitation Techniques

During my career, I have used a wide range of techniques. Table 9-1 lists the types of techniques for elicitation I have used. Different REs and organizations approach this differently. To illustrate the different approaches, I have aggregated the recommended techniques from several reputable resources in Table 9-1: articles by Tom Mochal, Tyner Blain, and from the Eclipse Process Framework (EPF) requirements guidelines. All three of these resources provide reinforcement to my list. The indented techniques are the specific values specified in four sources, grouped in the numbered technique, to show the commonality. For example, under group meetings, the six different approaches qualify for this technique, but each is a variant that will be discussed. (See the “References” section later in the chapter for the complete citations.)

Table 9-1. Elicitation Techniques by Requirement Sources

Requirement Sources and Elicitation techniques

Mochal

Blain

EPF

Stakeholders

   

1. Questionnaires/surveys

Yes

Yes

Yes

2. Group meetings

   

Facilitated sessions

Yes

  

Conduct workshops

  

Yes

Focus group

 

Yes

 

Brainstorming

Yes

Yes

Yes

Requirements workshop

 

Yes

 

Joint application development (JAD)

Yes

  

3. Interviewing

  

Interviewing

 

Yes

 

Interview users

 

Yes

 

Group interviews

Yes

  

One-on-one interviews

Yes

  

Study improvements made by users

  

Yes

Look at unintended uses

  

Yes

Talk to support teams

  

Yes

4. Following people around/observation

Yes

Yes

 

5. Models

   

Modeling

   

Modeling in the agile methodology

   

Storyboards

   

State transition diagrams

   

6. Use cases/scenarios/user stories

Yes

  

Documents

   

7. Document analysis

  

Document analysis

 

Yes

 

Interface analysis

 

Yes

 

Study analogous systems

  

Yes

Examine suggestions, RFCs, and problem reports

  

Yes

8. RFPs

Yes

  

System in Operation/Miscellaneous

   

9. Prototyping

Yes

Yes

Yes

10. Work in the target environment

  

Yes

11. Reverse engineering

 

Yes

 

12. Tools

   

Now that we have introduced the elicitation techniques in Table 9-1, you will learn about each technique. While this chapter tries to be exhaustive, some of the techniques you are likely to experience may be more eclectic and targeted to specific organizations. When such more narrowly focused techniques are presented, that will be highlighted to you.

Now we’ll examine each of the 12 techniques, and I will include advantages and disadvantages where appropriate.

Questionnaires/Surveys

Questionnaires and surveys are designed for large user populations ranging from dozens to thousands, where meeting with all of them or interviewing them would be difficult to impossible. You can use these two basic formats. With a series of questions that have true/false or multiple-choice questions, you will get only the information you ask for. As part of the multiple-choice questions, they could include ratings such as “strongly agree,” “somewhat agree,” “neither agree nor disagree,” “somewhat disagree,” or “strongly disagree.” You should ask how often certain tasks occur and provide selections to choose. This will help you decide which tasks are higher priority based on usage. You will also need to find out what drives the need. Ask if it is legal or policy driven, or the only way to gather the information the user needs.

This means you will get no deviation from the question, where other requirements may be lurking. Without the ability to probe for more information, you may miss some requirements. In addition, you must garner a significant amount of information about the system in question already before you can develop the questions.

Clearly, this option is necessary for the larger end of the spectrum of total users and/or with users in remote locations. If instead you opt for the open-ended question, where you get more information, you ideally capture those outlying requirements you might otherwise miss. However, if you have only open-ended questions like the following, you will not be able to categorize and group answers easily:

  • What works well with the current Search function?

  • What does not work well with the current Search function?

If you have hundreds or thousands of users, how long would it take to analyze these results, especially if you have dozens to hundreds question? It would probably take a very prohibitively large amount of time.

In many cases, you may combine the two techniques, where most questions would be true or false and multiple choices, with a small (manageable) number of open-ended questions to increase the chances of catching those outlying requirements. Also, perhaps the preliminary information gathering can help you focus some open-ended questions such that they are very specific and thus not unmanageably open. The larger the population, the fewer open-ended questions.

One aspect you could ask at the end is if the user would be willing to answer a few additional questions one on one (face to face, e-mail, phone) to refine some answers. This is more likely with the open-ended requirements.

This works well for large populations of users spread over a large geographic region, and the system is quite consistent. It will not work if the system has a broad set of functionality that is not consistent everywhere.

Given the preparation time for this technique, you should probably use it in conjunction with other elicitation prior to the preparation of the questionnaire/survey.

Group Meetings

The meetings discussed in this section are different from interviews, which will be discussed in more detail in the next section. Group meetings have a slightly different structure than the open-ended questions of an interview. They are as follows:

  • Facilitated sessions

  • Workshops

  • Focus groups

  • Brainstorming sessions

  • Requirements workshops

  • Joint application development (JAD)

Who is invited to group meetings? Database administrators (DBAs) are different from normal users and different from report specialists, research specialists, system managers, access control, HR, payroll, and so on. Since you may be working with a variety of different people and roles, you may not include everyone in every meeting and have some meetings that are more specific to particular groups. This way you get requirements that affect specific users that do not affect others significantly. Part of the reason for this is because most people who are not part of a particular group will not participate in the discussion of those specific roles, and they usually wind up sitting there doing nothing. By having specialized meetings, you optimize everyone’s time.

Group sessions work well when you need to address more people, and having multiple people helps encourage discussions and clarifications.

Facilitated Session

TechRepublic defines a facilitated session as a group (five or more) for a common purpose. This approach is faster than if you were to interview each user separately. By this definition, it could belong in the interview section. It is presented here because of the source’s definition.

Focus Group

A Guide to the Business Analysis Book of Knowledge (Third Edition, IIBA 2015), also called the BABOK Guide, defines a focus group as a gathering of people who are representative of the users or customers of a product to get feedback. You can gather feedback about needs, opportunities, and problems to identify requirements, or you can gather feedback to validate and refine already elicited requirements. This type of meeting happens quite often especially if you cannot easily call together a larger group of users given the size or amount of time that can be devoted to the effort.

Joint Application Development /Requirements Workshop

A JAD, sometime called a requirements workshop, is a meeting to collect business requirements many times associated with a prototyping development methodology. JADs usually meet until the session objectives are completed, sometimes taking two to five days. For a requirements JAD session, the participants stay in session until you document a complete set of requirements and the stakeholders agree. Sometimes, you may create domain-model artifacts (like static diagrams and activity diagrams) to facilitate this process. You will examine these models in Chapter 12, not here .

For some meetings, you may want someone who runs the meeting and another who captures the data provided (aka scribe). The reason for this is that the facilitator can concentrate on running the meeting and keeping it under control. You will find that it is difficult to both run the meeting and capture all the notes from the discussion.

The biggest challenge, even though JADs/workshops can be very effective, is getting people to commit to this approach. Asking many people to stop doing their day-to-day job for days is asking a great deal. It may be one of the fewest used elicitation techniques because of this. It is strongly recommend that you do this away from the normal office and do not allow outside phones to interrupt the workshop. Some crisis may arise that may cause someone to stop participating. However, if people cannot get onto the network or check their voice mail at every break, you can have breaks end on time. Some people recommend that you have a workshop at an offsite location where people do not go home at night in order to encourage additional discussion among the group and so people are less likely to get distracted. This happens even less often than the workshops themselves, again from both a cost and time investment. This is something you need to consider.

For any type of elicitation meeting, not just JADs, you need to keep people on task, especially if the schedule is tight. Some groups may wander a bit on the topic and that may be OK, but it is a judgment call as to how long and how often it happens. However, maintaining focus is critical to accomplishing the goals and not losing participant focus. It is frustrating to devote time to this sort of effort and watch the conversation wander all over the place.

Support Teams

EPF recommends talking to support teams. This is not a new kind of meeting, but you want to meet with these types of people to talk separately from your general system users. You will have to decide whether this meeting is just an interview session (which will be presented shortly) or whether it is one of the other meetings that have been discussed in this section. The help desk, the system monitoring, system auditors, trainers, and even DBAs and those who deploy the system can be candidates for these meetings. Remember when these types were talked about at the beginning of this section?

One reason to meet with these people separately is that the other users may not care about one group’s needs. For example, someone who audits the system for security reasons does not care about what the help desk needs, and people monitoring the system will not have the same needs as those who deploy the system. In fact, if some of these groups meet together, they may argue that other people’s needs are wrong because they are not theirs. Hypothetically, auditors say that people monitoring the system for availability takes away from the audit function that collects data on who accesses the system and therefore system monitoring should be eliminated. You want to avoid such discussions. While they may not always happen, they can occur, and you want to mitigate the likelihood of them.

While the types of people and their associated needs may be unique to their responsibilities, the approaches to gather them are virtually identical to any user, such as interviewing them for their needs. Many times, their needs have been consistent over time, and they make an excellent start point by describing them. Additionally, look for the things they would like to have but do not. The next section discusses a good technique to support these user types.

Brainstorming

Last among the group meeting types is brainstorming. This is one of the more free-form and, frankly, fun approaches for eliciting requirements—well, at least for the ideas. The requirements come later.

The purpose of the session is to come up with areas that people may not have considered-. Here are steps to consider for the brainstorming session:

  1. For each session, define the particular topic to explore.

  2. Let the people identify as many ideas as possible.

  3. Do not be limited by known technology, budget constraints, security restrictions, policies, and so on.

  4. Do not criticize the goodness of ideas or debate whether they are practical.

  5. Once all the ideas are captured, then refine and combine them (that’s your job) to get joint agreement.

Real-World Note

During a machine learning session, I also did a gap analysis where I researched topics on the Internet and came up with additional ideas that the users did not consider. I presented my suggestions (which we reviewed jointly), refined them, and included them with a final set of requirements.

This brainstorming process can be a precursor to prototyping. Prototyping is trying various approaches, especially dealing with how something may look on the screen for software. This way, you can experiment with some of the ideas generated from brainstorming. You may want to prioritize the ideas collected, so you may better understand which may be the most important to consider. If the users say that something really works badly, that is something to look at first potentially.

Even though brainstorming is designed to stretch thinking outside normal silos or constraints, sometimes it doesn’t capture everything. This reinforces that you should do the preliminary research as described previously. Also, to help fill any gaps, you might want to consider other techniques to find all their needs, as in this next section.

Interviewing

This is the most important and most common method for eliciting requirements. It is the most important because you are getting the information directly from those who use the system on a regular basis. They will know it better than almost everyone else will. Besides being the most employed technique because of its importance, it is also the most time intensive. You will get some of the best information as you hear the needs directly from the users, and you have the best opportunity for delving into details as needed. It can also take more time, so depending on your timeline, you may have to target which users need interviewing.

The following are things to consider for running an interview:

  • The number of people to interview

  • The format of the interview (in-person, telephone, videoconference, or online)

  • Segregating by user role

  • Conducting the interview

  • Items that enhance the interview

Size of Interviews Vary

You can interview users either one on one or in small groups. Several factors drive you to one or the other. The number of users may be very small, so only one may be available (e.g., a database administrator). If there are only two or three, you may get the chance to talk with only one of them. Alternatively, management may give up only one person from an organization to talk with you because the manager cannot afford to give up more time. Other times, you have the ability to talk with more than one person in a particular part of an office.

What is the ideal number for a group interview? Two to four is very good because you do not have too many people talking at once, and the people probably have similar responsibilities. However, as mentioned, you rarely have the choice. If you have five or six, that is workable. As you get larger, people can sometimes feel like they are wasting time. Why? With only one person talking at a time, that means everyone else is sitting there essentially doing nothing. If you have 12 people, up to 10 people may not be engaged. Also, in larger groups, some folks will tend to be reticent and contributions can be lost. Therefore, the number of people is a balancing act. Of course, you have this issue with any meeting (as mentioned in the previous section). If a chief of an organization wants an entire team there, you can offer two sessions, but if the chief insists, it is their call to make.

In-Person, Telephone, Videoconference, and Online Interviews

Here are the typical formats for performing interviews:

  • In-person

  • Telephone

  • Videoconference

  • Online

Many interviews performed face to face also called in-person. This works when you are more geographically localized so that you can meet with the people. This has the distinct advantage of seeing the people more directly, so you can pick up on nonverbal clues easier. Also, you may have a bit more flexibility to run over if need be, which telephone and videoconference may not have.

There is also the phone, but it happens without the benefit of nonverbal cues. These cues can help to reinforce points, like how unsatisfied someone is, or when someone has a confused look on their face, you may need to either rephrase your question or ask some probing questions to see why they don’t like something. Phone interviews are more difficult but may be necessary when users are remote.

If you have the ability to video teleconference, you essentially come back to having a meeting but with the added need to watch the screen for nonvisual clues. Having more than one site on a screen may preclude you from getting good nonverbal clues, so pay attention. Depending on the reliability and throughput availability, you may have some limitations on resolution. However, as technology and bandwidth improves, these impacts continue to lessen. The size of the room and how good the sound capture is can impact how well you hear, so be aware of that. With an in-person interview with a larger group, more than one conversation may be a minor irritant, but with videoconferencing it is even more important to maintain good speaking discipline or you may miss important information.

Doing an online interview is more like a questionnaire than an interview, and you learned about that earlier. Also, you could have a much smaller group of people and send more open-ended questions.

Segregate by User Roles

When you do have groups, it is highly recommended that people with common needs be together. By that, if you have organizations with different focuses for the system, they may say that each other is wrong about the needs, when in fact their missions are different and hence have separate needs. Database administrators focus on maintaining the database, whereas the HR representatives are querying the personnel data regularly. Each type of person has different tasks, and you should talk to them separately. In addition, the DBA will likely be bored when HR is talking about their issues, since the DBAs are much more technical than the HR user. In addition, the HR users will likely be confused by the technical aspects that the DBAs discuss.

Running an Interview

How do you run an interview? Whether it is one or a few more people, there is not a significant difference. You basically ask questions about what the user does. In this respect, it is like the open-ended questionnaire. Ask them questions that will give them freedom to discuss a topic. What questions should you ask? As you would expect, the answer is that it depends. What kind of system is it? Is it a software application like the FBI Record Management System or a collection system like the BOSS Radiation Dosimeter System?

Ask what they do and then why they do what they have said, not how they do it, but why, so you understand if it is still necessary. A different design might obviate some of the steps user do. For example, having a concept search that can take name variations like Bob instead of Robert or accounting for different spellings of Mohammed will mean that users do not have to spend hours designing the right Boolean search to capture the information they need.

Ask the user how often they perform an operation. Get ideas for how long certain operations take (say, research results within the database.) What works well, what does not, and why? Have them give examples of their typical operations, explaining deviations and why. Ask questions as you go along. If you need them to slow down so you can write down everything, do so. At the end of the interview, ask if it is OK to ask follow-up questions. These follow-ups do not have to be in person. It could be on the phone or in e-mail. It is recommend you use e-mail because then you have their description in writing, you can save time capturing the requirements, and you are less likely to hear it incorrectly.

When you have a lot of ground to cover on a system, sometimes it is useful to break the discussions into topic areas so that you do not try to cover everything in one sitting. It is easier to do four two-hour interviews than an eight-hour day continuously. It is hard for you to concentrate for that long, and it is even harder to get users to give up an entire day. Spread over several days, or once a month if you are doing different functional areas, this works out better.

As was mentioned, interviews work better when everyone present is at the same level or has the same role. This is part of your preparation to ensure whenever practical that this is the case. If the people are managers and their subordinates, the subordinates are less likely to disagree with the manager who may speak the company line or talk about the ideal system when they do not have to use it every day. That can be as important as preparing your list of questions you want to ask.

Warning

You may get people who disagree and say the other person is wrong. You have to listen and determine whether that is the case or the person has different needs. Generally, it is the case that different parts of the organization have different emphasis. For example, the person who is responsible for maintaining the security of a system is more inclined to want to lock data down, whereas the HR person may want to have access to more data. Neither is wrong; it is just that they may have different and potentially conflicting needs. You job is to capture both and allow for a balancing act.

Remember when Chapter 1 talked about the attributes of a good requirements engineering being communications, including listening with emphasis on active listening? It is during interviews (and any meeting for that matter) when you need to do that. Listen with your eyes and ears. Look for the nonverbal clues that give away some emotion. Do you see people reacting negatively to statements? Follow up on that. Honestly, that is where you can find some of the most critical aspects, because that alluded to the items that most bothered the users .

Your level of formality may even vary with the users. For example, if you are talking with managers, especially high-level managers, you may be more formal than you might with users who do not interact with these people as much. Sometimes you may have a more structured set of questions because the topic is broader than others are. For example, with searching, it might be more free-form, whereas when asking about all the known reports, you will have one or more questions for each of several dozen reports.

When you have looked at employee suggestions (later in the “Document Analysis” section of this chapter), which reinforces the interconnectedness of these topics, now is your opportunity to ask why they were added. This shows that you cannot go into these interviews cold. In other words, you cannot do this on your first day. You need to know something about the current system, the terminology, the user employee, and what their general goals are. One of the best sources for this foundation is discussed in the “Document Analysis” section coming shortly.

People often use things for purposes for which they were not designed. You can learn a lot from this.

Real-World Note

Earlier in my career, I was using Microsoft Project. Microsoft originally designed as an application for, say, defining all the steps for building a house. I was tasked with preparing a schedule that rolled up all the development projects with the office’s several dozen automation group applications. In later versions, it became better at scheduling.

Because many people in many different organizations in the United States, and probably the world, did this, Microsoft worked the application to support this kind of effort. You may be able to find such “workarounds” that people have done. They have the gem of an idea, because something doesn’t work the way they want, or they have an idea no one else thought of. Ask if they have any suggestions like this.

Things That Enhance the Interview

Chapter 1 emphasized the importance of good communications. Interviewing is probably the biggest manifestation of that skill. Remember, no matter how long you have worked on a project, there are people who know more about the project, at least some aspect of it. Therefore, a know-it-all trying to get information from a user will fail—miserably. You need to establish trust and a rapport with the users. If a user says the radiation dosimeter takes too long, don’t tell them they are wrong. Ask them why it takes too long. It may be that the performance requirement before said that the result should return in 10 seconds. To most users that is way too long. Maybe you are unaware of that requirement, or it may be that the device they have is not even meeting that requirement. Maybe when the battery gets low, it takes a minute to get the result. Never reject a person’s statement. If it does not make sense, ask more questions to understand. Usually, you should go back to the people responsible for the system and find out what is happening. Occasionally, developers were unaware of issues you discover. In many cases, you can find out there was something wrong, and you can get it fixed.

Go in with an open mind. Think of the users as the teachers and you as the student. There is a reason why they have information you need, so try to learn from them. Be a human being; admit that you do not know everything and that the users can teach you. After all, your reason for collecting their needs is to help the users get a better system in the future.

Listening

In real estate, the cliché is location, location, location. For requirements engineering, it is listen, listen, listen. This is the most important aspect of communication. You may have been in meetings with one person who was not talking but just waiting for another opportunity to talk, but not listening. That is not communication. In my case, this was a rather high-ranking HR person. So, do not be like that. Look for the signs that someone is not listening well or is dominating the conversation as this can inhibit the interview process.

Things Change Over Time

As was stated earlier, requirements can change 1 to 4 percent per month. You have to deal with that. People resist change, and REs are no exception to that. How you will elicit requirements when they can change during a project? Be prepared for that. The same thing can happen to the users. Alternatively, the users have worked with change, and the new person or people may not agree with previous work. This especially happens when you have multiple meetings with the same group, especially as not everyone will make all the meetings. You will have to adapt.

Glossaries

Having your glossary of terms is useful when you are having these meetings. If terms are used that you do not understand (maybe you have not learned all of them yet), check your list. If it does not exist, get the term defined and then add it to your list.

Note Taking

This becomes as important as listening. If you hear something but do not write it down, it can be lost. In some cases, you may have recording equipment and can use that to supplement your notes but not completely replace it. Some people are hard to hear and may not pick up well on the recorder. Taking notes is an important skill that comes with practice, just like note taking in college. When practical, if you miss something, ask for clarifications or for someone to repeat something you may have missed. Believe it or not, this usually is well received by users as this tells them that what they are saying is important to you as you want to capture it—which you do! While taking notes, you also can jot down questions to follow up on, note discrepancies with other accounts, or anything else that may help with your requirements collection.

Follow-Up Questions

You should always use follow-up questions when you need them. From listening carefully, you will notice potential requirements that other people in the room may gloss over. There usually are nuggets there. This is a standard interviewing technique, as are most of the points here. As an example, say there’s a user who monitors the system maintainability and needs to know the entire time it takes from the time the system breaks until it is fixed. You ask the question if he also needs to know when someone actually started working on the fix. The user asks why he would want that. You explain, as you learned in Chapter 5 in the maintainability section, that you need a value so he or she can determine the wait time associated with the fix, as the wait time may be the major issue, not the actual repair time. You will have demonstrated how to provide better information for the users.

Remember, Chapter 1 talked about the challenge of understanding users who are not sure what they need. When your users/stakeholders do not know what they need, that is going to put you at risk. In some cases, you may not be talking with the right people, so the correct fix is to find the right stakeholders. That may not always be easy, but make a point of determining whether there are others who can provide the information you need.

Failing that, you need to help the users find out what they need. Chapter 1 talked about how you need to be a translator from what they say they need to what they really need. You also sometimes need to guide them to help them to find what they need. This is where you careful questions and follow-up questions can make a difference.

Real-World Note

When I was a graduate student, running labs to supplement the lectures, the students would come to me asking questions about how to find an answer. Rather than just give them the answer, I generally asked a series of guided questions that led them to find the answer themselves, so they would understand how to find answers in the future. This kind of careful questioning also works well when helping users to identify and clarify their needs.

If you said, “You understand their process is X, Y, and Z. Is that right?” They would have an answer. Maybe yes, maybe no, but it would not be enlightening for them and provide little value added to you. Instead, follow the approach presented here and guide them with questions that start at the general level and work down to more detailed questions, engaging them in the process. For example, you ask a user, “You understand how the system uses patronymic Russian names?” They answer with a yes. That doesn’t tell you anything, as you expected them to explain it to you. Thus, you need to follow up with, “Could you please explain it to me, as this is a new concept to me?” This should get the conversation started.

Missing Knowledge

This is always information that people may not know. The challenge is that they may not know that they don’t. This is why follow-up questions can be important to uncover some of this. You have to listen to what the user says that may hint at missing knowledge.

When you discover missing pieces, it can have a secondary relationship benefit. Nothing establishes trust more than an interviewer who offers an immediate solution to a user problem.

Real-World Note

For example, during a query function interview, some users did not understand that there was a NEAR function when two terms might be more than one word apart. Say you are looking for the person named George Koelsch. However, references to the person could include his middle name, and a Boolean search of George Koelsch might not pick up George Anthony Koelsch or George A. Koelsch because the middle term separates the two parts of the name. By using the NEAR function, you can search for (George, Koelsch) NEAR 2, which means George should be within two words of Koelsch. It would even pick up Koelsch, George, which searching for George, Koelsch would not do.

Cultural/Language Differences

You may have to collect requirements either overseas or with foreign visitors visiting you. While culture and language influences can hinder the collection process, there actually is one serendipitous benefit to doing this. You will have translators. When the translators are talking, you will have the opportunity to catch up on your note taking and formulate your next questions.

Of course, the culture and languages difference do offer challenges. Just as organizations can have different cultures, different countries have them as well. How you treat people or say things may not translate very well. What might be humorous in the United States may not be in Mexico or Asia. So, you will need to research the culture or talk to people who know so you can avoid words or phrases that might have the wrong meaning there. Also, when people have a different language, not every word, especially in specialized fields, may translate well. Pay attention to the body language to see whether your counterparts look confused or may be reacting negatively to something. Try rewording to see whether that helps. If you have an interpreter, ideally they can help. Fortunately, in my overseas work, I have never really had an issue, but preparing may have helped mitigate issues.

Following People Around/Observation

As an industrial engineer, you can spend many a day doing this to learn what people do. First, it is very labor intensive, and depending on what the person is doing, you may not see everything. Think of someone watching you work on a spreadsheet. The observer would probably need to stop you and ask many questions. Second, many jobs are very repetitive, so you would see the same operations time after time. Third, how long can you observe someone—an hour, a full day, a couple of days? What happens if there are tasks that happen once a week, once a month, or once a year? Odds are you will not see all of those. Again, you cannot do this in isolation or you will miss requirements. Some advantages to this technique are that you can identify work or process flows, identify what things bother the user, notice any awkward steps they encounter, and identify any room for improvement. You can observe by watching only or by watching and asking questions. It depends on the nature of the work and how much information you need to collect. If a person must concentrate, say, performing detailed work, asking questions is impractical. However, if you cannot see all the steps or they happen too quickly, you may need to ask question. There may be utility if certain operations are repeated many times and saving even one or two steps could make a significant amount of time. Think of an assembly line where a task is done 1,000 times in eight hours. If you trimmed one second from that time, you would gain 36 more items per shift, or a 3.6 percent improvement. It will be up to the environment, the user, and you as to when you can safely ask questions.

Models

Models and modeling are techniques for representing requirements in a more precise manner than just straight text, which we recognize has the potential for imprecision. As a result, Chapter 12 will be devoted to various modeling techniques and has a brief examination of their advantages and disadvantages.

Document Analysis

In this approach, you read through existing project documentation to glean requirements for the future system. Document analysis does not require interaction with users. You can do it on your own. That said, users and stakeholders could provide some of these project documents, so do not rule them out. When you first start on a project, this is also an excellent way to rise up the steep learning curve.

What are documents that can help you understand your project? Here is a good starting point. Your project may have others or may have name variations from these. Nevertheless, this is a list to get you started.

  • Business process description

  • Concept of operations

  • Existing requirements documents

  • Existing interface documents

  • Design documents

  • User manuals

  • Operations manuals

  • Training manuals

  • User suggestions

  • RFCs

  • Discrepancy and problem reports

  • Competing or analogous systems

Document analysis is a start to eliciting requirements as part of gaining domain knowledge only. It does not end there. It only identifies what the system does not. It does not address what the system should do except maybe for what was implemented. It does not address the shortcomings of the system. Nor does it address what things it does incorrectly. Keep that in mind.

Now, look at each document type and examine how it can help you.

Business Process

If you have one or more business process analysts on your project, then you have someone who has or is doing a business process analysis of the system or area for which you are going to capture the requirements. This is excellent. If you do not, you should definitely consider creating one.

Why do you need this business process description? First, you need it so you understand what your current system is trying to do. As mentioned earlier, if you are new to the system, then this is an excellent method to learn about the system. Certainly, it will not give you everything, but it is a significant start. In addition, when you look at the existing requirements, you need to find where things have changed and learn what the gaps are. Sometimes, all that exists are diagrams that describe the system at a high level or PowerPoint slides that talk briefly about the current system. Remember, no information is bad if it provides a starting point.

As was said, you can even use the business process description document to generate the user stories for a system. More information will be presented about user stories in Chapter 13.

A business process description document can also be called a concept of operations. Many times a CONOPS, as it is shortened to, is written before the requirements phase begins. If so, that is good as you have the start of your work. In addition, the advantage will be that the CONOPS is written for the future system, whereas many business process descriptions may focus on the current system. A word of caution: while most CONOPS are written near the beginning of the lifecycle development phase, some are written near the end. Is this because the project is behind in doing their documentation? That’s possible, but more than likely there is another cause. In most instances, the project is doing the CONOPS with the emphasis on the concept. By that, they are looking at the functions the system should do and be talked about at a higher level. In the later phase of the lifecycle, you may see where the emphasis in the CONOPS is on the operations. What you have here is an operations manual. While this is a useful tool, that is not the focus of this paragraph’s discussion.

Notice that some elements of the CONOPS may have proposed implementation that you should discount. In addition, it will not be detailed enough to fully capture requirements, so you will have considerably more information to complete your requirements.

Existing Requirements

First, look for requirements for the existing system. This will likely provide a significant amount of information about what you should consider. Remember, however, they were crafted in a different time, with different technology, and, most importantly, with different expectations. You do not have any context with these requirements unless there is significant textual information added to the shall statements. You do not get a significant sense of how the requirements must fit together, or flow. You will need to gather that elsewhere.

Most importantly, you will need to ensure that all the requirements are still valid. Given the scope or size of the project, that may prove to be daunting. Nevertheless, it needs to be done. For those items you have changed, modify the requirement set. Modify the existing statements for those that have changed somewhat. For those no longer done, delete them (but confirm with stakeholders that it is true), and add what is new.

Existing Interface Documents

This is essentially the same kind of documents as the requirements documents, just between two systems. There is one important aspect to consider with interfaces—the boundaries may change with the new system. By that, some items that exist in other systems may come under your system’s umbrella, and vice versa. So, do not take everything as gospel without the same validation as was talked about in the previous subsection. Make certain the boundary of your new system is well defined.

Design Documents

Design documents, when they exist, do not provide nearly the same information as a requirements document, in part because they focus on the implementation, which requirements engineers are not supposed to capture. That said, there still is useful information embedded in them. For example, you might learn what data elements are being stored and manipulated, what data is audited, and so on, basically topics that may not be defined or only partially defined elsewhere, like the existing requirements. There is a lot of chaff to weed through to get the wheat but that is still worth examining.

Manuals: User, Operations, Training, and Help

These manuals can prove to be very useful, with qualifiers. They are designed to describe how the system should be used, and they are very detailed. When gap analysis is talked about later, these documents may suggest areas that have not been fully explored.

The qualifiers deal with the following:

  • These are details about the exact steps to take when using the system. However, it may not explain why you would do these steps.

  • These are the current implementation and may not be appropriate for the future.

  • In addition, they are implementation, so again you need to determine what functions should be retained.

Identified Problems and Changes

Another source for requirements for the system can come from user suggestions, RFCs, change requests (CRs) , discrepancy reports (DRs), and problem reports (PRs) . These documents (whether hard-copy documents or online) are likely the items that have changed since the original system was implemented. Many if not most may be specific changes to the implementation rather than just user needs, so examine them carefully. For example, someone who asks for the status of a current operation moved from the bottom of the screen to the top is not a need but more a user preference. However, it may indicate that the users need the capabilities to customize the user interface, or at the very least allow them to specify some preferences.

Sources may come from the configuration management process your organization has implemented, called the following:

  • Request for changes

  • Change requests

  • Discrepancy reports

  • Problem reports

DRs and PRs may be the same thing, just defined differently for various projects or organizations. In addition, RFCs and CRs may be the same thing just using the terminology of the office.

Warning

Some organizations may use one term for both an RFC and DR. Just be aware of that.

Most people define an RFC or CR to be the documentation of changing a requirement, adding or deleting a requirement, or modifying an existing requirement. A DR or PR is when an existing requirement is not working correctly.

Also, check the Help documentation or service desk. Even if the item never causes something in the application to change, it may indicate items that seem to cause problems for the users, showing you places to improve in the future. This can also be a source of user suggestions that has not yet made it to the configuration management system.

Competing or Analogous Systems

If your project is to create the best report generator ever, wouldn’t it be prudent to see what other report generators have done and done well to ensure you capture those capabilities at a minimum? It’s not likely you will work on something that has been worked on for many years, but you get the idea. Look at other systems and determine what capabilities you might consider. They could be competitors or systems similar to yours.

Real-World Note

Many times, I have looked on the Internet for capabilities that I need to capture in requirements. Of course, if it was something like a report generator, I had to do it only once and then reuse the requirements, but we’ve talked reuse before. This brings out another source of documents, those found on the Internet. When I was doing research on machine learning and its capabilities, I found a wealth of information on the Internet, so exploit that whenever practical.

You do not need to “reinvent the wheel” for each project. Do it once, by researching what is available, and then reuse. However, I emphasize that the Internet is an excellent source of capabilities.

Prototyping

Prototyping is a method of gathering requirements. In this case, you can gather preliminary requirements for an initial version of the solution, called a prototype. You show this to the users and stakeholders, and they can give you feedback, ideally generating more requirements.

Warning

This approach tends to get into implementation, so be careful. Clearly, very detailed statements would be design specifications, so ensure you give implementation independent requirements, being more general in your statements. Otherwise, you will be doing the designers’ work.

This can be useful in ensuring you are capturing the data elements the users need and how you need to group them. Those are valid requirements. You may need to iterate several times to get the information correct, so do not be surprised. In addition, you should not have to expect to do the prototype unless you have coding skills. Use developers for the prototype.

This technique has the advantage of helping with people who may not know exactly what they need, as was talked about in the “Missing Knowledge” section of this chapter. Prototypes do not need to be done on a computer. They could be drawn on paper as a sketch, PowerPoint slide or slides, even animation (think of a game), or a storyboard. The advantage to the users is that they get to see what could be presented. In addition, because you have engaged the users and stakeholders in the process, they feel much more engaged, and this helps tremendously with the successful introduction of the product. In fact, one of the hallmarks of the agile sprints is a demo at the end, with the associated advantages that have just been mentioned.

Remember, if you develop this on the computer, there is no code behind the options presented. This is just to get the look and feel, but most importantly the users’ impressions to include confirmation of the data and how it is represented. One reason this technique can work is that people have difficulty trying to describe what they want on a blank page or screen. However, if you have something, even if it is not close to what the users need, they will be more than willing to comment on something. This helps to get the users started.

Prototyping can be built around use cases or scenarios if you have them. Alternatively, if not, the prototyping of various screen shots can help derive use cases and scenarios, not to mention user stories and requirements.

Use Cases/Scenarios/User Stories

Use cases are an important aspect that you need to understand; they’re so important that an entire chapter will be devoted to uses cases and one chapter for user stories, Chapters 13 and 14, respectively. Know that it is an important aspect of requirements elicitation, one that has increased in importance with development methodologies other than the waterfall approach. The same applies to user stories as they have a vital importance with the agile development methodologies.

Working in the Target Environment

Another aspect of this technique is to do some of the work yourself. Whereas a seasoned user will go through the tasks possibly faster than you can observe, if you do it, you will need to do every step slowly to do it correctly. This way you are less likely to miss something. The biggest disadvantage to this is the time it takes to get proficient enough to experience. Clearly, doing this for something that has a steep learning curve makes this technique impractical. Think of learning a station at a nuclear power plant. It’s not something you can learn quickly.

There are advantages. For starters, just working as the users do helps to build a rapport. In addition, you will have a better understanding of some of the problems that have pestered them. When you experience one of those challenges, they will go, “See, that’s what happens to me ten times a day.” You will gain a better understanding of the challenge and associated frustration.

When possible, take training that is offered for the current system. Not only does this give you a sense of how the system should operate, you will have the trainers as resources. They usually know some of workarounds to issues as well as the issues and challenges to the users. In addition, it gives you more experience on the system that you may not get just trying to do it yourself.

Request for Proposals

Governments and companies request potential vendors to submit a proposal. The submitted proposals are analysed, and then a vendor or contractor is chosen and awarded a contract to provide whatever service is requested. The RFP is the specification by the requestor defining they what. As a vender or contractor, the RFP you receive may dictate some requirements that you must meet. Also, as a contractor works for a customer organization (e.g., for federal or state government), you may have requirements levied on you. You analyze the RFP needs and respond with a proposal back with what you will do, stated in your requirements.

Usually the needs are too high a level to affect the requirements directly, more like goals than requirements. For example, if the RFP is a paragraph long and only says your organization needs to provide bicycles for employees to use to ride among the buildings on the campus, there is not much specificity there. However, if NASA has an RFP about a probe to go to Neptune and they list ten pages of needs related to the environments, speed of the craft, types of data that needs to be collected, and data transmission rates, then you have candidate requirements. Nevertheless, you must read this document to determine what affects your system and its associated requirements. Given the 30 years I spent as a contractor to the federal government, I used this occasionally.

Reverse Engineering

Reverse engineering is figuring out what the system does by taking it apart, if it is a piece of hardware, or deconstructing the code to figure out how it works. This is different from seeing what the system does; it’s seeing how it does it. I used to work for a tire manufacturer. We had heard that a competitor would come out with almost an identical new tire some weeks after we did. The consensus was that the competitor bought the tires, deconstructed them, figured out our manufacturing process, and then duplicated it. This prevented them from having to spend all the time researching new tires. This is an example of reverse engineering.

I have never used this technique personally. That said, does that invalidate it as a source? Of course not. You will all experience limited exposure to situations and tools sets that you may use. This technique can be used when migrating from an existing system to a new system when insufficient documentation exists.

Note

Reverse engineering can be abbreviated as RE. However, RE had been used to mean requirements engineering and requirements engineer. On a project, if this technique was used, you might end up with three versions of RE. Now you can see how jargon becomes important and how confusion can occur—not intentionally but with acronym creep.

Reverse engineering can help identify what the current system does. Think of an old mechanical watch that consisted of a wind-up spring and gears to move the hands of this analog watch. By opening up the case and examining the watch, you can deduce how it works. You can count the number of teeth on the gears to figure out how the movement of the gears work. This is a simple example of how reverse engineering can occur.

Reverse engineering neither identifies what the system should do nor identifies what the system does wrong. In the watch example, it only shows you what it does. You and your resident experts must figure out what the system should do and identify what the system does wrong.

Real-World Note

I may have misrepresented this. I have done something closely akin to reverse engineering. When capturing requirements for a report generator, I found a manual that talked about all the capabilities that a particular application provided for report generating capabilities. I cherry-picked the functions that our particular project should have and wrote the shall statements for my report generator. In a sense, this is reverse engineering.

Tools

The TechTarget website lists some tools that might help with requirements gathering that will be presented later, such as the agile methodology (Chapter 13), requirements management (Chapter 11), and Unified Modeling Language (UML) (Chapter 12). In addition, TechTarget recommends some other useful resources such as books, articles, web sites, courses, and blogs for you to consider. There are many more if you want to research them. These are just a small sampling. You should not try to capture everything on the TechTarget web site or the hundreds of other sources. Just know they are there when you need them. Research them when the time is right.

Purpose of Elicitation

What is the purpose of requirements elicitation? You are going to collect/gather/elicit all the requirements for the program/project/system/system of systems in question. The steps you need to perform are the following:

  1. Define the scope of the system.

  2. Gain domain knowledge.

  3. Decide on the elicitation techniques to use.

  4. Elicit the requirements.

  5. Perform gap analysis.

  6. Complete the requirements.

Defining the Scope of the System

First, you must define the scope of the system . You need to know precisely where the system responsibility begins and ends. Ideally, you receive this at the start. Alas, the reality of it is that this does not always happen. So, you will need to help define these boundaries. Will they remain fixed? Not always. For example, if the new system will be follow an SOA, some small systems/applications that were stand-alone systems before may be services as part of your new system. In this case, the boundary of the new system has expanded beyond what may have initially been proposed. In such instances, the boundary definition may change because of what you uncover in your elicitation that others had not considered. This gets to how requirements change. Analysis forces people to make decisions they had not even known about initially. That is a good thing.

Real-World Note

Back early in my career, one of my mentors told me that a good systems integrator (engineer/requirements engineer) is paid to ask the questions that have gone unasked. Take that to heart.

Gaining Domain Knowledge

Second, if you do not have full domain knowledge of the current and future systems, get it. Yes, that is easier said than done, but go back to the “Document Analysis” section and use that as a guide for starting that information gathering.

If you do not have a good BPD, then create one yourself. By virtue of you doing this, you will learn it better, and it can have additional benefits later in the requirement analysis process, as you will see.

What you will have when you are finished is basically a concept of operations but clearly focused from an implementation-independent view. Even if the users have some of the BPDs, you will need to go back and ask questions to fill in the gaps of knowledge. Odds are that if you do not understand the BPD, there is a gap in knowledge, or the business process has been changed and not properly documented.

Deciding On the Elicitation Techniques to Use

Once you have gained sufficient knowledge, you can begin. The reality of this is that, in many cases, management will determine when to start, and you try to gain as much knowledge as you can before the step starts.

An earlier subsection talked about using document analysis to start eliciting requirements as part of gaining domain knowledge, but it does not end with that, as was talked about before. Which technique do you use? The correct answer is more than one. Each has its advantages and disadvantages. To mitigate the disadvantages, you want to use as many as practical.

What factors should you consider in determining the techniques?

  • Who are the stakeholders/users? (For example, if this is a commercial game, who represents the consumer, and how?)

  • What is requirements engineering team domain knowledge?

  • What is the availability of stakeholders/users?

  • What is the location of stakeholders/users?

  • What is the development team’s domain knowledge?

  • What is the stakeholders/users domain knowledge?

  • What is management’s commitment to eliciting the requirements?

  • What is the schedule for eliciting the requirements?

  • How big is the requirements engineering team?

Then you, and your team if you are part of or lead a team, must decide which techniques to use. Consider document analysis, interviews, and some group meetings. Use the others that have been discussed as you and your management team see fit. Trust me, management commitment here is absolutely essential or you will not have access to the people you need. If you have to get it, start with your management chain. If they cannot get agreement with your approach, you will have a hard road ahead of you, with less likelihood of success—to be quite honest.

Eliciting the Requirements

Now comes the challenging part, eliciting the requirements. Before you actually start, a bit more planning is in order. If you are likely to have more than 100 or 200 requirements, one session is unlikely to capture all the requirements. Your best bet is to take this larger program/system and break it into manageable chunks. You may need to apply most of the techniques to each functional area that you choose, or maybe by the team/organization that is affected by it. For example, the auditing team will work only on the audit function.

One additional suggestion is related to the functional area elicitation. The document analysis mentioned earlier can help establish many or most of these functional areas.

You will need to massage the information you collect. Remember, users do not speak requirementese. You do. You need to translate their input into good requirements, as has been discussed in all the previous chapters.

To define all the requirements, you need to understand what the users do right now. This is an important point to remember: it’s not how they do it, just as good requirements do not define the how and only the what. Get them to tell you what they do.

You have to listen intently. However, know that they will skip over points. This is not intentional, but they know all what they do, and they do not include every little nuance. It is human nature. Part of that happens because they assume you know everything they do. Part of it is that they summarize. They are not accustomed to providing every step they do. Think of a user manual that describes how to do a new feature where the document describes every step, every keystroke, every click that the user must do. Most users do not think quite like that when they are talking. In fact, it is difficult for most people to do. If someone asked you to describe how you drive to work or school every day, would you give every street name, the distance, and the time associated with each step? More than likely you will say, “From my house I go two blocks north and turn left at the elementary school, through three traffic lights and turn right….” Many details are missing that MapQuest would provide. It is your job to learn the MapQuest “route” from the users rudimentary “directions.”

If going from step 1 to step 2 does not make sense to you, chances are they have omitted something. Sometimes it is language or jargon that you do not know, and the missing information may be embedded in those words.

Think about signing into an application on a network. Someone is describing what they do when they first start their machine and get to this application. They say the following:

  • First, I turn my machine on.

  • I hit Ctrl-Alt-Del to log in.

  • Then, I select the BOSS application.

  • Finally, I run my audit report from the log of updates since yesterday.

That initially sounds like it is sufficient. However, the user did not give specific details about how they logged in. This is a system administrator, who has multiple networks to monitor. When they log in, they have to enter their user ID, password, and what domain they are examining. Because they did not give these specifics, you might miss that the login process requires the domain value. You need to ask them what they mean by logging in. Then ask what the domains are that they access. Can domains be added and deleted, or will they remain fixed? You get the idea.

Remember, Chapter 1 talked about the two different definitions of recall. The development group used the word to mean removing a bad record from the database. However, the people who would use the new system used the word to mean calling for a group of hard-copy documents from the archive. Think of what happens in a meeting the first time this comes up, and one group uses the recall with their meaning, but the other group of people hear that the use of it and cannot understand what was said because the meaning was “wrong” in their mind. This is going to happen. How do you know? This is where you have to observe. Sometimes people may challenge, but more often or not, people will just look confused. Not only do you have to listen, but also you have to watch, especially body language, facial expressions, and so on. Use anything that will give you an indication. In poker, this is called a tell—an indication that what the people are trying to indicate is not quite correct.

Reading requirements does not address how they flow or how they interact. The business process description shows that. If you understand that process better, you will have a better foundation for defining the requirements.

Then you need to show what you have captured with the users/stakeholders to confirm you translated it correctly. You will receive some pushback because they want their words exactly used sometimes. You have to explain the rationale for why you do it the way you do.

It may take more than one review to get concurrence. Remember this is a negotiation. You are not a dictator. Sometimes, managers will overrule some decisions, and you will have to live with some of those decisions if you cannot get your own management to stand up for it.

Performing a Gap Analysis

You are not done yet with collecting requirements. You have a challenging step to do. You have to find what everyone, including you, has missed. You might say, “If you have not captured it yet, how do you expect me to do it now?”

It is called gap analysis. There are some steps to take. Go back to the previous requirements document, or similar documents, like user manuals and so on, and then describe what people are doing. Find out the functions that are talked about that have not yet been documented in your requirements.

For example, you find that they have not done auditing of the changes to the database. Find out specifically what they need tracked. Is it every data element within the database or just key values? Do they need all adds, changes, deletes to user accounts (probably in almost all cases)? What about tracking all failed attempts to access an account? It could be just someone messing up his or her password or user ID once and then getting it right. What about trying six or seven times? Is someone trying to hack it?

Remember when we talked about all the different functional and nonfunctional requirements? One of the reasons these chapters discussed more topics than most sources examined was to give you suggested areas to consider for gap analysis. Go back, and look at each type to see whether it sparks any subject areas that you need to fill in some gaps.

Talk to experts on the system and ask what topics they think were missed. These are probably people on the development team, especially the operations and maintenance (O&M) team that has been dealing with the current system probably for years.

Once you have identified the areas, craft the requirements. You may need to interact with selected users/stakeholders to help them validate these new requirements.

Completing the Requirements

What constitutes being done with the elicitation phase? If you have done all the steps up to this point, are you finished? Chances are no, you are not. First, ensure that you have done all the steps to include actually writing proper requirements, vetting them with the affected stakeholders, and finalizing them so they are ready to be maintained. Has your management identified that you are not complete until you have a database fully populated with approved requirements? Or must you have a reviewed and approved requirements document? Or both?

The key here is the approval process. You will likely have to vet the complete set (in parts or as an entire whole) through one final review with senior stakeholders and/or management. Your organization mandates this. If you must capture a requirements document, look in the appendix for a format, if your organization has not directed a particular template. Likely, some part of it may require some business descriptions. If so, the BPD talked about earlier will serve you well.

There is one last aspect, albeit important, to keep in mind. Remember when earlier chapters mentioned the likely growth/change to requirements of 1 to 4 percent per month? You need to consider that. You must have a method to update your requirements to account for this change. Ideally your organization will have a change management, aka configuration management, process in place. If not, you need to establish one for your requirements. This is necessary to control and communicate changes to all affected parts.

Note

The communications is as important, if not more important, than the control aspect—a problem that is missed far too often.

Problems with Elicitation

This chapter has alluded to some of the problems about to be discussed. First, you need to list what they are. A.J. McDermid gives the following three categories of these problems and ten specific problems:

  1. Problems of scope

    • The boundary of the system is ill-defined.

    • Unnecessary design information may be given.

  2. Problems of understanding

    • Users have incomplete understanding of their needs.

    • Users have a poor understanding of computer capabilities and limitations.

    • Analysts have poor knowledge of problem domain.

    • User and analyst speak different languages.

    • It’s easy to omit “obvious” information.

    • Different users have different views.

    • Requirements are often vague and untestable, e.g., “user friendly” and “robust.”

  3. Problems of volatility

    • Requirements evolve over time.

Now, examine each problem and see how to address it.

Problems of Scope

Problems of scope deal with defining the boundary of the system broadly enough, but it should still ensure they are requirements and not design.

The Boundary of the System Is Ill-Defined

Not only was this talked about this earlier in this book, but also it was stated in the previous section that you must know the boundary of the system. This needs to be defined at the start of the project, and the major stakeholders must agree on the boundaries of where the system begins and ends. Not only will this include the major users, but people like the DBAs, architects, and other technical people should be included in this decision.

As was stated in the previous section, during elicitation you may find that the boundary may need to change. In this situation, get back to the same stakeholders who agreed upon the boundaries to begin with, and vet this proposed change with them. Once you have presented the suggested modification, then abide by their decision. You may have additional requirements to collect as a result of this change. If it includes adding significant new functionality, this may translate to extensive additional work.

Unnecessary Design Information May Be Given

It was reiterated from Chapter 1 and many times throughout the book that you must write your requirements independent of implementation. That said, there are some situations where architectural constraints will modify that edict. Thus, your only challenge will be in deciding when something is implementation or is a constraint. A clue is if a developer says, “How about if we try…”; then you know that is probably implementation. However, if the project architect says, “Our systems must all follow the SOA,” then you have a constraint.

Problems of Understanding

Problems of understanding deal with poor communications between the users and the RE.

Users Have an Incomplete Understanding of Their Needs

Of course, users don’t understand all their needs. Part of that is because they only see a portion of the system, that which they use. You can compensate by talking to a diverse set of users to ensure you get a broader perspective. In addition, there are certain key stakeholders/users that you must talk with to ensure you get complete coverage, such as the DBAs and system monitors.

Users Have Poor Understanding of Computer Capabilities and Limitations

It probably is not a great revelation that users may not know computer capabilities and limitations, nor should they. That is the job of the designers and developers to exploit. It is also your job to help clarify points to them when you can. For example, if a particular type of search causes the system to take considerable longer, if they know that, they may not default to that type of search. You can point that out when you are talking with them.

In addition, when the users are not familiar with newer technologies, like say machine learning, you can offer requirements that address more capabilities because of your gap analysis, with the requirements vetted through the users.

Analysts Have Poor Knowledge of Problem Domain

You were just transferred to a new program that you know nothing about, other than you initially hearing about it. Of course, you will not be an expert on the project’s domain. There are techniques for gathering that knowledge, like doing documentation analysis, especially the business process description. If one does not exist or it is not a good one, write one yourself. Do whatever you can to get yourself up on the learning curve. Sometimes it takes months, and not just one or two, before you become knowledgeable enough to understand much of what people are saying. Ask many questions.

Real-World Note

As the adage goes, the only stupid question is the one that goes unasked. I have promoted this idea since graduate school, and it has served me well throughout my career. Mostly that has been borne out.

User and Analyst Speak Different Languages

Most users are not computer programmers. They were not hired for that skill set. Therefore, you have to be aware of biases that some people have. Certain computer engineers and developers think all users must be very literate in computers, when they are not. There still are people who are almost functionally computer illiterates. They can do some things but get out of their comfort zone quickly and are extremely uneasy. Be aware of that.

Real-World Note

I remember working with some network engineers who crafted a fix to a particular user problem. I pointed out that some of the steps were incomplete. The head engineer said that the users should know that stuff. He had the misconception that everyone thought as he did, when they do not.

The “Purpose of Elicitation” section in this chapter mentioned the recall example as one where the analysts and users had a different meaning for the same word. This happens all the time. That is why there is a chapter on jargon and language to help overcome this challenge. The best advice is to be cognizant of it and observe people when you are talking. Look for those clues when someone is confused, and follow up on it to see whether there is a language barrier.

Ease of Omitting “Obvious” Information

This is the trap that people assume a certain amount of information that everyone knows. That is one advantage to starting out as not being a full domain expert, as you will notice missing information and ask questions when you are confused.

Conflicting Views of Different Users

The previous section talked about this. Many times, this is because of different responsibilities, and you need to capture multiple points of view. In a few cases, you get wrong information from people. This is a bit more problematic. Here you have to find out which source is incorrect and eliminate it. It may be because the person does not know any better. You will have to decide whether you need to correct the person. The best way may be to involve the help desk to guide the person to the proper approach.

Requirements Are Often Vague and Untestable

Most everything focused on in this book has worked to eliminate the vague words from your requirements vocabulary. Trust me, when you get to a review of your requirements, someone will point out when you slip up. Just be vigilant when you craft your requirements, and after a break in time, review everything you have written and do a sanity check all of the good attributes against the requirements.

Problems of Volatility: Requirements Evolve

Problems of volatility deal with change. Chapter 2 and the previous section discussed this requirements growth of 1 to 4 percent a month. If you know this is going to happen (and it will), you can prepare for it.

Requirements Evolve Over Time

Having a change management process helps because it gives a process for vetting those potential changes and how they might affect what you have already. Also, soon you will learn about the agile approach for requirements definition, which helps to mitigate the growth issue by capturing requirements close to when the development will occur so that the growth is then taken into consideration at that time.

Process Improvement

As mentioned before, many times, you do not come into a project at the beginning. You may be partway into requirements collection or partway into the development, or you the system may be deployed and your project is in the O&M phase.

Sometimes the processes are not well defined or even well understood. You can help bring process improvement. You will have more success after you have experienced this more. Alas, you may not always have that option, so research more about your organization and what processes are in place to see how you can augment them. Only in rare cases should you throw out what processes are in place and start over.

Real-World Note

I have seen a new program manager do this, with only a little knowledge. He did not rely on current expertise and made changes that were not for the better, just adding chaos and not mitigating it. (Think of Dilbert’s pointy-hair boss.)

Ideally, you will find yourself somewhere in between the two ends of the spectrum (neither total chaos nor processes that are so rigid that you cannot make any improvements) that you can see what works and then decide what areas can be improved. You will also need to see who in management will sponsor your improvements. Without support or a champion who will help, you will not be able to succeed, no matter how good your proposed improvements. Keep in mind, this champion may not be one person, and it does not have to be a high-up person. It could be your team lead, your program manager, or even a more important stakeholder. If you find that person or people, establish a rapport with them, they you have started on the correct path.

Don’t abuse that champion, as they have full-time jobs too. Use them at the critical points and sparingly. That will take some judgment on your part. However, you are smart, and you are trying to do the correct thing. Remember, you will not always succeed. That is not a reflection on you, and it doesn’t necessarily indicate others are bad or made an incorrect decision. They may be aware of other factors that may preclude your approach ever or for a period of time.

Sometimes the ideas for process improvement can come from the stakeholders themselves. This can be seen in the following real-world experience.

Real-World Note

A few years back, when I began introducing the process for eliciting requirements for a replacement system, one of the senior stakeholders asked if we were going to review all the requirements at once. The requester objected to sitting in the same room for two weeks straight when reviewing requirements for the current system. I had proposed breaking the tasks into function areas so we could accomplish the review in a few hours at a time spread with intervening breaks of days or weeks, which was much more manageable for everyone, especially from a resource commitment time. The stakeholders found this much more acceptable.

The point to be gained from the real-world note is that improvements can come from various sources, not always you.

Throughout, this book has preached that thinking is your most important skill. In this case, where you want to improve the requirements process, you need to not only convince yourself of all the alternatives and their associated advantages and disadvantages but also convince your champion and then ultimately your entire organization. So, spend some time on that. Do it correctly.

References

Mochal, Tom. “10 techniques for gathering requirements.” January 2, 2008. TechRepublic U.S. Feb. 2015, www.techrepublic.com/blog/10-things/10-techniques-for-gathering-requirements/

Blain, Tyner “Ten Requirements Gathering Techniques.” November 21, 2006 Tyner Blain blog Feb. 2015, http://tynerblain.com/blog/2006/11/21/ten-requirements-gathering-techniques/

“Guideline: Requirements Gathering Techniques” Eclipse Process Framework (EPF). Feb. 2015, http://epf.eclipse.org/wikis/openup/core.tech.common.extend_supp/guidances/guidelines/req_gathering_techniques_8CB8E44C.html

Pohl, Klaus and Rupp, Chris. Requirements Engineering Fundamentals. Rocky Nook Publishing, April 21, 2011, p3-1 to 3-2.

A Guide to the Business Analysis Body of Knowledge, 3rd Edition (IIBA 2015)

McDermid, J. A. Requirements Analysis: Problems and the STARTS Approach. In IEE Colloquium on ‘Requirements Capture and Specification for Critical Systems’ (Digest No. 138), 4/1-4/4. Institution of Electrical Engineers, November 1989 http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=199038&url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel3%2F1950%2F5163%2F00199038.pdf%3Farnumber%3D199038 >

Merriam-Webster’s Collegiate® Dictionary, 11th Edition ©2016 by Merriam-Webster, Inc. ( www.merriam-webster.com/ )

Exercises

Exercise 1

You have a small HR application for tracking the job positions used within the company of 369 people who manufacture smartphone cases. Describe what elicitation techniques you would use for collecting the requirements for this system and why.

Exercise 2

You have a larger help desk system for your nationwide corporation that is networked together with 1,138 users. Describe what elicitation techniques you would use for collecting the requirements for this system and why.

Footnotes

1 By permission. From Merriam-Webster’s Collegiate® Dictionary, 11th Edition ©2016 by Merriam-Webster, Inc. ( www.merriam-webster.com/ )

2 By permission. From Merriam-Webster’s Collegiate® Dictionary, 11th Edition ©2016 by Merriam-Webster, Inc. ( www.merriam-webster.com/ )

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
52.14.86.218