Following are the steps to completing the Facade iteration:
4.2.1 Create the Mission, Vision, ValuesThe executive sponsor leads the effort to create the mission, vision, and values for the application and distributes it widely to generate support and awareness. This document essentially becomes the marching orders for the application development team, including the requirements analysts. For an example of mission, vision, and values, refer to Chapter 3. 4.2.2 Identify and Review Existing Documentation and Intellectual CapitalTo familiarize yourself with the history of this effort, read every memo, deliverable , proposal, and e-mail message you can get your hands on. If there is too much for one person to read, use a team approach. Each person takes a stack of paper or electronic documents and wades through it, reporting the interesting findings to the group. Here are the questions you're trying to answer:
The benefit of completing this step is that you create a reuse strategy at the first level: requirements. If someone has already done part of this work, it is worthwhile to try reusing it. Of course, reuse always comes with some overhead, so you must judge whether it is worth it. Often, it is. Major stumbling blocks are revealed, and fortuitous shortcuts will become clear. Let's take a closer look at each of these questions. 4.2.2.1 What Elements of the Proposed System Were Ruled Out Previously and by Whom?You're not searching for great detail here, only the subsystem name and general functionality that was killed before this effort started. Usually there is a long "fuzzy front end" (McConnell 1996) during which not much gets done but people mull the possibility of developing such a system. What was ruled out during this time? 4.2.2.2 Who Are the People Who Want This System Built? Who Doesn't Want It Built?This question may be more important than the first one. Find out the enemies of this system and their motivations. If possible, arrange to meet with them, or at least people in the organization who know something about them. At this point, don't try to convince them that they're wrong. Just gather data. They may have valid suggestions, and implementing them might result in only a small change to the requirements that would be easy to include at this early point. The motives of these naysayers may be political, and it will require your tact, charm , and negotiation skills to work with them. If you're a consultant or a low-ranking IT team member, this is a difficult step because the upper-level IT managers may not understand why this kind of discussion is important. However, you should still see how far you can go. Consider it practice in office politics for when you're in management. Remember that numerous systems have died for political and not technical reasons. 4.2.2.3 Have Any Packages Been Considered? Which Ones?It is important to ferret out this information. There may have been some investigation into whether any COTS packages could fulfill the requirements for this system. It is also likely that those COTS packages have evolved since the investigation. Check into it. During design, you can evaluate the suitability of these products. 4.2.2.4 This Project Visible to Upper Management? Who?High project visibility is both a curse and a gift. The curse is often that everyone wants his or her trademark on the visible project and wants to be associated with ituntil it begins to look as if there are problems. However, project visibility is a greater gift than a curse. When resources are required, it helps tremendously because no one wants to stand in the way of an initiative that has support and visibility at high levels of management. Quite simply, the higher the visibility in the organization, the better. 4.2.2.5 How Long Has This Idea Been Kicked Around? What Were Its Previous Incarnations?Find out what you can in this area, but don't go into great detail. Because elements of these previous incarnations will show up in your requirements, it pays to at least speak the language: "Oh, that sounds like it comes from the ORMS idea a few years ago." It's likely that this system has been attempted once or twice before and then stopped .
4.2.3 Get the Executive Sponsor's Unique ViewpointIt can be hard to get time from your executive sponsor. She is rushing from one high-flying meeting to another, and she has already started organizing her next big launch. As far as she's concerned , you should be self-sufficient. Yet your success rides on getting the exact definition of the problem from her. Get at least a sliver of her time, whatever it takes. Try this as your opening line: "Our team has our own answers to these questions, but we want to make sure we're right." Then ask her these questions.
There is another very important question to ask the executive sponsor. "How can we make sure this application helps fulfill our corporate mission, vision, and values?" The application your team is building must have "traceability" back to the goals of the business as a whole. This is true whether your organization is a private or public corporation, non-profit or government department. The organization is tasked with accomplishing some goal, and each and every task under the umbrella of the organization must be aligned with that goal. Make sure you ask the sponsor, or whoever else can help with the answer. These questions are best addressed in a face-to-face meeting or telephone call. E-mail will not work. This must be interactive. Certain things the sponsor says will spur other questions, and you should ask them. It is important to try to catch every nuance, every uncomfortable moment, every glance at her shoes. Body language, silences, and tone of voice will warn you of the dangers to come. Remember, if she's not happy with the result, you've failed. Period. 4.2.3.1 What Is the Problem Being Solved?This should be a problem statement, perhaps four or five sentences at the most. It should describe the business reason for the system. Usually, business systems are developed to help the organization stay competitive in the marketplace , to provide better customer service, to automate certain functions, to comply with government legislation, or to meet any other of a variety of environmental demands. State the factor that is pushing the need for this system, and state what is likely to occur if it is not developed. If there is a drop-dead date that has relevance to the problem statement, include it. 4.2.3.2 Why Is a System Required?What is the worst thing that would happen if this problem were not resolved? How much money would the new process save (or make) the company? What is a reasonable payback time? This question addresses only the business process and not necessarily a computer system. That's next. 4.2.3.3 Why Is a Computer System Required?Why can't this task be done manually? If the business process has been proven, why can't it be a manual process? This is a difficult question. If the executive sponsor starts to think about it, she may decide that an electronic system isn't needed at all, and that means you will have to find another project to work on! As project managers, we tend to jump too quickly into a self-fulfilling prophecy : We want to make a project happen whether or not it is meant to happen. If you take a hard, objective look at whether this system really should be built now, you might save countless heartaches later. If you and the executive sponsor end up talking each other out of a computer system to attack this problem, the executive sponsor may see you as someone who has just saved her budget millions of dollars, and she may be more likely to come to you again with requests , knowing that you'll take an objective view. Play the devil 's advocate with the sponsor. Pretend that you need to be convinced of the need for this process to be automated. It's what's best for the business. 4.2.3.4 Who Will Be Affected by the System Implementation? How?Identify all the groups that will be affected by this implementation. Determine the relative benefits or obstacles they will experience from this system. Judge this over a period of time. For example, the data entry clerks might be disadvantaged by the system at first but then realize its benefits after two months. This technique is called other people's views , or OPV (de Bono 1994). Don't limit the list to those directly affected; include the indirect effects as well. This step will give you valuable information later as you calculate costs versus benefits.
4.2.4 Review the Business Process DefinitionsIf there is business process documentation relevant to the application you are building, review it before you proceed. Business processes can be documented as flowcharts, activity diagrams, or even use cases. We discuss the traceability between the business process definitions and the system use cases in Chapter 7. 4.2.5 Identify the Users, Customers, and Related GroupsGet an up-to-date organization chart for the user group that includes management and all participants . Try to find out where the informal power lies. If you can also get last year's organization chart, so much the better. Seeing the way things have been reorganized will help you understand where the organization is trying to go and how a system could help it get there. If possible, talk to a sampling of the users. Take some of them out for lunch . Include not only the managers but also a decent sampling across the board. These are get-to-know-you sessions and not requirements gatheringyet. That comes later. By customers , we mean the real, honest-to-goodness customers outside the organization, not internal customers. Building a system for a grocery chain? Identify the people who would benefit: the clerks, the shoppers, the pharmacists. How about a manufacturing firm? Identify the wholesalers and the final customers, assuming that your system will change how they view the firm.
4.2.6 Interview the StakeholdersYou can do this task in several ways. You can conduct individual interviews with the users, user management, and a sampling of their customers. You can hold a concentrated joint requirements planning session, during which all interested parties get together in a hotel conference room and work through all the issues until a semblance of requirements emerges. The differences in these approaches change the speed, but not the content, of your iterations. You will most likely emerge from the JRP with a set of Filled use cases, which will need to be consolidated with the Focused iterations before they are completely usable. This means that to avoid wasting the participants' time you may need to walk into the JRP with a set of Facade use cases. With individual interviews, on the other hand, the interview notes will come together as input to your Facade use cases. Remember Ellen Gottesdiener's book on requirements workshops as a useful tool (Gottesdiener 2002). 4.2.7 Create a Stakeholders ListOnce you've identified the stakeholders and had some discussion with them, create a simple list of them. Stakeholders will come from inside the organization you're providing a solution for. They will also come from outside that organization. Outside stakeholders may include customers, suppliers, partner companies, resellers , investors, and people in other departments (if it's a departmental application). Remember, a stakeholder is someone who has a direct "stake" in the success of the system. A rule of thumb to use is to think about whether someone in this category would be willing to spend a week of their time (given reasonable notice) to make sure this application goes well. If yes, they are a potential stakeholder. 4.2.8 Find the ActorsActors are the people and applications that interact with this application. Ask the executive sponsor who she thinks the actors are, and ask each stakeholder. Your definition of the actors may be fuzzy at this point, and that is OK. Define them as they arise and push concerns about duplication and definition into later iterations. At this point, consider every stakeholder as a potential actor. 4.2.9 Create the Use Case Survey (A List of Facade Use Cases)The output of this step is a list of sketchy use cases that outlines the scope of the proposed system. The level of detail is crucial because too much detail here will hurt the iterative nature of this process. It is important to identify the need for the use case, describe in two or three sentences what is involved, and move on. We're creating use cases that treat the system as if it were a bread-making machine. You put the ingredients into the machine, and after a while you take out a loaf of bread. The focus is on the ingredients going in and the product coming out. What goes on inside the bread-making machine is not our concern, and certainly not part of requirements. Facade use cases show the basic, essential, high-level interactions that this application must support (Constantine 1999). Use cases focus on the ingredients that go in and the result that comes out.
When you're creating use cases, do
Don't
Table 4.1 shows a use case survey. Consider each line on this survey a Facade use case. Table 4.1. Use Case Survey
Actor names and use case names can be quite informal and may not be completely consistent in Facade. They can be cleaned up later. 4.2.10 Collect and Document Nonfunctional RequirementsThere are three steps to identifying and documenting nonfunctional requirements in this iteration:
In the Filled and Focused iterations, you refine your nonfunctional requirements and create a stereotype to relate nonfunctional requirements to the use cases. Stereotypes are first explored in Chapter 2, in which we describe how this feature of the UML can be employed to associate related information to a number of use cases. For this iteration, we only capture and document these requirements. 4.2.10.1 Identify Nonfunctional RequirementsThe best time to identify nonfunctional requirements (see Table 4.2) is while you are exploring the functional requirements. Whenever you identify a candidate nonfunctional requirement, document it. Do not wait to attempt to do this as a single task later. Your group of users is an excellent source for identifying nonfunctional requirements. When you interview stakeholders while building the use cases, use this opportunity to gather the nonfunctional requirements, too. Table 4.2. Definitions of Nonfunctional Requirements
Ask the users about response time needs, and ask them what annoys them about the way the system works now. The answers will give you valuable leads for nonfunctional requirements. If there is a legacy system, it can be another good source for nonfunctional requirements. Ask users what they liked and disliked about it. Be careful not to confuse business-related gripes with those that provide nonfunctional requirements. For example, "The existing system only allows us to capture three lines of miscellaneous information about a customer." Increasing this length constraint can be documented as a normal requirement. The flow of events would contain the statement "Enter the miscellaneous information provided by the customer (no length constraint)." These nonfunctional requirements, and many others like them, contribute to the usefulness of a system. For a number of reasons, however, it is common for these topics never to come up during requirements discussions. They are important nevertheless. TIP: One way to deal with nonfunctional requirements is to rate their relative importance, numbering them 1 through n . When confronted with a list of nonfunctional requirements, businesspeople always have the same response: "We'd like them all high priority, thanks!" Even businesspeople who understand that use cases must be prioritized and delivered in stages seem to think that computer applications are magically able to fulfill every nonfunctional requirement without any additional work. As you probably know, just the opposite is true. Nonfunctional requirements, contributing to architectural requirements, often cost more than the implementation of the use cases! A strict performance requirement of, say subsecond response time for 10,000 concurrent users could require such massive architecture that the cost would dwarf what was required to build a few Java programs to implement the use cases. When businesspeople think about availability, for instance, they assume that having the application up "all the time" is no problem. Essentially, they initially are assuming "infinite availability." Our response when businesspeople make this assumption is to mention that infinite availability will cost an infinite amount. Usually, that is not the price they had in mind. This goes for every nonfunctional requirement. Businesspeople are adept negotiators , once they can understand some general cost parameters around each nonfunctional requirement level, they are happy to trade up and down until there is a solution they can live with. Don't let their initial assumptions drive you into an architectural nightmare. It is quite likely that there will be multiple nonfunctional requirements in each category. Number the individual nonfunctionals and use the categories merely to add information to the entries. 4.2.10.2 Validate the RequirementsAt this point, it helps to recap the functional and nonfunctional requirements and walk through them to test whether they make sense as a group. 4.2.10.3 Document Nonfunctional RequirementsFigure 4.1 presents a template for documenting the nonfunctional requirements. Figure 4.1. Technical Requirements Template
Describe the requirement, include the exceptions that are special cases of the requirement, and name the use cases that it applies to. Some nonfunctional requirements, overall system constraints, apply to many use cases. It is not necessary to list all of them; instead, write, "Most data entry use cases." This approach spares you from having to write the same requirement for many use cases and makes it easier to alter. You can be more specific later. Be careful to avoid including assumptions in the nonfunctional requirements. For example, a technical requirement might be expressed as "Back up nightly to tape storage." The requirement is to prevent data loss, and it describes the frequency of this task. The mention of a tape solution, however, is either an architectural assumption or a technical constraint. Ask the user which it is. If it is a technical constraint, you have identified an additional nonfunctional requirement. If it is not, you risk adding an invalid assumption to your requirements. Avoid documenting platitudes such as "Each window must have a method of closing it as part of the interface." Such statements do not add value to your use cases, but they may be appropriate rules in the user interface standards document. Table 4.3 lists nonfunctional requirements for one use case example. Table 4.3. Manage Property Nonfunctional Requirements
TIP: When you're looking for nonfunctional requirements, refer to standards documents, where some technical constraints and requirements have probably been documented. Many organizations create and maintain standards documents to describe solutions to recurring problems. They can include everything from GUI standards to the software and hardware that is normally used. You should review these documents and become familiar with their contents. When you discover an already defined nonfunctional requirement, simply determine that it relates to your use case and state that it follows the established standard. This fits our principle of documenting only in one place whenever possible. 4.2.11 Start the Business Rules CatalogBusiness rules (see Chapter 3) govern how the organization conducts its business, so they likely apply to several or all use cases. Look for business rules that constrain the construction of use cases for this application. Try to produce at least a few rules in this early iteration, but there is no need to create a comprehensive catalog yet. See Table 4.4 for an example. Table 4.4. Business Rules Example
4.2.12 Create a Risk AnalysisCreate a risk analysis document in this iteration as a repository for the risks that surface as you proceed through discussions with the users. Chapter 3 describes the format and role of the risk analysis. 4.2.13 Create a Statement of WorkCreate a statement of work as a contract to fulfill during this development effort. This document outlines a set of scope boundaries that you and the user groups agree to. Chapter 3 describes the format and role of the statement of work. 4.2.14 Begin Experimenting with User Interface MetaphorsEarly in the Facade iteration is the time to begin trying different user interface metaphors for applications that have a substantial amount of human interface. A metaphor is something that the user interface will represent, some tangible organizing mechanism. Some examples of metaphors:
Metaphors help the users to intuitively move around the functions without having to be trained keystroke-by-keystroke to know where to go. If you have the name of a new contact you've made, you know that you should go to the place marked "Address Book" and then look for something that says "Add" or "New." However, metaphors can fall apart too. Here's how Alan Cooper (1995), a user interface guru, describes the failed General Magic MagiCap user interface in his book About Face: The Essentials of User Interface Design :
Interface design is best left to the experts. Hire or contract with a "usabililty analyst" who has knowledge of how to craft user interfaces in a way that is intuitive for people. A lot of people talk about "usability studies" instead of "usability design." A usability study implies that someone will come in after the fact and examine what the technical designers have done, critique it, and be on their way. To us, this seems backwards . Good usability design from the start can create huge savings in user training and can also be the "make or break" between the application being accepted by its users or not. Yes, usability costs money, but if you can find the right usability person (or team) you will receive a very high return-on-investment. 4.2.15 Begin User Interface StoryboardsUser interface design usually means creation of storyboards. Storyboards, borrowed from the television advertising world, are large cardboard wall charts with smaller pictures pasted on depicting each "scene." In a television ad, the storyboard may have one scene of the person waking up with the cough, one scene where the spouse is offering his comments, another where the magic cough remedy is consumed, and a last scene where everyone is sleeping happily. The same pattern applies to user interface (UI) storyboards, which show how a user may navigate through the Web pages or screens to accomplish a goal. These UI storyboards will match the definitions of use case paths, but since the use cases aren't much more than names and descriptions at this point, the storyboards are still just graphic depictions of data entry, reporting, and other functions. It still makes sense to begin the storyboarding effort in the Facade iteration, since there will be a lot of discussion about colors, metaphors, and field placement yet to come. Again, this is work for a professional. There are specialists who create Web sites and applications, usually called graphic designers or user interface specialists. Make sure that the people you use for this task have some basic knowledge of usability, or there will be problems between the usability analyst and the graphic designer. 4.2.16 Get Informal Approval from the Executive SponsorIt is doubtful that you'll get your executive sponsor's attention long enough to leaf through a set of partially finished (Facade) use cases at this point. Instead, summarize what you believe are the sticking points: areas that are unclear, fraught with danger, or contentious. Bring these up with your sponsor and create an action item for each one as necessary. This is really all you need to do for this step. |