Information System analysis, modeling & Design

profileBidemi.olajide7
resources.zip

ASSIGNMENT RESOURCES 1 1.docx

Lecture Notes

Process-Oriented Analysis

Data Flow Diagrams and Data Dictionaries

Created by Daniel Le

Learning objectives

1. Learn to use data flow diagrams (DFDs) to coherently represent the information gathered as part of requirements determination.

2. Learn how to draw and revise data flow diagrams.

3. Learn about what to do and what not to do when drawing DFDs

4. Learn how to perform balancing and decomposition of DFDs

5. Understand rules to develop a context diagram, a set of balanced data flow diagrams, and a data dictionary

6. Understand how to use DFDs as part of the analysis of an information system and as a tool for supporting business process reengineering

Overview

In this week lecture, we review process-oriented analysis using structured analysis following DeMarco [1979], Yourdon [1989], and McMenamin and Palmer [1985]. The fact-finding techniques presented earlier are used to identify human information requirements. We will use that information to develop the system logical model in the system analysis phase and to build the system physical model later in the system design phase. The logical model shows what the system does while the physical model focuses on how the system will be constructed in a specific hardware/software environment. Data modeling concepts and tools used to develop these system models include data flow diagrams and data dictionaries. A data flow diagram describes graphically how data moves through the system while data dictionary consists of information about the system’ data.

STRUCTURED SYSTEMS ANALYSIS CONCEPTUAL FOUNDATIONS

1. Functions of an information system are the processes that transform application data.

2. Processes and the flows of data into and out of those processes are emphasized

3. Structured systems analysis is based on systems theory, which assumes inputs are fed into processes to produce outputs.

4. Some sort of feedback is included to eliminate system entropy, that is, to keep the system from 'running down.'

[Source: Conger Sue (2008), The New Software Engineering, a Creative Commons Attribution 3.0 License]

PROCESS MODELING

1. Process modeling involves graphically representing the functions or processes, that capture, manipulate, store, and distribute data between a system and its environment and between components within a system.

2. The primary deliverables from process modeling are a set of coherent, interrelated data flow diagrams

STRUCTURED SYSTEMS ANALYSIS CONCEPT TERMS

1. Assumptions in using the "structured system analysis"

· Focusing on what the application is to do. That is, what are its functions or processes? A function or process is some activity that transforms an input data flow into an output data flow.

· Treating the problem in a top-down manner.

In top-down analysis, we analyze the external interfaces of the application first, then high level functions, and finally, lower level functions.

2. The scope of project activity and a context diagram

· The scope defines the boundaries of the project

· What is in the project and what is outside of the project.

· The scope of the project is defined in a context diagram

· A context defines a setting or environment.

· In structured systems analysis, the context diagram defines the interactions of the application with the external world. It consists of an application and external entities that are connected together by arrows.

3. Data Flow Diagram (DFD)

· A data flow diagram is a graphic representation of the application's component parts.

· Elements of an DFD consist of processes, external entities, data flows, and data stores (data files or databases)

· A function or process is some activity that transforms an input data flow into an output data flow.

· An external entity is a person, place, or thing with which the application interacts

· A data flow is data or information that is in transit. Data flows in a diagram are directed arrows that depict data movement from one place to another.

· Differences between data flows and files or data stores

a. Data flows are distinct from data stores in their time orientation.

· Data flows are temporary and cease to exist once they are acted upon by a process.

· Files or data stores are persistent and maintained over time.

b. Files or data stores may represent one or more data structures.

· Quality assurance for DFD completeness and consistency can be performed by comparing the context to the data flow.

· There are several analysis levels of DFDs and DFDs start at a high level of abstraction to summarize the processing taking place. At successively more detailed levels, procedural and data are added to describe the processing in more detail.

· DFD balancing is the act of checking entities, data flows, and processes across the levels of the diagram set. After each analysis, the current level of DFDs should be balanced with the previous level.

4. Data Dictionaries

· The data dictionary compiles detailed definitions for each element in a DFD.

· The dictionary entries for processes contain details of how to accomplish the process.

5. Structured Systems Analysis Activities

The specific activities in structured systems analysis are:

· Develop a context diagram

· Develop a set of balanced data flow diagrams

· Develop a data dictionary

DEVELOP CONTEXT DIAGRAM

The context diagram summarizes the scope of the project.

Rules for Developing Context Diagram

1. Define the boundaries (i.e., scope) of the application. Specifically, define what the application will do and what it will not do. Draw the circle identifying the application and write the application name in the center.

2. Using the application boundary as a starting point, identify all external entities with which the application must interact. For each entity, draw one square on the diagram and label the square.

3. For each entity, create a definition in the data dictionary.

4. For each external entity, identify the specific data flows that define the interface.

5. For each data flow, create a definition and list of tentative contents in the data dictionary.

DEVELOP DATA FLOW DIAGRAM

Rules for Developing a Data Flow Diagram

To develop a DFD, iterate through the following steps until a primitive level is reached:

1. Define the processes.

2. Define the files and other data flows required to support the processes.

3. Draw a Level 0 DFD. At level 0, ignore trivial error paths and data stores. If you define a validation process, you must eventually identify an error path. Define the error path at the primitive level. Similarly for data stores, define files when they are shared between processes. Introduce files that are only used within a given process at the level at which the file is shared between two or more subprocesses.

4. Balance the DFD with the context diagram. Compare the net inputs and outputs to external entities on the DFD to the net inputs and outputs on the context diagram. There should be a one-to-one correspondence between the diagrams.

5. Iterate through this procedure until the primitive level of DFD is reached for all processes. Always balance the current level DFD's net inputs and outputs with those of the previous level.

The DFD syntax rules are:

a. All processes are connected to something else.

b. All process have both inputs and outputs.

c. No processes have only outputs or only inputs.

d. Processes may connect to anything: other processes, data stores, or entities.

e. All processes have a unique name and number.

f. Each process number is used once in the diagram set.

g. Only sub-processes of a process shall follow the numbering scheme of the parent process.

h. Entities and data stores may connect only to processes. Another way to state this is that each data flow must have at least one end connected to a process.

i. Data flows are the only legal type of connection between entities, processes, and data stores.

j. Make sure there are no dangling arrows.

k. The net data flows to and from context diagram external entities must balance, that is, be present, in each level of DFDs.

l. Trivial errors and exceptions are not handled until Ll or lower in the DFD set.

m. Trivial data stores show up in the diagram set the first time they are referenced by a process.

DEVELOP DATA DICTIONARIES

The data dictionary (or repository) is used to maintain definitions of all DFDs and other analysis information, including files, fields, flows, and external entities, in addition to processes.

1. Definitions for each element in a DFD are detailed in their data dictionaries.

2. There are five set of data dictionary contents and rules for entities, processes, data stores, data flows, and attributes.

DATA FLOW DIAGRAMMING MECHANICS

1. Definitions and Symbols

There are two different standard sets of data flow diagram symbols: one is developed by Gane and Sarson (1979) and the other is developed by DeMarco (1979) and Yourdon (Yourdon and Constantine, 1979).

2. Developing DFDs: An Example

An example using Roop Chand restaurant, a fictional restaurant in New Delhi, India, owned by Aman and Vansh Dixit, to illustrate how DFDs are used to model the logic of data flows in information systems.

3. Rules of Data Flow Diagramming

There is a set of rules that we must follow when drawing data flow diagrams and then evaluating DFDs for correctness. In addition, some illustrations are presented to show correct and incorrect ways to draw DFDs as they are applied to these rules.

4. Decomposition of DFDs

Functional decomposition is an iterative process of breaking the description of a system down into finer and finer detail, which creates a set of charts in which one process on a given chart is explained in greater detail on another chart.

5. Balancing DFDs

Conservation is the conservation of inputs and outputs to a data flow diagram process when that process is decomposed to a lower level. During the modeling processes, we decompose DFDs from one level to the next and it is required that we must conserve inputs and outputs to a process at the next level of decomposition through an activity called balancing DFDs.

USING DATA FLOW DIAGRAMMING IN THE ANALYSIS PROCESS

1. Guidelines for Drawing DFDs

Additional guidelines as given for drawing DFDs that cover completeness, consistency, timing considerations, the iterative nature of drawing DFDs, and primitive DFDs

· DFD completeness is the extent to which all necessary components of a data flow diagram have been included and fully described.

· DFD consistency is the extent to which information contained on one level of a set of nested data flow diagrams is also included on other levels.

· Primitive DFD is the lowest level of decomposition for a data flow diagram.

2. Using DFDs as Analysis Tools and in Business Process Reengineering

We have learned that DFDs can be used to model systems but DFDs can also be used as analysis tools to discover discrepancies between sets of DFDs and to model processes in Business Process Reengineering (BPR).

AUTOMATED SUPPORT TOOLS

1. A large number of CASE tools to support structured analysis are available on the market.

2. All of the tools support DFDs and dictionaries.

References

1. Conger, Sue (2008). The New Software Engineering. A Creative Commons Attribution 3.0 License.

2. J.B. Dixit and Raj Kumar (2007). Structured System Analysis and Design, Laxmi Publications.

Disclaimer: Some articles or sites I select or refer you to may include materials or opinions associated with particular political or other ideological positions. My pointing to these sites in no way suggests that I am encouraging a particular ideology or position on this or any other related topic; these are simply some of the more interesting and informative sites I have found to cover the topic(s) at hand. As always, you must consider the source when reading any materials that may reflect a particular ideological point of view on an issue.

ASSIGNMENT RESOURCES 2.docx

Lecture Notes

An Example of DFDs for A Courses Registration System

Created by Daniel Le Revised by Daniel Le 07/31/2016

QUESTION

A summary of business activities for registering courses for enrolled students and for registering class lists for faculty members at an online university is as follows:

Students send in a course registration form consisting of their personal information and their desired courses. The system checks that the courses are available and that the student is academically qualified to take the course. Based on the checking results, the system will send to the student a confirmation and/or rejection letter with detailed information for each requesting course. Faculty members will receive registering class lists when the registration period is complete.

1. Draw a context-level data flow diagram for the “Courses Registration” system.

2. Explode the above context-level diagram by drawing the logical data flow diagram level 0 showing all the major processes.

SOLUTION

1. Based on information described in the question, the following components are required for the context-level diagram.

Process name: Courses Registration System

External entities: Student and Faculty member

Data flows: Course Registration Form, Confirmation/Rejection Letter, & Class List

2. Based on information described in the question and the above context-level diagram, the following components are required for the diagram level 0.

Process names: Check Course Availability and Academic Qualification

Register Requesting Courses

Confirm/Reject Courses Registration

Generate Class List

Data stores: Courses (Course details)

Students (Student details)

External entities: Student and Faculty member

Data flows: Refer to the diagram

ASSIGNMENT RESOURCES 3.docx

Lecture Notes

Process-Oriented Analysis

Data Flow Diagrams and Data Dictionaries

Created by Daniel Le

Learning objectives

1. Learn to use data flow diagrams (DFDs) to coherently represent the information gathered as part of requirements determination.

2. Learn how to draw and revise data flow diagrams.

3. Learn about what to do and what not to do when drawing DFDs

4. Learn how to perform balancing and decomposition of DFDs

5. Understand rules to develop a context diagram, a set of balanced data flow diagrams, and a data dictionary

6. Understand how to use DFDs as part of the analysis of an information system and as a tool for supporting business process reengineering

Overview

In this week lecture, we review process-oriented analysis using structured analysis following DeMarco [1979], Yourdon [1989], and McMenamin and Palmer [1985]. The fact-finding techniques presented earlier are used to identify human information requirements. We will use that information to develop the system logical model in the system analysis phase and to build the system physical model later in the system design phase. The logical model shows what the system does while the physical model focuses on how the system will be constructed in a specific hardware/software environment. Data modeling concepts and tools used to develop these system models include data flow diagrams and data dictionaries. A data flow diagram describes graphically how data moves through the system while data dictionary consists of information about the system’ data.

STRUCTURED SYSTEMS ANALYSIS CONCEPTUAL FOUNDATIONS

1. Functions of an information system are the processes that transform application data.

2. Processes and the flows of data into and out of those processes are emphasized

3. Structured systems analysis is based on systems theory, which assumes inputs are fed into processes to produce outputs.

4. Some sort of feedback is included to eliminate system entropy, that is, to keep the system from 'running down.'

[Source: Conger Sue (2008), The New Software Engineering, a Creative Commons Attribution 3.0 License]

PROCESS MODELING

1. Process modeling involves graphically representing the functions or processes, that capture, manipulate, store, and distribute data between a system and its environment and between components within a system.

2. The primary deliverables from process modeling are a set of coherent, interrelated data flow diagrams

STRUCTURED SYSTEMS ANALYSIS CONCEPT TERMS

1. Assumptions in using the "structured system analysis"

· Focusing on what the application is to do. That is, what are its functions or processes? A function or process is some activity that transforms an input data flow into an output data flow.

· Treating the problem in a top-down manner.

In top-down analysis, we analyze the external interfaces of the application first, then high level functions, and finally, lower level functions.

2. The scope of project activity and a context diagram

· The scope defines the boundaries of the project

· What is in the project and what is outside of the project.

· The scope of the project is defined in a context diagram

· A context defines a setting or environment.

· In structured systems analysis, the context diagram defines the interactions of the application with the external world. It consists of an application and external entities that are connected together by arrows.

3. Data Flow Diagram (DFD)

· A data flow diagram is a graphic representation of the application's component parts.

· Elements of an DFD consist of processes, external entities, data flows, and data stores (data files or databases)

· A function or process is some activity that transforms an input data flow into an output data flow.

· An external entity is a person, place, or thing with which the application interacts

· A data flow is data or information that is in transit. Data flows in a diagram are directed arrows that depict data movement from one place to another.

· Differences between data flows and files or data stores

a. Data flows are distinct from data stores in their time orientation.

· Data flows are temporary and cease to exist once they are acted upon by a process.

· Files or data stores are persistent and maintained over time.

b. Files or data stores may represent one or more data structures.

· Quality assurance for DFD completeness and consistency can be performed by comparing the context to the data flow.

· There are several analysis levels of DFDs and DFDs start at a high level of abstraction to summarize the processing taking place. At successively more detailed levels, procedural and data are added to describe the processing in more detail.

· DFD balancing is the act of checking entities, data flows, and processes across the levels of the diagram set. After each analysis, the current level of DFDs should be balanced with the previous level.

4. Data Dictionaries

· The data dictionary compiles detailed definitions for each element in a DFD.

· The dictionary entries for processes contain details of how to accomplish the process.

5. Structured Systems Analysis Activities

The specific activities in structured systems analysis are:

· Develop a context diagram

· Develop a set of balanced data flow diagrams

· Develop a data dictionary

DEVELOP CONTEXT DIAGRAM

The context diagram summarizes the scope of the project.

Rules for Developing Context Diagram

1. Define the boundaries (i.e., scope) of the application. Specifically, define what the application will do and what it will not do. Draw the circle identifying the application and write the application name in the center.

2. Using the application boundary as a starting point, identify all external entities with which the application must interact. For each entity, draw one square on the diagram and label the square.

3. For each entity, create a definition in the data dictionary.

4. For each external entity, identify the specific data flows that define the interface.

5. For each data flow, create a definition and list of tentative contents in the data dictionary.

DEVELOP DATA FLOW DIAGRAM

Rules for Developing a Data Flow Diagram

To develop a DFD, iterate through the following steps until a primitive level is reached:

1. Define the processes.

2. Define the files and other data flows required to support the processes.

3. Draw a Level 0 DFD. At level 0, ignore trivial error paths and data stores. If you define a validation process, you must eventually identify an error path. Define the error path at the primitive level. Similarly for data stores, define files when they are shared between processes. Introduce files that are only used within a given process at the level at which the file is shared between two or more subprocesses.

4. Balance the DFD with the context diagram. Compare the net inputs and outputs to external entities on the DFD to the net inputs and outputs on the context diagram. There should be a one-to-one correspondence between the diagrams.

5. Iterate through this procedure until the primitive level of DFD is reached for all processes. Always balance the current level DFD's net inputs and outputs with those of the previous level.

The DFD syntax rules are:

a. All processes are connected to something else.

b. All process have both inputs and outputs.

c. No processes have only outputs or only inputs.

d. Processes may connect to anything: other processes, data stores, or entities.

e. All processes have a unique name and number.

f. Each process number is used once in the diagram set.

g. Only sub-processes of a process shall follow the numbering scheme of the parent process.

h. Entities and data stores may connect only to processes. Another way to state this is that each data flow must have at least one end connected to a process.

i. Data flows are the only legal type of connection between entities, processes, and data stores.

j. Make sure there are no dangling arrows.

k. The net data flows to and from context diagram external entities must balance, that is, be present, in each level of DFDs.

l. Trivial errors and exceptions are not handled until Ll or lower in the DFD set.

m. Trivial data stores show up in the diagram set the first time they are referenced by a process.

DEVELOP DATA DICTIONARIES

The data dictionary (or repository) is used to maintain definitions of all DFDs and other analysis information, including files, fields, flows, and external entities, in addition to processes.

1. Definitions for each element in a DFD are detailed in their data dictionaries.

2. There are five set of data dictionary contents and rules for entities, processes, data stores, data flows, and attributes.

DATA FLOW DIAGRAMMING MECHANICS

1. Definitions and Symbols

There are two different standard sets of data flow diagram symbols: one is developed by Gane and Sarson (1979) and the other is developed by DeMarco (1979) and Yourdon (Yourdon and Constantine, 1979).

2. Developing DFDs: An Example

An example using Roop Chand restaurant, a fictional restaurant in New Delhi, India, owned by Aman and Vansh Dixit, to illustrate how DFDs are used to model the logic of data flows in information systems.

3. Rules of Data Flow Diagramming

There is a set of rules that we must follow when drawing data flow diagrams and then evaluating DFDs for correctness. In addition, some illustrations are presented to show correct and incorrect ways to draw DFDs as they are applied to these rules.

4. Decomposition of DFDs

Functional decomposition is an iterative process of breaking the description of a system down into finer and finer detail, which creates a set of charts in which one process on a given chart is explained in greater detail on another chart.

5. Balancing DFDs

Conservation is the conservation of inputs and outputs to a data flow diagram process when that process is decomposed to a lower level. During the modeling processes, we decompose DFDs from one level to the next and it is required that we must conserve inputs and outputs to a process at the next level of decomposition through an activity called balancing DFDs.

USING DATA FLOW DIAGRAMMING IN THE ANALYSIS PROCESS

1. Guidelines for Drawing DFDs

Additional guidelines as given for drawing DFDs that cover completeness, consistency, timing considerations, the iterative nature of drawing DFDs, and primitive DFDs

· DFD completeness is the extent to which all necessary components of a data flow diagram have been included and fully described.

· DFD consistency is the extent to which information contained on one level of a set of nested data flow diagrams is also included on other levels.

· Primitive DFD is the lowest level of decomposition for a data flow diagram.

2. Using DFDs as Analysis Tools and in Business Process Reengineering

We have learned that DFDs can be used to model systems but DFDs can also be used as analysis tools to discover discrepancies between sets of DFDs and to model processes in Business Process Reengineering (BPR).

AUTOMATED SUPPORT TOOLS

1. A large number of CASE tools to support structured analysis are available on the market.

2. All of the tools support DFDs and dictionaries.

References

1. Conger, Sue (2008). The New Software Engineering. A Creative Commons Attribution 3.0 License.

2. J.B. Dixit and Raj Kumar (2007). Structured System Analysis and Design, Laxmi Publications.

Disclaimer: Some articles or sites I select or refer you to may include materials or opinions associated with particular political or other ideological positions. My pointing to these sites in no way suggests that I am encouraging a particular ideology or position on this or any other related topic; these are simply some of the more interesting and informative sites I have found to cover the topic(s) at hand. As always, you must consider the source when reading any materials that may reflect a particular ideological point of view on an issue.

ASSIGNMENT RESOURCES 4.docx

W4.Safari.References

Ctrl+Click the following links to go to their place in this document

· Prototyping

· Software Engineering: A Methodical Approach - (Go to the section 5.6 Prototyping)

· Prototyping and its advantages and disadvantages

· What Is Agile?

· Chapter 2.Understanding Agile Values (Read the entire Chapter 2)

· The 12 Principles of Agile Software

· Chapter 3. The Agile Principles (Read the entire Chapter 3)

Prototyping

A3.6 Prototyping

In prototyping, the user gets a “trial model” of the software and is allowed to critique it. User responses are used as feedback information to revise the system. This process continues until a software system meeting user satisfaction is obtained.

The following are some basic guidelines for developing a prototype:

· Work in manageable modules.

· Build prototype rapidly.

· Modify prototype in successive iterations.

· Emphasize the user interface—it should be friendly and meeting user requirements.

Kinds of Prototypes

There are various types of prototypes that you will find in software engineering. Among the various categories are the following:

Patched-up Prototype or Production Model: This prototype is functional the first time, albeit inefficiently constructed. Further enhancements can be made with time.

Non-operational or Interactive Prototype: This is a prototype that is intended to be tested, in order to obtain user feedback about the requirements of the system represented. A good example is where screens of the proposed system are designed; the user is allowed to pass through these screens, but no actual processing is done. This approach is particularly useful in user interface design (see Chapter 6).

First of Series Prototype: This is an operational prototype. Subsequent releases are intended to have identical features, but without glitches that the users may identify. This prototype is typically used as a marketing experiment: it is distributed free of charge, or for a nominal fee; users are encouraged to use it and submit their comments about the product. These comments are then used to refine the product before subsequent release.

Selected Features Prototype or Working Model: In this prototype, not all intended features of the (represented) software are included. Subsequent releases are intended to be enhancements with additional features. For this reason, it is sometimes referred to as evolutionary prototype. The initial prototype is progressively refined until an acceptable system is obtained.

Throw-away Prototype: An initial model is proposed for the sole purpose of eliciting criticism. The criticisms are then used to develop a more acceptable model, and the initial prototype is abandoned.

Software Engineering: A Methodical Approach

5.6 Prototyping

In prototyping, the user gets a “trial model” of the software and is allowed to critique it. User responses are used as feedback information to revise the system. This process continues until a software system meeting user satisfaction is obtained (review section 1.4).

The following are some basic guidelines for developing a prototype:

· Work in manageable modules.

· Build prototype rapidly.

· Modify prototype in successive iterations.

· Emphasize the user interface — it should be friendly and meeting user requirements.

There are various types of prototypes that you will find in software engineering. Among the various categories are the following:

· Patched-up Prototype or Production Model:  This prototype is functional the first time, albeit inefficiently constructed. Further enhancements can be made with time.

· Non-operational or Interactive Prototype: This is a prototype that is intended to be tested, in order to obtain user feedback about the requirements of the system represented.  A good example is where screens of the proposed system are designed; the user is allowed to pass through these screens, but no actual processing is done. This approach is particularly useful in user interface design (see chapter 11).

· First of Series Prototype:  This is an operational prototype.  Subsequent releases are intended to have identical features, but without glitches that the users may identify.  This prototype is typically used as a marketing experiment: it is distributed free of charge, or for a nominal fee; users are encouraged to use it and submit their comments about the product. These comments are then used to refine the product before subsequent release.

· Selected Features Prototype or Working Model:  In this prototype, not all intended features of the (represented) software are included. Subsequent releases are intended to be enhancements with additional features. For this reason, it is sometimes referred to as evolutionary prototype. The initial prototype is progressively refined until an acceptable system is obtained.

· Throw-away Prototype: An initial model is proposed for the sole purpose of eliciting criticism. The criticisms are then used to develop a more acceptable model, and the initial prototype is abandoned.

Prototyping and its advantages and disadvantages

PROTOTYPING

Prototyping is an important technique for eliciting, analysing, demonstrating and validating requirements. Analysts often complain that the business users do not know what they want, and that as a result it is difficult to define the requirements. However, it can be very difficult for anyone to envisage requirements for the future without having a sense of what is possible. It is much easier to review a suggested solution and identify where there are errors or problems. If business users are unclear about their requirements, prototypes can help them visualise the new system and provide insight into possible requirements. Using a prototype often releases the blocks to thinking, and can result in greater understanding and clarity. Prototypes also offer a way of demonstrating how the new processes or system might work and provide a concrete basis for evaluation and discussion. Agile software development approaches, such as DSDM and Scrum, use evolutionary prototyping as an integral part of their development lifecycle.

Prototyping involves building simulations of a process or system in order to review them with the users to increase understanding about the requirements. There is a range of approaches to building prototypes. They may be built using the organisation’s system development environment so that they exactly mirror the future system. Images of the screens and navigations may be built using presentation software packages such as Microsoft PowerPoint or they may be mock-ups on paper. A quick but effective form of prototyping is to use flipchart sheets, pens and packs of sticky notes and work with the users to develop paper prototypes. This will enable the users to develop screens, identify navigation paths, define the data they must input or refer to, and prepare lists of specified values that they know will apply. This approach can also be used to develop prototypes of a business process.

There is a strong link between scenarios and prototyping because scenarios can be used as the basis for developing prototypes. As well as confirming requirements, prototyping can often help the users to identify some that they had not considered previously.

Advantages and disadvantages of prototyping

Prototypes are useful for a variety of reasons including:

· to clarify any uncertainty on the part of the analysts and confirm to the user that we have understood what they asked for;

· to help the user identify new requirements as they gain an understanding of what the system will be able to do to support their jobs;

· to demonstrate the look and feel of the proposed system and elicit usability requirements;

· to validate the system requirements and identify any errors;

· to provide a means of assessing the navigation paths and system performance.

Prototyping has a number of hazards, most of which can be avoided by setting clear objectives for the prototyping exercise and managing the stakeholders’ expectations. The hazards include:

· The prototyping cycle can spin out of control with endless iterations taking place.

· If the purpose of the exercise has not been explained clearly, the users may think that when they are happy with the mock-up, the system is now complete and ready for use.

· User expectations can be raised unnecessarily by failing to mimic the final appearance of the system, or its performance; a system that is on a stand-alone machine with six dummy data records to search will be more responsive than a machine that is sharing resources with a thousand other machines on a national network, and has several million records to access. If there is likely to be a delay in the real response time, it is important that you build that into the prototype.

In an Agile software development environment, prototyping sessions are used to elicit and analyse requirements, and to construct and test working functionality. The development work is conducted iteratively, with each iteration using the concept of a timebox or sprint, typically a predefined number of weeks, within which certain functionality is delivered. During the timebox, the selected requirements for that delivery will be validated, coded, tested and released. Contingency is provided by the prioritisation of the requirements, whereby some are designated at a lower level of priority and may be postponed to a later timebox if necessary. In this approach, the tension between time and quality is resolved in favour of time but, because Agile encourages iterative development, the quality – i.e. the scope of functionality – is merely postponed, not sacrificed. The prototyping approach allows the business to receive the most critical pieces of functionality when it needs it, and the less urgent functionality will be delivered in future iterations.

What Is Agile?

What Is Agile?

Agile is a set of methods and methodologies that help your team to think more effectively, work more efficiently, and make better decisions.

These methods and methodologies address all of the areas of traditional software engineering, including project management, software design and architecture, and process improvement. Each of those methods and methodologies consists of practices that are streamlined and optimized to make them as easy as possible to adopt.

Agile is also a mindset, because the right mindset can make a big difference in how effectively a team uses the practices. This mindset helps people on a team share information with one another, so that they can make important project decisions together—instead of having a manager who makes all of those decisions alone. An agile mindset is about opening up planning, design, and process improvement to the entire team. An agile team uses practices in a way where everyone shares the same information, and each person on the team has a say in how the practices are applied.

The reality of agile for many teams that have not had as much success is quite different from its promise, and the key to that difference is often the mindset the team brings to each project. The majority of companies that build software have experimented with agile, and while many of them have found success, some teams have gotten less-than-stellar results. They’ve achieved some improvement in how they run their projects—enough to make the effort to adopt agile worth it—but they haven’t seen the substantial changes that they feel agile promised them. This is what that mindset shift is all about; “going agile” means helping the team find an effective mindset.   

But what does “mindset shift” really mean? If you’re on a software team, then what you do every day is plan, design, build, and ship software. What does “mindset” have to do with that? As it turns out, the practices you use to do your everyday work depend a lot on the attitude that you and your teammates have toward them.

Here’s an example. One of the most common agile practices that teams adopt is called the daily standup, a meeting during which team members talk about what they’re working on and their challenges. The meeting is kept short by making everyone stand for the duration. Many teams have had a lot of success adding a daily standup to their projects.

So imagine that a project manager is just learning about agile, and wants to add the daily standup to his project. To his surprise, not everyone on his team is as excited about this new practice as he is. One of his developers is angry that he’s even suggesting that they add a new meeting and seems to feel insulted by the idea of attending a meeting every day where he’s asked prying questions about his day-to-day work.

Figure 1-1. A project manager who wants to have the team start holding a daily standup is surprised that not everyone is immediately on board with it.

So what’s going on here? Is the developer being irrational? Is the project manager being too demanding? Why is this simple, well-accepted practice causing a conflict?

Both the project manager and the developer have different—and valid—points of view. One of this project manager’s biggest challenges is that he puts a lot of effort into planning the project, but when the team runs into problems building the software they deviate from the plan. He has to work very hard to stay on top of everyone on the team, so that he can make adjustments to the plan and help them deal with their problems.

The developer, on the other hand, feels like he’s interrupted several times a day for meetings, which makes it very hard for him to get his work done. He already knows what he needs to do to get his own code built, and he doesn’t need another person nagging him about plans and changes. He just wants to be left alone to code, and the last thing he wants is yet another meeting.

Figure 1-2. Both people seem to have a valid reason for their attitude toward the daily standup meeting. What effect will this have on the project?

Now imagine that the project manager is able to get everyone—even this reluctant developer—to start attending a daily standup meeting. What will that meeting look like? The project manager will be thinking mainly about how people are deviating from his plan, so he’ll concentrate on getting status from each person. The developer, on the other hand, wants the meeting to end as quickly as possible, so he’ll tune out everyone else while he’s waiting to give his update, then say as little as possible when it’s his turn, and hope that the whole thing ends quickly.

Let’s be clear: this is how many daily standups are run, and while it’s not optimal, a daily standup that’s run this way will still produce results. The project manager will find out about problems with his plan, and the developer will benefit in the long run because those problems that do affect him can be taken care of sooner rather than later—and the whole practice generally saves the team more time and effort than it costs. That makes it worth doing.

But what would happen if the developer and the project manager had a different mindset? What if each person on the team approached the daily standup with an entirely different attitude?

For example, what would happen if the project manager felt like everyone on the team worked together to plan the project? Then the project manager would genuinely listen to each team member, not just to find out how they’ve deviated from his plan, but to understand how the plan that everyone on the team worked together to create might need to change. Instead of dictating a plan, handing it to the team, and measuring how well the team is following it, he’s now working with the team to figure out the best way to approach the project—and the daily standup becomes a way to work together to make sure everyone is doing the most effective thing possible at any given time. As the facts of the project change each day, the team uses the daily standup to work together to make the most effective decisions they can. And because the team meets every day, changes that they discover in the meeting can be put into effect immediately so they don’t waste a lot of time and effort going down the wrong path.

And what if the developer felt like this meeting wasn’t just about giving status, but about understanding how the project is going, and coming together every day to find ways that everyone can work better? Then the daily standup becomes important to him. A good developer almost always has opinions not just about his own code, but about the whole direction of the project. The daily standup becomes his way to make sure that the project is run in a sensible, efficient way—and he knows that in the long run that will make his job of coding more rewarding, because the rest of the project is being run well. And he knows that when he brings up a problem with the plan during the meeting, everyone will listen, and the project will run better because of it.

Figure 1-3. When every person on the team feels like they have an equal hand in planning and running the project, the daily standup becomes more valuable—and much more effective.

In other words, if people on the team are in the mindset that the daily standup is simply a status meeting that must be endured, it’s still worth doing, but it’s only slightly more effective than a traditional status meeting. But if everyone on the team shares the mindset that the daily standup is their way of making sure that everyone is on track, they’re all working toward the same goal, and they all have a say in how the project is run, it becomes much more effective—and also more satisfying. The developer has the attitude that this meeting helps him and his team in the long run. The project manager has the attitude that when each person on the team can contribute to the plan, the project gets better results. And when everyone shares these attitudes, the daily standup helps them all work faster, communicate more directly, and get things done more easily.

This is just one small example of how the mindset and attitude of the team have a big effect on how well they’ll adopt agile practices. An important goal of this book is to help you understand how your own team’s mindset affects your projects and your own agile adoption. By exploring Scrum, XP, Lean, and Kanban, you will learn both sides of the agile coin—principles and practices—and how they come together to help you build better software.

Understanding Agile Values

Understanding Agile Values

We do not act rightly because we have virtue or excellence, but we rather have those because we have acted rightly. We are what we repeatedly do. Excellence, then, is not an act but a habit.

Aristotle, Nichomachean Ethics

Agile, as a movement, is different from any approach to software development that came before it, because it started with ideas, values, and principles that embody a mindset. It’s through the lens of these ideas that you can begin to become more agile as a practitioner, and more valuable as a member of your project team.

The agile movement is revolutionizing the world of software development. Teams that adopt agile have consistently reported improvements—sometimes huge leaps—in their ability to build great software. Teams that successfully adopt agile build better, higher quality software products, and they do it faster than before.

Our industry is at a turning point with agile. Agile has gone from being the underdog to becoming an institution. For the first few years of agile, people adopting it struggled to convince their companies and teammates that it worked, and that it was worth doing. Now, there is little question that agile development is a highly effective way to build software. In fact, in 2008, an important survey1found that more than half of all software teams surveyed were using agile methodologies, practices, or principles—and agile has only grown since then. And agile teams are increasingly going beyond the problem of how to be agile themselves, and are starting to figure out how to spread agile development throughout their companies.

But it wasn’t always like this. Traditionally, companies have used a waterfall process when running their software projects, in which the team defines the requirements up front, plans the project in its entirety, designs the software, and then builds the code and tests the product. Plenty of software—great software, but also lousy software—has been built this way over the years. But as the decades went on, different teams in different companies kept running into the same kinds of problems...and some people started to suspect that a major source of project failure might be the waterfall process itself.  

The story of agile started when a small group of innovative people got together to try to find a different way of thinking about these problems. The first thing they did was come up with a set of four core values that are common to successful teams and their projects, which they called the Manifesto for Agile Software Development:

· Individuals and interactions over processes and tools

· Working software over comprehensive documentation

· Customer collaboration over contract negotiation

· Responding to change over following a plan

In this chapter, you’ll learn about these values—where they came from, what they mean, and how they apply to your project. You’ll follow a waterfall-weary team through their first attempt at implementing agile before they really understand how those values apply to them. As you read their story, see if you can spot how a better understanding of these values could have helped them avoid their problems.

NARRATIVE: A TEAM WORKING ON A STREAMING AUDIO JUKEBOX PROJECT

Dan – lead developer and architect

Bruce – team lead

Joanna – newly hired project manager

Tom – product owner

A Team Lead, Architect, and Project Manager Walk into a Bar...

Dan is a lead developer and architect at a company that makes coin-op games and kiosks. He’s worked on projects ranging from arcade pinball machines to ATMs. For the last few years, he’s been working with a team lead, Bruce. They bonded on a release of the company’s biggest product, a Vegas slot machine called the “Slot-o-matic Weekend Warrior.”

Joanna was hired a few months ago as a project manager to head up a project building software for a new line of streaming audio jukeboxes, which the company wants to introduce and sell to bars and restaurants. She was a real prize—they poached her from a competitor that already has a successful jukebox on the market. She’s been getting along really well with Dan and Bruce, and she’s excited about getting started on a new project with them.

Dan and Bruce are much less excited about the new project than Joanna. They all went out for drinks after work one day, and Bruce and Dan started explaining why the team came up with their own name for the slot machine project: the “Slog-o-matic Weekend Killer.”

She wasn’t happy to learn that in this company, failing projects are the rule, not the exception. The last three projects were declared a success by the company’s managers, but they only got out the door because Dan and Bruce worked incredibly long hours. Worse, they held their noses and took shortcuts in the code that are causing support nightmares today—like when they hastily patched up a prototype for one feature and pushed it out into production, and it later turned out to have serious performance problems because pieces of it were never built to scale up.

As they talked, Joanna recognized the pattern, and knew what was causing the problem: the company follows a particularly ineffective waterfall process. A team following a waterfall process tries to write down as early as possible a complete description of the software that will be built. Once all of the users, managers, and executives agree on exactly what the software must do (therequirements), they can hand a document that contains those requirements (the specification) to a development team, and that team will go off and build exactly what’s written. Then a testing team comes in afterward, and verifies that the software matches the document. Many agile practitioners refer to this as “big requirements up front” (sometimes abbreviated BRUF).

But Joanna also knew from her own projects over the years that theory often differed from practice, and that while some teams have a very effective waterfall process, many of them struggle with it. She was starting to think that this team might be one of those that struggled.

Figure 2-1. The waterfall model.

As they talked, Bruce and Dan confirmed a few things that reinforced her opinion. Just as Joanna suspected, there were a lot of specifications sitting in large binders and gathering dust on shelves all across the company. Somehow, everyone expected a group of users, managers, and executives to create a perfect requirements specification. In real life, the spec had a nasty habit of changing so that it would be inaccurate by the time the team got their hands on it, and would progress to being disastrously wrong by the time the team finished building the software. Bruce, Dan, and a lot of other people at the company knew that it was unreasonable to expect the perfect spec, but they still ran their projects as if it were possible.

As the evening went on, Bruce got more comfortable (and tipsy), and he brought up another problem that had been nagging him: that many teams he’d been on at their company had a lot of trouble actually building their software. Even if the users got the requirements right (which rarely happened), and even when the team understood those written requirements perfectly after reading them (which had yet to happen to this day), they often used inferior tools and had a lot of trouble with software design and architecture. This led to Bruce’s teams repeatedly building software that had a lot of bugs, and was often an unmaintainable mess.

Both of these problems led to many failed projects, especially because they considered any project where they had to work many 90-hour weeks and deliver buggy code to be a failure. Joanna explained that the biggest cause of those failures was the inability of the waterfall process the company followed to handle change. In a perfect world, the waterfall process would work just fine, because at the start of the project everyone would know exactly what they’d need at the end. That way, they could write it all down in a neat spec and hand it off to the team to build. But real-life projects never seemed to work out that way.

Dan and Bruce were now officially drunk, and deep into a marathon gripe session with Joanna. Dan told her that on almost every project that they’d worked on, the customers decided partway through that they needed the team to build something different than what they’d originally planned on. Then everyone had to go back to the beginning of the waterfall. According to the strict waterfall process the team was following, they were supposed to write entirely new specifications, come up with a different design, and build a whole new plan. But in reality, this almost never happened, and it was rare that they had time to throw out all of the code that had been written so far. Instead, they usually ended up hacking together a solution out of the existing code. This rework led to bugs, because taking software that was designed for one purpose and hastily modifying it to do something else often results in messy, tangled code—especially when the team is under pressure. Adapting it to the new use would have taken up precious project time, so they ended up with poor workarounds and brittle code.

What Dan, Bruce, and Joanna were starting to realize by the end of the night was that their project’s problems were caused by overly rigid documentation, poor communication, and bugs, which led to projects that could not keep up with normal project changes.

At the end of the evening, the bartender called taxis for all three of them. Just before they left, Dan said he was relieved to get a lot of that off of his chest. Joanna was happy to have a better picture of the project that she was joining...but a lot less optimistic. Will she be able to find a way, she wondered, to fix some of these problems?

No Silver Bullet

Today we know that there’s no single “best” way to build software. But while that’s not a controversial statement now, for much of the last century many people in the industry would have loudly disagreed. There was a general feeling among many practitioners that they could discover a single, highly prescriptive “silver bullet” method that would solve project problems for everyone, everywhere. Many people felt that developers could build software just by following a set of instructions, like following a recipe or assembling a product on an assembly line. 

(Ironically, one of the most quoted papers in software engineering is Fred Brooks’s 1986 essay, “No Silver Bullet,” in which he shows conclusively why this is an impossible goal. That has yet to stop people from trying to find one!)

There were many proposed silver bullet solutions to these kinds of problems. They typically came in one of two forms: a methodology that claimed to give teams a foolproof way of building software, or a technology that programmers could use to prevent or eliminate bugs. The idea was that if a company decided on a methodology and a technology, then all the team had to do was to follow the company orthodoxy, and great software would start pouring out.

Dan and Bruce know firsthand that this doesn’t work, because they lived through years of managers in their company throwing methodologies and technologies at their projects without any real, lasting improvement. The company’s attempts at finding a silver bullet software process were usually enormously disappointing for everyone involved—and especially for Bruce and Dan, because they were asked to follow an ever-changing series of processes that they hadn’t asked for.

Joanna was also no stranger to this from her own career. At her last job, she was routinely handed a rigid set of requirements, and ordered to come up with a plan to build them out into software. Teams were then given her plan, and ordered to follow it to the letter. Teams that “planned the work, and worked the plan” were doomed to build software that was often outdated and not useful to their users even on the day that it was deployed.

One thing that gave Joanna pause was that some teams she worked on actually did manage to get great software out the door by following a waterfall (or waterfall-like) process that was heavy on up-front documentation. She’d managed some of her best projects at a company that built software for medical devices using waterfall practices.

Waterfall really can work. In fact, if you actually know what you need up front, then writing it down first is a pretty efficient way to build software. Joanna’s medical device software projects were rare examples where the requirements were actually right from the beginning, and needed very few changes during the project.

But it takes more than just stable requirements to run a successful waterfall project, which is why they run into so many problems.  Teams that build great software using a waterfall process typically have a few common characteristics:

· Good communication, because the teams that were successful in a company that mandated waterfall were the ones that consistently talked to their users, managers, and executives throughout the project.

· Good practices, especially ones like code reviews and automated testing, which are aimed at finding bugs as early as possible in the process. They usually called this “defect prevention,” and it required teams to actively think about how those bugs got into the code in the first place.

· Drawers full of documentation that have rarely been opened, because the people on the team understand that the act of writing down the plan—and the questions that get asked during that planning—is more important than mindlessly sticking to it afterward.

There’s one other piece of the puzzle. Dan started his career after the 1990s revolution in software development tools and technology, so he’s only ever worked on teams that used object-oriented development to build better software designs. Version control systems, automated testing, better integrated development environments (IDEs) that include features to automate coding practices like refactoring and class design, and other revolutionary tools all help Dan keep control of the code. Bruce has been working on projects longer than Dan, and he watched developers on his teams increasingly adopt software tools over the years to automate routine and repetitive tasks. Bruce and Dan know from their own projects that the most successful ones made effective use of these practices, tools, and ideas. That left more time for them to talk to their users and teammates, and to think about the problems they had to solve instead of fighting with the code.

And as it turns out, when waterfall projects are run effectively, it’s because their teams take to heart many of the same values, principles, and practices that agile projects follow. Projects that are run using some agile techniques and practices—but that don’t really follow the agile values and principles—often end up running into the same kinds of problems that plague waterfall projects.

Unfortunately for Bruce, Dan, and Joanna, they’re about to learn this the hard way.

KEY POINTS

· waterfall process requires a team to write down a complete description of the software at the beginning of the project, and then build exactly what they wrote.

· The waterfall process made it difficult to respond to change because of the focus on documentation rather than collaboration.

· There is no silver bullet process or practice that makes projects run perfectly.

· Teams that make waterfall work do it by adopting effective software practices and principles, especially ones that improve communication.

Agile to the Rescue! (Right?)

You probably know what a waterfall process feels like, even if you’re just learning the term “waterfall” for the first time. Joanna, Bruce, and Dan do, too. Before jumping into planning the jukebox project, they talked about how waterfall processes had caused problems for their teams in the past.

On their last project, Bruce and Dan worked with Tom, a customer account manager at the company, who spent a lot of time on the road helping customers at arcades, casinos, bars, and restaurants install and use their products. The three of them spent the first few weeks of the project building up a specification for the new slot machine. Tom was only in the office half the time, which gave Bruce and Dan time to start designing the software and planning the architecture. Once all three of them had agreed on the requirements, they called a big meeting with the CEO and senior managers of the company to review the requirements, make necessary changes, and get approval to start building.

At that point, Tom went back out on the road, leaving the work up to Bruce and Dan. They broke the project down into tasks, dividing them up among the team, and had everyone start building the software. When the team was almost done building the software, Tom gathered a group of business users, project managers, and executives into a big conference room to do a demo of the nearly complete Slot-o-matic Weekend Warrior software.

It didn’t go nearly as smoothly as they’d expected.

At the demo, they had an awkward conversation where the CEO asked, “The software looks great, but wasn’t it supposed have a video poker mode?” That was an unfortunate discovery. Apparently, the CEO was under the impression that they were working on software that could be deployed to either the slot machine hardware or the video poker hardware. There had been a lot of discussion of this between the senior managers, the board, and the owners of their two biggest customers. Too bad nobody had bothered to tell the team.

The worst part about it was that if Dan had known about this earlier in the project, it wouldn’t have been difficult to change direction. But now, they had to rip out enormous amounts of code they’d already written, and replace it with code retrofitted from the video poker project. They spent weeks troubleshooting weird bugs that were caused by integration problems. Dan spent many late nights complaining to Bruce that this was 100% predictable, and that this almost always happens when code built for one job is hastily repurposed to do something else. Now he’s going to be stuck with a tangled mess of spaghetti code. It’s going to be difficult to maintain this codebase, and the team is frustrated because it clearly didn’t have to be this way.

And this wasn’t just a problem for Dan and Bruce. The project manager for that project was so unhappy that he left the company. He had trusted the team’s estimates and status, which were completely destroyed by the video poker change. The team had no idea that they would have to deal with the unexpected hardware change, but that didn’t make the project manager’s life any easier. Even though the facts on the ground had changed, the deadline was set in stone. By the time the project ended, the plan was out of date and basically useless, but the project manager was being held accountable for it anyway. After being raked over the coals by the senior managers in the company, all he could say in his defense is that his team didn’t give good numbers to start with. Pretty soon, he left the company for another job—and Joanna was hired shortly after that.

Tom may have been the most frustrated of the group, because he was the one who had to face the customers when they ran into problems. Their biggest customer for this product was the Little Rock, a casino in Las Vegas that wanted to customize all of their slot machines with themes to match their reproductions of cities in Arkansas. The customer had requested this new feature so they could change games between shifts without having to move kiosks around. Their engineers kept running into bugs left in the software by Bruce’s team, which meant that Tom and Dan had to spend weeks on the phone with the engineers coming up with patches and workarounds. The Little Rock didn’t cancel any contracts, but their next big order was with a competitor, and it wasn’t a secret that the CEO and managers blamed the Slot-o-matic Weekend Warrior project for the loss of business.

In the end, everyone knew that the project went wrong. And each person had a pretty good idea of how it was somebody else’s fault. But nobody seemed to have any idea how to fix these types of recurring problems. And the software that they’d delivered was still a mess.

Agile to the Rescue! (Right?)

You probably know what a waterfall process feels like, even if you’re just learning the term “waterfall” for the first time. Joanna, Bruce, and Dan do, too. Before jumping into planning the jukebox project, they talked about how waterfall processes had caused problems for their teams in the past.

On their last project, Bruce and Dan worked with Tom, a customer account manager at the company, who spent a lot of time on the road helping customers at arcades, casinos, bars, and restaurants install and use their products. The three of them spent the first few weeks of the project building up a specification for the new slot machine. Tom was only in the office half the time, which gave Bruce and Dan time to start designing the software and planning the architecture. Once all three of them had agreed on the requirements, they called a big meeting with the CEO and senior managers of the company to review the requirements, make necessary changes, and get approval to start building.

At that point, Tom went back out on the road, leaving the work up to Bruce and Dan. They broke the project down into tasks, dividing them up among the team, and had everyone start building the software. When the team was almost done building the software, Tom gathered a group of business users, project managers, and executives into a big conference room to do a demo of the nearly complete Slot-o-matic Weekend Warrior software.

It didn’t go nearly as smoothly as they’d expected.

At the demo, they had an awkward conversation where the CEO asked, “The software looks great, but wasn’t it supposed have a video poker mode?” That was an unfortunate discovery. Apparently, the CEO was under the impression that they were working on software that could be deployed to either the slot machine hardware or the video poker hardware. There had been a lot of discussion of this between the senior managers, the board, and the owners of their two biggest customers. Too bad nobody had bothered to tell the team.

The worst part about it was that if Dan had known about this earlier in the project, it wouldn’t have been difficult to change direction. But now, they had to rip out enormous amounts of code they’d already written, and replace it with code retrofitted from the video poker project. They spent weeks troubleshooting weird bugs that were caused by integration problems. Dan spent many late nights complaining to Bruce that this was 100% predictable, and that this almost always happens when code built for one job is hastily repurposed to do something else. Now he’s going to be stuck with a tangled mess of spaghetti code. It’s going to be difficult to maintain this codebase, and the team is frustrated because it clearly didn’t have to be this way.

And this wasn’t just a problem for Dan and Bruce. The project manager for that project was so unhappy that he left the company. He had trusted the team’s estimates and status, which were completely destroyed by the video poker change. The team had no idea that they would have to deal with the unexpected hardware change, but that didn’t make the project manager’s life any easier. Even though the facts on the ground had changed, the deadline was set in stone. By the time the project ended, the plan was out of date and basically useless, but the project manager was being held accountable for it anyway. After being raked over the coals by the senior managers in the company, all he could say in his defense is that his team didn’t give good numbers to start with. Pretty soon, he left the company for another job—and Joanna was hired shortly after that.

Tom may have been the most frustrated of the group, because he was the one who had to face the customers when they ran into problems. Their biggest customer for this product was the Little Rock, a casino in Las Vegas that wanted to customize all of their slot machines with themes to match their reproductions of cities in Arkansas. The customer had requested this new feature so they could change games between shifts without having to move kiosks around. Their engineers kept running into bugs left in the software by Bruce’s team, which meant that Tom and Dan had to spend weeks on the phone with the engineers coming up with patches and workarounds. The Little Rock didn’t cancel any contracts, but their next big order was with a competitor, and it wasn’t a secret that the CEO and managers blamed the Slot-o-matic Weekend Warrior project for the loss of business.

In the end, everyone knew that the project went wrong. And each person had a pretty good idea of how it was somebody else’s fault. But nobody seemed to have any idea how to fix these types of recurring problems. And the software that they’d delivered was still a mess.

Adding Agile Makes a Difference

Bruce, Dan, and Joanna took Tom out to lunch the next time he was in town. After spending time commiserating about their past project problems, Joanna suggested that it was time to go agile.

Like many teams beginning their move to agile, they started with a discussion about what the word “agile” really meant to each of them. To Bruce, it just referred to the world of agile development: the specific books, practices, training courses, blogs, and people who practice agile. To Joanna, agile specifically meant “the ability for a project to handle changes,” and it was mainly a set of practices focused on that goal. Dan thought agile meant not writing any documentation, and just jumping straight into code. And Tom had no idea what they were talking about, but he was happy that they were talking about giving him lots of demos along the way, so he could avoid what happened last time. 

Members of a team that has started to “go agile” typically start educating themselves on agile techniques, practices, and ideas, and this team was no exception. Dan joined the Agile Alliance and started connecting with other agile practitioners. Bruce and Joanna started reading blogs and books about agile development and project management. Both of them saw great ideas, and took it upon themselves to use what they learned to start anticipating and fixing their project’s problems. Each of them discovered different things, and immediately started adding them into the mix.

Dan had already written automated unit tests for his previous projects, but a lot of the developers on the jukebox project had never written any. He started working with the developers to do unit testing and test-driven development. He created an automated build script, and set up a build server that would check out the code, build the software, and then run the tests once an hour. And it worked! They immediately saw an improvement in their code. Every day a developer found a bug that they never would have caught without the automated tests, and it was clear that they were avoiding weeks of debugging and tracking down nasty problems in the field. Not only were they creating fewer bugs, they also felt like the code they were building was easier to change. 

(It’s OK if you don’t recognize all of these practices—like test-driven development— right now. You’ll learn all about them throughout this book, and we’ll put these new practices in boldface to make it easy for you to spot them.)

Joanna attended Scrum training, and now the team has taken to calling her the Scrum Master (although she learned in her training that there’s a big difference between a Scrum Master and a project manager, and she isn’t 100% sure that the role that she’s playing on the project really deserves to be called Scrum Master). She helps the team break the project down into iterations, tracking their progress on a task board and using project velocity and burndown charts—line charts that track the amount of work left on the project on a daily basis, “burning” down to zero when the work is done—to keep everyone up to date. This is the first time the team has actually been interested in what their project manager is doing, and it makes an improvement in how the work progresses.  

Tom also wanted to get in on the agile improvement. Dan, Bruce, and Joanna started calling him the product owner, and Tom began to write user stories for the team so they could have a better idea of what the software needed to do. He worked with them to build release plans based on the stories, and now he felt like he had direct control over what the team would build. 

Best of all, Bruce started holding daily standup meetings with Joanna, Dan, and all of the programmers, and Tom started attending them as well. It was a little awkward at first, but by the time the project was rolling, everyone was very comfortable giving each other real feedback and honest assessments of how the project was going. Bruce convinced the team to start holding retrospectives together at the end of each iteration, and he was pleased to see the team genuinely trying to carry out the improvements that they talked about during the retrospectives. 

“Better-Than-Not-Doing-It” Results

It all worked. The team improved, and the project got better...up to a point.

By “going agile,” everyone on the team got better at their jobs. Dan and the developers started to develop better habits and write better code. Joanna had a better handle on where the project was at any time. Tom communicated with the team much more, and that gave him better control over the software that they built, which meant he could do a better job of delivering what the users needed. Bruce could concentrate on improving his team’s skills and communication.

But have they really become an agile team?

They adopted a lot of great practices. Many of those practices were better versions of what they had previously been doing, and all of them made each person more productive at their job. And that was definitely an improvement.

But while the team was happier, and the jukebox project really was going better than any of their previous projects, they also had some reservations about the new, more agile world they found themselves inhabiting. Dan, for instance, thinks that the team is definitely building better code now than they were before, but he finds himself making some technical sacrifices to meet the schedule.

Joanna is happier with the fact that she has some control over the way the project is run. But breaking the project down into short iterations makes her feel a bit blind. Instead of having a big, top-down schedule that she can use as a roadmap, she now finds herself increasingly depending on the team to tell her what’s going on at the daily standups. The daily standups are useful, but they mainly consist of each team member reciting his or her status—which Joanna dutifully writes down and communicates to the stakeholders. It’s starting to feel more like she’s just a coordinator or organizer than a project manager in control of a project. She only focuses on status now, and that makes it difficult for her to spot obstacles and remove them for the team. The team is better at reacting to change, but that puts Joanna in a somewhat uncomfortable position where that’s all she’s focusing on: reacting, rather than planning.

Now that Tom’s a product owner, he’s thrilled with his increased ability to define what the team builds. But he’s also torn, because he feels like he’s expected to work for the team full time. He has to attend these daily meetings, and constantly respond to emails and questions from developers who ask about details of the software they’re building. Sometimes they ask questions that he doesn’t know the answer to, and other times he wishes they could just answer those questions themselves. He already has a job, and he doesn’t feel like the others are meeting him halfway—he feels like they’re pushing all of the responsibility for building a great product back on him, and he doesn’t have all of the answers. After all, his “real” job is account manager—those jukeboxes won’t sell themselves. How can he stay up to date on his accounts and what his users need if he’s spending all of his time answering questions for the programmers?

As for Bruce, he’s happy that the team is delivering more often. But when he takes a step back and really looks at what’s going on, something seems unsatisfying and incomplete, and he’s not sure why. Clearly this is an improvement, considering most of his previous projects felt like they were a hair’s breadth from failure. It seems to Bruce like the agile adoption made things better, cut down on the personal heroics, and reduced the number of long nights and weekends of work. But he also feels like going agile brought its own set of problems.

It’s not uncommon for team members, and especially team leads, to feel the way Bruce does: a little disappointed after their first attempt at agile adoption. The blogs and books they’ve read and the training they’ve attended talked about “astonishing results” and “hyper-productive teams.” This team feels like the jukebox project is an improvement on their previous projects, but they definitely don’t feel “hyper-productive,” and nobody’s really been astonished at the results.

There’s a general feeling that the project has gone from dysfunctional to functional, and that’s very good. They’ve gotten what we like to call better-than-not-doing-it results. But is this really all there is to agile?

A Fractured Perspective

Teams have been running into problems for as long as they’ve been building software. In fact, back in the 1960s, people openly talked about the idea that software development was fundamentally broken. They used the term software crisis, which was coined at the same NATO Software Engineering Conference in 1968 as the term software engineering was. The “software crisis” referred to the state of software development in a typical company in the 1970s and 1980s, because serious (and now-familiar) problems were very common and led to failed projects. Over time, our industry started to understand a major source of the software crisis. An important milestone was when Winston Royce, an engineer at Lockheed, published a paper in 1970 that described a model of software development that was very popular, yet highly ineffective. By the early 1980s, this method was widely known as the waterfall process; it took another 10 to 20 years before many teams made any real headway past blindly adopting it. Like Bruce, Dan, and Joanna, many teams have discovered that agile practices can help them with the problems of a typical waterfall process—but many have also found that it’s not as straightforward as they’d expected.

Developers use software tools every day to build their code, and a developer who’s proficient with many tools is always more marketable than his neighbor who doesn’t know as many. So when many developers first encounter agile, they immediately see it as a set of tools, techniques, and practices. Almost any developer who has been working with agile for a few months has updated his résumé to include the practices that he’s been working with. This first impression of agile is a good thing, because it helps make the agile practices attractive to developers who might otherwise be uninterested in them.

But seeing only the tools, techniques, and practices is just the first step in “going agile,” and it has a problematic side effect. Think about things from Dan’s perspective. As a developer and architect, he’s going to concentrate mainly on things that directly affect development: techniques that help him improve the code by removing or preventing bugs, tools that make builds faster and easier to run, and practices that help improve the way the code is designed, reviewed, and built. A project manager like Joanna, on the other hand, cares deeply about how much work it will take to build the software and the quality of the results. So she’ll concentrate on the tools that help her understand and communicate schedules, estimates, and effort. A business user like Tom is generally interested in the value that the software delivers to the business, and will be attracted to any practice that helps the team understand exactly what the users need, so that the software they build is valuable. And team leads like Bruce want to make sure that everyone on the team is moving in the same direction, communicating well, and learning from their experiences. They look for the tools that help with those things.

Take the agile practice of writing user stories, for example. A user story is a way to express one very specific need that a user has. It’s usually written out as a few sentences, often on an index card, sometimes in a strict structure but other times in a flexible format. One user story from the jukebox project, for example, went like this: “As a bar patron, I want to be able to play the newest hit that was just released today.” 

Each of the people on the team sees user stories a little differently:

· Joanna, the project manager who’s trying to become a Scrum Master, sees a user story as work to be done, neatly packaged up and ready to build. She wrote each of the user stories on index cards and taped them all to a whiteboard to help keep everyone on track.

· Dan, the lead developer and architect, sees a user story as a small piece of functionality, written out in a simple, easy-to-understand way. He can break it down into tasks, create an index card for each of them, and write his name on a task card when he starts working on it. When he’s done building it, he moves it to a section of the whiteboard reserved for completed tasks.

· Tom, the product owner, sees a user story as value that will be delivered to the company, because it lets him see a clear connection between what the team is building and what the users will do with the software once it’s built. The user stories help him talk to the customers at the accounts he manages so he can figure out what they’re looking for in the jukebox software, and he makes sure that each story represents something a user actually needs.

· Bruce, the team lead, sees a user story as a specific goal that the team can organize around. He helps them figure out which stories should be done next, and uses the progress to keep them motivated.

Adding user stories to a team like this will help improve the way they build software, because each of the people in those four roles will see a way that user stories helps him or her personally.

But this can work against the team, too. On Dan’s past projects, he had a detailed spec that left little room for flexibility, and now he had the freedom to make broader decisions about what he built. That can be a good thing, but it led to some problems on the project. When Dan wrote the code for the “newest hit” user story, he thought it meant building a feature to let bar patrons play any hit as soon as it was uploaded to their server. But when he demoed that feature to Tom at the end of the iteration, it led to a big argument. Tom had to explain that the newer songs played on the jukebox meant that bar owners had to pay higher royalty fees. He’d worked out details with them to let the patrons play the latest hits often enough to be happy to hear them, but not so often that it ran up excessive costs. Dan was pretty upset about this, because it meant that he had to go back and completely rewrite a large part of the feature, and Tom was angry because it meant that the first release of the software wouldn’t include the feature.

Had Dan understood that the user story was valuable to Tom for validating what the users needed, he might have had a discussion with Tom about what the software had to do before he started coding. Conversely, if Tom had taken the time to understand a little more about how Dan was going to build the software based on his limited knowledge of the user story, he might have made sure that conversation happened at the beginning of the iteration. But they didn’t have that conversation, and the project ran into the same kind of problems their past waterfall projects ran into: developers making incorrect assumptions, jumping into programming, and having to make changes to the code that could have been avoided, and that leave it more fragile.

When each person thinks only about his role and that one particular way the user story helps him, and doesn’t look past it to see how the entire team uses the user story—or any other agile tool, technique, or practice—it can cause exactly the kind of problem that Dan and Tom ran into. We call this a fractured perspective, because everyone has a different view of the agile practice.

Let’s leave our streaming audio jukebox team to their project—we won’t be seeing any more of them in this book. Will they overcome their problems and deliver their software? As you read the rest of this chapter, see if you can spot ideas that might help them.

How a Fractured Perspective Causes Project Problems

When each person on a project team only sees a practice from his or her perspective, the same old problems crop up. In the software crisis years, developers would dive right into the software without taking the time to understand the users’ needs. Invariably, they’d find out about some new requirement halfway through the project, and they’d have to rip out a bunch of code and replace it. Many agile practices are aimed at giving teams a better understanding of the customer’s needs from the beginning of the project, which helps them avoid a lot of that inefficiency. But when people on a team don’t communicate—like when a developer builds code and throws it “over the wall” to a product owner without ever really talking about what the users need—it can lead to problems that need to be corrected, often more than once.

In the meantime, product owners are happy that agile gives them a way of directing the project toward things that users need. This is a big relief to any product owner who felt a lack of control over the project, and who watched helplessly as programming teams built last year’s software rather than next year’s, because that’s the last time the programmers talked to the users. But a product owner will still get frustrated if he writes down user stories only to find that the team didn’t build exactly what he had in mind. To the team, it seems like the product owner expects them to read his mind; to the product owner, it feels like the team wants him to work with them full time in order to constantly answer any questions they have.

The same kind of fracture happens with other roles on the project, too. Project managers and team leads are happy that the developers have taken it upon themselves to add structure and concrete goals. They see incremental improvement, but not a fundamental change to the way they work, because real change to the way they operate is thwarted when team members work against each other. A project manager who sees user stories taped to a whiteboard as a direct replacement for a Gantt chart in a Microsoft Project file, and who hasn’t shifted her “command and control” attitude toward the project, will frequently react to a change on the project by demanding overtime from the team to stick to the original plan. The team lead may respond defensively, protecting the team from the extra work by pushing back against the tighter schedule, and demanding a more relaxed deadline or a reduction in scope. Both the project manager and team lead may be making good points, but had they seen each other’s perspectives from the beginning, they might have been able to avoid the conflict while still arriving at a good result.

In other words, when the team doesn’t communicate, the people in each of the project roles can adopt a new tool (user stories), but still hold onto the old attitudes that caused friction and team problems. The new tool is better, so the project runs more smoothly. But to the people on the team, it doesn’t really feel like much of a change, because many of the old conflicts still come up. And that’s when they start to wonder if this is all there is to agile.

There’s evidence that many teams have experienced this kind of problem, where adopting individual practices leads to better-than-not-doing-it results. VersionOne is a company that builds agile software tools, and also contributes to the agile community in many other ways. One of the most important things they do is conduct their annual State of Agile Development survey. From the 2013 results, it’s easy to see that many teams have made some improvement by adopting agile:

· 88% of respondents to the VersionOne State of Agile Development Survey 2013 said that their organizations were practicing agile development.

· 92% of the respondents reported year-over-year improvements in all areas measured by the survey, with the leading categories being the ability to manage changing priorities (92%), increased productivity (87%), improved project visibility (86%), improved team morale (86%), and enhanced software quality (82%).

But while teams see agile projects move more quickly and team members are better able to respond to change, when agile projects fail, it’s often because of cultural and philosophical differences between waterfall and agile methodologies. Survey respondents cited “lack of experience using agile methods,” “company philosophy at odds with agile values,” and “external pressure to follow waterfall practices” as the three largest sources of agile project failure.

When teams new to agile run into trouble, it’s most often because they haven’t really changed from their old, waterfall-like ways. As we saw with the jukebox team, just adding practices isn’t enough to break them out of the problems that cause conflict and avoidable changes. Everyone on the jukebox team might describe themselves as having gone agile. But in truth, in many ways they’re still a waterfall team; they’re just one that’s adopted some great agile practices. (Dave West of Forrester Research came up with a term for this: “Water-Scrum-Fall.”5) In other words, they’ve become the most efficient waterfall team that they can be.

Why Does a Fractured Perspective Lead to Just Better-Than-Not-Doing-It Results?

What people deliver will often vary based on what they’re focused on. The more people focus on their own goals, and not on the goals of the team, the less likely it’s going to be that what they deliver has real value for the company.

This presents a paradox for a team trying to go agile. Teams that concentrate only on the individual practices do end up seeing improvement, but only in the areas that they’re already pretty good at. The reason is that team members can only concentrate on what they know already, because for any one of them to expand past what they already know, they would need to have a good handle on what they don’t know yet. Asking a team to improve what they don’t know seems like a tall order!

Figure 2-2. Individual team members tend to add agile practices in areas of the project that they’re already good at, so the team only improves in those areas—and that’s why a fractured perspective leads to better-than-not-doing-it results.

That’s why a team that adopts agile practices one at a time will often only get better-than-not-doing-it results. They’ve applied better practices to the things that they already do, so they’ll do those things better. But they haven’t touched the areas of the project that they don’t already pay attention to, because the practices that affect those areas don’t appeal to anyone on the project; therefore, any problems affecting those areas won’t be improved. And those areas may be exactly what’s keeping the teams from being hyper-productive and delivering those astonishing results.

How does a team get past this problem?

KEY POINTS

· Better communication helps a team manage change better.

· Planning as a team is more important than over-documenting a plan and mindlessly following it.

· Software projects have been unpredictable and had poor results since the 1960s, and a name given to this situation at the time was the “software crisis.”

· Many teams try “going agile” by adopting great agile practices that improve on what they already do well today.

· Adopting better practices leads to better-than-not-doing-it results, because the teams have not fundamentally changed the way they communicate or work.

· User stories are an agile practice in which a team member (often the product owner) describes individual ways that a user will work with the system in one or a few sentences, using language the users can understand.

· Adopting individual practices one at a time is the most common way to adopt agile today, but it is not the most effective path to agile.

The Agile Manifesto Helps Teams See the Purpose Behind Each Practice

The Manifesto for Agile Software development, more commonly known as the Agile Manifesto, was created in 2001 by a group of 17 like-minded people who came together at the Snowbird Retreat in the mountains outside of Salt Lake City, Utah, to come up with a solution to the software development problems they had all seen throughout their careers. After days of discussion, they agreed on a core set of ideas and principles (and also on the name “agile”). They bundled them into a single document, which started a shift in thinking across the software development world.

The Agile Manifesto contains four simple values. Here’s the entire Manifesto:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

· Individuals and interactions over processes and tools

· Working software over comprehensive documentation

· Customer collaboration over contract negotiation

· Responding to change over following a plan

· That is, while there is value in the items on the right, we value the items on the left more.

Understanding and effectively working with agile starts with understanding these values.

Individuals and Interactions Over Processes and Tools

People can go wrong when they blindly follow a process. A great tool can sometimes help you do the wrong thing faster. The software world is full of great practices: not all of them are appropriate for every project and every situation. However, it’s universally important to understand the people on the team, how they work together, and how each person’s work impacts everyone else.

This is an especially useful idea for anyone who needs to improve the way his or her team works. That’s why agile teams value individuals and interactions over processes or tools: because it’s not enough to have the “correct” process or “best” practice. If the people who need to use a process or tool don’t buy into it, it will fall by the wayside—or, even worse, people will follow the letter of the process, even if it leads to incoherent results. Before you’re able to implement a process, even if it logically makes a lot of sense or is rationally the right thing to do, you need to sell it to the people who are working with you. If people don’t get why you’re doing what you’re doing, all they’ll see is that you’re asking for an arbitrary change.

That’s why it’s always, in every situation, important to recognize that you’re working with a group of people. Each of those people has his or her own motivations, ideas, and preferences.

There are many agile practices that support this principle, across lots of different ways of thinking about agile. That’s why you’ll see practices that support individuals and interactions—like daily standup meetings and retrospectives (where everyone talks about how the project or iteration went, and what lessons can be learned)—throughout this book. And user stories, too—the stories themselves are less important than the fact that they help the team have a conversation about what the story means.  

Working Software Over Comprehensive Documentation

There are binders full of complete and comprehensive software documentation sitting unopened on shelves all over the world. There is so much that can be documented in a software project, and it’s often difficult during the heat of the project to predict what’s going to be useful in the future, and what will gather dust. Because of that, a lot of teams—and especially their managers—will decide on a comprehensive approach, where every little thing must be documented, no matter whether or not there’s a potential reader for the document.

Agile teams value working software over comprehensive documentation. But the term “working software” may seem vague—after all, what does the word “working” really mean? To an agile practitioner, working software is software that adds value to the organization. It could be software that a company sells to make money, or it could be software that people who work at the company use to do their jobs more efficiently. For a project to add value, it needs to deliver or save more money than it cost to build. Value really does come down to money most of the time, even if that’s not something the team talks about directly. And the team should emphasize building and delivering working software that delivers value. Documentation is only a means toward that end.

Valuing working software over comprehensive documentation does not mean that you should not document. There are many kinds of documents that are very useful for the team. But it’s important to keep in mind that the people writing the documentation are often the same people who are writing the software. Documentation that helps them understand the problem, communicate it with the users, and correct problems before they make it into the software is documentation that saves more time and effort than it costs. It often also happens to be the kind of documentation—like wireframes or sequence diagrams—that programmers don’t mind writing.

Concentrating on working software, on the other hand, is a great way to make sure that the team keeps on track. When the team is working on documentation that is clearly headed toward working software, it’s making a positive contribution to the project. In fact, the team can often take a novel approach to documentation that allows it to be embedded in the software itself. For example, one such agile practice is test-driven development, in which the programmers build automated unit tests before they build the software that it tests. These automated tests exist as code that is stored alongside the rest of the code for the software. But it also serves as documentation, because it gives developers a record of what the code is supposed to do, and of the expected behavior for individual elements of the software. 

Customer Collaboration Over Contract Negotiation

A lot of people might read “contract negotiation” and assume that this value only applies to consultants and contractors who work within a contract. Actually, this applies to many teams that work within a single company. When programmers, testers, business owners, and project managers all work on different teams, and don’t really collaborate toward a single goal of delivering working software, they often treat each other as if they’re working on a contract. In many companies, they will explicitly discuss SLAs (service-level agreements) between programming teams, between testers and developers, and between teams and their users.

This may reduce the risk of getting in trouble with the boss (because it makes it easier to point a finger and blame another team for failing to deliver software), but it is highly counterproductive if the goal is to get working software out the door for the users. A developer who is constantly trying to protect himself will be less able to try new ways to collaborate and innovate with the people who need to use the software being built.

One way agile teams put this value in place is to have a product owner who is a real, first-class member of the team. She may not be actively developing code, but she does attend meetings, contribute ideas, and, most importantly, feel ownership for the final product. Product owners will often use user stories as a way to collaborate with the rest of the team.

Responding to Change Over Following a Plan

There’s an old project management saying: “plan the work, work the plan.” Unfortunately, if you work the wrong plan, you’ll build the wrong product. That’s why teams need to constantly look for changes, and to make sure that they respond appropriately when there’s a change in what the users need, or in how the software needs to be built. If the circumstances change, the project needs a new plan.

It’s not uncommon for the person or people who built a plan to resist change, because it takes work to change a plan. For example, there may have been a lot of effort put into breaking the work down into packages, and estimating each one of them. A change could require a project manager to have to redo all of that work, and if he values following a plan over responding to the change, he might dig his heels in. This makes for a smoother project, but, if the change is really needed, it will be much harder to make it later on, after the code is more complete.

Figure 2-3. Agile teams often use task boards to show tasks and track progress. They’ll write tasks or user stories on index cards, and move them across the board as they progress. Many teams also draw charts on their task boards to help them track progress.

A task board is a good example of a practice that helps a team make the right decisions about responding to changes. Each element of the work (typically a user story) is written on an index card and attached to a board—like the one that Joanna used for the jukebox project—usually in columns that show the status of each one. A task board can also be managed with a computer program, but many teams find it more effective to physically put it on a wall because standing in front of the board, talking, gesturing, and moving stories is a much richer form of communication than simply talking. The board is set up in a way that anyone can rearrange the order of tasks, and is even encouraged to do so. If changes happen, everyone is encouraged to add index cards to the task board, rather than having to clear each change through a single project manager hub. This helps keep everyone in the loop on changes, so the plan doesn’t get stale.  

Principles Over Practices

Our better-than-not-doing-it jukebox team got good results because they adopted some great practices, and those practices improved their projects. But because of their fractured perspective, they didn’t get the full benefit of working together toward an improved way of building software. There’s a mindset of agile that goes beyond practices, and teams who find their way to the ideas behind agile find better ways of collaborating and interacting.

In other words, a team that uses the agile practices to help attain the goal of building working software that customers value through interaction, collaboration, and responding to change will get more out of their projects than the team that simply adopts better planning, programming, and documentation practices.

Jim Highsmith does a very good job of summarizing this idea in his book Agile Project Management: Creating Innovative Projects:

Without concrete practices, principles are sterile; but without principles, practices have no life, no character, no heart. Great products arise from great teams—teams who are principled, who have character, who have heart, who have persistence, and who have courage.

So how does a team go beyond simply adopting practices and become “principled,” so they can create great products?

KEY POINTS

· The Agile Manifesto contains common values and ideas that lead to effective teams.

· “Individuals and interactions over processes and tools” means the team should focus on the people on the team and how they communicate first, and the tools and practices that they use second.

· “Working software over comprehensive documentation” means that delivering software that does what users need is more important than delivering a specification that describes it.

· Working software means software that delivers value to the company.

· “Customer collaboration over contract negotiation” means treating everyone like they’re on the same team.

· Many effective agile teams treat the product owner as a member of the project team to collaborate with, rather than a client or customer to negotiate with.

· “Responding to change over following a plan” means recognizing that plans become inaccurate, and that it’s more important to deliver the software than it is to work the plan.

· A task board is an agile planning tool in which user stories are attached to a board and categorized into columns based on their status in the current project or iteration.

Understanding the Elephant

Lyssa Adkins,  in her book Coaching Agile Teams, explains how a metaphor can be a valuable tool to help understand a concept:

Metaphor is a powerful thing. Professional coaches have known this for a long time. In fact, “metaphor” is a core skill taught in professional coaching courses. ... Coaches ask questions that help clients create their own metaphor, one that is visceral and resonant. Clients use the metaphor to guide them through the events unfolding in their lives.

There’s a useful metaphor that can help us get a better handle on what it means to have a fractured perspective, and why that leads teams down a less effective path. It’s the story of the blind men and the elephant.

Six blind men were asked to determine what an elephant looked like by feeling different parts of the elephant’s body. The blind man who feels a leg says the elephant is like a pillar; the one who feels the tail says the elephant is like a rope; the one who feels the trunk says the elephant is like a tree branch; the one who feels the ear says the elephant is like a hand fan; the one who feels the belly says the elephant is like a wall; and the one who feels the tusk says the elephant is like a solid pipe.

A king explains to them: “All of you are right. The reason every one of you is telling it differently is because each one of you touched the different part of the elephant. So, actually the elephant has all the features you mentioned.”

Teams that get better-than-not-doing-it results from agile are often teams who are already able to get software out the door reasonably well before starting with agile, and were hoping that agile adoption would help them make a good project even better. The problem is that even before the team started adopting agile practices, they were already experiencing problems—not the serious, software crisis problems that caused their projects to fail outright, but problems that caused friction and discomfort on the team. This is what “fractured perspective” really means: the developers think about developer stuff, project managers think about project manager stuff, and they throw the code over the wall to a business user who thinks about business stuff. Everyone is really busy thinking about his or her own project work—so much so that they actually use phrases like “throw it over the wall,” which explicitly divide the team and kill collaboration. When each person only thinks about his or her own practices, there isn’t a lot of communication between people, and they’re really functioning as individuals working separately toward compatible goals, not as a team. 

That’s where the “Blind Men and the Elephant” story comes in. In a fractured agile adoption, each person uses only the practices that impact his or her work, the same way each of the blind men feels only one part of the elephant. Developers concentrate on, say, test-driven development, refactoring, and automated builds. Project managers like task boards, project velocity, and burndown charts. Business users use release planning and user stories to get a better grasp on what the team is doing. Team leads use daily standups and retrospectives to manage and improve the team. Everybody wants something different from the project, and they each see a few practices that do something specific to help them. (Again, we’ll cover each of these practices later in the book, so don’t worry if you aren’t familiar with them yet.)

Now, adopting those practices individually will definitely improve things, because agile practices are really good. The problem is that because everyone—developers, project managers, business users, and team leads—sees the project from a different perspective, they’ll concentrate on only those practices that immediately appeal to them. There’s a paradoxical effect (“See! I was right all along”), where each person now sees only the part of agile that affects his specific project work, and draws the conclusion that agile is all about getting everyone else to come around to his point of view.

So while the agile “elephant” is made up of many great practices, the whole thing is even greater than the sum of the parts. And if you only see the individual practices—especially if you’re only looking at the practices that directly affect your project work—then you’ll only see one small piece of agile. The “elephant” of agile is made up of the day-to-day practices, but it’s much bigger than just those practices. 

Figure 2-4. The agile “elephant” is greater than the sum of its practices.

A team whose members only see the practices and don’t think about the principles will miss out on the important interactions between people. Their perspective stays fractured; the team members stay separate, and don’t really function as an effective unit. They’ll still get their work done, but they miss out on the great team interactions and collaboration that make agile really powerful.

This is built into agile. Take another look at the very first value in the Agile Manifesto:

· Individuals and interactions over processes and tools

Processes, methodologies, and tools are still important (which is why the Manifesto ends with, “...while there is value in the items on the right, we value the items on the left more”). But even more important than specific practices are the individuals and interactions. It’s these values (along with the 12 principles, which you’ll learn about in Chapter 3) that show us how the practices work together, and serve as a guide for how teams adopt those practices.

Methodologies Help You Get It All in Place at Once

There’s a big gap between understanding the values in the Agile Manifesto (and the principles behind it) and actually changing the way your team builds software. Luckily, there’s another important aspect to agile development that specifically helps with this. There are agile methodologies that are actually intended to help teams adopt agile and improve their projects. 

Agile methodologies are valuable to you because they help you see the practices in context. They are especially useful for teams that are not familiar with all of the agile practices. Each methodology was developed and improved over the years by agile experts focused on all of the different parts of the elephant. Adopting a methodology in full means you’ll be following a tried-and-true path that takes you from the beginning to the end of a software project, without the trial and error that can lead to a fractured perspective.

An agile methodology is a collection of practices combined with ideas, advice, and often a body of knowledge and wealth of experience among agile practitioners. An agile methodology will outline different roles and responsibilities for everyone on the project, and will recommend certain practices for each of them at various stages of the project.

The VersionOne State of Agile Development 2013 survey results contain a list of the most popular methodologies, and topping the list are Scrum, followed by a hybrid of Scrum and XP. Respondents also reported using Lean and Kanban, which are not agile methodologies (as you’ll learn about in Chapters 8 and 9), but are still core to agile.

Alistair Cockburn has this description of Scrum in Agile Software Development: The Cooperative Game, 2nd Edition:

Scrum can be summarized (but not executed) very simply:

· The team and the project sponsors create a prioritized list of all the things the team needs to do. This can be a list of tasks or a list of features. This is known as the product backlog.

· Each month, the team pulls off the top section of the list, which they estimate to be one month’s worth of work. They expand it to a detailed task list, called the sprint backlog. The team promises to demo or deliver the results to the sponsors at the end of the month.

· Each day, the team meets face-to-face for five to ten minutes to update each other on their status and on any roadblocks that are slowing them down. This is called the daily standup meeting.

· One particular person is designated the Scrum Master. It is this person’s assignment to remove, or get someone to remove, whatever roadblocks the team mentions in the standup meeting.

For many teams beginning their move to agile, this translates to specific practices (which we’ve highlighted in boldface here, and which we’ll explain in detail in Chapter 4):

· The product owner creates and maintains a product backlog, a list of requirements for the software.

· The team runs timeboxed month-long sprints, where they pull a month’s worth of requirements from the product backlog to build, test, and demo. The requirements for the current sprint are called the sprint backlog. (Some Scrum teams use sprints that are two or four weeks long.) 

· The team meets for a daily standup meeting in which everyone talks through the work they did the day before, the work they plan to do today, and any obstacles in their way.  

· The Scrum Master acts as leader, coach, and shepherd to guide the team through the project. 

But adopting Scrum requires more than just adopting those great practices. Every one of those practices could potentially be used in a way that doesn’t reflect the values and principles of agile. A daily standup, for example, works very well if the team uses it to collaborate and work together to move the project forward. But it could also be a meeting where a project manager informs the team of their individual assignments and gets status updates from each of them, one at a time. And each developer uses the meeting to tell the project manager, “Here are obstacles blocking my way—you go deal with them.” If each person clings to his role—“That’s your responsibility, not mine!”—he starts to treat each new obstacle as someone else’s problem. The meeting turns into a contract-like negotiation, instead of an opportunity for collaboration. A team that falls into this trap may have adopted Scrum-like practices, but they aren’t using Scrum.

(You’ll learn more about how Scrum works and its practices later on in the book.)

A second methodology is eXtreme Programming (or XP). The Art of Agile Development, by James Shore and Shane Warden, summarizes XP like this: “Using simultaneous phases, an XP team produces deployable software every week. In each iteration, the team analyzes, designs, codes, tests, and deploys a subset of features.” (Many XP teams use iterations that last one week, but others use two-week or month-long iterations. Scrum can also be adapted to use different iteration lengths. You’ll learn more about adapting agile methodologies later in the book.) XP prescribes specific development practices aimed at improving collaborating with users, planning, developing, and testing. But XP goes beyond that, using those practices to help the team build simple, flexible software designs that are easy for the team to maintain and extend.

Scrum and XP have many things in common, including the fact that they are both iterative. This means that the project is divided up into iterations, in which the team performs all of the activities of a complete project to produce working, deployable software at the end of each iteration. Many XP teams use iterations that last one week, while many Scrum teams use one-month iterations. Putting a limit on how long an iteration lasts is called timeboxing, and it helps users to know when they can expect new features to be delivered.

Many teams find adopting methodologies—especially Scrum and XP—to be more effective than simply adopting individual practices. While adopting individual practices allows each team member to select those practices specific to his or her job, adopting an entire methodology encourages the entire team to get together and figure out as a team how to adopt all of the practices for that methodology. To do this, they need to change the way they think about doing their jobs. Methodologies are constructed around the agile values and principles, so this change in attitude is generally toward collaboration and interactions, working software, and responding to change. This transition is often made easier by the books and knowledge already collected by other agile practitioners, and encouraged by existing communities formed around those methodologies.

Lean is not a methodology.  Rather, it’s a name for a mindset—it has its own set of values, and thinking tools to help you adopt it. Lean is just as important in the agile world as XP and Scrum, and you can learn a lot about what it means to be agile by understanding what’s common among all three of them. Kanban is an agile method for improving the way that a team builds software. It’s built on the values of Lean, and it includes its own practices to help a team improve and evolve.

The practices in XP, and in many ways much of the focus of XP, are different than the practices and the focus of Scrum. Lean and Kanban take yet another approach, with different practices and focus. How is it possible that these different approaches to agile can have entirely different focus and practices, yet all be considered agile? It’s because all agile methodologies are based on the same principles, and they all rely on everyone on the team to work together and collectively own every aspect of the project. The values and principles of the Agile Manifesto are what tie all methodologies and methods together.

Figure 2-5. Scrum, XP, and Lean all have the agile values at their core, and share some values, ideas, and practices with each other.

Where to Start with a New Methodology

By coming together and working toward the single goal of adopting a methodology, everyone on the team begins talking about each other’s practices, ideas, and perspectives. This is the opposite of a fractured perspective. By looking at the methodology as a whole, teams start to understand how the individual practices interact with each other. And that’s where Bruce, Dan, Joanna, and Tom want to be—but they don’t know quite how to get there.

When the team initially tried out the new practices and ideas, they didn’t yet understand how those new practices would relate to the ones they were already familiar with. That understanding will come as the team gains experience with the methodology. This works because an agile methodology is a complete system that includes a set of practices that are known to interact well together, and which teams have used successfully to become more productive. Adopting a complete set of practices will help give the team a foundation for learning about those interactions.

But adopting an entire methodology is more difficult than picking and choosing practices that fit in with the team’s current way of working. If a team can adopt the methodology all at once, they stand a much better chance of getting the most out of their agile effort. In part, this is because in addition to the practices that are similar to what each person already does, they also adopt practices and ideas that they may not think they need at first.

As we learned, the jukebox team ran into problems because Bruce, Dan, Joanna, and Tom all approached agile practices independently. To get the greatest benefit of agile in the future, instead of just diving into the practices, they should first sit down together and have a real discussion about what each of those practices will do for them and their project. But this is a challenge, because they don’t know how to start that discussion. Like many teams, they face a dilemma: if they already knew what the agile practices would do for their project and how to work together to put them in place, they wouldn’t need to have that discussion. But because they don’t know that already, the discussion is difficult to have.

There’s a solution: the 12 principles that go hand-in-hand with the values of the Agile Manifesto. You’ll learn about them in Chapter 3.

KEY POINTS

· A team that only focuses on the individual practices can lose sight of the larger goal of better communication and responding to change.

· An agile methodology is a collection of practices combined with ideas, advice, and a community of practitioners.

· Agile methodologies like Scrum, XP, and Lean include great practices, but they also emphasize ideas that keep the team focused on those goals.

· Agile coaches often use metaphor as a tool to help their teams learn.

FREQUENTLY ASKED QUESTIONS

When the Agile Manifesto talks about not having comprehensive documentation, does that mean we don’t have to write anything down?

This is a really common question about the Agile Manifesto. Take another look at what it says about comprehensive  documentation:

We value ... Working software over comprehensive documentation

This doesn’t mean that as agile practitioners we don’t value comprehensive documentation. And it certainly doesn’t mean that we think you shouldn’t write any documentation at all! That’s because there’s plenty of documentation that’s useful without being “comprehensive.”

What this means is that putting working software into your users’ hands is the best way to communicate how well we, as a team, are progressing. But there’s also a place in our projects for writing things down. We’ll document our code using code comments (for example, to explain why we made a decision, or why we didn’t write the code a different way or use a different algorithm). Later in the book, you’ll learn about a specific kind of documentation called a user story, which is typically written on an index card and helps you, your team, your users, and your stakeholders work together to figure out exactly what you’ll be building. There are many other kinds of documentation, some more comprehensive than others, that agile teams use.

Are you sure? I’ve definitely heard that agile means not writing anything down or doing any planning, and instead jumping straight into programming. Isn’t that more efficient?

One of the most common myths of agile software development is that agile teams don’t plan. In fact, agile teams do a much more thorough job of planning than many traditional project teams. But to a developer who’s new to agile, it may look like there isn’t a lot of planning going on, because the whole team is involved—and nobody is groaning or complaining about it (which, let’s be honest, is a programmer’s typical reaction when he or she receives an invitation to a planning meeting).

Scrum teams, for example, typically spend a whole eight-hour day planning for a 30-day iteration. Then they have a daily meeting (often timeboxed to 15 minutes) where they review the plan together. For a five-person team, this amounts to 40 person-hours of planning at the beginning of the iteration, and another 40 person-hours of planning spread out across the next 30 days. This is far more planning than many traditional software teams do for 30 days of software development. No wonder Scrum teams do such a good job of meeting their deadlines! However, to the team members, it often doesn’t really feel like “boring” planning work. This is because they’re engaged in the process, they care about the outcome, and they get a very good sense that the work they’re doing to plan the project will make the rest of the iteration go well. (You’ll learn more about the mechanics of planning a Scrum project in Chapter 4.)

To a developer looking in from the outside, however, this may actually look a lot like jumping straight into the project without planning. When the team only spends a single day at the beginning of the 30-day iteration planning, it means that on the second day the team can start programming (if that’s what makes the most sense to them). So that often looks like they’re barely doing any planning, even though it’s actually a lot of planning when the effort-hours are added up.

Doesn’t that mean that agile is only for very experienced developers who are good at planning?

No, agile is for everyone at every skill level. Planning is a skill, and the only way to get better at it is to practice. Even experienced developers blow their estimates sometimes (in fact, pretty often!). We’ve run across and read many stories of real-world teams of junior developers who did a great job of becoming agile, and it helped them deliver software that was far beyond what their companies expected of them. However, there’s one caveat: junior developers on effective agile teams don’t stay junior for very long, and this may be one of the reasons that some people think agile is only for experienced developers.

Can I have the developers on the team go agile, but leave the rest of the team (testers, business analysts, UX designers, project managers, etc.) alone?

Yes, you can. However, it will probably not be very effective. When people talk about putting agile in place for just the developers, what they’re really talking about is having those developers adopt some of the practices in a methodology. This will give those developers a boost in their own productivity that makes it worth doing (better-than-not-doing-it results). But because the team has not changed the way they think about their projects, this approach seriously limits the positive impact that agile thinking can have on the team’s productivity. This is one way that teams end up in the “Water-Scrum-Fall” scenario that leaves the team members feeling like their agile adoption is somehow empty or incomplete.

If I’m not using Scrum, XP, Lean, or Kanban, does that mean my team isn’t agile?

Absolutely not. There are many agile methodologies—we’re concentrating on a few here, because we’re using them to teach you about the ideas behind agile. But more importantly, one goal of this book is to help you answer the question, “What does ‘agile’ really mean?” Throughout the rest of this book, you’ll learn about the values and practices of different methodologies and methods, and through them you’ll learn what it means to be agile—and how such different methodologies and methods can all be agile, even if they don’t resemble each other.

THINGS YOU CAN DO TODAY

Here are a few things that you can try today on your own or with your team:

· Write down a list of all of the practices that you and your team use when you build software. They may be things like writing a specification, or checking your code into a version control system, or using a Gantt chart to document your project plan, or holding a daily standup meeting.

· Ask someone else on your team to write down her own list of all of the practices that you and your team use. Compare your lists. What practices are on one list but not the other? Have a discussion about that practice. Can you find a difference in perspective between the two of you?

WHERE YOU CAN LEARN MORE

Here are resources to help you learn more about the ideas in this chapter:

· You can learn more about the agile values and principles in Agile Software Development: The Cooperative Game, 2nd Edition, by Alistair Cockburn (Addison-Wesley, 2006).

· You can learn more about how principles relate to practices in Agile Project Management: Creating Innovative Projects, by Jim Highsmith (Addison-Wesley, 2009).

· You can learn more about agile coaching in Coaching Agile Teams, by Lyssa Adkins (Addison-Wesley, 2010).

COACHING TIPS

Tips for agile coaches helping their team to work the ideas in this chapter:

· When coaching a new team, talk to individual team members separately and try to understand how perspectives differ across the different roles.

· Ask individual team members specifically about the values in the Agile Manifesto: what they think of them, which ones they consider important, or if they think the values apply to them at all.

· Teams often have a sense that they’re getting better-than-not-doing-it results, but have trouble putting that feeling into words. Bring up this concept directly, and ask team members to come up with examples of practices that feel “empty,” or that take a lot of effort with little payoff.

· Start a conversation about an individual value or principle in the Agile Manifesto—for example, if a team talks about a “contract” that they forge with their users, use that as a starting point for talking about contract negotiation versus customer collaboration. Help them understand where they’re making choices.

The 12 Principles of Agile Software

1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

4. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

5. Businesspeople and developers must work​ together daily throughout the project.

6. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

7. Working software is the primary measure of progress.

8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

9. Continuous attention to technical excellence and good design enhances agility.

10. Simplicity—the art of maximizing the amount of work not done—is essential.

11. The best architectures, requirements, and designs emerge from self-organizing teams.

12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.3

The Agile Principles

If I had asked people what they wanted, they would have said faster horses.

Henry Ford

There’s no single recipe that results in perfect software every time. Agile teams recognize this. Instead, they have ideas and ground rules that help to guide teams to make the right choices and avoid problems—or deal with those problems when they inevitably happen.

We’ve already seen the four values in the Agile Manifesto. In addition to those values, there are 12 principles that every agile practitioner should use when working on a software project team. When the 17 original signers of the Agile Manifesto met at Snowbird, Utah, they came up with the four values in the Agile Manifesto quickly. It took them longer to come up with the 12 additional principles that accompany the Manifesto. Manifesto signer Alistair Cockburn recalled:2

The group of 17 quickly agreed on those value choices. Developing the next level of statements proved more than we could settle on in the time left in the meeting. The values included in this section make up the current working set.

These statements should evolve as we learn people’s perceptions of our words and as we come up with more accurate words ourselves. I will be surprised if this particular version isn’t out of date shortly after the book is published. For the latest version, check the Agile Alliance.

Alistair was right, and the language on the website for the principles is, in fact, currently slightly different than the language in his book. The language may always be evolving, but the ideas and principles have stayed constant.

In this chapter, you’ll learn about the 12 principles of agile software: what they are, why you need them, and how they impact your project. You’ll see how these principles apply to a real project by following a practical example. To make it easier to learn, we’ve gathered these principles into four sections—delivery, communication, execution, and improvement—because they represent consistent themes throughout the principles and agile in general. But even though that’s an effective way to learn about them, each principle stands on its own.

The Customer Is Always Right...Right?

Flip back to the beginning of the chapter and reread that quote. What is Henry Ford really saying? He’s talking about giving people what they actually need, and not just what they ask for. The customer has a need, and if you’re building software to meet that need, then you have to understand it—whether or not he can communicate it to you. How do you work with a customer who can’t necessarily tell you at the beginning of a project that he needs a car, and not just faster horses?

That’s the motivation behind the 12 principles: getting the team to build software that the user actually needs. The principles depend on the idea that we build projects to deliver value. But that word, “value,” is a little bit tricky, because everyone sees different value in the software: different people need different things from it.

You might be holding a good example of this idea in your hands. If you’re reading this book on a handheld ebook reader, you’re using software that was written to display ebooks on that reader. Take a minute and think about all of the different stakeholders (people who need something from the project) for that ebook reader software:

· As a reader, you want the software to make the book easy to read. You care about being able to flip back and forth between pages, highlight sections or take notes, search for text, and keep track of the last page you read.

· As authors, we care very much that the words we write are displayed correctly, that these bullet points are indented so that they’re easy for you to read, that it’s easy for you to navigate back and forth between the body text and the footnotes, and that you have a good overall experience so you can enjoy and learn from what we write.

· Our editor at O’Reilly cares that it’s easy to distribute the book to you, and that, if you like it, you have an easy way to give it a positive review and buy other books from O’Reilly.

· The bookseller or retailer who sold you this book wants to make it very easy for you to browse and buy other books they have for sale, and to download them quickly and easily to your reader.

You can probably think of more stakeholders, and of other things that each of these stakeholders cares about. Every one of these things represents value that’s delivered to a stakeholder.

The very first ebook readers on the market didn’t do all of these things. It took a long time for the software that runs on those readers to evolve to the point where it is today. And it’s almost certain that the software will get better and better as the teams working on it discover new ways to deliver new value.

It’s easy to see the value that an ebook reader has delivered, because hindsight is 20/20. It’s much harder to see that value at the start of the project. Let’s do a quick thought experiment to explore this. Consider this question: how might a hypothetical reader have turned out had it been developed using a waterfall process?

“Do As I Say, Not As I Said”

Imagine you’re on a team building the very first handheld ebook reader. The hardware team delivered a prototype device that has a USB port that you can load ebooks into, and a little keyboard that lets you interact with it. It’s up to you and your team to build the software that will display ebooks to the user.

Unfortunately, your company has a long history of building software using a particularly ineffective, “big requirements up front” waterfall process. So the first thing that your project manager does is to call a giant meeting with everyone she can find. Your whole team spends the next few weeks in a room with, at various times, the senior managers of your company, a representative from a friendly publisher who wants to publish ebooks that your reader can display, a senior salesperson from an online retailer hoping to sell those books, and any other stakeholder that your project manager can dig up and get to come to a meeting.

After days of intense meetings and heavy debate, your business analysts were able to piece together a large specification with requirements from all of the different stakeholders who were consulted. It was a lot of work, but now you have a spec that everyone thinks is great. There are extensive features for the user that would make it the most advanced handheld reader software available. It includes features to capture marketing statistics for publishers, it provides an entire Internet storefront to make it easy to buy books, and it even has an innovative feature for authors to preview and edit their books as they write them, streamlining the publishing process. This would be truly revolutionary software. After you sit down with the rest of your team to estimate, you’ve come up with a schedule of 15 months. It seems like a long time, but everyone is excited, and you’re confident that you and your team can deliver.

Fast-forward a year and a half. The ebook reader team has worked unbelievably hard, putting in many late nights and weekends, and putting stress on more than a few marriages. It was a huge effort, but the project is done, and you’ve delivered exactly on plan, practically to the day. (Yes, that seems highly improbable! But for the sake of this thought experiment, try to suspend your disbelief and imagine that it happened, just this once.) Every requirement in the spec has been implemented, tested, and verified as complete. The team is really proud, and every stakeholder who’s seen it agrees that they got exactly what they asked for.

So, the product hits the market...and it’s a flop. Nobody buys the reader, and none of the stakeholders are happy. So what happened?

It turns out that the software everyone needed a year and a half ago is not the same software that they need today. In the time since the project began, the industry standardized on a new, industry-wide format for ebooks, and because that format wasn’t in the spec, it’s not supported. None of the Internet retailers want to publish the nonstandard format that the reader uses. And even though the team built that great Internet storefront, it’s now far less advanced than the storefronts that the retailers currently use, so it’s not attractive to them anymore. And all the work that you and your team put into building the special preview feature for authors isn’t nearly as useful as a competitor’s support for authors to email MS Word documents straight to their readers and display them.

What a mess! The spec that your team started with had a lot of value to all of the customers, both inside and outside the company. But now the software your team agreed to build a year and a half ago is much less valuable. Some of these changes could have been discovered early on in the project, but many of them would not have been clear from the beginning. The team would have had to change course very quickly at many points during the project in order to take them into account. The “big requirements up front” waterfall approach doesn’t give a team much flexibility to respond to these changes.

So how can we find a better way to satisfy stakeholders and customers, but still run a project that delivers software that works?

Delivering the Project

Agile teams recognize that their most important job is to deliver working software to their customers. You already know how they do this from Chapter 2: by working together as a team, collaborating with their customers, and responding to change. But how does that translate to the day-to-day work of a team?

By putting frequent delivery of value first, by looking at each change as a good thing for the project, and by delivering software frequently, the team and the customers can work together to make adjustments along the way. The software that the team builds might not be what they set out to build, but that’s a good thing—because they end up building the software that the customers need most.

Principle #1: Our Highest Priority Is to Satisfy the Customer Through Early and Continuous Delivery of Valuable Software.

This first principle includes three distinct and important ideas: releasing software early, delivering value continuously, and satisfying the customer. To really understand the core of this principle, you need to know how those three things work together.

Project teams work in the real world, and in the real world things never go perfectly. Even a team that does a brilliant job of gathering and writing down requirements will miss things, because it’s impossible to completely and perfectly capture the requirements for any system. That’s not to say that teams shouldn’t try, and agile methodologies are based on some great practices for communicating and writing down requirements. But the fact is that until customers get their hands on working software, they have a hard time envisioning exactly how the software will work.

So if the customer can only give you real, informed feedback after seeing working software, then the best way to get that feedback is through early delivery: shipping the first working version of the software to the customer as early as possible. Even if you only deliver a single working feature that the customer can use, that’s still a win. It’s a win for the team, because the customer can now give informed feedback to help them move the project in the right direction. It’s also a win for the customers, because they can do something today that they couldn’t do before—with this working software. Because the software works, and because the customers can actually use it to do something they need, the team has delivered real value. It might only be a small amount of value, but it’s far better than delivering no value at all—especially if the alternative is an increasingly frustrated user who has to wait a long time before getting his or her hands on software from the team.

The downside to delivering early is that the software that’s first delivered to the customers is far from complete. This can be really hard for some users and stakeholders to deal with; while some users are used to the idea that they’ll see software early, others are much less so. Many people have a hard time when they are handed software that’s not perfect. In fact, in a lot of companies (especially larger companies where people have spent years working with software teams), the software team has to literally negotiate the terms under which they’ll provide software to their stakeholders. When there’s not a great partnership between the team and the people they build software for, if the team delivers incomplete software, the users and stakeholders may judge it very harshly and even panic if a feature they expect to see is missing.

The core agile values have an answer to this: customer collaboration over contract negotiation. A team that’s bound to a fixed specification with inflexible bureaucratic barriers to change doesn’t have the option to let the software evolve over time. A team working under those conditions has to kick off a whole new change management process, which requires a fresh set of contract negotiations with the customer. On the other hand, a team that truly collaborates with the customers has the option of making all the necessary changes along the way. That’s what continuous delivery means.

This is why agile methodologies are typically iterative. Agile teams plan the project’s iterations by choosing the features and requirements that will deliver the most value. The only way that the team can figure out what features deliver that value is to collaborate with the customer and incorporate the feedback from the previous iteration. This lets the team satisfy the customer in the short run by demonstrating value early, and in the long run by delivering the finished product that delivers as much value as possible.

Principle #2: Welcome Changing Requirements, Even Late In Development. Agile Processes Harness Change for the Customer’s Competitive Advantage.

Many successful agile practitioners have a lot of trouble with this principle when they first encounter it. It’s easy to talk in abstract terms about welcoming change. But in the heat of a project, when a team runs into a change that will require a lot of work, things can get emotionally charged—especially for a developer who knows that his boss will hold him to the old deadline, no matter how much work the change requires. Getting past this, especially in a culture where people are blamed for delays, can be difficult. But it can also be very rewarding, because welcoming changing requirements is one of the most powerful tools in the agile toolbox. 

Why are changes in a project emotionally charged? Understanding that is a key to this principle. Think back to the last time you were working on a project and found out that you needed to change what you were building. How did it feel? Until that moment, you thought the project was going well. You probably made a lot of decisions: how to structure your work, what you were building, and what you promised to deliver to your customers. Now someone outside of the project is telling you that some of that planning and work was wrong—that you were wrong.

It’s very difficult to accept someone telling you that you’ve been wrong, especially if you’ve been doing work for that person. Most software engineers are driven by pride of workmanship: we want to deliver products that we can stand behind, and that satisfy our users’ needs. A change in a project threatens that, because it’s questioning the path that you’ve taken and the assumptions that you’ve made.

Very often, someone is telling you to change course after explicitly setting you on that course. If that person told you to build one thing, and you went ahead and built half of it, it’s very frustrating for that same person to then come back to you and say, “Actually, now that I think about it, can we build something completely different?” It feels disrespectful of the effort that you put in. Now you have to go back and make changes to things you thought were done. It’s hard not to get defensive about that! And it gets even worse if you’re the one who’s held responsible for not reading your customer’s mind and, as a result, blowing your deadline.

Almost every professional developer has been through that situation at least once. In light of that, how can we bring ourselves to welcome changing requirements?

The first step toward welcoming changing requirements is to try to see things from the customer’s perspective. This is not always easy, but it’s enlightening. Do you think that the customer who originally sent you down the wrong path meant to? What do you think went through his head when he realized that he told you months ago to build the wrong software, and now you’ve wasted months of work because of what he said? Coming to you and requesting the change is, to him, admitting that he made a mistake—a mistake that will cost you a lot of work. That’s not easy to do. No wonder customers often wait a long time before coming to the team with a change! It’s embarrassing, and they know that they’re delivering bad news. Your deadline is going to be blown, but so is his. If he has needs, and if the company is spending money building software to meet those needs, then his needs aren’t getting met, and the project isn’t delivering value. And it’s all his fault, because he told you the wrong thing at the start of the project.

In other words, two people are being asked to do the impossible. You’re being asked to read the customer’s mind. He’s being asked to predict the future. When you look at it like that, it starts to become a lot easier to welcome change. On the other hand, if you want to resist project change and stubbornly stick to the same plan that you wrote at the beginning of the project, it’s easy—just make sure to hire only telepathic and clairvoyant team members.

So what does it mean to welcome change? It means:

· Nobody gets in “trouble” when there’s a change. We acknowledge—and our bosses acknowledge—that we’re human and fallible, and that it’s better for the company to allow us to make mistakes and correct them frequently, rather than expect us to do things perfectly the first time.

· We’re all in this together. Everyone on the team, including the customers you’re collaborating with, owns the requirements and the changes to those requirements. If those requirements are wrong, it’s as much your fault as the customer’s, so there’s no sense in placing blame for a change.

· We don’t sit on change until it’s too late. Yes, it’s embarrassing to have made a mistake. But because we all recognize that, we simply do our best to fix it as early as possible. That way, the damage is limited.

· We stop thinking of changes as mistakes. We did our best with the information we had at the time, and it only became clear that we were wrong because the decisions we made along the way gave us the perspective to recognize the changes that we have to make today.

· We learn from the changes. This is the most effective way for a team to grow and get better at building software together.

Principle #3: Deliver Working Software Frequently, from a Couple of Weeks to a Couple of Months, with a Preference to the Shorter Timescale.

You might be thinking that the idea of welcoming changing requirements is interesting and could help your projects. But you might also be thinking that it sounds terrible. This is not an uncommon reaction to the idea. Many people who work on software teams—especially traditional project managers—are very uncomfortable with the idea of welcoming changes when they first encounter it. These project managers deal with changes every day, but the agile attitude toward change is very different than what they are used to. Agile practitioners refer to the traditional attitude toward project changes as command-and-control.

The term “command-and-control” is borrowed from the military. In our 2010 book, Beautiful Teams, we interviewed Northrop Grumman chief engineer Neil Siegel, who gave us a military definition of the term:

Andrew: I’m not familiar with military systems—what’s a command-and-control system?

Neil: An information system for military commanders. It allows them to communicate with each other, and allows them to maintain situational awareness: where everybody is, what their status is. It’s how a commander can understand what’s going on. Battlefields used to be small areas—a commander could stand on a hill with a pair of binoculars and could see what was going on. But by about 1900, the battlefields started getting so big that you couldn’t stand on the hill like Napoleon did. You had to start using technology to “see” the entire battlefield. And the systems that do that are called “command-and-control systems.”

Command-and-control project management is similar to military command-and-control:

· “Command” refers to the way the project manager assigns work to the team. The team may not report directly to her, but she has control over their assignments. She breaks down the work, builds a schedule, and assigns activities to the resources on her team.

· “Control” refers to the way she manages changes. Every project has changes along the way: work takes longer than anticipated, people take sick days or leave the project, hardware is not available or breaks, and all sorts of other unexpected things happen. Project managers constantly monitor for these changes, and then control the project by evaluating each change as it occurs, updating the plans to incorporate the change into the schedule and documentation, giving the team new assignments, and managing their stakeholders’ expectations so that nobody is blindsided.

The reason a traditional project manager is uncomfortable with welcoming change when she first encounters it is because she recognizes that those same problems will happen on agile projects too, and the team needs to be able to respond to them. Simply accepting changes and welcoming them seems like a guaranteed way to introduce chaos to the project. If agile teams don’t use command-and-control, how do they manage to keep up with all of those changes while still dealing with the normal day-to-day issues that project teams always face?

Figure 3-1. The team uses iteration to deliver working software frequently, adding new features with each release. 

The key to welcoming changes without introducing chaos lies in delivering working software frequently. The team uses iteration to break the project into regular deadlines. During the iterations, the team delivers working software. At the end of each iteration, the team holds a demo to show the customer what they built, and a retrospective to look back and see what lessons can be learned. Then they start a planning session to figure out what they’ll build in the next iteration. The predictable schedule and the constant checkpoints help the team catch those changes early, and give everyone a blame-free environment where they can discuss each change and come up with a strategy to incorporate it into the project.

This is where agile starts to become very attractive to a traditional command-and-control project manager. A command-and-control project manager wants to control the deadline. Timeboxed iterations give the project manager that control. This also solves one of the project manager’s biggest challenges: dealing with changes that come in very late in the project. One of the most difficult parts of a traditional project manager’s job is monitoring for changes. The daily reviews and iteration retrospectives let the project manager enlist the whole team as eyes and ears to spot those changes much earlier, before they can cause more serious problems with the project.

The project manager’s role starts to shift away from command-and-control, where she gave the team a daily battle plan and constantly adjusted to keep them on track. Instead, now she’s working with the team to make sure that each person is constantly looking at the big picture and working toward the same goals. It’s easier to do that when the team is working on a short iteration that will deliver working software. This gives each person concrete goals, and a much better idea of what everyone is delivering—and a sense that each person is responsible not only for what he built, but also for what the entire team will deliver at the end of the iteration.

Better Project Delivery for the Ebook Reader Project

How can these principles help our troubled ebook reader project? Think back to the problems that the project team faced: their product flopped because it was missing important features that their competitors had (supporting an industry standard format for ebooks, and letting users mail documents to their device), and it had features that were no longer relevant to their market (an Internet storefront).

Let’s run the project again, but this time let’s have the project manager work with the stakeholders and the team to set one-month sprints. The project turned out very different this time:

· After the third sprint, one of the developers reported that the industry standard for a new format for ebooks had been approved. The team decided to implement a library that supports it in the fourth sprint, and incorporate it into the reader’s user interface in the fifth iteration.

· After 10 months of development, they created a working build that can be loaded into prototype machines and given to early beta users. The project manager talked to these users and discovers that they would really like a way to get Microsoft Word documents and newspaper articles onto their readers. The team dedicated part of the next sprint to building email integration into the reader, so users can mail articles to their devices.

· One year into the project, the stakeholders let the team know that the Internet storefront is actually not needed after all, now that the retailers all use the standard ebook format. Luckily, this feature was always low on the backlog and other sprints were dedicated to more important features, so very little work had been done on it.

Because the team had always delivered working software after each sprint, eliminating the features from the backlog meant that they could deliver early! The publishing partner was ready with books, because their senior managers all got early versions of the software and prototype hardware to play with. That kept them involved, and gave them incentive to make sure they had books ready to go as soon as the first version of the product was ready.

Figure 3-2. At the beginning of each iteration, the team chooses features from the backlog to build.

By using continuous releases, welcoming changes, and delivering working software after each iteration, the ebook reader project was able to deliver a successful product much earlier. Unlike the inefficient waterfall process, which sealed the team off from the customers once the requirements were approved, the agile team stayed engaged with their customers. That let them respond to changes and build a better product.

But things aren’t perfect on our ebook reader team—far from it. They’re using iterations to deliver working software, but they’re getting buried under documentation. Everyone is really happy that they’re not stuck building software that won’t sell. But every time the team finds a good change they need to make to the project, half the team gets stuck going back to the spec and updating it so that their plans stay up to date and they stay on course. It seems like they’re burning as much effort updating documentation as they are writing code.

People on the team have talked about ways to cut down the amount of work it takes to maintain all of these documents. They’ve had extensive discussions about the “right level of detail” for their documentation. But whenever they try to cut something out, someone always brings up a (valid) point that if they don’t write down that particular feature, requirement, design, or test case, then someone might misunderstand it. If it gets implemented incorrectly, they’ll get blamed for it. So it seems like every piece of documentation is needed, because otherwise the team will be on the hook for building the wrong software.

Is there any way they can reduce this burden without hurting the project? Is there even such a thing as a “right” level of documentation for a project?

KEY POINTS

· The 12 principles of agile development that accompany the Agile Manifesto provide agile practitioners with direction and insight into practices and methodologies.

· Agile teams satisfy their customers by getting feedback early in the project, and continuously delivering software to keep that feedback up to date (Principle #1).

· Agile teams embrace change by treating project changes as positive and healthy developments for the project (Principle #2).

· By using timeboxed iterations to deliver working software frequently, agile teams constantly adjust the project so that it delivers the most value to the customer (Principle #3)

Communicating and Working Together

Software teams have been struggling with the “how much documentation?” question for as long as they’ve been developing software. Just like many teams over the years have searched for a “silver bullet” methodology to solve their process, programming, and delivery problems, they’ve also been looking for a “silver bullet” documentation system or template to magically record everything they need to build the software today and maintain it in the future. 

Traditional thinking about software documentation goes something like this: we need a documentation management system so that everyone can put in the information they have, and tie it together with everyone else’s information. If we have traceability so that we can fully establish all of the relationships between all of the information, then that will give us near-perfect visibility into what we’ll build, how we’ll test it, and how it will be deployed and maintained. The idea is that developers can trace every element of the design back to a requirement, and testers can trace every test case back to elements of the design, requirements, and scope. Any time the team needs to change, say, a part of the design, they can see exactly what code, requirements, scope, and test cases will be affected, so they don’t have to waste a lot of time doing analysis. Software engineers call this impact analysis, and often try to maintain extensive traceability matrices that map all of the elements in the scope, requirements, design, and tests to each other. Then the project manager can use that map to trace code, bug reports, design elements, and requirements back to their sources.

So back to that question that teams have struggled with: how much documentation should they create? The answer, for an agile team, is just enough to build the project. Exactly how much that is depends on the team, how well they communicate, and the problem that they’re solving. Think about all of the other kinds of documentation that software teams build: capturing all of the decisions made in every meeting by taking copious meeting notes; creating cross-reference documents that describe every aspect of every data source or store; complex matrices of detailed roles, responsibilities, and rules that each person needs to follow. A case can be made for all sorts of documentation. If it doesn’t actually help the team build the software, and if it’s not required for some other reason (like for a regulator, investor, senior manager, or other stakeholder), an agile team doesn’t build it. But if, for example, a team finds that it really helps them to write a functional requirements document, then they can do it and still be agile. It all depends on what works best for the team, and that’s one of the freedoms that agile gives you.

All of that work to build the extra documentation beyond what the team needs to build the software—the comprehensive documentation, the traceability matrix, the impact analysis—is done, in large part, to make it possible to fully analyze the impact of any change. While agile has a different (and often much more efficient) approach to managing changes to your project, agile practitioners should recognize that the traditional approach to documentation shares their goal. In a traditional waterfall project, the whole point of comprehensive documentation is to deal with change better.

Ironically, more often than not, comprehensive documentation gets in the way of managing changes. The dream of perfect documentation and traceability is to have a system where the team can automatically generate the impact of any change they need to manage, so that they can pinpoint exactly what needs to be fixed.

For most teams, unfortunately, the reality of managing changes with comprehensive documentation is not nearly so pretty.  They have to spend an enormous amount of time at the beginning of the project attempting to predict the future and write it down perfectly. While the project is running, they need to maintain the documents they’ve written and keep track of any new developments. If there are changes to the original understanding of the product that’s being built, they need to go back and make changes to all of the affected documents as well. This can lead to a mess of out-of-date documents over time, and it takes a lot of effort for the team to create and maintain those stale documents.

In fact, because it’s not perfect, the comprehensive documentation actually leads to unnecessary changes and wasted effort. Any one piece of documentation is always written from the perspective of a person in a specific role: business analysts write requirements from one perspective, architects build designs from another, and QA engineers create test plans from a third. Then, when they need to tie these all together with traceability matrices, they discover exactly the kinds of inconsistencies that you’d expect these fractured perspectives to introduce. Building the documentation becomes a goal unto itself, and requires an increasing amount of up-front effort. And when a change finally does happen, all of that work that they put into reconciling their perspectives into a single comprehensive set of documentation needs to be redone. This causes the team to spin their wheels rewriting documentation, rebuilding traceability matrices, and resolving conflicts when they should be writing code, testing the software, and deploying the change.

There’s got to be a more efficient way to build software.

Principle #4: The Most Efficient and Effective Method of Conveying Information To and Within a Development Team Is Face-To-Face Conversation.

Agile practitioners recognize that documentation is just another form of communication.4 When I write a document and hand it to you, the goal is not to write documentation. The goal is to make sure that the ideas in my head match the ideas in your head as closely as possible. In many cases, documentation is a good tool to accomplish that goal—but it’s not the only communication tool that we have.

Figure 3-3. When people on the team don’t communicate, they may agree on the broad strokes, but end up working toward different goals. Comprehensive documentation can make this worse by making it easy to introduce ambiguity.

Face-to-face communication is almost always a better tool for sharing ideas within a software team than documentation. Everybody knows that talking through a problem in person is the most effective way to understand a new idea. We’re all much more likely to retain ideas that were expressed in conversation than if we’d read them on a page or in a Microsoft Word document. That’s why agile communication practices focus most on individual people communicating with each other, and reserve documentation for those cases where complex information needs to be recalled in detail later.

Luckily, it’s not hard for teams that are used to comprehensive documentation to move to more effective face-to-face communication. That’s because most of those teams don’t actually try to hit the “ideal” of complete comprehensive documentation and traceability. Software engineers are notoriously practical. When they see how much work is involved in building up that comprehensive documentation, they end up having those face-to-face conversations anyway. In the end, that’s the only way they can effectively build software. By recognizing that comprehensive documentation is often inappropriate, they can stop feeling guilty for not accomplishing the impossible—building perfect, comprehensive documentation—because it would not, in fact, be particularly useful for their projects if they did!

Instead, the most efficient way for the team to communicate the important ideas needed for the project is to get everyone thinking the same way. That way, each person can handle every decision as it comes. When a group of people look at the world the same way, and communicate about both positive and negative ideas openly, they end up with a shared perspective. When a change comes along that requires rethinking, the team members don’t have to explain as much to each other.

The ultimate goal for team communication is to create a sense of community so that there’s a lot of implied knowledge, because it’s just not efficient to explain the same thing over and over again. Without that sense of community, people in different roles have to work harder to match each other’s perspectives. The closer the team gets to having a sense of community and a shared perspective, the more often each person will independently come to a similar answer when posed the same question. This gives them a much more stable ground for handling changes, because they can get past the conflicts and start working on the code—and won’t have to get sidetracked managing documentation.

Principle #5: Businesspeople and Developers Must Work Together Daily Throughout the Project.

Agile teams sometimes forget that the businesspeople they work with have day jobs. This leads to a natural disconnect between software teams and the businesspeople they build software for. 

To build software well, teams need to have a lot of face-to-face discussion with businesspeople, because they need to tap into their knowledge of the company’s problems that are going to be solved with software. The businesspeople got that knowledge by solving those same problems without software. So for most businesspeople who work with software teams, the software project is typically a small part of their job. For most of them, in an ideal world, the team would have very little contact with them. They’d have a meeting or two, figure out what the software needs to do, and then come back a short time later with perfect, working software.

The teams, on the other hand, want as much contact with the businesspeople as possible. Programmers need to learn about the business problem that needs to be solved. They do this by talking to businesspeople, watching them work, and looking at what they produce. A programmer who needs this information would love to have each businessperson’s full-time attention. The longer they have to wait to get their questions answered, the slower their projects progress. But the businesspeople don’t want to spend all of their time with the software team, because they have jobs to get back to. So who wins?

Agile teams have a way past this problem that lets both the businesspeople and the developers win together. They start with an understanding that the team is delivering valuable software to the company. The finished software is worth money to the company. If that value is more than the cost to build the software, it’s worth it for the company to invest in its development. A good project should be valuable enough that the businesspeople can see that it’s worth the effort they’ll need to put in over the course of the project.

Figure 3-4. Some features in the backlog are more valuable to the company than others. The team has to balance the value (how much a feature is worth) against the cost (how much work it takes to build) when they determine which ones to include in each iteration.

When businesspeople and developers build software as a team, it’s most efficient in the long run to work together daily throughout the project. That’s because the alternative is to have the businesspeople wait until late in the project to look over the team’s work and give feedback, and it’s much more expensive to make changes at the end of the project. It takes a lot less of everyone’s time if they catch those changes as early as possible. Working daily with the team actually requires less of each businessperson’s time over the course of the project.

This is why teams that deliver working software frequently should prioritize the most valuable features first—so the businesspeople can get that value delivered early. It’s part of the bargain. It’s also why good agile teams consider the businesspeople to be an important part of the team, and equal members with the programmers. That’s a big distinction between an agile team and a traditional team. The traditional team treats the business user as a customer to be negotiated with; the agile team collaborates with the customer (typically the product owner) as someone with an equal say in the way the project is run. (That gets back to the core agile value of customer collaboration over contract negotiation!)

A good product owner can help reduce the amount of time the businesspeople spend with the team. They still need to meet daily, but the product owner can concentrate on understanding the value of the software and the business problem that needs to be solved. That way, the team can use their face-to-face time with the businesspeople to validate information that they’ve already learned from the product owner.

Principle #6: Build Projects Around Motivated Individuals. Give Them the Environment and Support They Need, and Trust Them to Get the Job Done.

Projects run best when everyone in the company recognizes that the team is building valuable software, and when everyone on the team—including the product owner—understands what makes the software valuable to the company. 

On the other hand, projects can break down in an environment where people don’t see the value in the software, or where they aren’t rewarded for building the software well. It’s actually not uncommon for companies to set up performance reviews and compensation systems that discourage people from building software in an effective, agile way, and this can work against the project. Some common “incentives” that work against agile teams include:

· Giving programmers poor performance reviews when code reviews routinely turn up bugs, and rewarding them for “clean” code reviews. (This just leads programmers to stop finding bugs in code reviews.)

· Rewarding testers for the number of bugs that they report. (This encourages nitpicking and poor reporting, and discourages them from partnering with the programmers, because it sets up an antagonistic relationship between them.)

· Basing business analysts’ performance reviews on the amount of documentation they produce (rather than the amount of knowledge they’ve shared with the team).

Ultimately, everyone’s performance should be based on what the team delivers, rather than the specific role that they played in it. Now, that’s not to say that a programmer who does a poor job or is disruptive shouldn’t be called out for it in a review with his boss. People should be reviewed based on their contribution (or lack thereof) toward the whole team’s goals. But they should definitely not be discouraged from looking beyond the strict confines of a specific role. A good environment for a team will reward a programmer who recognizes a part of the business problem that isn’t being addressed and fixes it, or a tester who sees a problem with the code or architecture and raises that with the team. An environment like this gives everyone on the team the support they need, and makes the project more successful.

Comprehensive documentation and traceability matrices are a particularly insidious source of problems with a team’s environment and support. Instead of encouraging an environment of trust, they encourage a “cover your ass” (CYA) attitude in which teams move toward a “contract negotiation” approach, rather than customer collaboration.

A tester with a CYA attitude will spend time making sure every requirement has a test, whether or not it does anything to actually help the quality of the software. Developers will CYA by adhering to the letter of the requirement, without bothering to think about whether or not it actually delivers value to the users—because if they’re working in a CYA environment, trying to build what the customer actually needs can get them dinged for not building the software to spec. Business analysts and product owners will CYA by spending their time making sure that the scope and requirements line up perfectly, and often find themselves tempted to omit pesky requirements that don’t align perfectly with the existing documentation, regardless of their value.

Software team members need to CYA most in an environment where change is seen as a bad thing. For a team that uses comprehensive documentation, it’s easy to see change as a bad thing, because it requires so much work to revisit the scope, update the specs, alter the design, repair the traceability matrices, etc. This leads to a divisive environment, because managers in that sort of company will naturally try to find a “culprit” who can be blamed for all that extra work caused by the change. People on the team increasingly turn to “defensive documentation” to protect themselves when that blame inevitably comes around to them. This forces everyone on the team to CYA, so they can point to the part of the documentation that they were sticking to, in order to avoid a poor performance review or punishment.

The opposite of CYA is trust. A company that develops only the minimal documentation needed for the project has an environment where the team is trusted to do the right thing when a change happens. An agile team with a “we’re all in this together” attitude, where if the project fails everyone shares the blame, doesn’t need to CYA. It’s easier for them to handle changes, because they don’t need to maintain all of that unnecessary documentation. Instead, they can tackle the actual problem with face-to-face communication, and only write down what’s necessary. And they can do this knowing that the company trusts that they’re doing the right thing—even if it causes the project to take longer.

Better Communication for the Ebook Reader Project

Our ebook reader project could definitely have benefited from better communication. Remember the days of intense meetings where the business analysts carefully pieced together an extensive set of comprehensive requirements? The requirements didn’t start out as a cynical CYA scheme. Everyone on the team genuinely thought that by arguing out every minute aspect of the software for days, they would cover all of their bases, and that would lead to the best possible product. Because they had spent all that time up front, they were able to stick to their guns and defend the original spec, even when it seemed like the end product might not be viable on the market. And if they’d been able to predict exactly what the market needed two years in advance, it would have worked out perfectly! Too bad it didn’t work out that way—but at least nobody lost their jobs, because they could all point to the spec that they implemented precisely.

What would have happened had they used better communication from the beginning? How would the product have changed if instead of writing comprehensive requirements, the team had written down the minimum amount of documentation they needed to get started?

Figure 3-5. When the team relies more on face-to-face communication, and only uses the minimal amount of documentation needed to build the project, it’s easier for everyone to stay in sync with each other.

They would have had to trust each other to make the right decisions along the way. This would have helped a lot when it came time to work on the ebook format, because they wouldn’t have been tied to an outdated format specified at the beginning of the project, and they could have adopted the newer format instead. Even better, by the time they started work on the Internet storefront, it might have been obvious that it wasn’t a good idea, and they could have simply abandoned it—which isn’t an option if it’s part of a specification that the team is on the hook for. Better communication would have let them keep the project up to date, and could have delivered a more valuable product.

Let’s imagine that this happened for the ereader team. Now our team is much happier with the documentation that they’re writing, because it’s much less of a burden. They thought they’d save lots of time by communicating better and cutting out unnecessary documents. But what happens if even though they’ve done this, the project still isn’t on track?

Somehow, that time savings never materialized. It seems like they’re putting in more nights and weekends than ever before, trying to include all of the features that the product owner had promised in each timeboxed iteration. It seems that the more agile they get, the more work they have to do, and the more nights and weekends they spend away from their families. This can’t be an improvement! Is there something they can do to fix this, before the team burns out for good?

KEY POINTS

· Overly comprehensive documentation increases the risk of ambiguity, misunderstanding, and miscommunication between team members.

· Agile teams communicate most effectively when they focus on face-to-face conversation and rely on the minimum amount of documentation necessary for the project (Principle #4).

· Developers work with business users every day so that they can deliver the most value (Principle #5).

· Everyone on the agile team feels responsible for the project, and feels accountable for its success (Principle #6).

Project Execution—Moving the Project Along

Better communication and trust between everyone on the team is a great start. Once everyone gets along and knows how they fit into the project, they can start thinking about the biggest problem: actually doing the work every day. How does an agile team keep the project moving?

Principle #7: Working Software Is the Primary Measure of Progress.

A good team works to make sure that everyone—team members, managers, stakeholders, and customers—really understands where the project is at any time. But how do you actually communicate the status of a project? It’s a much more difficult problem than it might seem at first.

A typical command-and-control project manager tries to keep the project on course and keeps everyone up to date with extensive schedules and status reports. But it’s hard to capture the real “essence” of a project in a status report. The report itself is an imperfect communication tool: often, three different people can read the same status report and get three totally different impressions of where the project is. And status reporting can be highly politically charged for a project manager. Almost every project manager occasionally finds himself or herself under pressure to leave something off of a status report that will make a manager or team lead look bad—and it’s always a piece of information that someone else needs in order to make a decision. So how do you report progress, if status reports aren’t good enough?

The answer lies in working software. The minute you actually see the software working in front of you, you “get” it. You can see what the software does, and what it doesn’t do. If a manager promised to deliver something that didn’t make it into the software, it might be embarrassing—but it’s impossible to not communicate that, because the software speaks for itself.

Figure 3-6. Working software is better than progress reports for giving everyone the latest update on the project’s status, because it’s the most effective way for the team to communicate what they’ve accomplished.

This is one reason why agile teams use iterative development. By delivering working software at the end of each iteration, and by doing a real product demonstration that shows everyone exactly what the team did, they keep everyone up to date on the progress of the software in a way that is almost impossible to misread.

Principle #8: Agile Processes Promote Sustainable Development. The Sponsors, Developers, and Users Should Be Able to Maintain a Constant Pace Indefinitely.

The ebook reader team isn’t the first project team to work insane hours in order to meet an unrealistic deadline. In fact, the hard-and-fast deadline is the primary tool in the command-and-control project manager’s toolbox. Whenever a deadline is approaching, everyone turns to nights and weekends as the first resort. An unrealistic deadline can be an underhanded tool to force more work out of a team by squeezing extra hours out of every week.

Except that in the long run, it doesn’t work. It’s well known that a team can crunch for a few weeks and get more work done, but after that their productivity typically falls off a cliff. This makes sense: people get tired and demotivated, and fatigue starts to set in. All of those errands and life events they pushed off have to force their way back in somehow. In fact, teams that work extreme amounts of overtime for an extended period actually deliver less work than teams that work normal, sane hours—and it’s usually of lower quality.

This is why agile teams believe in maintaining a sustainable pace. They should plan on delivering work that can actually be done in the time they reserve for it. Iterative development makes this more realistic, because it’s a lot easier to estimate how much software they can deliver in the next two, four, or six weeks than it is to estimate how much they can deliver in the next year and a half. By promising to deliver only what they can build, the team creates an environment where late nights and weekends are rare.5

Principle #9: Continuous Attention to Technical Excellence and Good Design Enhances Agility.

Poor estimates aren’t the only cause of late nights and weekends. Most developers recognize that sinking, pit-of-the-stomach feeling that comes with the realization that a seemingly simple bit of coding turned out to be a nightmare to design. There go the next three weekends, which will now be spent tracking down bugs and patching up code. 

It’s a lot faster in the long run to avoid a bug now than it is to fix it later. And it’s a lot easier to maintain code that’s well designed, because well-designed code is built in a way that’s easy to extend.

The last two decades or so have brought us a revolution in software design. Object-oriented design and analysis, design patterns, decoupled and service-oriented architecture, and other innovations have given developers patterns and tools to bring technical excellence to every project.

But this doesn’t mean that agile teams spend a lot of time creating large-scale designs at the start of every software project. Agile developers build up great coding habits that help them create well-designed code. They’re constantly on the lookout for design and code problems, and take the time to fix those problems as soon as they’re discovered. By taking a little extra time during the project to write solid code and fix problems today, they create a codebase that’s easy to maintain tomorrow.

A Better Working Environment for the Ebook Reader Project Team

Your ebook team—and their spouses—would definitely have appreciated a sustainable pace. But the project itself would also have come out better. The team was doomed to late nights and weekends from the very first day of the project, because they simply didn’t have the tools to create a realistic plan that would remain accurate a year and a half later.

What’s worse, because the team laid out software design and architecture that was built to support a very detailed specification at the beginning of the project, they ended up with very complex code that was difficult to extend. This caused many of the little changes along the way to require large patches that left spaghetti code throughout the codebase. Had the team followed an iterative approach and delivered working software along the way, they could have planned each iteration so that they could keep a sustainable pace. A simpler, more just-in-time approach to the architecture could have allowed a more flexible and extensible design. Had they used better design, architecture, and coding practices, they would have ended up with code that’s easier to maintain and extend.

Let’s imagine that our ereader team has applied these new principles, and now they’re a well-oiled software-producing machine. They’re iterating and delivering working software regularly, and they’re constantly adjusting to make sure they’re always building the most valuable software they can. They’re communicating well, and only documenting what they need to document. They’re using great design practices and building a maintainable codebase. And they’re doing it all without having to work overtime. Our team has gone agile!

But the storm clouds are already gathering around the next project. A new project manager just sent out an invite to a giant meeting with everyone he can find. The meeting participants start to accept the invites, rooms get booked, and arguments about all of the requirements that need to be documented start flying around...and everyone on our newly minted agile team starts to get that “pit of the stomach” feeling.

They know what’s coming. The first of the many specs, plans, and Gantt charts are just starting to circulate. How can they make sure the next project doesn’t hit those same pitfalls they worked so hard to climb out of?

KEY POINTS

· The most effective way to communicate the progress of the project is to deliver working software and put it in the hands of the users (Principle #7).

· Teams are most productive when they work at a sustainable pace and avoid heroics, shortcuts, and overtime (Principle #8).

· Software that’s designed and implemented well is fastest to deliver because it’s easiest to change (Principle #9).

Constantly Improving the Project and the Team

One of the most basic design principles—not just in software, but in all of engineering—is KISS (“keep it simple, stupid”). An agile team lives by this principle in the way they plan the project, build the software, and run the team.

Principle #10: Simplicity—the Art of Maximizing the Amount of Work Not Done—Is Essential.

Adding code to an existing project often makes it more complex, especially when you then add even more code that depends on it. Dependencies between systems, objects, services, etc., make code more complex and difficult to change: the dependencies increase the likelihood of one change cascading out to another part of the system, which then requires changes to a third part of the system, creating a domino effect of increasing complexity for every change. Using iteration and building the minimal documentation at the start of the project helps your team avoid delivering unnecessary software.

However, a lot of developers feel a little uncomfortable when they first hear phrases like “use iterative development,” and “do the minimal amount of planning needed to start the project.” They feel like it’s too early to start the code for a project until they’ve made a lot of the design and architecture decisions and written them down—otherwise the team will write code today that they’ll need remove tomorrow when the design changes.

This is an understandable reaction, because for many projects outside the realm of software development, this wouldn’t make sense. It’s not uncommon for a programmer who’s new to agile to raise an objection like this: “If I’m having a contractor renovate my house, I want to see the complete blueprints first. I don’t want him to have a quick discussion with me, and then start knocking down my walls.”

This argument makes sense for home renovation. The reason is that when you’re making a change to a house, the most destructive thing you can do is pick up a sledgehammer and break down a wall. But software projects are different from houses or other physical objects. Deleting code is not particularly destructive, because you can usually just recover it from the version control system. The most destructive thing you can do to your project is to build new code, and then build more code that depends on it, and then still more code that depends on that, leading to that painfully familiar domino effect of cascading changes...and eventually leaving you with an unmaintainable mess of spaghetti code.

Maximizing the amount of work not done means avoiding this mess—and the best way to do this is by building systems that don’t have a lot of dependencies and unnecessary code. The most effective way to do this is to work with your customers and stakeholders to only build the most useful and valuable software. If a feature is not valuable, it’s often cheaper for the company in the long run to not build it at all, because the cost of maintaining the additional code is actually higher than the value it delivers to the company. When teams write code, they can keep their software designs simple by creating software designs based on small, self-contained units (like classes, modules, services, etc.) that do only one thing; this helps avoid the domino effect.6

Principle #11: The Best Architectures, Requirements, and Designs Emerge from Self-Organizing Teams.

Overly complex designs are common in teams that do too much up-front planning. This isn’t surprising when you think about it. Flip back to the picture of the waterfall process in Chapter 2. There’s an entire phase dedicated to requirements, and another phase dedicated to design and architecture. Doing the best job possible while you’re in the design and architecture phase must mean building the most awesome architecture the team can come up with. For a team that works this way, having few requirements and a simple design intuitively feels to them like they’re short-changing the project. Is it any wonder that they come back with a large requirements document and a complex design? Of course not, because that’s exactly what they’re explicitly being asked to do, by having entire phases of their process devoted to those things.

A self-organizing team, on the other hand, does not have an explicit requirements or design phase. When a team is self-organizing, it means that they work together to plan the project (instead of relying on a single person who “owns” the plan), and they continually come together as a team to revise that plan. A team that works like this typically breaks the project down into user stories or other small chunks, and starts working on the ones that deliver the most value to the company first. Only then do they start thinking about detailed requirements, design, and architecture.

This makes the traditional software architect’s job more difficult, but also more satisfying. Traditionally, a software architect sits in an office with a closed door and thinks abstractly about the problems that need to be solved. Obviously, many architects are not like this, but it’s definitely not atypical for an architect to be somewhat disconnected from the day-to-day work of the team.

On an agile team, everyone shares responsibility for the architecture. A senior software architect or designer still has an important role to play—but it is no longer one where he or she can work in isolation. In fact, when a team is building the software piece by piece, starting with the most valuable chunks, the architect’s job becomes more challenging (but often more interesting). Instead of creating one big design at the beginning of the project that covers all of the requirements, agile architects useincremental design, which involves techniques that allow them to design a system that is not just complete, but also easy for the team to modify as the project changes. 

Principle #12: At Regular Intervals, the Team Reflects on How to Become More Effective, Then Tunes and Adjusts Its Behavior Accordingly.

A team isn’t agile until they’re constantly improving the way they build software. Agile teams constantly inspect and adapt—they look at how their projects have run, and they use that knowledge to improve in the future. And they don’t just do this at the end of the project; when they meet every day, they look for ways to change, and they’ll change the work that they’re currently doing if it makes sense.7 You need to be comfortable being brutally honest with yourself and your teammates about what’s working and what isn’t. This is especially important for teams that are just beginning down the road of agile development. The only way to become more capable as a team is to constantly look back at what you’ve done so far, to assess how well you’re working as a team, and to come up with a plan for getting better.

This makes sense, and almost everyone agrees that it’s a good thing to do. But looking back and taking stock of what went right and wrong is one of those things that many teams genuinely intend to do, but rarely actually get around to doing. One reason is that it’s uncomfortable at first. It often involves looking at specific problems and mistakes, and very few people are comfortable publicly pointing out the mistakes that the other people on their team made. Over time, people on the teams get more and more comfortable talking about these things. Eventually, everyone starts to see this as more constructive than critical.

Another reason that teams don’t do this reflection is that they never set aside the time to do it—or even if they set aside the time, getting a head start on the next project seems more important than thinking about the one that’s done. Teams that start each project by reserving time both at the end of each iteration and at the end of the project to meet, review, assess, and come up with a plan for improvement are more likely to actually meet and talk about how they did. This helps them learn from their experiences and become more effective.

KEY POINTS

· Agile teams keep their solutions as simple as possible by avoiding building unnecessary features or overly complex software (Principle #10).

· Self-organizing teams share responsibility for all aspects of the project, from conceiving the product to project management to design and implementation (Principle #11).

· By taking the time to look back and talk about lessons they learned after each iteration and also at the end of the project, agile teams constantly get better at building software (Principle #12).

The Agile Project: Bringing All the Principles Together

Agile is unique in the history of software engineering. It’s unlike the waves of “silver bullet” methodologies over the years, which promised to solve your team’s software problems through a combination of magic practices, brilliant software tools, and, not infrequently, large invoices from consulting companies.

One difference between teams that only get better-than-not-doing-it results and teams that get a much more substantial benefit from agile is that the team that uses agile more effectively recognizes that the practices aren’t just a “menu” to choose from. The key to using these practices together is the mindset that the team brings to the project—and that mindset is driven by the agile values and principles. 

Agile is different because it starts with values and principles. A team going agile has to look honestly not just at the way they build software, but also at the way they interact with each other and the rest of their company. By first understanding the principles, and only then applying a methodology—with the full understanding that it will take work, and a lot of assessment and improvement along the way—an agile team can be realistic about finding better ways to run their projects. This gives them a real path to increased agility, and lets them build and deliver better software.

FREQUENTLY ASKED QUESTIONS

I’m a “rock star” developer, and I just need people to get out of the way so I can build great software! Why do I need to think about things like task boards and burndown charts?

All great developers have faced the frustration of building a great piece of code, only to have to rip it apart and patch it up because someone who doesn’t know anything about how code is built asked for a change at the last minute. To someone who really cares about the craft of programming, it’s really frustrating to make unnecessary technical compromises rather than building the code correctly from day one, just because some non-developer couldn’t be bothered to think about what they needed until halfway through the project.

That’s why so many great developers are drawn to agile teams. Yes, it means that you need to care about planning, and get used to using planning tools like task boards and burndown charts. Agile methodologies are built on practices like that—and those practices are selected specifically because they are simple, and stripped down to the bare minimum that’s necessary to effectively plan and run a project. One big payoff that you get when you get involved with planning the project (and actually care about it!) is that you can help avoid those frustrating last-minute changes by asking the tough questions that need to be asked while the project’s still being planned. This only works because effective agile teams constantly communicate with their users from the beginning of the project. A lot of good developers are sold on the idea of planning the first time they ask one of their users a tough question that triggers a change that would otherwise have come late in the project. Avoiding that same old aggravating, last-minute, rip-and-patch coding turns out to be a great sales pitch for adopting agile.

Agile planning is also about communicating with the rest of the team, and that can really help great developers improve. “Rock star” developers are always learning, but on a command-and-control team they’re isolated from their teammates, so most of that learning has to be self-directed. A self-organizing team, on the other hand, does a huge amount of communication—but not those endless, useless status meetings that developers often hate being forced to attend. Instead, team members decide for themselves what they need to talk about in order to do the project right. Not only does this lead to better projects, it also means that if the developer sitting next to you has some knowledge that you could learn from, there’s a good chance that you’ll end up knowing it by the end of the project. For example, if the guy next to you was applying, say, a new design pattern to his work in a way that you hadn’t seen before, you’ll know by the end of the project whether or not it was a good idea. If it was a good idea, then you’ll be able to add it to your toolbox. That’s learning that happened automatically, without any extra effort on your part, all because the whole team is communicating effectively. That’s one reason why developers who embrace agile often find themselves becoming technically better, and feel like they’re constantly improving at the craft of programming.

I’m a project manager, and I’m still not clear on how I fit into an agile team. What’s my role in all of this?

If you’re a project manager, it’s likely that you fall into one of three traditional project management roles:

· An “in the weeds” planner who gets estimates, builds project schedules, and directs the day-to-day work of the team

· A product expert, possibly playing a business analyst role, who determines the requirements, communicates them to the team, and ensures that they build software that satisfies them

· A supervisor who works with the senior managers and executives in your company to keep them informed of how their investment in the project is paying off

In Chapter 4, you’ll learn about Scrum, the most common agile methodology, and about the roles found on a Scrum team. If you’re a manager who gets your hands dirty and dives into the details with the team, then the role of Scrum Master is likely to be a good fit. The Scrum Master’s job is to help the team plan, and to get roadblocks out of their way throughout the project so they can deliver the software. On the other hand, if your job is to understand what the company needs and communicate that to the team, then you’re more likely to end up as a product owner. In that case, your job would be to manage the backlog, decide what features should go into each iteration, and answer the team’s detailed questions throughout the project so that they stay on track and build the right software.

If you’re a project manager who plays a supervisory role, you typically won’t end up on an agile team, but that’s OK. Instead, you’ll have one of the most important roles to play as an agile champion, pushing your teams and your managers to adopt agile practices and promoting agile values. You’ll recognize that when you have a backlog of features divided into iterations, along with the details that you have for the current iteration, you have at your fingertips the right level of detail that you need to communicate with your executives and senior managers. And the more that the project teams have a sense of their progress and how well they’re meeting the project goals, the better a job they can do of giving you a realistic understanding of that progress. But to do this effectively, you’ll need a good understanding of how agile teams work, so that you can speak their language and process the information they give you into a form that your executives can understand.

Wait a minute. If the whole team plans together, then does that mean nobody’s in charge? That would be really impractical. How are decisions made?

That depends on what decisions are being made.   If you’re asking about resolving conflicts, then that should happen exactly the way it happens for your team today. Think about your current team, or the last project team you were on. Who was in charge? Who resolved disputes and disagreements that couldn’t be resolved between team members? Who reviewed your performance? There are many, many ways that a company hierarchy can be created, and an agile team should be able to work within any hierarchy. However, agile teams tend to be better at resolving conflicts themselves, because they focus on communicating with each other, and they’re aligned to the same goals much more effectively than other kinds of teams.

On the other hand, if you’re asking about who decides what features will go into the software or how those features will be built, that’s typically handled by people with specific roles on an agile team. On a Scrum team, the Product Owner has the authority to decide what features will go into the software. However, the team only has to accept those features that can fit into an iteration based on real information. You’ll learn more about this in Chapter 4. The plan, however, is owned by the entire team, because they’re self-organizing.

But just because the plan is owned by the team, that doesn’t mean there isn’t a boss. Of course there’s a boss. If you’re just going agile now, your boss in a year will probably be the same person as your boss today—the difference is that he or she believes in agile enough to give the team the authority to make project-related decisions, and will stand behind those decisions without trying to micromanage or second-guess them. That’s the only way any of this can work in the real world.

THINGS YOU CAN DO TODAY

Here are a few things that you can try today on your own or with your team:

· If you’re in the process of building a project now, sit down with your team before you start working on the code and spend 15 minutes talking about what features you’ll be building. Can you find any cases where two people have different ideas about what they’re about to build?

· Write down a list of the features that you are currently working on. Try to organize them by value and difficulty.

· Take a few minutes and write down a list of all of the documentation that you and your team generate or consume. Can you spot anything that isn’t actually used by the team to build the code?

· Next time you’re working late, think about what caused you to have to stay late. Can you come up with something you and your team could have done to prevent it? Was a deadline too aggressive? Was extra work added at the last minute? Recognizing that this is a problem and taking the time to understand what’s causing it is the first step toward fixing it.

WHERE YOU CAN LEARN MORE

Here are resources to help you learn more about the ideas in this chapter:

· You can learn more about the values and principles of the Agile Manifesto and how it was created in Agile Software Development: The Cooperative Game, 2nd Edition, by Alistair Cockburn (Addison-Wesley, 2006).  

· You can learn more about value, iteration, and other aspects of agile project management in Agile Project Management: Creating Innovative Products, 2nd Edition, by Jim Highsmith (Addison-Wesley, 2009).

· You can learn more about challenges teams face in going agile, and how they can overcome them, in Succeeding with Agile, by Mike Cohn (Addison-Wesley, 2009).

· You can learn more about getting past the command-and-control mindset in Coaching Agile Teams, by Lyssa Adkins (Addison-Wesley, 2010). 

COACHING TIPS

Tips for agile coaches helping their team to work with the ideas in this chapter:

· Help the team to recognize that working very long hours causes them to build less code, not more, and they don’t build it as well.

· Sit down with individual team members and talk about their jobs. What motivates them? What frustrates them? What drives the decisions they make?

· Ask individual team members to choose the three agile principles that most affect them, in either a positive or negative way. People will be surprised that their teammates chose different principles; this will help you find the common ground between everyone.

· Use the principles that everyone has in common as a starting point to figure out which practices best match the team’s mindset.

References

Foster, Elvis C. (2014) Software Engineering: A Methodical Approach. Apress.

Foster, E.; Godbole, S. (2014) Database Systems.

Paul, Debra; Cadle, J. and Yeates, D. (2014) Business Analysis – Third Edition.

ASSIGNMENT RESOURCES 5.docx

Lecture Notes

Agile Modeling and Prototyping

Created by Daniel Le

Learning objectives

1. Use prototyping for gathering information system requirements

2. Recognize the advantages and disadvantages of prototyping applicable to systems developments.

3. Understand the relation between the Agile modeling and the prototyping and the roots of Agile modeling in prototyping.

4. Recognize the Agile modeling as an alternative to the traditional waterfall development

5. Learn the four core values of the Agile modeling

6. Learn the Agile modeling principles and their applications in to a project

Overview

This week lecture “Agile Modeling and Prototyping” introduces another information gathering technique called prototyping. Prototyping is useful for supplementing the traditional systems development life cycle and in seeking its user reactions to determine the project’s requirements. Next, it discusses the agile modeling, which is a user-centered software development approach. This modeling has its root in prototyping and it could adjust rapidly to changing users’ requirement to produce a finished application. In an Agile development environment, prototyping sessions are used to elicit and analyze requirements, and to construct and test working functionality.

PROTOTYPING

Prototyping is a technique to build quickly a simplified version of an application called a prototype that can be used for eliciting, analyzing, demonstrating and validating requirements. Systems analysts can use a prototype to work with system users to identify the project’s requirements in order to help build the final application. The basic principle of prototyping is that system users know what they are looking for when they see it working or when they can use and test it. A prototype can be used to prove the systems concepts, to show users how the final application looks like, or to test users interface, code designs, or documentation tools. As a result, prototyping can be applied for almost every phase of system development.

Kinds of prototypes

1. Patched-up prototypes

2. Non-operational prototypes

3. First of Series prototypes

4. Selected Features prototypes

5. Throw-away prototypes

Prototype development guidelines

· Work in manageable modules

· Build the prototype rapidly

· Modify the prototype in successive iterations

· Emphasize the user interface—it should be friendly and meeting user requirements.

Advantages and Disadvantages of Prototyping

Prototypes are useful for clarification on any uncertainty areas during the system development; however, the prototyping has some problems that need to be addressed to avoid spinning out of control and user confusions.

AGILE MODELING

Agile modeling is used to plan quickly, develop and release software quickly, and revise software quickly. Similar to prototyping model, the basic principle of agile development is that the system development lifecycle should be quick and responsive. In order to shorten the development lifecycle, the agile model promotes iterative development processes by producing small software releases quickly and collecting users’ feedbacks for systems requirements revision and improvement.

The Agile methodology is an alternative to the traditional waterfall sequential methodology in the area of software development. The Agile software development refers to a set of methods and methodologies based on iterative and incremental development. It helps software think more effectively, work more efficiently, and make better decisions. One of the core values of the Agile project management is the response to change and based on its iterative and incremental foundation, the Agile methodology could help project teams respond quickly to customers, product users, and the market.

Understanding Agile Values

The Agile methodology consists of a set of four core values called the “Manifesto for Agile Software Development”:

· Individuals and interactions over processes and tools

· Working software over comprehensive documentation

· Customer collaboration over contract negotiation

· Responding to change over following a plan

Principles of Agile Software

In addition to the four core values, there are 12 principles that Agile developers should keep in mind when working on a software project team in order to keep their team and project on the right track.

1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

4. Business people and developers must work together daily throughout the project.

5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

7. Working software is the primary measure of progress.

8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

9. Continuous attention to technical excellence and good design enhances agility.

10. Simplicity--the art of maximizing the amount of work not done--is essential.

11. The best architectures, requirements, and designs emerge from self-organizing teams.

12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Application of the 12 Principles into a Real Project

The application into a real project of these 12 principles is arranged into four sections: delivery, communication, execution, and improvement.

References

1. Debra Paul, James Cadle, and Donald Yeates (2014). Business Analysis - Third edition, BCS Learning & Development Limited.

2. Elvis C. Foster (2014). Software Engineering: A Methodical Approach, Apress.

3. Elvis C. Foster and Shripad V. Godbole (2014). Database Systems, Apress.

4. Jennifer Greene and Andrew Stellman (2014). Learning Agile, O'Reilly Media, Inc.

5. http://agilemanifesto.org/

6. http://agilemanifesto.org/principles.html

Disclaimer: Some articles or sites that I refer you to may include materials or opinions associated with particular political or other ideological positions. My pointing to these sites in no way suggests that I am encouraging a particular ideology or position on this or any other related topic; these are simply some of the more interesting and informative sites I have found to cover the topic(s) at hand. As always, you must consider the source when reading any materials that may reflect a particular ideological point of view on an issue.

AASIGNMENT RESOURCES 6.docx

Lecture Notes

Requirements Determination: Information Gathering

Created by Daniel Le

Learning objectives

1. Understand the requirements determination and recognize the importance of requirements discovery

2. Define and describe several information gathering methods that can help systems analysts to discover requirements.

· Interactive Methods (Interviewing, Joint application design, and Questionnaires)

· Unobtrusive Methods (Sampling, Document analysis, and Observation)

3. Describe several requirements analysis strategies that systems analysts could use to discover requirements.

Overview

Information gathering is a part of the determining human information requirements phase and during this phase, systems analysts work with system users to identify their requirements and what they want the system to do. This week lecture begins by describing the concept of the requirements determination. It then introduces methods to obtain obtaining the organization’s information requirements and there are interactive methods and unobtrusive methods.

Three interactive methods are interviewing, joint application design (JAD), and questionnaires to survey. Using interactive methods, systems analysts are required to talk with and listen to people in the organization. Three unobtrusive methods are sampling, document analysis (investigation), and observing a decision maker’s behavior and physical environment. Even though unobtrusive methods are known to be less disruptive than interactive methods but they gather insufficient information when being used alone. Therefore, it is recommended that systems analysts use the multiple methods approach by using both interactive and unobtrusive methods during information gathering process.

REQUIREMENTS DETERMINATION

Requirements determination is one of the systems analyst’s activities to come up with a document that identifies the proposed system’s capabilities including what the system should do and/or what features it should have. There are several types of requirements: business requirements, system requirements, functional requirements, and nonfunctional requirements.

THE IMPORTANCE OF REQUIREMENTS DISCOVERY

The task of determining system requirements is very important and critical to correctly design and build a system to satisfy customers. Errors in this phase may result in cost increased during the development phase and later in the maintenance phase, late delivery, an unreliable and/or erroneous system, users’ dissatisfaction, etc. An expert in IT economics, Barry W. Boehm, published his findings about the cost of errors in requirements that were not discovered until later and the relative cost of fixing an error may go up to 1,000 times.

INTERACTIVE METHODS

There are three interactive methods for gathering information requirements: interviewing, joint application design (JAD), and questionnaires.

Interviewing

· Interviewing is one of the primary ways for collecting data on system requirements.

· Interviewing involves meeting one or more people and asking them questions.

· There are five basic steps to the interview process

1. selecting interviewees

2. designing interview questions

3. preparing for the interview

4. conducting the interview

5. and post-interview follow-up

· There are three types of interview questions: openended, closed-ended, and probing

· Probing questions are used to obtain additional information.

· There are two basic ways of organizing the interview questions: top-down or bottom-up

· Guidelines for conducting a successful interview

Steps to Conducting a Successful Interview

[Source: Conger, Sue (2008), The New Software Engineering, a Creative Commons Attribution 3.0 License]

1. Make an appointment that is at the convenience of the interviewee.

2. Prepare the interview; know the interviewee.

3. Be on time.

4. Have a planned beginning to the interview.

a. Introduce yourself and your role on the project.

b. Use open-ended general questions to begin the discussion.

c. Be interested in all responses, pay attention.

5. Have a planned middle to the interview.

a. Combine open-ended and closed-ended questions to obtain the information you want.

b. Follow-up comments by probing for more detail.

c. Provide feedback to the interviewee in the form of comments, such as, "Let me tell you what I think you mean, ... "

d. Limit your notetaking to avoid distracting the interviewee.

6. Have a planned closing to the interview.

a. Summarize what you have heard. Ask for corrections as needed.

b. Request feedback, note validation, or other actions of interviewee.

• Give him or her a date by which they will receive information for review.

• Ask him or her for a date by which the review should be complete.

c. If a follow-up interview is scheduled, confirm the date and time.

Joint application design

· Joint application development (JAD) allows the project team, users, and management to work together to identify the system’s requirements.

· Electronic JAD or e-JAD resolves the traditional problems associated with groups with JAD (fear of reprisal from people with differing opinions.)

· There are five basic steps to the JAD process

1. selecting participants

2. designing the JAD session

3. preparing for the JAD session

4. conducting the JAD session

5. post-JAD follow-up

Questionnaires

· A questionnaire is a set of written questions developed for obtaining information from individuals.

· Questionnaires often are used when a large number of organization members from whom information and opinions are needed. Questionnaires are valuable if organization members are widely dispersed.

· Questionnaires are commonly distributed in electronic form, either via e-mail or on the Web.

· There are four basic steps to the questionnaire process

1. selecting participants

2. designing the questionnaire

3. administering the questionnaire

4. questionnaire follow-up

· Guideline for questionnaire development

Guidelines for Questionnaire Development

[Source: Conger, Sue (2008), The New Software Engineering, a Creative Commons Attribution 3.0 License]

1. Determine what facts are desired and which people are best qualified to provide them.

2. For each fact, select either an open-ended or close-ended question. Write several questions and choose the one or two that most clearly ask for the information.

3. Group questions by topic area, type of question, or some context-specific criteria.

4. Examine the questionnaire for problems:

• More than two questions asking the same information

• Ambiguous questions

• Questions for which respondents might not have the answer

• Questions that bias the response

• Questions that are open to interpretation by job function, level of organization, etc.

• Responses that are not comprehensive of all possible answers

• Confusing ordering of questions or responses

5. Fix any problems identified above.

6. Test the questionnaire on a small group of people (e.g., 5-10). Ask for both comments on the questions and answers to the questions.

7. Analyze the comments and fix wording ambiguities, biases, word problems, etc. as identified by the comments.

8. Analyze the responses to ensure that they are the type desired.

9. If the information is different than you expected, the questions might not be direct enough and need rewording. If you don't get useful information that you don't already know, reexamine the need for the questionnaire.

10. Make final edits, print in easy-to-read type. Prepare a cover letter.

11. Distribute the questionnaire, addressing the cover letter to the person by name. Include specific instructions about returning the questionnaire. Provide a self-addressed, stamped envelope if mailing is needed.

UNOBTRUSIVE METHODS

There are three unobtrusive methods for obtaining information requirements: sampling, document analysis or investigation, and observation.

Sampling

· Sampling is used to select representative elements of a population such as target documents or target interviewees

· There are several different methods of sampling: simple, stratified, systematic, and cluster random sampling; and convenience, judgment, quota, and snowball nonrandom sampling.

· The reasons systems analysts do sampling are reduction of costs, speeding up the data gathering process, improving effectiveness, and reduction of data-gathering bias.

· Four fundamental steps that systems analysts need to follow to design a good sample are:

1. Determining the data to be collected or described.

2. Determining the population to be sampled.

3. Choosing the type of sample.

4. Deciding on the sample size.

Document Analysis (Investigation)

· Document analysis entails reviewing the existing documentation and examining the system itself. It can provide insights into the formal and informal system.

· There are many helpful documents in the organization for this purpose including paper reports, memorandums, policy manuals, user training manuals, organization charts, and forms.

· Problem reports filed by the system users can be another rich source of information about issues with the existing system.

Observation

· Observation is an informationgathering technique that enables the systems analyst to see what organizational members actually do.

· Observation could be used to validate information gathered from other sources such as interviews and questionnaires.

· Observation is often used to supplement interview information

· STROBE is a structured technique for observing the decision maker's environment.

· STROBE analyzes seven environmental elements:

1. Office location

2. Placement of the decision maker's desk

3. Stationary office equipment

4. Props

5. External information sources

6. Office lighting and color

7. Clothing worn by decision makers

· STROBE may be implemented using an anecdotal checklist.

SELECTING THE APPROPRIATE TECHNIQUES

Each requirements elicitation technique has its strengths and weaknesses shown below in “Summary of Data Collection Techniques”. Thus, it is important to understand the strengths and weaknesses of each technique and when to use each.

In general, systems analysts use the following six features to compare among requirements elicitation techniques: type of information, depth of information, breadth of information, integration of information, user involvement, and cost

Summary of Data Collection Techniques

Interviews

Strengths

Weaknesses

· Get both qualitative and quantitative information

· Get both detail and summary information

· Good method for surfacing requirements

· Takes some skill

· May obtain biased results

· Can result in misleading, inaccurate, or irrelevant information

· Requires triangulation to verify results

· Not useful with large numbers of people to be interviewed (e.g., over 50)

[Source: Conger, Sue (2008), The New Software Engineering, a Creative Commons Attribution 3.0 License]

Observation

Strengths

Weaknesses

· Surface unarticulated procedures, decision criteria, reasoning processes

· Not biased by opinion

· Observer gets good problem domain understanding

· Might not be representative time period

· Behavior might be changed as a result of being observed

· Time consuming

[Source: Conger, Sue (2008), The New Software Engineering, a Creative Commons Attribution 3.0 License]

Review Internal Documents

Strengths

Weaknesses

· Good for learning history and politics

· Explains current context

· Good for understanding current application

· May bias future design work

· Saves interview/user time

· Not useful for obtaining attitudes or motivations

[Source: Conger, Sue (2008), The New Software Engineering, a Creative Commons Attribution 3.0 License]

Review External Documents

Strengths

Weaknesses

· Good for identifying industry trends, surveys, expert opinions, other companies’ experiences, and technical information relating to the problem domain

· May not be relevant

· Information may not be accurate

· May bias future design work

[Source: Conger, Sue (2008), The New Software Engineering, a Creative Commons Attribution 3.0 License]

REQUIREMENTS ANALYSIS STRATEGIES

In order to help business users like stakeholder think critically about the needs for their new system and identify their new system requirements, systems analysts employ several strategies including “problem analysis”, “root cause analysis”, “duration analysis”, “activity-based costing”, “informal benchmarking”, “outcome analysis”, “technology analysis”, and “activity elimination”.

References

1. Conger, Sue (2008). The New Software Engineering. A Creative Commons Attribution 3.0 License.

2. Alan Dennis, Barbara Haley Wixom, and Roberta M. Roth (2012). System Analysis and Design, Fifth Edition, John Wiley & Sons.

3. www.w3computing.com

Disclaimer: Some articles or sites I select or refer you to may include materials or opinions associated with particular political or other ideological positions. My pointing to these sites in no way suggests that I am encouraging a particular ideology or position on this or any other related topic; these are simply some of the more interesting and informative sites I have found to cover the topic(s) at hand. As always, you must consider the source when reading any materials that may reflect a particular ideological point of view on an issue.

ASSIGNMENT RESOURCES 7.docx

W3.Safari.References

Ctrl+Click the following links to go to their place in this document

· Requirements Determination

· Interviews (under the Requirements Elicitation in Practice section)

· Joint Application Development (under the Requirements Elicitation in Practice section)

· Questionnaires (under the Requirements Elicitation in Practice section)

· Sampling

· Estimating Sample Size

· Document Analysis (under the Requirements Elicitation in Practice section)

· Observation (under the Requirements Elicitation in Practice section)

· Selecting the Appropriate T echniques ( under the Requirements Elicitation in Practice section)

· Requirements Analysis Strategies

Requirements Determination

Requirements determination is performed to transform the system request's high-level statement of business requirements into a more detailed, precise list of what the new system must do to provide the needed value to the business. This detailed list of requirements is supported, confirmed, and clarified by the other activities of the analysis phase: creating use cases, building process models, and building a data model. We first explain what a requirement is and discuss the process of creating a requirements definition statement.

What Is a Requirement?

requirement is simply a statement of what the system must do or what characteristics it needs to have. During a systems development project, requirements will be created that describe what the business needs (business requirements); what the users need to do (user requirements); what the software should do (functional requirements); characteristics the system should have(nonfunctional requirements); and how the system should be built (system requirements). Although this list of requirement categories may seem intimidating at first, the categories merely reflect the purpose of the requirements and the stage in the SDLC in which they are defined.

We have already discussed the creation of the systems request in the planning phase of the SDLC. In the system request, there are statements that describe the reasons for proposing the systems development project. These statements reflect the business requirements that this system, if built, will fulfill. These business requirements help define the overall goals of the system and help clarify the contributions it will make to the organization's success. Examples of business requirements include: “Increase market share”; “Shorten order processing time”; “Reduce customer service costs”; “Lower inventory spoilage”; “Improve responsiveness to customer service requests”; and “Provide account access to mobile customers.” When the systems development project is complete, success will be measured by evaluating whether the stated business requirements have actually been achieved; therefore, they provide the overall direction for the project.

During the analysis phase, requirements are written from the perspective of the business, and they focus on what the system needs to do in order to satisfy business user needs. A good starting place is to concentrate on what the user actually needs to accomplish with the system in order to fulfill a needed job or task. These user requirements describe tasks that the users perform as an integral part of the business' operations, such as: “Schedule a client appointment”; “Place a new customer order”; “Re-order inventory”; “Determine available credit”; and “Look up account balances.” Use cases (discussed in Chapter 4) are tools used to clarify the steps involved in performing these user tasks. By understanding what the user needs to do in terms of tasks to perform, the analyst can then determine ways in which the new system can support the users' needs.

Determining ways in which the new system can support user needs leads to statements of the system's functional requirements. A functional requirement relates directly to a process the system has to perform as a part of supporting a user task and/or information it needs to provide as the user is performing a task. The International Institute of Business Analysis (IIBA) defines functional requirements as “the product capabilities, or things that a product must do for its users.”3 Functional requirements begin to define how the system will support the user in completing a task. For example, assume the user requirement is “Schedule a client appointment.” The functional requirements associated with that task include: “Determine client availability,” “Find available openings matching client availability,” “Select desired appointment,” “Record appointment,” and “Confirm appointment.” Notice how these functional requirements expand upon the user's task to describe capabilities and functions that the system will need to include, allowing the user to complete the task.

As the analyst works with the business users of the system to discover user and functional requirements, the user may reveal processes that will be needed or information that will be needed. For example, as shown in Figure 3-1, the user may state “The system must retain customer order history for three years” (an information need). The analyst should probe for the reasoning behind this statement, such as “The system should allow registered customers to review their own order history for the past three years” (a process need). Similarly, the user may state “The system should check incoming customer orders for inventory availability” (a process need). An alert analyst will recognize the related information need, “The system should maintain real-time inventory levels at all warehouses.” All of these requirements are necessary to fully understand the system that is being developed.

FIGURE 3-1 Functional Requirements

Process models (Chapter 5) are used to explain the relationship of functions/ processes to the system users, how the functions/processes relate to each other, how data is entered and produced by functions/processes, and how functions/processes create and use stored data. Process models help clarify the software components that will be needed to accomplish the functional requirements. In addition, the functional requirements begin to define the data that must be kept track of in order to accomplish the user tasks. The data component of the system is defined in the data model (Chapter 6).

YOUR TURN: 3-1 IDENTIFYING REQUIREMENTS

One of the most common mistakes made by new analysts is to confuse functional and nonfunctional requirements. Pretend that you received the following list of requirements for a sales system:

Requirements for Proposed System:

The system should…

1. be accessible to Web users.

2. include the company standard logo and color scheme.

3. restrict access to profitability information.

4. include actual and budgeted cost information.

5. provide management reports.

6. include sales information that is updated at least daily

7. have 2-second maximum response time for predefined queries and 10-minute maximum response time for ad hoc queries.

8. include information from all company subsidiaries.

9. Print subsidiary reports in the primary language of the subsidiary.

10. Provide monthly rankings of salesperson performance.

QUESTIONS:

1. Which requirements are functional business requirements? Provide two additional examples.

2. Which requirements are nonfunctional business requirements? What kind of nonfunctional requirements are they? Provide two additional examples.

User requirements and functional requirements defined in the analysis phase will flow into the design phase, where they evolve to become more technical, describing how the system will be implemented. Requirements in the design phase reflect the developer's perspective, and they usually are called system requirements. These requirements focus on describing how to create the software product that will be produced from the project. More will be said about system requirements in Part 3 of the textbook.

Before we continue, we want to stress that it can be difficult to draw a black-and-white dividing line between these categories of requirement—and, confusingly, some companies use the terms interchangeably. The important thing to remember is that a requirement is a statement of what the system must do, and the focus of requirements will change over time as the project moves from planning to analysis to design to implementation. Requirements evolve from broad statements of overall business needs from the system to detailed statements of the business capabilities that a system should support to detailed technical statements of the way in which the capabilities will be implemented in the new system.

The final category of requirements is nonfunctional requirements. The IIBA defines this group of requirements as “the quality attributes, design, and implementation constraints, and external interfaces which a product must have.”4 Although the term “nonfunctional” is not very descriptive, this requirement category includes important behavioral properties that the system must have, such as performance and usability. The ability to access the system through a mobile device would be considered a nonfunctional requirement. Nonfunctional requirements are primarily used in the design phase when decisions are made about the user interface, the hardware and software, and the system's underlying architecture. Many of these requirements will be discovered during conversations with users in the analysis phase, however, and should be recorded as they are discovered.

Figure 3-2 lists different kinds of nonfunctional requirements and examples of each kind. Notice that the nonfunctional requirements describe a variety of system characteristics: operational, performance, security, and cultural and political. These characteristics do not describe business processes or information, but they are very important in understanding what the final system should be like. For example, the project team needs to know whether a system must be highly secure, requires sub-second response time, or has to reach a multilingual customer base. These requirements will affect design decisions that will be made in the design phase, particularly architecture design, so we will revisit them in detail in Chapter 8. The goal at this point is to identify any major issues. In addition, if the methodology in use includes developing test plans during analysis, then these requirements will be important in establishing testing benchmarks that will be needed later.

The Process of Determining Requirements

Both business and IT perspectives are needed to determine requirements during the analysis phase. Systems analysts may not understand the true business needs of the users. A recent study by the Standish Group found that the lack of user involvement is the top reason for IT project failure.5 On the other hand, the business users may not be aware of the opportunities that a new technology may offer. It is important that the team carefully considers the underlying business process and how best to support that business process with information system technology.

FIGURE 3-2 Nonfunctional Requirements

CONCEPTS IN ACTION: 3-A WHAT CAN HAPPEN IF YOU IGNORENONFUNCTIONAL REQUIREMENTS

I once worked on a consulting project in which my manager created a requirements definition without listing nonfunctional requirements. The project was then estimated based on the requirements definition and sold to the client for $5,000. In my manager's mind, the system that we would build for the client would be a very simple stand-alone system running on current technology. It shouldn't take more than a week to analyze, design, and build.

Unfortunately, the client had other ideas. They wanted the system to be used by many people in three different departments, and they wanted the ability for any number of people to work on the system concurrently. The Technology they had in place was antiquated, but nonetheless they wanted the system to run effectively on the existing equipment. Because we didn't set the project scope properly by including our assumptions about non-functional requirements in the requirements definition, we basically had to do whatever they wanted.

The capabilities they wanted took weeks to design and program. The project ended up taking four months, and the final project cost was $250,000. Our company had to pick up the tab for everything except the agreed upon $5,000. This was by far the most frustrating project situation I ever experienced.

Barbara Wixom

A good analogy is building a house or an apartment. We have all lived in a house or apartment, and most of us have some understanding of what we would like in our homes. If we were asked to design a dwelling from scratch, however, it would be a challenge because we lack appropriate design skills and technical engineering skills. Likewise, an architect acting alone would probably miss some of our unique requirements.

Therefore, the most effective approach is to have both businesspeople and analysts working together to determine requirements. In fact, the analysis phase involves significant interactions with people who have an interest in the new system (often called stakeholders). One of the first tasks for the analyst is to identify the primary sources of requirements, including the project sponsor, project champion(s), all users of the system (both direct and indirect), and possibly others. It is important that all user perspectives are included.

The analyst must also consider how best to elicit the requirements from the stakeholders. There are a variety of elicitation techniques that can be used to acquire information, including interviews, questionnaires, observation, joint application development (JAD), and document analysis. We will discuss these techniques in the next section. The information gathered by these techniques is critically analyzed and used to craft the requirements definition statement. The analyst works with the entire project team and the business users to verify, change, and complete the list of requirements and, if necessary, to prioritize the importance of the requirements that are identified. During this process, use cases, process models, and data models may be used to clarify and define the ideas for the new system. This process continues throughout the analysis phase, and the requirements definition evolves over time as new requirements are identified and as the project moves into later phases of the SDLC.

Beware: The evolution of the requirements definition must be carefully managed. Keeping the requirements list tight and focused is a key to project success. The project team cannot keep adding new items to the requirements definition or the system will keep growing and growing and never get finished. Instead, the project team carefully identifies requirements and evaluates which ones fit within the system scope. When a requirement reflects a real business need but is not within the scope of the current system or current release, it should be evaluated in terms of its importance and impact on time and budget. It may be that the requirement is essential enough to add to the current project, along with appropriate adjustments to the project scope, budget, and time frame. We should not assume that the requirements for the project can never be changed. However, it is also possible that the requirement might be added to a list of future requirements or given a low priority. The management of requirements (and system scope) is one of the hardest parts of managing a project!

The Requirements Definition Statement

The requirements definition statement—usually just called the requirements definition—is a straightforward text report that simply lists the functional and non-functional requirements in an outline format. Figure 3-3 shows a sample requirements definition for Holiday Travel Vehicles, a fictitious recreational vehicle dealership.

FIGURE 3-3 Sample Requirements Definition

As shown in Figure 3-3, it is common to number the requirements in a legal or outline format so that each requirement is clearly identified. It is important that the requirements be identified with unique numbers so that each requirement can be easily tracked through the entire development process. For clarity, the requirements are typically grouped into functional and nonfunctional groupings. Then, within each of those groups, they are classified further by the type of requirement or by business area.

Sometimes, requirements are prioritized on the requirements definition statement. They can be ranked as having “high,” “medium,” or “low” importance in the new system, or they can be labeled with the version of the system that will address the requirement (e.g., release 1, release 2, release 3). This practice is particularly important with RAD methodologies that deliver requirements in batches by developing incremental versions of the system.

The most obvious purpose of the requirements definition is to provide a clear statement of what the new system should do in order to achieve the system vision described in the system request. The use cases, process models, and data models provide additional explanatory content in different formats. A critically important purpose of the requirements definition, however, is to define the scope of the system. The document describes to the analysts exactly what the final system needs to do. In addition, it serves to establish the users' expectations for the system. If and when discrepancies or misunderstandings arise, the document serves as a resource for clarification.

Interviews

Requirements Elicitation in Practice

Before discussing the five requirements elicitation techniques in detail, a few practical tips are in order. First, the analyst should recognize that important side effects of the requirements definition process include building political support for the project and establishing trust and rapport between the project team and the ultimate users of the system. Every contact and interaction between the analyst and a potential business user or manager is an opportunity to generate interest, enthusiasm, and commitment to the project. Therefore, the analyst should be prepared to make good use of these opportunities as they arise during the requirements definition process.

Second, the analyst should carefully determine who is included in the requirements definition process. The choice to include (or exclude) someone is significant; involving someone in the process implies that the analyst views that person as an important resource and values his or her opinions. You must include all of the key stakeholders (the people who can affect the system or who will be affected by the system). This might include managers, employees, staff members,and even some customers and suppliers. Also, be sensitive to the fact that some people may have significant influence within the organization even if they do not rank high in the formal organizational hierarchy. If you do not involve a key person, that individual may feel slighted, causing problems during implementation (e.g., saying “I could have told them this might happen, but they didn't ask me!” ).

Finally, do everything possible to respect the time commitment that you are asking the participants to make. The best way to do this is to be fully prepared and to make good use of all the types of requirements elicitation techniques. Although, as we will see, interviewing is the most commonly used technique, other indirect methods may help the analyst develop a basic understanding of the business domain so that the direct techniques are more productive. In general, a useful strategy for the analyst to employ is to begin requirements gathering by interviewing senior managers to gain an understanding of the project and get the “big picture.” These preliminary interviews can then be followed by document analysis and, possibly, observation of business processes to learn more about the business domain, the vocabulary, and the as-is system. More interviews may then follow to collect the rest of the information needed to understand the as-is system.

In our experience, identifying improvements is most commonly done through JAD sessions because these sessions enable the users and key stakeholders to work together and create a shared understanding of the possibilities for the to-be system. Occasionally, these JAD sessions are followed by questionnaires sent to a much larger group of users or potential users to get a broad range of opinions. The concept for the to-be system is frequently developed through interviews with senior managers, followed by JAD sessions with users of all levels, to make sure that the key requirements of the new system are well understood.

In this section, we focus on the five most commonly used requirements elicitation techniques: interviews, JAD sessions, questionnaires, document analysis, and observation.

Interviews

The interview is the most commonly used requirements elicitation technique. After all, it is natural—usually, if you need to know something, you ask someone. In general, interviews are conducted one on one (one interviewer and one interviewee), but sometimes, due to time constraints, several people are interviewed at the same time. There are five basic steps to the interview process: selecting interviewees, designing interview questions, preparing for the interview, conducting the interview, and post interview follow-up.6

Selecting Interviewees An interview schedule should be created, listing who will be interviewed, the purpose of the interview, and where and when it will take place. (See Figure 3-4.) The schedule can be an informal list that is used to help set up meeting times or a formal list that is incorporated into the work plan. The people who appear on the interview schedule are selected on the basis of the analyst's information needs. The project sponsor, key business users, and other members of the project team can help the analyst determine who in the organization can best provide important information about requirements. These people are listed on the interview schedule in the order in which they should be interviewed.

FIGURE 3-4 Sample Interview Schedule

People at different levels of the organization will have different viewpoints on the system, so it is important to include both managers who manage the processes and staff who actually perform the processes to gain both high-level and low-level perspectives on an issue. Also, the kinds of interview subjects that you need may change over time. For example, at the start of the project the analyst has a limited understanding of the as-is business process. It is common to begin by interviewing one or two senior managers to get a strategic view and then move to mid-level managers who can provide broad, overarching information about the business process and the expected role of the system being developed. Once the analyst has a good understanding of the big picture, lower-level managers and staff members can fill in the exact details of how the process works. Like most other things about systems analysis, this is an iterative process—starting with senior managers, moving to mid-level managers, then staff members, back to mid-level managers, and so on, depending upon what information is needed along the way.

It is quite common for the list of interviewees to grow, often by 50%-75%. As you interview people, you likely will identify more information that is needed and additional people who can provide the information.

CONCEPTS IN ACTION: 3-B SELECTING THE WRONG PEOPLE

In 1990, I led a consulting team for a major development project for the U.S. Army. The goal was to replace eight existing systems used on virtually every Army base across the United States. The as-is process and data models for these systems had been built, and our job was to identify improvement opportunities and develop to-be process models for each of the eight systems.

For the first system, we selected a group of mid-level managers (captains and majors) recommended by their commanders as being the experts in the system under In 1990, I led a consulting team for a construction. These individuals were the first- and second-line managers of the business function. The individuals were expert at managing the process but did not know the exact details of how the process worked. The resulting to-be process model was very general and nonspecific.

Alan Dennis

QUESTION:

Suppose you were in charge of the project. Create an interview schedule for the remaining seven projects.

Designing Interview Questions There are three types of interview questions: closed-ended questions, open-ended questions, and probing questions. Closed-ended questions require a specific answer. You can think of them as being similar to multiple choice or arithmetic questions on an exam. (See Figure 3-5.) Closed-ended questions are used when the analyst is looking for specific, precise information (e.g., how many credit card requests are received per day). In general, precise questions are best. For example, rather than asking “Do you handle a lot of requests?” it is better to ask “How many requests do you process per day?”

Closed-ended questions enable analysts to control the interview and obtain the information they need. However, these types of questions don't uncover why the answer is the way it is, nor do they uncover information that the interviewer does not think to ask ahead of time.

Open-ended questions are those that leave room for elaboration on the part of the interviewee. They are similar in many ways to essay questions that you might find on an exam. (See Figure 3-5 for examples.) Open-ended questions are designed to gather rich information and give the interviewee more control over the information that is revealed during the interview. Sometimes the subjects the interviewee chooses to discuss uncover information that is just as important as the answer (e.g., if the interviewee talks only about other departments when asked for problems, it may suggest that he or she is reluctant to admit his or her own department's problems).

The third type of question is the probing question. Probing questions follow up on what has just been discussed in order for the interviewer to learn more, and they often are used when the interviewer is unclear about an interviewee's answer. They encourage the interviewee to expand on or to confirm information from a previous response, and they are a signal that the interviewer is listening and interested in the topic under discussion. Many beginning analysts are reluctant to use probing questions because they are afraid that the interviewee might be offended at being challenged or because they believe it shows that they didn't understand what the interviewee said. When done politely, probing questions can be a powerful tool in requirements discovery.

In general, you should not ask questions about information that is readily available from other sources. For example, rather than asking what information is used to perform to a task, it is simpler to show the interviewee a form or report (see document analysis later) and ask what information on it is used. This helps focus the interviewee on the task and saves time, because he or she does not need to describe the information in detail—he or she just needs to point it out on the form or report.

FIGURE 3-5 Three Types of Questions

Your interview questions should anticipate the type of information the interviewee is likely to know. Managers are often somewhat removed from the details of daily business processes and so might be unable to answer questions about them, whereas lower-level staff members could readily respond. Conversely, lower-level employees may not be able to answer broad, policy-oriented questions, while managers could. Since no one wants to appear ignorant, avoid confounding your interviewees with questions outside their areas of knowledge.

No type of question is better than another, and usually a combination of questions is used during an interview. At the initial stage of an IS development project the as-is process can be unclear, so the interview process begins with unstructured interviews, interviews that seek a broad and roughly defined set of information. In this case, the interviewer has a general sense of the information needed, but few closed-ended questions to ask. These are the most challenging interviews to conduct because they require the interviewer to ask open-ended questions and probe for important information “on the fly.”

As the project progresses, the analyst comes to understand the business process much better, and he or she needs very specific information about how business processes are performed (e.g., exactly how a customer credit request is approved). At this time, the analyst conducts structured interviews in which specific sets of questions are developed prior to the interviews. There usually are more closed-ended questions in a structured interview than in the unstructured approach.

No matter what kind of interview is being conducted, interview questions must be organized into a logical sequence so that the interview flows well. For example, when trying to gather information about the current business process, the analyst will find it useful to move in logical order through the process or from the most important issues to the least important.

There are two fundamental approaches to organizing the interview questions: top-down or bottom-up; see Figure 3-6. With the top-down interview, the interviewer starts with broad, general issues and gradually works towards more specific ones. With the bottom-up interview, the interviewer starts with very specific questions and moves to broad questions. In practice, analysts mix the two approaches, starting with broad general issues, moving to specific questions, and then back to general issues.

FIGURE 3-6 Top-Down and Bottom-Up Questioning Strategies

The top-down approach is an appropriate strategy for most interviews. (It is certainly the most common approach.) The top-down approach enables the interviewee to become accustomed to the topic before he or she needs to provide specifics. It also enables the interviewer to understand the issues before moving to the details, because the interviewer may not have sufficient information at the start of the interview to ask very specific questions. Perhaps most importantly, the top-down approach enables the interviewee to raise a set of big-picture issues before becoming enmeshed in details, so the interviewer is less likely to miss important issues.

One case in which the bottom-up strategy may be preferred is when the analyst already has gathered a lot of information about issues and just needs to fill in some holes with details. Or, bottom-up may be appropriate if lower-level staff members feel threatened or are unable to answer high-level questions. For example, “How can we improve customer service?” may be too broad a question for a customer service clerk, whereas a specific question is readily answerable (e.g., “How can we speed up customer returns?” ). In any event, all interviews should begin with non-controversial questions first and then gradually move into more contentious issues after the interviewer has developed some rapport with the interviewee.

Preparing for the Interview It is important to prepare for the interview in the same way that you would prepare to give a presentation. You should have a general interview plan which lists the questions that you will ask in the appropriate order; anticipates possible answers and provides how you will follow up with them; and identifies segues between related topics. Confirm the areas in which the interviewee has knowledge so you do not ask questions that he or she cannot answer. Review the topic areas, the questions, and the interview plan, and clearly decide which ones have the greatest priority in case you run out of time.

In general, structured interviews with closed-ended questions take more time to prepare than unstructured interviews. So, some beginning analysts prefer unstructured interviews, thinking that they can “wing it.” This is very dangerous and often counterproductive, because any information not gathered in the first interview would have to be obtained by follow-up efforts, and most people do not like to be interviewed repeatedly about the same issues.

Be sure to prepare the interviewee as well. When you schedule the interview, inform the interviewee of the reason for the interview and the areas you will be discussing far enough in advance so that he or she has time to think about the issues and organize his or her thoughts. This is particularly important when you are an outsider to the organization and for interviewing lower-level employees who often are not asked for their opinions and who may be uncertain about why you are interviewing them.

Conducting the Interview When you start the interview, the first goal is to build rapport with the interviewee so that he or she trusts you and is willing to tell you the whole truth, not just give the answers that he or she thinks you want. You should appear to be professional and an unbiased, independent seeker of information. The interview should start with an explanation of why you are there and why you have chosen to interview the person, and then move into your planned interview questions.

It is critical to carefully record all the information that the interviewee provides. In our experience, the best approach is to take careful notes—write down everything the interviewee says, even if it does not appear immediately relevant. Don't be afraid to ask the person to slow down or to pause while you write, because this is a clear indication that the interviewee's information is important to you. One potentially controversial issue is whether or not to tape-record the interview. Recording ensures that you do not miss important points, but it can be intimidating for the interviewee. Most organizations have policies or generally accepted practices about the recording of interviews, so find out what they are before you start an interview. If you are worried about missing information and cannot tape the interview, then bring along a second person to take detailed notes.

As the interview progresses, it is important that you understand the issues that are discussed. If you do not understand something, be sure to ask. Don't be afraid to ask “dumb questions,” because the only thing worse than appearing “dumb” is to be “dumb” by not understanding something that you could have cleared up by questioning. If you don't understand something during the interview, you certainly won't understand it afterward. Try to recognize and define jargon, and be sure to clarify jargon you do not understand. One good strategy to increase your understanding during an interview is to periodically summarize the key points that the interviewee is communicating. This avoids misunderstandings and also demonstrates that you are listening.

Finally, be sure to separate facts from opinion. The interviewee may say, for example, “We process too many credit card requests.” This is an opinion, and it is useful to follow this up with a probing question requesting support for the statement (e.g., “Oh, how many do you process in a day?” ). It is helpful to check the facts because any differences between the facts and the interviewee's opinions can point out key areas for improvement. Suppose that the interviewee complains about a high or increasing number of errors, but the logs show that errors have been decreasing. This suggests that errors are viewed as a very important problem that should be addressed by the new system, even if they are declining.

As the interview draws to a close, be sure to give the interviewee time to ask questions or provide information that he or she thinks is important but was not part of your interview plan. In most cases, the interviewee will have no additional concerns or information, but in some cases this will lead to unanticipated, but important information. Likewise, it can be useful to ask the interviewee if there are other people who should be interviewed. Make sure that the interview ends on time. (If necessary, omit some topics or plan to schedule another interview.)

As a last step in the interview, briefly explain what will happen next. (See the next section.) You don't want to prematurely promise certain features in the new system or a specific delivery date, but you do want to reassure the interviewee that his or her time was well spent and very helpful to the project.

Beginning systems analysts may naively think that conducting an interview is as easy as conversing with a friend. Unfortunately, this is almost never true. Interviewees often are not able or willing to hand over the needed information in a neat, organized fashion. In some cases, they may not want to share what they know at all. Analysts should hone their interpersonal skills to improve their interviewing success. (See Practical Tip 3-1.)

PRACTICAL TIP: 3-1 DEVELOPING INTERPERSONAL SKILLS 

I nterpersonal skills are those that enable you to develop rapport with others, and they are very important for interviewing. They help you to communicate with others effectively. Some people develop good interpersonal skills at an early age; they simply seem to know how to communicate and interact with others. Other people are less “lucky” and need to work hard to develop their skills.

Interpersonal skills, like most skills, can be learned. Here are some tips:

· Don't worry, be happy. Happy people radiate confidence and project their feelings on others. Try interviewing someone while smiling and then interviewing someone else while frowning and see what happens!

· Pay attention. Pay attention to what the other person is saying (which is harder than you might think). See how many times you catch yourself with your mind on something other than the conversation at hand.

· Summarize key points. At the end of each major theme or idea that someone explains, you should repeat the key points back to the speaker (e.g., “Let me make sure I understand. The key issues are …” ). This demonstrates that you consider the information important— and also forces you to pay attention. (You can't repeat what you didn't hear.)

· Be succinct. When you speak, be succinct. The goal in interviewing (and in much of life) is to learn, not to impress. The more you speak, the less time you give to others.

· Be honest. Answer all questions truthfully, and if you don't know the answer, say so.

· Watch body language (yours and theirs). The way a person sits or stands conveys much information. In general, a person who is interested in what you are saying sits or leans forward, makes eye contact, and often touches his or her face. A person leaning away from you or with an arm over the back of a chair is disinterested. Crossed arms indicate defensiveness or uncertainty, while “steepling” (sitting with hands raised in front of the body with fingertips touching) indicates a feeling of superiority.

Post-interview Follow-up After the interview is over, the analyst needs to prepare an interview report that describes the information from the interview (Figure 3-7). The report contains interview notes, information that was collected over the course of the interview and is summarized in a useful format. In general, the interview report should be written within 48 hours of the interview, because the longer you wait, the more likely you are to forget information.

CONCEPTS IN ACTION: 3-C THE RELUCTANT INTERVIEWEE

Early in my consulting career I was sent to a client organization with the goal of interviewing the only person in the organization who knew how the accounts receivable system worked and developing documentation for that system (nonexistent at the time). The interviewee was on time, polite, and told me absolutely nothing of value about the accounts receivable system, despite my best efforts over several interview sessions. Eventually, my manager called me off this project, and our attempt to document this system was abandoned.

Roberta Roth

QUESTIONS:

1. Why do you suppose the interviewee was so uncooperative?

2. Can you think of any ways to avoid this failed outcome?

FIGURE 3-7 Interview Report

Often, the interview report is sent to the interviewee with a request to read it and inform the analyst of clarifications or updates. Make sure the interviewee is convinced that you genuinely want his or her corrections to the report. Usually, there are few changes, but the need for any significant changes suggests that a second interview will be required. Never distribute someone's information without prior approval.

Joint Application Development

Joint Application Development (JAD)

Joint application development (or JAD as it is more commonly known) is an information gathering technique that allows the project team, users, and management to work together to identify requirements for the system. IBM developed the JAD technique in the late 1970s, and it is often the most useful method for collecting information from users.7 Capers Jones claims that JAD can reduce scope creep by 50%, and it prevents the requirements for a system from being too specific or too vague, both of which can cause trouble during later stages of the SDLC.8JAD is a structured process in which 10 to 20 users meet under the direction of a facilitator skilled in JAD techniques. The facilitator is a person who sets the meeting agenda and guides the discussion but does not join in the discussion as a participant. He or she does not provide ideas or opinions on the topics under discussion and remains neutral during the session. The facilitator must be an expert in both group process techniques and systems analysis and design techniques. One or two scribes assist the facilitator by recording notes, making copies, and so on. Often, the scribes will use computers and CASE tools to record information as the JAD session proceeds.

The JAD group meets for several hours, several days, or several weeks until all of the issues have been discussed and the needed information is collected. Most JAD sessions take place in a specially prepared meeting room, away from the participants' offices, so that they are not interrupted. The meeting room is usually arranged in a U shape so that all participants can easily see each other. (See Figure 3-8.) At the front of the room (the open part of the “U”), there is a whiteboard, flip chart and/or overhead projector for use by the facilitator, who leads the discussion.

One problem with JAD is that it suffers from the traditional problems associated with groups: Sometimes people are reluctant to challenge the opinions of others (particularly their boss), a few people often dominate the discussion, and not everyone participates. In a 15-member group, for example, if everyone participates equally, then each person can talk for only 4 minutes each hour and must listen for the remaining 56 minutes—not a very efficient way to collect information.

FIGURE 3-8 Joint Application Development Meeting Room

YOUR TURN: 3-2 INTERVIEW PRACTICE

Interviewing is not as simple as it first appears. Select two people from class to go to the front of the room to demonstrate an interview. (This also can be done in groups.) Have one person be the interviewer, and the other the interviewee. The interviewer should conduct a 5-minute interview regarding the school course registration system. Gather information about the existing system and how the system can be improved. If there is time, repeat with another pair.

QUESTIONS:

1. Describe the body language of the interview pair.

2. What kind of interview was conducted?

3. What kinds of questions were asked?

4. What was done well? How could the interview be improved?

Electronic JAD, or e-JAD, attempts to overcome these problems by the use of groupware. In an e-JAD meeting room, each participant uses special software on a networked computer to anonymously submit ideas, view all ideas generated by the group, and rate and rank ideas through voting. The facilitator uses the electronic tools of the e-JAD system to guide the group process, maintaining anonymity and enabling the group to focus on each idea's merits and not the power or rank of the person who contributed the idea. In this way, all participants can contribute at the same time, without fear of reprisal from people with differing opinions. Initial research suggests that e-JAD can reduce the time required to run JAD sessions by 50%-80%.9

Selecting Participants Selecting JAD participants is done in the same basic way as selecting interview participants. Participants are selected on the basis of information they can contribute, to provide a broad mix of organizational levels, and to build political support for the new system. The need for all JAD participants to be away from their offices at the same time can be a major problem. The office may need to be closed or run with a skeleton staff until the JAD sessions are complete.

Ideally, the participants who are released from regular duties to attend the JAD sessions should be the very best people in that business unit. However, without strong management support, JAD sessions can fail, because those selected to attend the JAD session are people who are less likely to be missed (i.e., the least competent people).

The facilitator should be someone who is an expert in JAD or e-JAD techniques and, ideally, someone who has experience with the business under discussion. In many cases, the JAD facilitator is a consultant external to the organization because the organization may not have a regular day-to-day need for JAD or e-JAD expertise. Developing and maintaining this expertise in-house can be expensive.

Designing the JAD Session JAD sessions can run from as little as a half day to several weeks, depending upon the size and scope of the project. In our experience, most JAD sessions tend to last 5 to 10 days spread over a 3-week period. Most e-JAD sessions tend to last 1 to 4 days in a 1-week period. JAD and e-JAD sessions usually move beyond the collection of information into producing analysis deliverables. For example, the users and the analysts collectively can create use cases, process models, or the requirements definition.

As with interviewing, JAD success depends upon a careful plan. JAD sessions usually are designed and structured along the same principles as interviews. Most JAD sessions are designed to collect specific information from users, and this requires the development of a set of questions prior to the meeting. A difference between JAD and interviewing is that all JAD sessions are structured—they must be carefully planned. In general, closed-ended questions are seldom used, because they do not spark the open and frank discussion that is typical of JAD. In our experience, it is better to proceed top-down in JAD sessions when gathering information. Typically, 30 minutes is allocated to each separate agenda item, and frequent breaks are scheduled throughout the day because participants tire easily.

Preparing for the JAD Session As with interviewing, it is important to prepare the analysts and participants for the JAD session. Because the sessions can go beyond the depth of a typical interview and usually are conducted off-site, participants can be more concerned about how to prepare. It is important that the participants understand what is expected of them. If the goal of the JAD session, for example, is to develop an understanding of the current system, then participants can bring procedure manuals and documents with them. If the goal is to identify improvements for a system, then they can think about how they would improve the system prior to the JAD session.

Conducting the JAD Session Most JAD sessions try to follow a formal agenda, and most have formal ground rules that define appropriate behavior. Common ground rules include following the schedule, respecting others' opinions, accepting disagreement, and ensuring that only one person talks at a time.

The role of the JAD facilitator can be challenging. Many participants come to the JAD session with strong feelings about the system being discussed. Channeling these feelings so that the session moves forward in a positive direction and getting participants to recognize and accept—but not necessarily agree on—opinions and situations different from their own requires significant expertise in systems analysis and design, JAD, and interpersonal skills. Few systems analysts attempt to facilitate JAD sessions without being trained in JAD techniques, and most apprentice with a skilled JAD facilitator before they attempt to lead their first session.

The JAD facilitator performs three key functions. First, he or she ensures that the group sticks to the agenda. The only reason to digress from the agenda is when it becomes clear to the facilitator, project leader, and project sponsor that the JAD session has produced some new information that is unexpected and requires the JAD session (and perhaps the project) to move in a new direction. When participants attempt to divert the discussion away from the agenda, the facilitator must be firm, but polite, in leading the discussion back to the agenda and getting the group back on track.

Second, the facilitator must help the group understand the technical terms and jargon that surround the system development process and help the participants understand the specific analysis techniques used. Participants are experts in their business area, but they probably are not experts in systems analysis. The facilitator must therefore minimize the learning required and teach participants how to effectively provide the right information.

Third, the facilitator records the group's input on a public display area, which can be a whiteboard, flip chart, or computer display. He or she structures the information that the group provides and helps the group recognize key issues and important solutions. Under no circumstance should the facilitator insert his or her opinions into the discussion. The facilitator must remain neutral at all times and simply help the group through the process. The moment the facilitator offers an opinion on an issue, the group will no longer see him or her as a neutral party, but rather as someone who could be attempting to sway the group into some predetermined solution.

However, this does not mean that the facilitator should not try to help the group resolve issues. For example, if two items appear to be the same to the facilitator, the facilitator should not say, “I think these may be similar.” Instead, the facilitator should ask, “Are these similar?” If the group decides that they are, the facilitator can combine them and move on. However, if the group decides that they are not similar (despite what the facilitator believes), the facilitator should accept the decision and move on. The group is always right, and the facilitator has no opinion.

It is common for the JAD participants to make use of a number of tools during the JAD session in order to fully define the new system. Use cases may be created to describe how the users will interact with the new system. Prototypes may be created to more fully understand the user interface or navigation through the system. Process models can be constructed to understand the software that will be developed, while a data model can be used to describe the data that will be captured and maintained. The facilitator and the analysts on the project team should use every tool at their disposal to help the participants clarify and define their needs for the new system.

Post-JAD Follow-up As with interviews, a JAD post-session report is prepared and circulated among session attendees. The post-session report is essentially the same as the interview report in Figure 3-7. Since the JAD sessions are longer and provide more information, it usually takes a week or two after the JAD session before the report is complete.

YOUR TURN: 3-3 JAD PRACTICE

Organize yourselves into groups of four to seven people and pick one person in each group to be the JAD facilitator. Using a blackboard, whiteboard, or flip chart, gather information about how the group performs some process (e.g., working on a class assignment, making a sandwich, paying bills, getting to class). How did the JAD session go? Based on your experience, what are some pros and cons of using JAD in a real organization?

PRACTICAL TIP: 3-2 MANAGING PROBLEMS IN JAD SESSIONS

I have run more than a hundred JAD sessions and have learned several standard “facilitator tricks.” Here are some common problems and some ways to deal with them.

· Reducing domination. The facilitator should ensure that no one person dominates the group discussion. The only way to deal with someone who dominates is head on. During a break, approach the person, thank him or her for their insightful comments, and ask them to help you make sure that others also participate.

· Encouraging noncontributors. Drawing out people who have participated very little is challenging because you want to bring them into the conversation so that they will contribute again. The best approach is to ask a direct factual question that you are certain they can answer. And it helps to ask the question using some repetition to give them time to think. For example “Pat, I know you've worked shipping orders a long time. You've probably been in the Shipping Department longer than anyone else. Could you help us understand exactly what happens when an order is received in Shipping?”

· Side discussions. Sometimes participants engage in side conversations and fail to pay attention to the group. The easiest solution is simply to walk close to the people and continue to facilitate right in front of them. Few people will continue a side conversion when you are two feet from them and the entire group's attention is on you and them.

· Agenda merry-go-round. The merry-go-round occurs when a group member keeps returning to the same issue every few minutes and won't let go. One solution is to let the person have five minutes to ramble on about the issue while you carefully write down every point on a flip chart or computer file. This flip chart or file is then posted conspicuously on the wall. When the person brings up the issue again, you interrupt them, walk to the paper and ask them what to add. If they mention something already on the list, you quickly interrupt, point out that it is there, and ask what other information to add. Don't let them repeat the same point but write any new information.

· Violent agreement. Some of the worst disagreements occur when participants really agree on the issues but don't realize that they agree because they are using different terms. An example is arguing whether a glass is half empty or half full; they agree on the facts, but can't agree on the words. In this case, the facilitator has to translate the terms into different words and find common ground so the parties recognize that they really agree.

· Unresolved conflict. In some cases, participants don't agree and can't understand how to determine what alternatives are better. You can help by structuring the issue. Ask for criteria by which the group will identify a good alternative (e.g., “Suppose this idea really did improve customer service. How would I recognize the improved customer service?” ).Then once you have a list of criteria, ask the group to assess the alternatives using them.

· True conflict. Sometimes, despite every attempt, participants just can't agree on an issue. The solution is to postpone the discussion and move on. Document the issue as an “open issue” and list it prominently on a flip chart. Have the group return to the issue hours later. Often the issue will resolve itself by then and you haven't wasted time on it. If the issue cannot be resolved later, move it to the list of issues to be decided by the project sponsor or some other more senior member of management.

· Use humor. Humor is one of the most powerful tools a facilitator has and thus must be used judiciously. The best JAD humor is always in context; never tell jokes but take the opportunity to find the humor in the situation.

Alan Dennis

Questionnaires (under the Requirements Elicitation in Practice section)

A questionnaire is a set of written questions for obtaining information from individuals. Questionnaires often are used when there is a large number of people from whom information and opinions are needed. In our experience, questionnaires are commonly used for systems intended for use outside of the organization (e.g., by customers or vendors) or for systems with business users spread across many geographic locations. Most people automatically think of paper when they think of questionnaires, but today more questionnaires are being distributed in electronic form, either via e-mail or on the Web. Electronic distribution can save a significant amount of money, compared with distributing paper questionnaires.

Selecting Participants As with interviews and JAD sessions, the first step is to select the individuals to whom the questionnaire will be sent. However, it is not usual to select every person who could provide useful information. The standard approach is to select a sample, or subset, of people who are representative of the entire group. Sampling guidelines are discussed in most statistics books, and most business schools include courses that cover the topic, so we will not discuss it here. The important point in selecting a sample, however, is to realize that not everyone who receives a questionnaire will actually complete it. On average, only 30%–50% of paper and e-mail questionnaires are returned. Response rates for Web-based questionnaires tend to be significantly lower (often, only 5%–30%).

FIGURE 3-9 Good Questionnaire Design

Designing the Questionnaire Developing good questions is critical for questionnaires because the information on a questionnaire cannot be immediately clarified for a confused respondent. Questions on questionnaires must be very clearly written and must leave little room for misunderstanding; therefore, closed-ended questions tend to be most commonly used. Questions must enable the analyst to clearly separate facts from opinions. Opinion questions often ask the respondent the extent to which they agree or disagree (e.g., “Are network problems common?” ), while factual questions seek more precise values (e.g., “How often does a network problem occur: once an hour, once a day, or once a week?” ). See Figure 3-9 for guidelines on questionnaire design.

Perhaps the most obvious issue—but one that is sometimes overlooked—is to have a clear understanding of how the information collected from the questionnaire will be analyzed and used. You must address this issue before you distribute the questionnaire, because it is too late afterward.

Questions should be relatively consistent in style so that the respondent does not have to read instructions for each question before answering it. It is generally a good practice to group related questions together to make them simpler to answer. Some experts suggest that questionnaires should start with questions important to respondents, so that the questionnaire immediately grabs their interest and induces them to answer it. Perhaps the most important step is to have several colleagues review the questionnaire and then pretest it with a few people drawn from the groups to whom it will be sent. It is surprising how often seemingly simple questions can be misunderstood.

Administering the Questionnaire The key issue in administering the questionnaire is getting participants to complete the questionnaire and send it back. Dozens of marketing research books have been written about ways to improve response rates. Commonly used techniques include clearly explaining why the questionnaire is being conducted and why the respondent has been selected; stating a date by which the questionnaire is to be returned; offering an inducement to complete the questionnaire (e.g., a free pen); and offering to supply a summary of the questionnaire responses. Systems analysts have additional techniques to improve responses rates inside the organization, such as personally handing out the questionnaire and personally contacting those who have not returned them after a week or two, as well as requesting the respondents' supervisors to administer the questionnaires in a group meeting.

Questionnaire Follow-up It is helpful to process the returned questionnaires and develop a questionnaire report soon after the questionnaire deadline. This ensures that the analysis process proceeds in a timely fashion and that respondents who requested copies of the results receive them promptly.

YOUR TURN: 3-4 QUESTIONNAIRE PRACTICE

Organize yourselves into small groups. Have each person develop a short questionnaire to collect information about the frequency in which group members perform some process (e.g., working on a class assignment, making a sandwich, paying bills, getting to class), how long it takes them, how they feel about the process, and opportunities for improving the process.

Once everyone has completed his or her questionnaire, ask each member to pass it to the right and then complete his or her neighbor's questionnaire.

Pass the questionnaire back to the creator when it is completed.

QUESTIONS:

1. How did the questionnaire you completed differ from the one you created?

2. What are the strengths of each questionnaire?

3. How would you analyze the survey results if you had received 50 responses?

4. What would you change about the questionnaire that you developed?

Sampling

Sampling is widely used in business as a means of gathering useful information about a population. Data are gathered from samples and conclusions are drawn about the population as a part of the inferential statistics process. In the Decision Dilemma on maquiladora workers, a random sample of workers could be taken from a wide selection of companies in several industries in many of the key border cities. A carefully constructed questionnaire that is culturally sensitive to Mexicans could be administered to the selected workers to determine work attitudes, expectations, and cultural differences between workers and companies. The researchers could compile and analyze the data gleaned from the responses. Summaries and observations could be made about worker outlook and culture in the maquiladora program. Management and decision makers could then attempt to use the results of the study to improve worker performance and motivation. Often, a sample provides a reasonable means for gathering such useful decision-making information that might be otherwise unattainable and unaffordable.

Reasons for Sampling

Taking a sample instead of conducting a census offers several advantages.

1. The sample can save money.

2. The sample can save time.

3. For given resources, the sample can broaden the scope of the study.

4. Because the research process is sometimes destructive, the sample can save product.

5. If accessing the population is impossible, the sample is the only option.

For a given number of questions from a survey or a given set of measurements obtained in a study, taking a sample versus a census can result in a savings of both money and time. For example, suppose an eight-minute telephone interview is conducted as part of a survey. Conducting such interviews with a sample of 100 customers is substantially less expensive and time-consuming than taking a census of 100,000 customers. If obtaining the outcomes of a study is a matter of urgency, sampling can produce results more quickly. With the volatility of the marketplace and the constant barrage of new competition and new ideas, sampling has a strong advantage over a census in terms of research turnaround time.

If resources allocated to a research project are fixed, more detailed information can be gathered by taking a sample than by conducting a census. With resources concentrated on fewer individuals or items, a study can be broadened in scope to allow more specialized questions and deeper investigation. As an example, one organization budgeted $80,000 to survey the opinions of its customers and opted to take a census instead of a sample by sending a mail survey to the entire population. The researchers mass-mailed thousands of copies of a brief 20-questionsurvey in which each question could be answered with a Yes or No response. One of the questions was, “Are you satisfied with the service that you received at the XYZ store?” For the same amount of money, the company could have taken a random sample from the population, held interactive one-on-one sessions with highly trained interviewers, and gathered detailed information about customer opinions and attitudes towards products, service, layout, availability, etc.

Some research processes are destructive to the product or item being studied. For example, if light bulbs are being tested to determine how long they burn or batteries are being discharged to determine how long they last, the light bulbs and/or the batteries being analyzed for longevity are ruined in the testing process. By using a sample in destructive testing, only a portion of the population is ruined.

Sometimes a population is virtually impossible to access for research. For example, some people refuse to answer sensitive questions, some telephone numbers are unlisted, and some executives are virtually impossible to access. In such cases, sampling is the only option.

Reasons for Taking a Census

Sometimes it is preferable to conduct a census of the entire population rather than taking a sample. There are at least two reasons why a business researcher may opt to take a census rather than a sample, providing there is adequate time and money available to conduct such a census: (1) to eliminate the possibility that by chance a randomly selected sample may not be representative of the population and (2) for the safety of the consumer.

THINKING CRITICALLY ABOUT STATISTICS IN BUSINESS TODAY

Sampling Canadian Manufacturers

Statistics Canada, Canada's national statistical agency, administers a monthly survey of manufacturing for Canada. This Monthly Survey of Manufacturing (MSM) includes information on such variables as sales of goods manufactured, inventories, and orders. The MSM data are used as indicators of the economic condition of manufacturing industries in Canada along with inputs for Canada's gross domestic product, economic studies, and econometric models. The sampling frame for the MSM is the Business Register of Statistics Canada. The target population consists of all statistical establishments on the business register that are classified as being in the manufacturing sector. The frame is further reduced by eliminating the smallest units of the survey population. As a result, there are 27,000 establishments in the sampling frame, of which approximately 10,500 units are sampled. Before the sample is taken, the sampling frame is stratified by both industry and province. Further stratification is then made within each combination of industry and province by company size so that similar-sized companies are grouped together. Selected establishments are required to respond to the survey, and data are collected directly from survey respondents and extracted from administrative files. Sampled companies are contacted either by mail or telephone, whichever they prefer.

Things to Ponder

1. According to the information presented, the MSM sample is stratified by province, industry, and size. Do you think that these strata make sense? If so, why? Can you think of other strata that might be used in this survey?

2. Sampled companies are contacted either by mail or telephone. Do you think that survey responses might differ by whether they were obtained by mail or by telephone? Explain why or why not.

Source: Statistics Canada

Even when proper sampling techniques are implemented in a study, there is the possibility a sample could be selected by chance that does not represent the population. For example, if the population of interest is all truck owners in the state of Colorado, a random sample of truck owners could yield mostly ranchers when, in fact, many of the truck owners in Colorado are urban dwellers. If the researcher or study sponsor cannot tolerate such a possibility, then taking a census may be the only option.

In addition, sometimes a census is taken to protect the safety of the consumer. For example, there are some products, such as airplanes or heart defibrillators, in which the performance of such is so critical to the consumer that 100% of the products are tested, and sampling is not a reasonable option.

Frame

Every research study has a target population that consists of the individuals, institutions, or entities that are the object of investigation. When a sample is drawn from a population, it is actually selected from a list, map, directory, or some other source that represents the population. This list, map, or directory is called the frame. Thus, a frame is a list, map, directory, or some other source used in the sampling process to represent the population. Because the sample is drawn from the frame, the frame is sometimes referred to as the working population. Examples of frames can include phone directories, trade association lists, company human resource records, or even lists sold by list brokers. Ideally, a one-to-one correspondence exists between the frame units and the target population units. That is, the frame and the target population are congruent. In reality, the frame and the target population are often different, as shown in Figure 7.1. In such cases, a frame can be overregistered in that it contains units that are not in the target population; and it can be underregistered because it does not contain some of the units in the target population.

Suppose the target population is all families living in Detroit. A feasible frame might be the residential pages of the Detroit telephone books. How might the frame differ from the target population? A growing number of families have no “land-line” phone. Other families have unlisted numbers. Still other families might have moved and/or changed numbers since the directory was printed. Some families even have multiple listings under different names.

Random Versus Nonrandom Sampling

The two main types of sampling are random and nonrandom. In random sampling  every unit of the population has the same probability of being selected into the sample. Random sampling implies that chance enters into the process of selection. For example, most Americans would like to believe that winners of nationwide magazine sweepstakes or numbers selected as state lottery winners are selected by some random draw of numbers, hence, random sampling.

In nonrandom sampling not every unit of the population has the same probability of being selected into the sample. Members of nonrandom samples are not selected by chance. For example, they might be selected because they are at the right place at the right time or because they know the people conducting the research.

Sometimes random sampling is called probability sampling and nonrandom sampling is called nonprobability sampling. Because every unit of the population is not equally likely to be selected, assigning a probability of occurrence in nonrandom sampling is impossible. The statistical methods presented and discussed in this text are based on the assumption that the data come from random samples. Nonrandom sampling methods are not appropriate techniques for gathering data to be analyzed by most of the statistical methods presented in this text. However, several nonrandom sampling techniques are described in this section, primarily to alert you to their characteristics and limitations.

Random Sampling Techniques

The four basic random sampling techniques are simple random sampling, stratified random sampling, systematic random sampling, and cluster (or area) random sampling. Each technique offers advantages and disadvantages. Some techniques are simpler to use, some are less costly, and others show greater potential for reducing sampling error.

Simple Random Sampling

The most elementary random sampling technique is simple random sampling. Simple random sampling can be viewed as the basis for other random sampling techniques. With simple random sampling, each unit of the frame is numbered from 1 to N (where N is the size of the population). Next, a table of random numbers or a random number generator is used to select n items into the sample. A random number generator is usually a computer program that allows computer-calculated output to yield random numbers. Table A.1 contains a brief table of random numbers. Table A.1 in Appendix A contains a full table of random numbers. These numbers are random in all directions. The spaces in the table are there only for ease of reading the values. For each number, any of the 10 digits (0–9) is equally likely, so getting the same digit twice or more in a row is possible.

TABLE 7.1  A Brief Table of Random Numbers

As an example, from the population frame of companies listed in Table 7.2, we will use simple random sampling to select a sample of six companies. First, we number every member of the population. We select as many digits for each unit sampled as there are in the largest number in the population. For example, if a population has 2,000 members, we select four-digit numbers. Because the population in Table 7.2 contains 30 members, only two digits need be selected for each number. The population is numbered from 01 to 30, as shown in Table 7.3.

The object is to sample six companies, so six different two-digit numbers must be selected from the table of random numbers. Because this population contains only 30 companies, all numbers greater than 30 (31–99) must be ignored. If, for example, the number 67 is selected, we discard the number and continue the process until a value between 01 and 30 is obtained. If the same number occurs more than once, we proceed to another number. For ease of understanding, we start with the first pair of digits in Table 7.1 and proceed across the first row until n = 6 different values between 01 and 30 are selected. If additional numbers are needed, we proceed across the second row, and so on. Often a researcher will start at some randomly selected location in the table and proceed in a predetermined direction to select numbers.

In the first row of digits in Table 7.1, the first number is 91. This number is out of range so it is cast out. The next two digits are 56. Next is 74, followed by 25, which is the first usable number. From Table 7.3, we see that 25 is the number associated with Occidental Petroleum, so Occidental Petroleum is the first company selected into the sample. The next number is 95, unusable, followed by 27, which is usable. Twenty-seven is the number for Procter & Gamble, so this company is selected. Continuing the process, we pass over the numbers 95 and 83. The next usable number is 01, which is the value for Alaska Airlines. Thirty-four is next, followed by 04 and 02, both of which are usable. These numbers are associated with Bank of America and Alcoa, respectively. Continuing along the first row, the next usable number is 29, which is associated with Sears. Because this selection is the sixth, the sample is complete. The following companies constitute the final sample.

TABLE 7.2  A Population Frame of 30 Companies

TABLE 7.3 Numbered Population of 30 Companies

Alaska Airlines

Alcoa

Bank of America

Occidental Petroleum

Procter & Gamble

Sears

Simple random sampling is easier to perform on small than on large populations. The process of numbering all the members of the population and selecting items is cumbersome for large populations.

Stratified Random Sampling

A second type of random sampling is stratified random sampling, in which the population is divided into nonoverlapping subpopulations called strata. The researcher then extracts a random sample from each of the subpopulations (strata). The main reason for using stratified random sampling is that it has the potential for reducing sampling error. Sampling error occurs when, by chance, the sample does not represent the population. With stratified random sampling, the potential to match the sample closely to the population is greater than it is with simple random sampling because portions of the total sample are taken from different population subgroups. However, stratified random sampling is generally more costly than simple random sampling because each unit of the population must be assigned to a stratum before the random selection process begins.

Strata selection is usually based on available information. Such information may have been gleaned from previous censuses or surveys. Stratification benefits increase as the strata differ more. Internally, a stratum should be relatively homogeneous; externally, strata should contrast with each other. Stratification is often done by using demographic variables, such as sex, socioeconomic class, geographic region, religion, and ethnicity. For example, if a U.S. presidential election poll is to be conducted by a market research firm, what important variables should be stratified? The sex of the respondent might make a difference because a gender gap in voter preference has been noted in past elections; that is, men and women tended to vote differently in national elections. Geographic region also provides an important variable in national elections because voters are influenced by local cultural values that differ from region to region.

In FM radio markets, age of listener is an important determinant of the type of programming used by a station. Figure 7.2 contains a stratification by age with three strata, based on the assumption that age makes a difference in programming preference. This stratification implies that listeners 20 to 30 years of age tend to prefer the same type of programming, which is different from that preferred by listeners 30 to 40 and 40 to 50 years of age. Within each age subgroup (stratum), homogeneity or alikeness is present; between each pair of subgroups a difference, or heterogeneity, is present.

Stratified random sampling can be either proportionate or disproportionate. Proportionate stratified random sampling occurs when the percentage of the sample taken from each stratum is proportionate to the percentage that each stratum is within the whole population. For example, suppose voters are being surveyed in Boston and the sample is being stratified by religion as Catholic, Protestant, Jewish, and others. If Boston's population is 90% Catholic and if a sample of 1,000 voters is taken, the sample would require inclusion of 900 Catholics to achieve proportionate stratification. Any other number of Catholics would be disproportionate stratification. The sample proportion of other religions would also have to follow population percentages. Or consider the city of El Paso, Texas, where the population is approximately 77% Hispanic. If a researcher is conducting a citywide poll in El Paso and if stratification is by ethnicity, a proportionate stratified random sample should contain 77% Hispanics. Hence, an ethnically proportionate stratified sample of 160 residents from El Paso's 660,000 residents should contain approximately 123 Hispanics. Whenever the proportions of the strata in the sample are different from the proportions of the strata in the populationdisproportionate stratified random sampling occurs.

Systematic Sampling

Systematic sampling is a third random sampling technique. Unlike stratified random sampling, systematic sampling is not done in an attempt to reduce sampling error. Rather, systematic sampling is used because of its convenience and relative ease of administration. With systematic sampling, every kth item is selected to produce a sample of size n from a population of size N. The value of k, sometimes called the sampling cycle, can be determined by the following formula. If k is not an integer value, the whole-number value should be used.

As an example of systematic sampling, a management information systems researcher wanted to sample the manufacturers in Texas. He had enough financial support to sample 1,000 companies (n). The Directory of Texas Manufacturers listed approximately 17,000 total manufacturers in Texas (N) in alphabetical order. The value of k was 17(17,000/1,000) and the researcher selected every 17th company in the directory for his sample.

Did the researcher begin with the first company listed or the 17th or one somewhere between? In selecting every kth value, a simple random number table should be used to select a value between 1 and k inclusive as a starting point. The second element for the sample is the starting point plus k. In the example, k = 17, so the researcher would have gone to a table of random numbers to determine a starting point between 1 and 17. Suppose he selected the number 5. He would have started with the 5th company, then selected the 22nd (5+17), and then the 39th, and so on.

Besides convenience, systematic sampling has other advantages. Because systematic sampling is evenly distributed across the frame, a knowledgeable person can easily determine whether a sampling plan has been followed in a study. However, a problem with systematic sampling can occur if the data are subject to any periodicity, and the sampling interval is in syncopation with it. In such a case, the sampling would be nonrandom. For example, if a list of 150 college students is actually a merged list of five classes with 30 students in each class and if each of the lists of the five classes has been ordered with the names of top students first and bottom students last, then systematic sampling of every 30th student could cause selection of all top students, all bottom students, or all mediocre students; that is, the original list is subject to a cyclical or periodic organization. Systematic sampling methodology is based on the assumption that the source of population elements is random.

Cluster (or Area) Sampling

Cluster (or area) sampling is a fourth type of random sampling. Cluster (or area) sampling involves dividing the population into non-overlapping areas, or clusters. However, in contrast to stratified random sampling where strata are homogeneous within, cluster sampling identifies clusters that tend to be internally heterogeneous. In theory, each cluster contains a wide variety of elements, and the cluster is a miniature, or microcosm, of the population. Examples of clusters are towns, companies, homes, colleges, areas of a city, and geographic regions. Often clusters are naturally occurring groups of the population and are already identified, such as states or Standard Metropolitan Statistical Areas. Although area sampling usually refers to clusters that are areas of the population, such as geographic regions and cities, the terms cluster sampling and area sampling are used interchangeably in this text.

After randomly selecting clusters from the population, the business researcher either selects all elements of the chosen clusters or randomly selects individual elements into the sample from the clusters. One example of business research that makes use of clustering is test marketing of new products. Often in test marketing, the United States is divided into clusters of test market cities, and individual consumers within the test market cities are surveyed. Figure 7.3 shows some of the top U.S. cities that are used as clusters to test products. The Thinking Critically About Statistics in Business Today feature on test market cities elaborates more on the concept of test market cities and how they are selected.

Sometimes the clusters are too large, and a second set of clusters is taken from each original cluster. This technique is called two-stage sampling. For example, a researcher could divide the United States into clusters of cities. She could then divide the cities into clusters of blocks and randomly select individual houses from the block clusters. The first stage is selecting the test cities and the second stage is selecting the blocks.

Cluster or area sampling offers several advantages. Two of the foremost advantages are convenience and cost. Clusters are usually convenient to obtain, and the cost of sampling from the entire population is reduced because the scope of the study is reduced to the clusters. The cost per element is usually lower in cluster or area sampling than in stratified sampling because of lower element listing or locating costs. The time and cost of contacting elements of the population can be reduced, especially if travel is involved, because clustering reduces the distance to the sampled elements. In addition, administration of the sample survey can be simplified. Sometimes cluster or area sampling is the only feasible approach because the sampling frames of the individual elements of the population are unavailable, and therefore other random sampling techniques cannot be used.

THINKING CRITICALLY ABOUT STATISTICS IN BUSINESS TODAY

Test Market Cities

Companies that intend to introduce a new product across a country will often use test market cities to help determine how well the product will sell in the country and to gain insight into how to better market the product to consumers. Test market cities serve as a sample of the entire country, thereby reducing the cost of testing the product throughout the entire country and minimizing the time to do so. In the sense that test market cities are randomly selected areas from the country, such sampling could be viewed as a form of area or cluster sampling. However, there are other reasons (besides random selection) that test market cities are chosen, including demographics, familiarity, convenience, and psychographics. Sometimes a test market city is chosen because the company has used that city in a previous test and the product went on to be successful. Still, others are chosen because market researchers are comfortable there.

In cluster or area sampling, each area or cluster is ideally a miniature or microcosm of the population. This being the case for a test market city, a business researcher can gain the benefits of test marketing a product in an environment that closely resembles the population and, at the same time, realize cost and time savings benefits associated with sampling. According to Valerie Skala, Vice President of Analytic Product Management and Development at Information Resources, Inc., “To deliver accurate results, a test market must be representative of the United States in terms of sales development of the category and related products.” Josh Herman, Product Manager of Acxiom Corp, reports that companies in the United States have begun utilizing life-stage-based consumer segmentation to identify test market cities that most effectively represent the market makeup of consumers in the United States. One of these systems suggests that the 110 million U.S. households consist of 70 different life-stage segments, including “getting married,” “having children,” “raising kids,” “launching the kids out of the house,” “retiring,” etc. Since such life-stage changes greatly impact our consumer behavior, it is important that market researchers who are interested in test marketing products to the entire country select test market cities that most closely parallel the overall U.S. profile in life-stage segments.

According to one study, the Albany, New York, Metropolitan Statistical Area (MSA) is most closely correlated (with a correlation score of .91) in life-stage segments with the United States overall. Albany has almost the same proportion of consumers across the different life stages as one would find in the nation as a whole. Adopting such a test market city allows researchers to use multiple markets in their testing and, at the same time, have a consistent way to tie them together. Figure 7.3 displays some of the top-rated test market cities in the United States.

Things to Ponder

1. Think about your home city. What characteristics of it would lend themselves to making your city an effective test market for the entire country? What characteristics would hinder the use of your city as a test market?

2. Select a product or service and suppose that it is going to be test marketed in a test market city. What characteristics (demographics) would a test market city have to have in order to conduct a successful market test?

Source: Adapted from “Marketing News: Albany, N.Y. Reflects True Test Market,” located at the Acxiom Corp's Web site: http://www.acxiom.com/default.aspx?ID=2428&DisplayID=18.

Cluster or area sampling also has several disadvantages. If the elements of a cluster are similar, cluster sampling may be statistically less efficient than simple random sampling. In an extreme case—when the elements of a cluster are the same—sampling from the cluster may be no better than sampling a single unit from the cluster. Moreover, the costs and problems of statistical analysis are greater with cluster or area sampling than with simple random sampling.

Nonrandom Sampling

Sampling techniques used to select elements from the population by any mechanism that does not involve a random selection process are called nonrandom sampling techniques. Because chance is not used to select items from the samples, these techniques are non-probability techniques and are not desirable for use in gathering data to be analyzed by the methods of inferential statistics presented in this text. Sampling error cannot be determined objectively for these sampling techniques. Four nonrandom sampling techniques are presented here: convenience sampling, judgment sampling, quota sampling, and snowball sampling.

Convenience Sampling

In convenience sampling, elements for the sample are selected for the convenience of the researcher. The researcher typically chooses elements that are readily available, nearby, or willing to participate. The sample tends to be less variable than the population because in many environments the extreme elements of the population are not readily available. The researcher will select more elements from the middle of the population. For example, a convenience sample of homes for door-to-door interviews might include houses where people are at home, houses with no dogs, houses near the street, first-floor apartments, and houses with friendly people. In contrast, a random sample would require the researcher to gather data only from houses and apartments that have been selected randomly, no matter how inconvenient or unfriendly the location. If a research firm is located in a mall, a convenience sample might be selected by interviewing only shoppers who pass the shop and look friendly.

Judgment Sampling

Judgment sampling occurs when elements selected for the sample are chosen by the judgment of the researcher. Researchers often believe they can obtain a representative sample by using sound judgment, which will result in saving time and money. Sometimes ethical, professional researchers might believe they can select a more representative sample than the random process will provide. They might be right! However, some studies show that random sampling methods outperform judgment sampling in estimating the population mean even when the researcher who is administering the judgment sampling is trying to put together a representative sample. When sampling is done by judgment, calculating the probability that an element is going to be selected into the sample is not possible. The sampling error cannot be determined objectively because probabilities are based on nonrandom selection.

Other problems are associated with judgment sampling. The researcher tends to make errors of judgment in one direction. These systematic errors lead to what are called biases. The researcher also is unlikely to include extreme elements. Judgment sampling provides no objective method for determining whether one person's judgment is better than another's.

Quota Sampling

A third nonrandom sampling technique is quota sampling, which appears to be similar to stratified random sampling. Certain population subclasses, such as age group, gender, or geographic region, are used as strata. However, instead of randomly sampling from each stratum, the researcher uses a nonrandom sampling method to gather data from a stratum until the desired quota of samples is filled. Quotas are described by quota controls, which set the sizes of the samples to be obtained from the subgroups. Generally, a quota is based on the proportions of the subclasses in the population. In this case, the quota concept is similar to that of proportional stratified sampling.

Quotas are often filled by using available, recent, or applicable elements. Table 7.4 shows how quota sampling might be used to fill quotas of consumers by age.

TABLE 7.4  Using Quota Sampling to Fill Quotas of Consumers by Age

Note from studying Table 7.4 that the researcher is using strata similar to stratified random sampling. However, the quotas are filled in each case by using convenience sampling, and the result, while appearing to be scientific, is actually nonrandom sampling.

Quota sampling can be useful if no frame is available for the population. For example, suppose a researcher wants to stratify the population into owners of different types of cars but fails to find any lists of Toyota van owners. Through quota sampling, the researcher would proceed by interviewing all car owners and casting out non–Toyota van owners until the quota of Toyota van owners is filled.

Quota sampling is less expensive than most random sampling techniques because it essentially is a technique of convenience. However, cost may not be meaningful because the quality of nonrandom and random sampling techniques cannot be compared. Another advantage of quota sampling is the speed of data gathering. The researcher does not have to call back or send out a second questionnaire if he does not receive a response; he just moves on to the next element. Also, preparatory work for quota sampling is minimal.

The main problem with quota sampling is that, when all is said and done, it still is only a nonrandom sampling technique. Some researchers believe that if the quota is filled by randomly selecting elements and discarding those not from a stratum, quota sampling is essentially a version of stratified random sampling. However, most quota sampling is carried out by the researcher going where the quota can be filled quickly. The object is to gain the benefits of stratification without the high field costs of stratification. Ultimately, it remains a nonprobability sampling method.

Snowball Sampling

Another nonrandom sampling technique is snowball sampling, in which survey subjects are selected based on referral from other survey respondents. The researcher identifies a person who fits the profile of subjects wanted for the study. The researcher then asks this person for the names and locations of others who would also fit the profile of subjects wanted for the study. Through these referrals, survey subjects can be identified cheaply and efficiently, which is particularly useful when survey subjects are difficult to locate. It is the main advantage of snowball sampling; its main disadvantage is that it is nonrandom.

Sampling Error

Sampling error occurs when the sample is not representative of the population. When random sampling techniques are used to select elements for the sample, sampling error occurs by chance. Many times the statistic computed on the sample is not an accurate estimate of the population parameter because the sample was not representative of the population. This result is caused by sampling error. With random samples, sampling error can be computed and analyzed.

Non-sampling Errors

All errors other than sampling errors are non-sampling errors. The many possible non-sampling errors include missing data, recording errors, input processing errors, and analysis errors. Other non-sampling errors result from the measurement instrument, such as errors of unclear definitions, defective questionnaires, and poorly conceived concepts. Improper definition of the frame is a non-sampling error. In many cases, finding a frame that perfectly fits the population is impossible. Insofar as it does not fit, a non-sampling error has been committed.

Response errors are also non-sampling errors. They occur when people do not know, will not say, or overstate. Virtually no statistical method is available to measure or control for non-sampling errors. The statistical techniques presented in this text are based on the assumption that none of these non-sampling errors were committed. The researcher must eliminate these errors through carefully planning and executing the research study.

Estimating Sample Size

In most business research that uses sample statistics to infer about the population, being able to estimate the size of sample necessary to accomplish the purposes of the study is important. The need for this sample-size estimation is the same for the large corporation investing tens of thousands of dollars in a massive study of consumer preference and for students undertaking a small case study and wanting to send questionnaires to local businesspeople. In either case, such things as level of confidence, sampling error, and width of estimation interval are closely tied to sample size. If the large corporation is undertaking a market study, should it sample 40 people or 4,000 people? The question is an important one. In most cases, because of cost considerations, business researchers do not want to sample any more units or individuals than necessary.

Sample Size When Estimating μ

In research studies when μ is being estimated, the size of sample can be determined by using the z formula for sample means and solving for n. Consider,

The difference between  and μ is the margin of error of estimation resulting from the sampling process. Let E = ( − μ) = the margin of error of estimation. Substituting E into the preceding formula yields

Solving for n yields a formula that can be used to determine sample size.

Sometimes in estimating sample size the population variance is known or can be determined from past studies. Other times, the population variance is unknown and must be estimated to determine the sample size. In such cases, it is acceptable to use the following estimate to represent σ.

Using formula (8.7), the business researcher can estimate the sample size needed to achieve the goals of the study before gathering data. For example, suppose a researcher wants to estimate the average monthly expenditure on bread by a family in Chicago. She wants to be 90% confident of her results. How much error is she willing to tolerate in the results? Suppose she wants the estimate to be within $1.00 of the actual figure (error) and the standard deviation of average monthly bread purchases is $4.00. What is the sample size estimation for this problem? The value of z for a 90% level of confidence is 1.645. Using formula (8.7) with E = $1.00, σ = $4.00, and z = 1.645 gives

That is, at least n = 43.3 must be sampled randomly to attain a 90% level of confidence and produce an error within $1.00 for a standard deviation of $4.00. Sampling 43.3 units is impossible, so this result should be rounded up to n = 44 units.

In this approach to estimating sample size, we view the error of the estimation as the amount of difference between the statistic (in this case, ) and the parameter (in this case, μ). The error could be in either direction; that is, the statistic could be over or under the parameter. Thus, the error, E, is actually ±E as we view it. So when a problem states that the researcher wants to be within $1.00 of the actual monthly family expenditure for bread, it means that the researcher is willing to allow a tolerance within ±$1.00 of the actual figure. Another name for this error is the bounds of the interval.

DEMONSTRATION PROBLEM 8.7

Suppose you want to estimate the average age of all Boeing 737-300 airplanes now in active domestic U.S. service. You want to be 95% confident, and you want your estimate to be within one year of the actual figure. The 737-300 was first placed in service about 24 years ago, but you believe that no active 737-300s in the U.S. domestic fleet are more than 20 years old. How large of a sample should you take?

Solution

Here, E = 1 year, the z value for 95% is 1.96, and σ is unknown, so it must be estimated by using σ ≈ (1/4) · (range). As the range of ages is 0 to 20 years, σ = (1/4)(20) = 5 Use formula (8.7).

Because you cannot sample 96.04 airplanes, the required sample size is 97. If you randomly sample 97 airplanes, you have an opportunity to estimate the average age of active 737-300s within one year and be 95% confident of the results.

Note: Sample-size estimates for the population mean where σ is unknown using the t distribution are not shown here. Because a sample size must be known to determine the table value of t, which in turn is used to estimate the sample size, this procedure usually involves an iterative process.

Determining Sample Size When Estimating p

Determining the sample size required to estimate the population proportion, p, also is possible. The process begins with the z formula for sample proportions.

TABLE 8.3  p · q for Various Selected Values of p

where q = 1 − p.

As various samples are taken from the population,  will rarely equal the population proportion, p, resulting in an error of estimation. The difference between  and p is the margin of error of estimation, so E =  − p.

Solving for n yields the formula for determining sample size.

How can the value of n be determined prior to a study if the formula requires the value of p and the study is being done to estimate p? Although the actual value of p is not known prior to the study, similar studies might have generated a good approximation for p. If no previous value is available for use in estimating p, some possible p values, as shown in Table 8.3, might be considered.

Note that, as p · q is in the numerator of the sample size formula, p = .5 will result in the largest sample sizes. Often if p is unknown, researchers use .5 as an estimate of p in Formula 8.8. This selection results in the largest sample size that could be determined from Formula 8.8 for a given z value and a given error value.

DEMONSTRATION PROBLEM 8.8

Hewitt Associates conducted a national survey to determine the extent to which employers are promoting health and fitness among their employees. One of the questions asked was, Does your company offer on-site exercise classes? Suppose it was estimated before the study that no more than 40% of the companies would answer Yes. How large a sample would Hewitt Associates have to take in estimating the population proportion to ensure a 98% confidence in the results and to be within .03 of the true population proportion?

Solution

The value of E for this problem is .03. Because it is estimated that no more than 40% of the companies would say Yes, p = .40 can be used. A 98% confidence interval results in a z value of 2.33. Inserting these values into formula (8.8) yields

Hewitt Associates would have to sample 1,448 companies to be 98% confident in the results and maintain an error of .03.

DEMONSTRATION PROBLEM 8.9

Suppose a researcher wants to estimate what proportion of refinery workers in the U.S. are contract workers. The researcher wants to be 99% confident of her results and be within .05 of the actual proportion. In addition, suppose that there have been no previous or similar studies to this, and therefore the researcher has no idea what is the actual population proportion. How large a sample size should be taken?

Solution

The value of E for this problem is .05. The value of z for a 99% confidence interval is 2.575. Because no estimate of the population proportion is available, the researcher will use p = .50 and q = .50. Placing these values into Formula 8.8:

The researcher would have to sample at least 664 workers to attain a 99% level of confidence and produce an error no bigger than .05 if the population proportion is approximately .50.

Document Analysis

Project teams often use document analysis to understand the as-is system. Under ideal circumstances, the project team that developed the existing system will have produced documentation, which was then updated by all subsequent projects. In this case, the project team can start by reviewing the documentation and examining the system itself.

Unfortunately, most systems are not well documented, because project teams fail to document their projects along the way, and when the projects are over, there is no time to go back and document. Therefore, there may not be much technical documentation about the current system available, or it may not contain updated information about recent system changes. However, there are many helpful documents that do exist in the organization: paper reports, memorandums, policy manuals, user training manuals, organization charts, and forms. Problem reports filed by the system users can be another rich source of information about issues with the existing system.

But these documents (forms, reports, policy manuals, organization charts) only tell part of the story. They represent the formal system that the organization uses. Quite often, the “real,” or informal system differs from the formal one, and these differences, particularly large ones, give strong indications of what needs to be changed. For example, forms or reports that are never used likely should be eliminated. Likewise, boxes or questions on forms that are never filled in (or are used for other purposes) should be rethought. See Figure 3-10 for an example of how a document can be interpreted.

The most powerful indication that the system needs to be changed is when users create their own forms or add additional information to existing ones. Such changes clearly demonstrate the need for improvements to existing systems. Thus, it is useful to review both blank and completed forms to identify these deviations. Likewise, when users access multiple reports to satisfy their information needs, it is a clear sign that new information or new information formats are needed.

Observation

Observation, the act of watching processes being performed, is a powerful tool to gain insight into the as-is system. Observation enables the analyst to see the reality of a situation, rather than listening to others describe it in interviews or JAD sessions.

FIGURE 3-10 Performing a Document Analysis

Several research studies have shown that many managers really do not remember how they work and how they allocate their time. (Quick, how many hours did you spend last week on each of your courses?) Observation is a good way to check the validity of information gathered from other sources such as interviews and questionnaires.

In many ways, the analyst becomes an anthropologist as he or she walks through the organization and observes the business system as it functions. The goal is to keep a low profile, to not interrupt those working, and to not influence those being observed. Nonetheless, it is important to understand that what analysts observe may not be the normal day-to-day routine because people tend to be extremely careful in their behavior when they are being watched.10Even though normal practice may be to break formal organizational rules, the observer is unlikely to see this. (Remember how you drove the last time a police car followed you?) Thus, what you see may not be what you really want.

CONCEPTS IN ACTION: 3-D PUBLIX CREDIT CARD FORMS

At my neighborhood Publix grocery store, the cashiers always handwrite the total amount of the charge on every credit card charge form, even though it is printed on the form. Why? Because the “back office” staff people who reconcile the cash in the cash drawers with the amount sold at the end of each shift find it hard to read the small print on the credit card forms. Writing in large print makes it easier for them to add the values up. However, cashiers sometimes make mistakes and write the wrong amount on the forms, which causes problems.

Barbara Wixom

QUESTIONS:

1. What does the credit card charge form indicate about the existing system?

2. How can you make improvements with a new system?

Observation is often used to supplement interview information. The location of a person's office and its furnishings gives clues as to their power and influence in the organization, and such clues can be used to support or refute information given in an interview. For example, an analyst might become skeptical of someone who claims to use the existing computer system extensively if the computer is never turned on while the analyst visits. In most cases, observation will support the information that users provide in interviews. When it does not, it is an important signal that extra care must be taken in analyzing the business system.

Selecting the Appropriate Techniques

Each of the requirements elicitation techniques just discussed has strengths and weaknesses. No one technique is always better than the others, and in practice most projects benefit from a combination of techniques. Thus, it is important to understand the strengths and weaknesses of each technique and when to use each. (See Figure 3-11.) One issue not discussed is that of the analysts' experience. In general, document analysis and observation require the least amount of training, while JAD sessions are the most challenging.

Type of Information The first characteristic is type of information. Some techniques are more suited for use at different stages of the analysis process, whether understanding the as-is system, identifying improvements, or developing the to-be system. Interviews and JAD are commonly used in all three stages. In contrast, document analysis and observation usually are most helpful for understanding the as-is system, although they occasionally provide information about improvements. Questionnaires are often used to gather information about the as-is system, as well as general information about improvements.

YOUR TURN: 3-5 OBSERVATION PRACTICE

Visit the library at your college or university and observe how the book check-out process occurs. First, watch several students checking books out, and then check one out yourself. Prepare a brief summary report of your observations.

When you return to class, share your observations with others. You may notice that not all the reports present the same information. Why? How would the information be different had you used the interview or JAD technique?

FIGURE 3-11 Comparison of Requirements Elicitation Techniques

Depth of Information The depth of information refers to how rich and detailed the information is that the technique usually produces and the extent to which the technique is useful at obtaining not only facts and opinions, but also an understanding of why those facts and opinions exist. Interviews and JAD sessions are very useful at providing a good depth of rich and detailed information and helping the analyst to understand the reasons behind them. At the other extreme, document analysis and observation are useful for obtaining facts, but little beyond that. Questionnaires can provide a medium depth of information, soliciting both facts and opinions with little understanding of why.

Breadth of Information Breadth of information refers to the range of information and information sources that can be easily collected by that technique. Questionnaires and document analysis both are easily capable of soliciting a wide range of information from a large number of information sources. In contrast, interviews and observation require the analyst to visit each information source individually and, therefore, take more time. JAD sessions are in the middle because many information sources are brought together at the same time.

Integration of Information One of the most challenging aspects of requirements gathering is the integration of information from different sources. Simply put, different people can provide conflicting information. Combining this information and attempting to resolve differences in opinions or facts is usually very time consuming because it means contacting each information source in turn, explaining the discrepancy, and attempting to refine the information. In many cases, the individual wrongly perceives that the analyst is challenging his or her information, when in fact the source of conflict is another user in the organization. This can make the user defensive and make it hard to resolve the differences.

All techniques suffer integration problems to some degree, but JAD sessions are designed to improve integration because all information is integrated when it is collected, not afterward. If two users provide conflicting information, the conflict becomes immediately obvious, as does the source of the conflict. The immediate integration of information is the single most important benefit of JAD that distinguishes it from other techniques, and this is why most organizations use JAD for important projects.

User Involvement User involvement refers to the amount of time and energy the intended users of the new system must devote to the analysis process. It is generally agreed that, as users become more involved in the analysis process, the chance of success increases. However, user involvement can have a significant cost, and not all users are willing to contribute valuable time and energy. Questionnaires, document analysis, and observation place the least burden on users, while JAD sessions require the greatest effort.

Cost Cost is always an important consideration. In general, questionnaires, document analysis, and observation are low-cost techniques (although observation can be quite time consuming). The low cost does not imply that they are more or less effective than the other techniques. We regard interviews and JAD sessions as having moderate costs. In general, JAD sessions are much more expensive initially, because they require many users to be absent from their offices for significant periods, and they often involve highly paid consultants. However, JAD sessions significantly reduce the time spent in information integration and thus cost less in the long term.

Requirements Analysis Strategies

The previous section discussed five essential techniques that analysts will use to interact with stakeholders in the system development project to elicit and define requirements. As we discussed earlier in the chapter, the analyst often must encourage the stakeholders to think critically about the needs for the new system and discover the true underlying requirements. In this section, we present several strategies that the analyst can employ with the stakeholders to accomplish this goal.

Problem Analysis

The most straightforward (and probably the most commonly used) requirements analysis strategy is problem analysis. Problem analysis means asking the users and managers to identify problems with the as-is system and to describe how to solve them in the to-be system. Most users have a very good idea of the changes they would like to see, and most will be quite vocal about suggesting them. Most changes tend to solve problems rather than capitalize on opportunities, but this is possible, too. Improvements from problem analysis tend to be small and incremental (e.g., add a field to store the customer's cell phone number; provide a new report that currently does not exist).

This type of improvement often is very effective at improving a system's efficiency or ease of use. However, it often provides only minor improvements in business value—the new system is better than the old, but it may be hard to identify significant monetary benefits from the new system.

Root Cause Analysis

The ideas produced by problem analysis tend to be solutions to problems. All solutions make assumptions about the nature of the problem, assumptions that may or may not be valid. In our experience, users (and most people in general) tend to jump quickly to solutions without fully considering the nature of the problem. Sometimes the solutions are appropriate, but many times they address a symptom of the problem, not the true problem or root cause itself.11

For example, suppose that the users report that “inventory stock-outs happen frequently.” Inventory stock-outs are not good, of course, and one obvious way to reduce their occurrence is to increase the quantity of items kept in stock. This action incurs costs, however, so it is worthwhile to investigate the underlying cause of the frequent stock-outs instead of jumping to a quick-fix solution. The solutions that users propose (or systems that analysts consider) may address either symptoms or causes, but without careful analysis, it is difficult to tell which one. Finding out later that you've just spent millions of dollars and have not fixed the true underlying problem is a horrible feeling!

Root cause analysis focuses on problems first rather than solutions. The analyst starts by having the users generate a list of problems with the current system, then prioritizes the problems in order of importance. Starting with the most important, the users and/or analysts generate all possible root causes for the problem. As shown in Figure 3-12, the problem of “too frequent stock-outs” has several potential root causes (inaccurate on-hand counts; incorrect reorder points; lag in placing supplier orders). Each possible root cause is investigated and additional root causes are identified. As Figure 3-12 shows, it is sometimes useful to display the potential root causes in a tree-like hierarchy. Ultimately, the investigation process reveals the true root cause or causes of the problem, enabling the team to design the system to correct the problem with the right solution. The key point in root cause analysis is to always challenge the obvious and dig into the problem deeply enough that the true underlying cause(s) is revealed.

FIGURE 3-12 Root Cause Analysis for Inventory Stock Outs

Duration Analysis

Duration analysis requires a detailed examination of the amount of time it takes to perform each process in the current as-is system. The analysts begin by determining the total amount of time it takes, on average, to perform a set of business processes for a typical input. They then time each of the individual steps (or sub-processes) in the business process. The time to complete the basic steps are then totaled and compared with the total for the overall process. A significant difference between the two—and, in our experiences, the total time often can be 10 or even 100 times longer than the sum of the parts—indicates that this part of the process is badly in need of a major overhaul.

CONCEPTS IN ACTION: 3-E SUCCESS FROM FAILURE

Few niches crashed more spectacularly during Web 1.0 than the pet sector. In 2000, over just nine months, Pets.com managed to raise a jaw-dropping $82.5 million in an IPO, air a $1.2 million Super Bowl ad starring its sock puppet mascot, land funding from Amazon.com build a network of cavernous warehouses … and go out of business without making a penny in profit. When Pets.com rolled over and died in November 2000, it presaged scores of dot-com disasters to follow and slammed the door on online pet businesses, seemingly for good.

So when San Francisco Web designer Ted Rheingold co-founded Dogster.com in January 2004 as a kind of canine version of Friendster, the news drew smirks from the few who bothered to notice. How could Dogster, a pet site cobbled together on weekends and launched on a shoestring budget, expect to succeed where lavishly funded pet sites had flamed out? The consensus on Dogster was unanimous: It would fail.

And indeed, it has failed. Over and over. But, alas, each knock has been a boost. Dogster has discovered ways to turn its mistakes into better features. With pretty much no promotion, Dogster (and sister site Catster.com) has evolved into a premier pet lover's social network. Membership exceeds 275,000; the site features 340,000 photos and profiles of dogs and cats, and a blue-chip advertising list that includes Disney, Holiday Inn, and Target. Dogster, come to find out, has a good profit sheet.

In many ways, the site is a prime example of how a Web deployment fails, but fails well by quick feature launch, seeing what works, and fixing things fast. According to Rheingold, “When we roll out a new feature, we know we're probably not going to get it right the first time.” Dogster and similar companies have discovered that continually reviewing user data —most importantly, the discouraging events—provides important direction for enhancements. Says Rheingold, “Instead of working on a feature for months trying to get it perfect, we'll work on something for two weeks and then spend two or three days listening to users and fine-tuning it.”

Source: “A Startup's Best Friend? Failure,” Tom McNichol, Business 2.0. San Francisco: March 2007, vol. 8, iss. 2, p. 39-41.

QUESTIONS:

1. Do you agree with Dogster's view, or should companies aim for “zero-defect” operations? Why or why not? What implications does this business model have for systems analysts?

2. Startup companies like Dogster are not the only companies that are implementing the “fail fast” strategy. Large companies like Google have used it and are still using it—in Google's case, with the implementation of the Google Toolbar. Cite another company that has used this strategy. Has it been successful?

For example, suppose that the analysts are working on a home mortgage system and discover that, on average, it takes 30 days for the bank to approve a mortgage. They then look at each of the basic steps in the process (e.g., data entry, credit check, title search, appraisal, etc.) and find that the total amount of time actually spent on each mortgage is about 8 hours. This is a strong indication that the overall process is badly broken, because it takes 30 days to perform 1 day's work.

These problems likely occur because the process is badly fragmented. Many different people must perform different activities before the process is complete. In the mortgage example, the application probably sits on many peoples' desks for long periods of time before it is processed. Processes in which many different people work on small parts of the inputs are prime candidates for process integration or parallelization. Process integration means changing the fundamental process so that fewer people work on the input, which often requires changing the processes and retraining staff to perform a wider range of duties. Process parallelization means changing the process so that all the individual steps are performed at the same time. For example in the mortgage application example, there is probably no reason that the credit check cannot be performed at the same time as the appraisal and title check.

Activity-Based Costing

Activity-based costing is a similar analysis that examines the cost of each major process or step in a business process rather than the time taken. The analysts identify the costs associated with each of the basic functional steps or processes, identify the most costly processes, and focus their improvement efforts on them.

Assigning costs is conceptually simple. You just examine the direct cost of labor and materials for each input. Materials costs are easily assigned in a manufacturing process, while labor costs are usually calculated on the basis of the amount of time spent on the input and the hourly cost of the staff. However, as you may recall from a managerial accounting course, there are indirect costs such as rent, depreciation, and so on that also can be included in activity costs.

Informal Benchmarking

Benchmarking refers to studying how other organizations perform a business process in order to learn how your organization can do something better. Benchmarking helps the organization by introducing ideas that employees may never have considered, but that have the potential to add value.

Informal benchmarking is fairly common for “customer-facing” business processes (i.e., those processes that interact with the customer). With informal benchmarking, the managers and analysts think about other organizations, or visit them as customers to watch how the business process is performed. In many cases, the business studied may be a known leader in the industry or simply a related firm. For example, suppose that the team is developing a Web site for a car dealer. The project sponsor, key managers, and key team members would likely visit the Web sites of competitors, those of others in the car industry (e.g., manufacturers, accessories suppliers), and those of other industries that have won awards for their Web sites.

CONCEPTS IN ACTION: 3-F A PROCESS IN NEED OF IMPROVEMENT

A group of executives from a Fortune 500 company used duration analysis to discuss their procurement process. Using a huge wall of Velcro and a handful of placards, a facilitator proceeded to map out the company's process for procuring a $50 software upgrade. Having quantified the time it took to complete each step, she then assigned costs based on the salaries of the employees involved. The 15-minute exercise left the group stunned. Their procurement process had gotten so convoluted that it took 18 days, countless hours of paperwork and nearly $22,000 in people time to get the product ordered, received, and up and running on the requester's desktop.

Source: “For Good Measure,” CIO Magazine, March 1, 1999, by Debby Young.

Outcome Analysis

Outcome analysis focuses on understanding the fundamental outcomes that provide value to customers. While these outcomes sound as though they should be obvious, they often aren't. For example, suppose that you are an insurance company and one of your customers has just had a car accident. What is the fundamental outcome from the customer s perspective? Traditionally, insurance companies have answered this question by assuming that the customer wants to receive the insurance payment quickly. To the customer, however, the payment is only a means to the real outcome: a repaired car. The insurance company might benefit by extending its view of the business process past its traditional boundaries to include, not simply paying for repairs, but performing the repairs or contracting with an authorized body shop to do them.

With this approach, the system analysts encourage the managers and project sponsor to pretend that they are customers and to think carefully about what the organization's products and services enable the customers to do—and what they could enable the customer to do.

Technology Analysis

Many major changes in business over the past decade have been enabled by new technologies. Technology analysis therefore starts by having the analysts and managers develop a list of important and interesting technologies. Then the group systematically identifies how each and every technology could be applied to the business process and identifies how the business would benefit.

For example, one useful technology might be the Internet. A manufacturer could develop an extranet application for its suppliers. Rather than ordering parts for its products, the manufacturer makes its production schedule available electronically to its suppliers, who ship the needed parts so that they arrive at the plant just in time. This saves significant costs because it eliminates the need for people to monitor the production schedule and issue purchase orders.

CONCEPTS IN ACTION: 3-G “LIKE” YOUR LOCAL GOVERNMENT

Municipal, city, and county governments are seriously affected by the recent economic downturn and resulting budgetary pressure. Fewer employees mean it is harder to provide services in the same old way to citizens. Forward-thinking managers of governmental entities recognize that social media may be the wave of the future. Social media can allow citizens to be a part of the government services, not just a recipient of government services. Citizens can report issues such as potholes in roads or abandoned vehicles when they see them and government services can repair them while out in the field. Citizens are part of the process and get immediate satisfaction by helping to solve problems.

YOUR TURN: 3-6 IBM CREDIT

IBM Credit was a wholly owned subsidiary of IBM responsible for financing mainframe computers sold by IBM. While some customers bought mainframes outright or obtained financing from other sources, financing computers provided significant additional profit.

When an IBM sales representative made a sale, he or she would immediately call IBM Credit to obtain a financing quote. The call was received by a credit officer who would record the information on a request form. The form would then be sent to the credit department to check the customer's credit status. This information would be recorded on the form, which was then sent to the business practices department, which would write a contract (sometimes reflecting changes requested by the customer). The form and the contract would then go to the pricing department, which used the credit information to establish an interest rate and record it on the form. The form and contract was then sent to the clerical group, where an administrator would prepare a cover letter quoting the interest rate and send the letter and contract via Federal Express to the customer.

The problem at IBM Credit was a major one. Getting a financing quote took anywhere from four to eight days (six days, on average), giving the customer time to rethink the order or find financing elsewhere. While the quote was being prepared, sales representatives would often call to find out where the quote was in the process, so that they could tell the customer when to expect it. However, no one at IBM Credit could answer the question, because the paper forms could be in any department and it was impossible to locate one without physically walking through the departments and going through the piles of forms on everyone's desk.

IBM Credit examined the process and changed it so that each credit request was logged into a computer system so that each department could record an application's status as soon as it was completed and sent it to the next department. In this way, sales representatives could call the credit office and quickly learn the status of each application. IBM used some sophisticated management science queuing theory analysis to balance workloads and staff across the different departments so that no applications would be overloaded. They also introduced performance standards for each department (e.g., the pricing decision had to be completed within one day after that department received an application).

However, process times got worse, even though each department was achieving almost 100 percent compliance on its performance goals. After some investigation, managers found that when people got busy, they conveniently found errors that forced them to return the credit request to the previous department for correction, thereby removing it from their time measurements.

QUESTIONS:

What techniques can you use to identify improvements? Choose one technique and apply it to this situation — what improvements did you identify?

Source: Reengineering the Corporation, New York: Harper Business, 1993, by M. Hammer and J. Champy.

Activity Elimination

Activity elimination is exactly what it sounds like. The analysts and managers work together to identify how the organization could eliminate each and every activity in the business process, how the function could operate without it, and what effects are likely to occur. Initially, managers are reluctant to conclude that processes can be eliminated, but this is a “force-fit” exercise in that they must eliminate each activity. In some cases the results are silly; nonetheless, participants must address each and every activity in the business process.

For example, in the home mortgage approval process discussed earlier, the managers and analysts would start by eliminating the first activity, entering the data into the mortgage company's computer. This leads to one of two obvious possibilities: (1) Eliminate the use of a computer system or (2) make someone else do the data entry (e.g., the customer, over the Web). They would then eliminate the next activity, the credit check. Silly, right? After all, making sure the applicant has good credit is critical in issuing a loan, isn't it? Not really. The real answer depends upon how many times the credit check identifies bad applications. If all or almost all applicants have good credit and are seldom turned down by a credit check, then the cost of the credit check may not be worth the benefit of the few bad loans it prevents. Eliminating it may actually result in lower costs, even with the cost of bad loans, unless the number of applicants with poor credit greatly increases.

Comparing Analysis Strategies

Each of the requirements analysis strategies discussed here has its own purpose. No one technique is inherently better than the others. Remember that an organization will likely have a wide range of projects in its portfolio; the requirements analysis strategy should be chosen to fit the nature of the project. Problem analysis and root cause analysis tend to be most useful in situations with a narrow focus where efficiency gains are sought. Duration analysis and activity-based costing strategies help the team find the most “broken” business processes so that those processes can be redesigned and improved. Outcome analysis, technology analysis, and informal benchmarking help the team think “outside the box” and are very useful when the team is trying to create completely new ways of accomplishing the business processes.

Reference

Dennis, Alan; Wixom, B.H., and Roth, R. Systems Analysis and Design, 5th Edition.

ASSIGNMENT RESOURCES 8.docx

W2.Safari.References

Ctrl+Click the following links to go to their place in this document

· Project Identification & Initiation & Build a System Request
· Feasibility Analysis (Go to the section “Feasibility Analysis”)
· Project Selection
· Creating the Project Plan
· The Function Point Approach
· Staffing the Project
· Managing and Controlling the Project
· System Acquisition Strategies
· Influences on the Acquisition Strategy
· Selecting an Acquisition Strategy
· The Gantt Chart and PERT Chart
· Template of System Proposal (Go to FIGURE 3-14 Outline of the Tune Source System Proposal)
· Another Template of System Proposal (Go to FIGURE 3-16 System Proposal Template)

Project Identification & Initiation & Build a System Request

Where do project ideas come from? A project is identified when someone in the organization identifies a business need to build a system. Examples of business needs include supporting a new marketing campaign, reaching out to a new type of customer, or improving interactions with suppliers. Sometimes, needs arise from some kind of “pain” within the organization, such as a drop in market share, poor customer service levels, unacceptable product defect rates, or increased competition. New business initiatives and strategies may be created and a system to support them is required, or a merger or acquisition may require systems to be integrated.

Business needs also can surface when the organization identifies unique and competitive ways of using IT. Many organizations keep an eye on emerging technology, which is technology that is still being developed and not yet viable for widespread business use. For example, if companies stay abreast of technological advances such as cloud computing, RFID (radio frequency identification), or Web 2.0, they can develop business strategies that leverage the capabilities of these technologies and introduce them into the marketplace as a first mover. Ideally, companies can take advantage of this first mover position by making money and continuing to innovate while competitors trail behind.

Today, many new information system projects grow out of business process management (BPM) initiatives. BPM is a methodology used by organizations to continuously improve end-to-end business processes. Business process management can be applied to internal organizational processes and to processes spanning multiple business partners. By studying and improving their underlying business processes, organizations can achieve several important benefits, including:

· enhanced process agility, giving the organization the ability to adapt more rapidly and effectively to a changing business environment;

· improved process alignment with industry “best practices” and

· increased process efficiencies as costs are identified and eliminated from process workflows.

BPM generally follows a continuous cycle of systematically creating, assessing, and altering business processes. Business analysts, with their in-depth business knowledge, playa particularly important role in business process management by:

1. defining and mapping the steps in a business process,

2. creating ways to improve on steps in the process that add value,

3. finding ways to eliminate or consolidate steps in the process that don't add value,

4. creating or adjusting electronic workflows to match the improved process maps.

The last step is particularly relevant to our discussion since the need for information systems projects is frequently identified here. In fact, the automation of business processes (termed Business Process Automation), is the foundation of many information technology systems. In these situations, technology components are used to complement or substitute for manual information management processes with the intent of gaining cost efficiencies.

BPM practitioners recognize, however, that it is not always advisable to just “pave the cow paths” by simply adding automation to speed up existing processes (step 4above). In many situations, Business Process Improvement results from studying the business processes, creating new, redesigned processes to improve the process workflows, and/or utilizing new technologies enabling new process structures (steps 2, 3, and 4 above). For example, could a retail store's checkout process be redesigned along the lines of the EZPass toll collection system on highways? Could customers check out and pay with their mobile devices while clerks simply review the contents of the customer's shopping bag?

Projects with a goal of business process improvement make moderate changes to the organization's operations, and can improve efficiency (i.e., doing things right) and improve effectiveness (i.e., doing the right things). These types of projects involve more risk than business process automation projects since more significant changes are made to the organization's operations.

Business Process Management may also reveal the need for the complete revamping of the organization's business processes, termed Business Process Reengineering (BPR). BPR means changing the fundamental way in which the organization operates—“obliterating” the current way of doing business and making major changes to take advantage of new ideas and new technology. As you might expect, BPR projects involve substantial risk due to the significant organizational and operational changes that result. Top management support and careful management are critical in these fairly rare types of projects.

CONCEPTS IN ACTION: 1-B SUCCESS FROM FAILURE … EVENTUALLY

A project to streamline the work of the Commonwealth of Massachusetts Senate and House of Representatives ended in failure. Ed Bell, veteran CIO from the financial services industry, was hired as a consultant to assess the failed project and advise how to proceed.

After studying the situation, Bell recommended stepping back and re-thinking the entire situation. Bell embarked on a project that would create a platform for the future and integrate all the workflow processes of the Massachusetts Senate and House. Having just experienced a project failure, legislative leaders and their staffs were more open-minded to the changes Bell proposed. Bell emphasized educating the senior leadership team on what IT does, what a software development life cycle is, what the roles of a project involve, and stressed that “we are in this together, or we fail together.” In addition, it was a time of relative political harmony—both the House and Senate got along.

Via an intranet, the new system provides workflow alerts and to-do lists, so legislators know what is required of them as bills pass through the legislative process. There is also a completely revamped public website that will enable the public to stay informed of legislative action nearly real time.

Bell recognized that the legislative process is built on relationships and connections. His vision for the system was not to try and change the way the legislative process works, but to complement it.

Linda Tucci, “Business process automation for the business' sake.” SearchCIO.com, Sept.30, 2010.

Both IT people (i.e., the information systems experts) and business people (i.e., the subject matter experts) should work closely together to find ways for technology to support business needs. In this way, organizations can leverage the exciting technologies available while ensuring that projects are based upon real business objectives such as increasing sales, improving customer service, and decreasing operating expenses. Ultimately, information systems need to affect the organization's bottom line (in a positive way!).

When a strong business need for an information system is recognized, often as a result of BPM, a person (or group) who has an interest in the system's success typically steps forward. We call this person (or group) the project sponsor. Often, the project sponsor develops the initial vision of the new system. The project sponsor works throughout the SDLC to make sure that the project is moving in the right direction from the perspective of the business and serves as the primary point of contact for the project team. Usually, the sponsor of the project is from a business function such as marketing, accounting, or finance; however, members of the IT area also can sponsor or cosponsor a project.

The size or scope of the project often determines the kind of sponsor who is involved. A small, departmental system might be sponsored by a single manager; however, a large, organizational initiative might be sponsored by the entire senior management team and even the CEO. If a project is primarily technical in nature (e.g., improvements to the existing IT infrastructure or research into the viability of an emerging technology), then sponsorship from IT is appropriate. When projects have great importance to the business, yet are technically complex, joint sponsorship by both the business and IT functions may be necessary.

YOUR TURN: 1-2 IMPLEMENTING A SATELLITE DATA NETWORK

A major retail store recently spent $24 million dollars on a large private satellite communication system that provides state-of-the-art voice, data, and video transmission between stores and regional headquarters. When an item gets sold, the scanner software updates the inventory system in real time. As a result, store transactions are passed on to regional and national headquarters instantly, which keeps inventory records up to date. One of the store's major competitors has an older system in which transactions are uploaded at the end of a business day. The first company feels that its method of instant communication and feedback allows it to react more quickly to changes in the market, giving the company a competitive advantage. For example, if an early winter snowstorm causes stores across the upper Midwest to start selling high-end (and high-profit) snow throwers quite quickly, the company's nearest warehouse can prepare next-day shipments to maintain a good inventory balance, while the competitor may not move quite as quickly and thus lose out on such quick inventory turnover.

QUESTIONS:

1. Do you think a $24 million investment in a private satellite communication system could be justified by a cost-benefit analysis? Could this be done with a standard communication line (with encryption)?

2. How might the competitor attempt to close the “information gap” in this example?

The business need drives the high-level business requirements for the system. Business requirements describe the reasons for developing the system and outline the benefits it will provide the organization. These requirements need to be explained at a high level so that the approval committee and, ultimately, the project team understand what the business expects from the final product. Business requirements summarize the features and capabilities the information system will have to include, such as the ability to collect customer orders online or the ability for suppliers to receive inventory information as orders are placed and sales are made.

The project sponsor has the insights needed to determine the business value that will be gained from the system, in both tangible and intangible ways. Tangible value can be quantified and measured easily (e.g., 2% reduction in operating costs). An intangible value results from an intuitive belief that the system provides important, but hard-to-measure, benefits to the organization (e.g., improved customer service, a better competitive position).

Once the project sponsor identifies a project that meets an important business need and he or she can identify the business requirements and business value of the system, it is time to formally initiate the project. In most organizations, project initiation begins by preparing a system request.

System Request

A system request is a document that describes the business reasons for building a system and the value that the system is expected to provide. The project sponsor usually completes this form as part of a formal system project selection process within the organization. Most system requests include five elements: project sponsor, business need, business requirements, business value, and special issues. (See Figure 1-4.) The sponsor describes the person who will serve as the primary contact for the project, and the business need presents the reasons prompting the project. The business requirements of the project refer to the business capabilities that the system will need to have, and the business value describes the benefits that the organization should expect from the system. Special issues are included on the document as a catchall category for other information that should be considered in assessing the project. For example, the project may need to be completed by a specific deadline. Project teams need to be aware of any special circumstances that could affect the outcome of the system.

FIGURE 1-4 Elements of the System Request Form

CONCEPTS IN ACTION: 1-C INTERVIEW WITH DON HALLACY, PRESIDENT, TECHNOLOGY SERVICES, SPRINT CORPORATION

At Sprint, network projects originate from two vantage points–IT and the business units. IT projects usually address infrastructure and support needs. The business-unit projects typically begin after a business need is identified locally, and a business group informally collaborates with IT regarding how a solution can be delivered to meet customer expectations.

Once an idea is developed, a more formal request process begins, and an analysis team is assigned to investigate and validate the opportunity. This team includes members from the user community and IT, and they scope out at a high level what the project will do; create estimates for technology, training, and development costs; and create a business case. This business case contains the economic value added and the net present value of the project.

Of course, not all projects undergo this rigorous process. The larger projects require more time to be allocated to the analysis team. It is important to remain flexible and not let the process consume the organization. At the beginning of each budgetary year, specific capital expenditures are allocated for operational improvements and maintenance. Moreover, this money is set a side to fund quick projects that deliver immediate value without going through the traditional approval process.

Don-Hallacy

The completed system request is submitted to the approval committee for consideration. This approval committee could be a company steering committee that meets regularly to make information systems decisions, a senior executive who has control of organizational resources, or any other decision-making body that governs the use of business resources. The committee reviews the system request and makes an initial determination, based on the information provided, of whether to investigate the proposed project or not. If so, the next step is to conduct a feasibility analysis.

Applying the Concepts at Tune Source

Throughout the book, we will apply the concepts in each chapter to a fictitious company called Tune Source. For example, in this section, we will illustrate the creation of a system request. Tune Source is a company headquartered in southern California. Tune Source is the brainchild of three entrepreneurs with ties to the music industry: John Margolis, Megan Taylor, and Phil Cooper. Originally, John and Phil partnered to open a number of brick and mortar stores in southern California specializing in hard-to-find and classic jazz, rock, country, and folk recordings. Megan soon was invited to join the partnership because of her contacts and knowledge of classical music. Tune Source quickly became known as the place to go to find rare audio recordings. Annual sales last year were $40 million with annual growth at about 3%-5% per year.

YOUR TURN: 1-3 TOO MUCH PAPER, PART 1

The South Dakota Department of Labor, Workers' Compensation division was sinking under a load of paper files. As a state agency which ascertains that employees are treated fairly when they are injured on the job, the agency had a plethora of paper files and filing cabinets. If a person (or company) called to see the status of an injury claim, the clerk who received the call would have to take a message, get the paper file, review the status, and call the person back. Files were stored in huge filing cabinets and were entered by year and case number (for example, the 415th person injured in 2008 would be in a file numbered 08-415). But most callers did not remember the file number and would give their name and address and the date of injury. The clerk would look in a spiral notebook for the last name around the date that was given–and then find the file number to retrieve the folder. Some folders were small–possibly documenting a minor cut or minor injury, and the employee was back to work after a brief treatment period. Other folders could be very large, with numerous medical reports from several doctors verifying the extent of a serious injury and treatment (such as an arm amputation). A digital solution was suggested –reports could be submitted online via a secure website. Medical reports could be submitted electronically, either as a pdf file or as a faxed digital file. This solution would also mean that the clerk taking the phone call could query the database by the person's name and access the information in a matter of seconds.

QUESTION:

Prepare a systems request for this project. Fill in as much as you can on the basis of the information provided.

Background John, Megan, and Phil, like many others in the music industry, watched with alarm the rise of music-sharing websites like Napster, as music consumers shared digital audio files without paying for them, denying artists and record labels royalties associated with sales. Once the legal battle over copyright infringement was resolved and Napster was shut down, the partners set about establishing agreements with a variety of industry partners in order to offer a legitimate digital music download resource for customers in their market niche. Phil has asked Carly Edwards, a rising star in the Tune Source marketing department, to spearhead the digital music download project.

Tune Source currently has a website that enables customers to search for and purchase CDs. This site was initially developed by an Internet consulting firm and is hosted by a prominent local Internet Service Provider (ISP) in Los Angeles. The IT department at Tune Source has become experienced with Internet technology as it has worked with the ISP to maintain the site.

System Request At Tune Source, new IT projects are reviewed and approved by a project steering committee that meets quarterly. The committee has representatives from IT as well as from the major areas of the business. Carly's first step was to prepare a system request for the committee.

Figure 1-5 shows the system request she prepared. The project sponsor is Carly, and the business needs are to increase sales and provide a music download capability demanded by a very competitive marketplace. Notice that the need does not focus on the technology associated with the project. The emphasis is on the business aspects: increasing sales and maintaining a competitive position in the company's market.

In the system request, the project sponsor focuses on describing his or her vision of the business requirements at a very high level. Carly has expressed a clear vision of how this system will affect Tune Source: sales of individual music downloads, revenue from customer subscriptions, sales from cross-selling of CDs, and sales of music download gift cards. Carly acknowledges customer demand for this capability and also recognizes the need to respond to this demand in order to retain the business of its loyal customer base.

The estimates of tangible value were difficult to develop, since this venture is completely new to Tune Source. To prepare for this, Carly had several of her staff members conduct both an in-store customer survey and an online customer survey to assess the customers' interest in individual music downloads, subscription programs, and gift cards. The surveys also attempted to gauge the customers' price sensitivity for these offerings.

From the survey results, Carly and her staff developed a range of sales projections for the various revenue streams: a high-level estimate, a medium-level estimate, and low-level estimate. They also developed probability assessments for each of these outcomes, settling on a25% likelihood for the high-level estimate, a 60% likelihood for the medium-level estimate, and a 15% likelihood for the low-level estimate. Based on the sales projections and the probability estimates, a weighted average estimated sales figure was computed for each revenue stream.

FIGURE 1-5 System Request for Tune Source

YOUR TURN: 1-4 CREATE A SYSTEM REQUEST

Think about your own university or college and choose an idea that could improve student satisfaction with the course enrollment process. Currently, can students enroll for classes from anywhere? How long does it take? Are directions simple to follow? Is online help available?

Next, think about how technology can help support your idea. Would you need completely new technology? Can the current system be changed?

QUESTION:

Create a system request that you could give to the administration that explains the sponsor, business need, business requirements, and potential value of the project. Include any constraints or issues that should be considered.

FIGURE 1-6 Sales Projections for Tune Source Digital Music Download Project

For example, for individual downloads,

These projections are summarized in Figure 1-6.

After analyzing the survey results, Carly and her staff were confident that the sales projections and probability estimates were as accurate as they could make them this early in the project. The completed system request is shown in Figure 1-5.

Steering Committee Approval Carly Edwards presented the system request for the digital music download project to the Tune Source project steering committee at its next meeting. Response to the request was uniformly positive. The strong interest in the project by John, Megan, and Phil, the company's top executives, helped to spur the committee's rapid approval of the project. Following approval of the system request, Jason Wells, a senior systems analyst in the IT department, was assigned to work with Carly to develop a preliminary feasibility analysis for the project.

Feasibility Analysis

Once the need for the system and its business requirements have been defined, the approval committee may authorize the systems analyst to prepare a more detailed business case to better understand the proposed information system project. Feasibility analysis guides the organization in determining whether to proceed with the project. Feasibility analysis also identifies the important risks associated with the project that must be managed if the project is approved. As with the system request, each organization has its own process and format for the feasibility analysis, but most include techniques to assess three areas: technical feasibility, economic feasibility, and organizational feasibility (see Figure 1-7). The results of evaluating these three feasibility factors are combined into a feasibility study deliverable that is submitted to the approval committee at the end of project initiation.

You might wonder at the omission of the element of time as a risk factor for the project. While the time available for a project can certainly be a concern, we consider time to be a project management issue. We will discuss project management strategies that can be used when time is tight in Chapter 2.

FIGURE 1-7 Feasibility Analysis Assessment Factors

Although we will discuss feasibility analysis now with in the context of project initiation, most project teams will revise their feasibility study throughout the SDLC and revisit its contents at various check points during the project. If at any point the project's risks and limitations outweigh its benefits, the project team may decide to cancel the project or make substantial revisions.

Technical Feasibility

The first technique in the feasibility analysis is to assess the technical feasibility of the project, the extent to which the system can be successfully designed, developed, and installed by the IT group. Technical feasibility analysis is, in essence, a technical risk analysis that strives to answer the question: “Can we build it?”7

Many risks can endanger the successful completion of the project. First and foremost is the users' and analysts' familiarity with the application. When analysts are unfamiliar with the business application area, they have a greater chance of misunderstanding the users or missing opportunities for improvement. The risks increase dramatically when the users themselves are less familiar with an application, such as with the development of a system to support a new business innovation (e.g., Microsoft starting up a new Internet dating service). In general, the development of new systems is riskier than extensions to an existing system, because existing systems tend to be better understood.

Familiarity with the technology is another important source of technical risk. When a system will use technology that has not been used before within the organization, there is a greater chance that problems and delays will occur because of the need to learn how to use the technology. Risk increases dramatically when the technology itself is new (e.g., web development using Ajax).

Project size is an important consideration, whether measured as the number of people on the development team, the length of time it will take to complete the project, or the number of distinct features in the system. Larger projects present more risk, because they are more complicated to manage and because there is a greater chance that some important system requirements will be overlooked or misunderstood. The extent to which the project is highly integrated with other systems (which is typical of large systems) can cause problems, because complexity is increased when many systems must work together.

Finally, project teams need to consider the compatibility of the new system with the technology that already exists in the organization. Systems rarely are built in a vacuum—they are built in organizations that have numerous systems already in place. New technology and applications need to be able to integrate with the existing environment for many reasons. They may rely on data from existing systems, they may produce data that feed other applications, and they may have to use the company's existing communications infrastructure. A new CRM system, for example, has little value if it does not use customer data found across the organization in existing sales systems, marketing applications, and customer service systems.

The assessment of a project's technical feasibility is not cut and dried, because in many cases, some interpretation of the underlying conditions is needed (e.g., how large does a project need to grow before it becomes less feasible?). One approach is to compare the project under consideration with prior projects undertaken by the organization. Another option is to consult with experienced IT professionals in the organization or with external IT consultants; of ten, they will be able to judge whether a project is feasible from a technical perspective.

Economic Feasibility

The second element of a feasibility analysis is to perform an economic feasibility analysis (also called a cost-benefit analysis). This attempts to answer the question “Should we build the system?” Economic feasibility is determined by identifying costs and benefits associated with the system, assigning values to them, calculating future cash flows, and measuring the financial worthiness of the project. As a result of this analysis, the financial opportunities and risks of the project can be understood. Keep in mind that organizations have limited capital resources and multiple projects will be competing for funding. The more expensive the project, the more rigorous and detailed the analysis should be. Before illustrating this process with a detailed example, we first introduce the framework we will apply to evaluate project investments and the common assessment measures that are used.

Cash Flow Analysis and Measures IT projects commonly involve an initial investment that produces a stream of benefits over time, along with some ongoing support costs. Therefore, the value of the project must be measured over time. Cash flows, both inflows and outflows, are estimated over some future period. Then, these cash flows are evaluated using several techniques to judge whether the projected benefits justify incurring the costs.

A very basic cash flow projection is shown in Figure 1-8 to demonstrate these evaluation techniques. In this simple example, a system is developed in Year 0 (the current year) costing $100,000. Once the system is operational, benefits and ongoing costs are projected over three years. In row 3 of this figure, net benefits are computed by subtracting each year's total costs from its total benefits. Finally, in row 4, we have computed a cumulative total of the net cash flows.

FIGURE 1-8 Simple Cash Flow Projection

Two of the common methods for evaluating a project's worth can now be determined. Each of these calculations will be explained here:

Return on Investment The return on investment (ROI) is a calculation that measures the average rate of return earned on the money invested in the project. ROI is a simple calculation that divides the project's net benefits (total benefits – total costs)by the total costs. The ROI formula is:

A high ROI suggests that the project's benefits far outweigh the project's cost, although exactly what constitutes a “high” ROI is unclear. ROI is commonly used in practice; however, it is hard to interpret and should not be used as the only measure of a project's worth.

Break-Even Point Another common approach to measuring a project's worth is the break-even point. The break-even point (also called the payback method) is defined as the number of years it takes a firm to recover its original investment in the project from net cash flows. As shown in row 4 of Figure 1-8, the project's cumulative cash flow figure becomes positive during Year 3, so the initial investment is “paidback” over two years plus some fraction of the third year.

(In the year in which Cumulative Cash Flow turns positive):

Using the values in Figure 1-8, the BEP calculation is:

The break-even point is intuitively easy to understand and does give an indication of a project's liquidity, or the speed at which the project generates cash returns. Also, projects that produce higher returns early in the project's life are thought to be less risky, since we can anticipate near-term events with more accuracy than we can long-term events. The break-even point ignores cash flows that occur after the break-even point has been reached; therefore, it is biased against longer-term projects.

Discounted Cash Flow Technique The simple cash flow projection shown in Figure 1-8, and the return on investment and break-even point calculations all share the weakness of not recognizing the time value of money. In these analyses, the timing of cash flows is ignored. A dollar in Year 3 of the project is considered to be exactly equivalent to a dollar received in Year 1.

Discounted cash flows are used to compare the present value of all cash inflows and outflows for the project in today's dollar terms. The key to understanding present values is to recognize that if you had a dollar today, you could invest it and receive some rate of return on your investment. Therefore, a dollar received in the future is worth less than a dollar received today, since you for go that potential return. If you have a friend who owes you $100 today, but instead gives you that $100 in three years—you've been had! Assuming you could have invested that dollar at a 10% rate of return, you'll be receiving the equivalent of $75 in today's terms.

The basic formula to convert a future cash flow to its present value is:

The rate of return used in the present value calculation is sometimes called the required rate of return, or the cost of obtaining the capital needed to fund the project. Many organizations will have determined the appropriate rate of return to use when analyzing IT investments. The systems analyst should consult with the organization's finance department.

Using our previous illustration, $100 received in 3 years with a required rate of return of 10% has a PV of $75.13.

In Figure 1-9, the present value of the projected benefits and costs shown in Figure 1-8 have been calculated using a 10% required rate of return.

FIGURE 1-9 Discounted Cash Flow Projection

FIGURE 1-10 Steps to Conduct an Economic Feasibility Analysis

Net Present Value (NPV) The NPV is simply the difference between the total present value of the benefits and the total present value of the costs.

As long as the NPV is greater than zero, the project is considered economically acceptable. Unfortunately for this project, the NPV is less than zero, indicating that for a required rate of return of 10%, this project should not be accepted. The required rate of return would have to be something less than 6.65% before this project returns a positive NPV. This example illustrates the fact that sometimes the “naive” techniques of ROI and BEP find that the project appears acceptable, but the more rigorous and financially correct NPV technique finds the project is actually unacceptable.

Figure 1-10 reviews the steps involved in performing an economic feasibility analysis. Each step will be illustrated by an example in the upcoming sections.

Identify Costs and Benefits The systems analyst's first task when developing an economic feasibility analysis is to identify the kinds of costs and benefits the system will have and list them along the left-hand column of a spreadsheet. Figure 1-11lists examples of costs and benefits that may be included. The costs and benefits can be broken down into four categories: (1) development costs, (2) operational costs, (3) tangible benefits, and (4) intangibles. Development costs are those tangible expenses that are incurred during the creation of the system, such as salaries for the project team, hardware and software expenses, consultant fees, training, and office space and equipment. Development costs are usually thought of as one-time costs. Operational costs are those tangible costs that are required to operate the system, such as the salaries for operations staff, software licensing fees, equipment upgrades, and communications charges. Operational costs are usually thought of as ongoing costs.

FIGURE 1-11 Example of Costs and Benefits for Economic Feasibility

Tangible benefits include revenue that the system enables the organization to collect, such as increased sales. In addition, the system may enable the organization to avoid certain costs, leading to another type of tangible benefit: cost savings. For example, if the system produces a reduction in needed staff, lower salary costs result. Similarly, a reduction in required inventory levels due to the new system produces lower inventory costs. In these examples, the reduction in costs is a tangible benefit of the new system.

Of course, a project also can affect the organization's bottom line by reaping intangible benefits or incurring intangible costs. Intangible costs and benefits are more difficult to incorporate into the economic feasibility analysis because they are based on intuition and belief rather than on “hard numbers.” Nonetheless, they should be listed in the spreadsheet along with the tangible items.

Assign Values to Costs and Benefits Once the types of costs and benefits have been identified, the analyst needs to assign specific dollar values to them. This may seem impossible—How can someone quantify costs and benefits that haven't happened yet? And how can those predictions be realistic? Although this task is very difficult, you have to do the best you can to come up with reasonable numbers for all of the costs and benefits. Only then can the approval committee make an informed decision about whether or not to move ahead with the project.

The most effective strategy for estimating costs and benefits is to rely on the people who have the best understanding of them. For example, costs and benefits that are related to the technology or the project itself can be provided by the company's IT group or external consultants, and business users can develop the numbers associated with the business (e.g., sales projections, order levels). The company also can consider past projects, industry reports, and vendor information, although these sources probably will be a bit less accurate. Likely, all of the estimates will be revised as the project proceeds.

If predicting a specific value for a cost or benefit is proving difficult, it may be useful to estimate a range of values for the cost or benefit and then assign a likelihood (probability) estimate to each value. With this information, an expected value for the cost or benefit can be calculated. Recall the calculations shown in Figure 1-6 in which the Tune Source marketing staff developed expected values for projected sales. As more information is learned during the project, the value estimates and the probability estimates can be revised, resulting in a revised expected value for the cost or benefit.

What about the intangible benefits and costs? Sometimes, it is acceptable to list intangible benefits, such as improved customer service, without assigning a dollar value. Other times, estimates have to be made regarding how much an intangible benefit is “worth.” We suggest that you quantify intangible costs or benefits if at all possible. If you do not, how will you know if they have been realized? Suppose that a system claims to improve customer service. This benefit is intangible, but let's assume that the improvement in customer service will decrease the number of customer complaints by 10% each year over three years and that $200,000 is currently spent on phone charges and phone operators who handle complaint calls. Suddenly, we have some very tangible numbers with which to set goals and measure the originally intangible benefit.

A detailed cost-benefit analysis is shown in Figure 1-12. In this example, benefits accrue because the project is expected to increase sales, reduce customer complaint calls, and lower inventory costs. For simplicity, all development costs are assumed to occur in the current year 2012, and all benefits and operational costs are assumed to begin when the system is implemented at the start of 2013, and continue through 2016. Notice that the customer service intangible benefit has been quantified, based on a decrease in customer complaint phone calls. The intangible benefit of being able to offer services that competitors currently offer was not quantified, but it was listed so that the approval committee will consider the benefit when assessing the system's economic feasibility.

CONCEPTS IN ACTION: 1-D INTANGIBLE VALUE AT CARLSON HOSPITALITY

I conducted a case study at Carlson Hospitality, a global leader in hospitality services, encompassing more than 1300 hotel, resort, restaurant, and cruise ship operations in 79countries. One of its brands, Radisson Hotels & Resorts, researched guest stay information and guest satisfaction surveys. The company was able to quantify how much of a guest's lifetime value can be attributed to his or her perception of the stay experience. As a result, Radisson knows how much of the collective future value of the enterprise is at stake, given the perceived quality of the stay experience. Using this model, Radisson can confidently show that a 10% increase in customer satisfaction among the 10%of highest quality customers will capture a one-point market share for the brand. Each point in market share for the Radisson brand is worth $20 million in additional revenue.

Barbara Wixom

QUESTION:

How can a project team use this information to help determine the economic feasibility of a system?

FIGURE 1-12 Cost–Benefit Analysis—Simple Cash Flow Method

Determine Cash Flow A formal cost–benefit analysis usually contains costs and benefits over a selected number of years (usually, three to five years) to show cash flow overtime. (See Figures 1-8 and 1-12.) For example, Figure 1-12 lists the same amount for customer complaint calls, inventory costs, hardware, and software for all four years. Often, amounts are augmented by some rate of growth to adjust for inflation or business improvements, as shown by the 6% increase that is added to the sales numbers in the sample spreadsheet. Similarly, labor costs are assumed to increase at a 4% rate each year. Finally, totals are added to determine what the overall benefits and costs.

Determine ROI Figure 1-12 includes the ROI calculation for our example project. This project's ROI is calculated to be 14.1%.

Determine BEP Figure 1-12 also includes the BEP calculation for our example project. This project's BEP is calculated to be 3.37 years.

FIGURE 1-13 Cost–Benefit Analysis—Discounted Cash Flow Method

Determine NPV In Figure 1-13, the present value of the costs and benefits has been calculated and added to our example spreadsheet, using a 6% rate of return. The NPV is simply the difference between the total present value of the benefits and the total present value of the costs. As long as the NPV is greater than zero, the project is considered economically viable. In this example, since NPV is $68,292, the project should be accepted from an economic feasibility perspective.

Organizational Feasibility

The final technique used for feasibility analysis is to assess the organizational feasibility of the system: how well the system ultimately will be accepted by its users and incorporated into the ongoing operations of the organization. There are many organizational factors that can have an impact on the project, and seasoned developers know that organizational feasibility can be the most difficult feasibility dimension to assess. In essence, an organizational feasibility analysis attempts to answer the question “If we build it, will they come?”

CONCEPTS IN ACTION: 1-E RETURN ON INVESTMENT

Many companies are undergoing server virtualization. This is the concept of putting multiple “virtual” servers onto one physical device. The pay-offs can be significant: fewer servers, less electricity, less generated heat, less air conditioning, less infrastructure and administration costs, increased flexibility, less physical presence (that is, smaller server rooms), faster maintenance of servers, and more. There are costs, of course, such as licensing the virtualization software, labor costs in establishing the virtual servers onto a physical device, labor costs in updating tables, and access. But determining the return on investment can be a challenge. Some companies have lost money on server virtualization, while most would say that they have gained a positive return on investment but have not really quantified the results.

QUESTIONS:

1. How might a company really determine the return on investment for server virtualization?

2. Is this a project that a systems analyst might be involved in? Why or why not?

One way to assess the organizational feasibility of the project is to understand how well the goals of the project align with business objectives. Strategic alignment is the fit between the project and business strategy—the greater the alignment, the less risky the project will be, from an organizational feasibility perspective. For example, if the marketing department has decided to become more customer focused, then a CRM project that produces integrated customer information would have strong strategic alignment with marketing's goal. Many projects fail if the IT department alone initiates them and there is little or no alignment with business unit or organizational strategies.

A second way to assess organizational feasibility is to conduct a stakeholder analysis. 8 A stakeholder is a person, group, or organization that can affect (or can be affected by) a new system. In general, the most important stakeholders in the introduction of a new system are the project champion, system users, and organizational management (see Figure 1-14), but systems sometimes affect other stakeholders as well. For example, the IS department can be a stakeholder of a system because IS jobs or roles may be changed significantly after the system's implementation. One key stakeholder—outside of the champion, users, and management—in Microsoft's project that embedded Internet Explorer as a standard part of Windows was the U.S. Department of Justice.

The champion is a high-level executive and is usually, but not always, the project sponsor who created the system request. The champion supports the project by providing time and resources (e.g., money) and by giving political support within the organization by communicating the importance of the system to other organizational decision makers. More than one champion is preferable because if the champion leaves the organization, the support could leave as well.

While champions provide day-to-day support for the system, organizational management also needs to support the project. Such management support conveys to the rest of the organization the belief that the system will make a valuable contribution and that necessary resources will be made available. Ideally, management should encourage people in the organization to use the system and to accept the many changes that the system will likely create.

FIGURE 1-14 Important Stakeholders for Organizational Feasibility

A third important set of stakeholders is the system users who ultimately will use the system once it has been installed in the organization. Too often, the project team meets with users at the beginning of a project and then disappears until after the system is created. In this situation, rarely does the final product meet the expectations and needs of those who are supposed to use it, because needs change and users become savvier as the project progresses. User participation should be promoted throughout the development process to make sure that the final system will be accepted and used, by getting users actively involved in the development of the system (e.g., performing tasks, providing feedback, and making decisions).

The final feasibility study helps organizations make wiser investments regarding IS because it forces project teams to consider technical, economic, and organizational factors that can affect their projects. It protects IT professionals from criticism by keeping the business units educated about decisions and positioned as the leaders in the decision-making process. Remember—the feasibility study should be revised several times during the project at points where the project team makes critical decisions about the system (e.g., before the design begins). The final feasibility study can be used to support and explain the critical choices that are made throughout the SDLC.

Applying the Concepts at Tune Source

The steering committee met and placed the digital music download project high on its list of projects.

YOUR TURN: 1-5 TOO MUCH PAPER, PART 2

Review the description of the South Dakota workers' compensation project in Your Turn 1-3. There were legal hurdles to implementing a digital solution to handle workers' compensation claims. One hurdle was that the previous paper method had physical signatures from employees signing off that they had received treatment or that the doctor had signed off on medical treatment performed. How could such permissions be preserved and duplicated digitally?

In addition, some clerks were afraid that the digital solution might not work. What if they could not find an electronic file on the computer? What if a hard drive crashed or the files were accidentally deleted? What if they could not retrieve the electronic file?

QUESTIONS:

1. What legal issues might arise from having only “digital signatures” or only electronic/paper copies of documents instead of physical documents? How do these issues affect the project's feasibility?

2. In terms of organizational feasibility and adoption, what might an analyst do to convince these clerks to adopt and use the new technology?

The next step was for Carly and Jason to develop the feasibility analysis. Figure 1-15 presents the executive summary page of the feasibility study: The report itself was about 10 pages long, and it provided additional detail and supporting documentation.

As shown in Figure 1-15, the project is somewhat risky from a technical perspective. Tune Source has minimal experience with the proposed application and the technology. One solution may be to hire a consultant to work with the IT department and to offer guidance.

The economic feasibility analysis includes the assumptions that Carly made in the system request. The summary spreadsheet that led to the values in the feasibility analysis has been included in Appendix 1A. Development costs are expected to be about$280,000. This is a very rough estimate, as Jason has had to make some assumptions about the amount of time it will take to design and program the system. Nonetheless, the digital music download system appears to be very strong economically.

YOUR TURN: 1-6 CREATE A FEASIBILITY ANALYSIS

Think about the idea that you developed in “Your Turn 1-4” to improve your university or college course enrollment process.

QUESTIONS:

1. List three things that influence the technical feasibility of the system.

2. List three things that influence the economic feasibility of the system.

3. List three things that influence the organizational feasibility of the system.

4. How can you learn more about the issues that affect the three kinds of feasibility?

FIGURE 1-15 Feasibility Analysis Executive Summary for Tune Source

The organizational feasibility is presented in Figure 1-15. There is a strong champion, well placed in the organization, to support the project. The project originated in the business or functional side of the company, not the IS department, and support for the project among the senior management team is strong.

Additional stakeholders in the project are the management team responsible for the operations of the traditional stores and the store managers. They should be quite supportive, given the added service that they now can offer. Carly and Jason need to make sure that they are included in the development of the system so that they can appropriately incorporate it into their business processes.

Project Selection

Many IT organizations tackle a number of important initiatives simultaneously. For example, new software applications may be under development; new business models may be under consideration; organizational structures may be revised; new technical infrastructures may be evaluated. Collectively, these endeavors are managed as a program by the IT steering committee. The steering committee must provide oversight and governance to the entire set of projects that are undertaken by the IT organization. The individual projects that are accepted by the steering committee are temporary endeavors undertaken to create a unique product or service.

Investments in information systems projects today are evaluated in the context of an entire portfolio of projects. Decision makers look beyond project cost and consider a project's anticipated risks and returns in relation to other projects. Companies prioritize their business strategies and then assemble and assess project portfolios on the basis of how they meet those strategic needs.

The focus on a project's contribution to an entire portfolio of projects reinforces the need for the feasibility study as described in Chapter 1. The approval committee has the responsibility to evaluate not only the project's costs and expected benefits, but also the technical and organizational risks associated with the project. The feasibility analysis is submitted back to the approval committee, along with an updated system request. Using this information, the approval committee can examine the business need (found in the system request) and the project risks (described in the feasibility analysis).

Portfolio management takes into consideration the different kinds of projects that exist in an organization—large and small, high risk and low risk, strategic and tactical. (See Figure 2-1 for different ways of classifying projects.) A good project portfolio will have the most appropriate mix of projects for the organization's needs. The committee acts as a portfolio manager, with the goal of maximizing benefits versus costs and balancing other important factors of the portfolio. For example, an organization may want to keep high-risk projects to a level less than 20% of its total project portfolio.

FIGURE 2-1 Ways to Classify Projects

The approval committee must be selective about where to allocate resources, because the organization has limited funds. This involves trade-offs in which the organization must give up something in return for something else in order to keep its portfolio well balanced. If there are three potentially high-payoff projects, yet all have very high risk, then maybe only one of the projects will be selected. Also, there are times when a system at the project level makes good business sense, but it does not at the organization level. Thus, a project may show a very strong economic feasibility and support important business needs for a part of the company; however, it is not selected. This could happen for many reasons—because there is no money in the budget for another system, the organization is about to go through some kind of change (e.g., a merger, an implementation of a company-wide system like an ERP), projects that meet the same business requirements already are underway, or the system does not align well with current or future corporate strategy.

Applying the Concepts at Tune Source

The approval committee met and reviewed the Digital Music Download project along with two other projects—one that called for a new supply-chain portal and another that involved the enhancement of Tune Source's data warehouse. Unfortunately, the budget would allow for only one project to be approved, so the committee carefully examined the costs, expected benefits, risks, and strategic alignment of all three projects. Currently, top management is anxious to bring the digital music download capability to market in order to satisfy the demands of its existing customers and potentially expand its customer base. The Digital Music Download project is best aligned with that goal. Therefore, the committee decided to fund the Digital Music Download project.

YOUR TURN: 2-1 TO SELECT OR NOT TO SELECT

It seems hard to believe that an approval committee would not select a project that meets real business needs, has a high potential ROI, and has a positive feasibility analysis. Think of a company that you have worked for or know about. Describe a scenario in which a project may be very attractive at the project level, but not at the organization level.

YOUR TURN: 2-2 PROJECT SELECTION

In April 1999, one of Capital Blue Cross' health-care insurance plans had been in the field for three years, but hadn't performed as well as expected. The ratio of premiums to claims payments wasn't meeting historic norms. In order to revamp the product features or pricing to boost performance, the company needed to understand why it was underperforming. The stakeholders came to the discussion already knowing they needed better extraction and analysis of usage data in order to understand product shortcomings and recommend improvements.

After listening to input from the user teams, the stakeholders proposed three options. One was to persevere with the current manual method of pulling data from flat files via ad hoc reports and retyping it into spreadsheets.

The second option was to write a program to dynamically mine the needed data from Capital's customer information control system (CICS). While the system was processing claims, for instance, the program would pull out up-to-the-minute data at a given point in time for users to analyze.

The third alternative was to develop a decision-support system to allow users to make relational queries from a data mart containing a replication of the relevant claims and customer data.

Each of these alternatives was evaluated on cost, benefits, risks, and intangibles.

QUESTION:

1. What are three costs, benefits, risks, and intangibles associated with each project?

2. Based on your answer to question 1, which project would you choose?

Source: “Capital Blue Cross,” CIO Magazine, February 15, 2000, by Richard Pastore.

CONCEPTS IN ACTION: 2-B INTERVIEW WITH LYN MCDERMID, CIO, DOMINION VIRGINIA POWER

A CIO needs to have a global view when identifying and selecting projects for her organization. I would get lost in the trees if I were to manage on a project-by-project basis. Given this, I categorize my projects according to my three roles as a CIO, and the mix of my project portfolio changes depending on the current business environment.

My primary role is to keep the business running. That means every day when each person comes to work, they can perform his or her job efficiently. I measure this using various service level, cost, and productivity measures. Projects that keep the business running could have a high priority if the business were in the middle of a merger, or a low priority if things were running smoothly, and it were “business as usual.”

My second role is to push innovation that creates value for the business. I manage this by looking at our lines of business and asking which lines of business create the most value for the company. These are the areas for which I should be providing the most value. For example, if we had a highly innovative marketing strategy, I would push for innovation there. If operations were running smoothly, I would push less for innovation in that area.

My third role is strategic, to look beyond today and find new opportunities for both IT and the business of providing energy. This may include investigating process systems, such as automated meter reading or looking into the possibilities of wireless technologies. Lyn McDemid

CONCEPTS IN ACTION: 2-C INTERVIEW WITH CARL WILSON, CIO, MARRIOTT CORPORATION

At Marriott, we don't have IT projects—we have business initiatives and strategies that are enabled by IT. As a result the only time a traditional “IT project” occurs is when we have an infrastructure upgrade that will lower costs or leverage better functioning technology. In this case, IT has to make a business case for the upgrade and prove its value to the company.

The way IT is involved in business projects in the organization is twofold. First, senior IT positions are filled by people with good business understanding. Second, these people are placed on key business committees and forums where the real business happens, such as finding ways to satisfy guests. Because IT has a seat at the table, we are able to spot opportunities to support business strategy. We look for ways in which IT can enable or better support business initiatives as they arise.

Therefore, business projects are proposed, and IT is one component of them. These projects are then evaluated the same as any other business proposal, such as a new resort—by examining the return on investment and other financial measures.

At the organizational level, I think of projects as must-do's, should-do's, and nice-to-do's. The “must-do's” are required to achieve core business strategy, such as guest preference. The “should-do's” help grow the business and enhance the functionality of the enterprise. These can be somewhat untested, but good drivers of growth. The “nice-to-do's” are more experimental and look further out into the future.

The organization's project portfolio should have a mix of all three kinds of projects, with a much greater proportion devoted to the “must-do's.” Carl Wilson

CONCEPTS IN ACTION: 2-D A PROJECT THAT DOES NOT GET SELECTED

Hygeia Travel Health is a Toronto based health insurance company whose clients are the insurers of foreign tourists to the United States and Canada. Its project selection process is relatively straightforward. The project evaluation committee, consisting of six senior executives, splits into two groups. One group includes the CIO, along with the heads of operations and research and development, and it analyzes the costs of every project. The other group consists of the two chief marketing officers and the head of business development, and they analyze the expected benefits. The groups are permanent, and to stay objective, they don't discuss a project until both sides have evaluated it. The results are then shared, both on a spreadsheet and in conversation. Projects are then approved, passed over, or tabled for future consideration.

Last year, the marketing department proposed purchasing a claims database filled with detailed information on the costs of treating different conditions at different facilities. Hygeia was to use this information to estimate how much money insurance providers were likely to owe on a given claim if a patient was treated at a certain hospital as opposed to any other. For example, a 45-year-old man suffering a heart attack may accrue $5000 in treatment costs at hospital A, but only $4000 at hospital B. This information would allow Hygeia to recommend the less expensive hospital to its customer. That would save the customer money and help differentiate Hygeia from its competitors.

The benefits team used the same three-meeting process to discuss all the possible benefits of implementing the claims database. Members of the team talked to customers and made a projection by using Hygeia's past experience and expectations about future business trends. The verdict: The benefits team projected a revenue increase of $210,000. Client retention would rise by 2%, and overall, profits would increase by 0.25%.

The costs team, meanwhile, came up with large estimates: $250,000 annually to purchase the database and an additional $71,000 worth of internal time to make the information usable. Put it all together and it was a financial loss of $111,000 in the first year.

The project still could have been good for marketing—maybe even good enough to make the loss acceptable. But some of Hygeia's clients were also in the claims information business and, therefore, potential competitors. This, combined with the financial loss, was enough to make the company reject the project.

Source: “Two Teams Are Better Than One,” CIO Magazine, July 15, 2001, by Ben Worthen.

Creating the Project Plan

Once the project is launched by being selected by the approval committee, it is time to carefully plan the project. The project manager will follow a set of project management guidelines, sometimes referred to as the project management life cycle, as he or she organizes, guides, and directs the project from inception to completion. Generally speaking, the project management phases consist of initiation, planning, execution, control, and closure.

In large organizations or on large projects, the role of project manager is commonly filled by a professional specialist in project management. In smaller organizations or on smaller projects, the systems analyst may fill this role. The project manager must make a myriad of decisions regarding the project, including determining the best project methodology, developing a work plan for the project, determining a staffing plan, and establishing mechanisms to coordinate and control the project.

Project Methodology Options

As we discussed in Chapter 1, the Systems Development Life Cycle (SDLC) provides the foundation for the processes used to develop an information system. A methodology is a formalized approach to implementing the SDLC (i.e., it is a list of steps and deliverables). There are many different systems development methodologies, and they vary in terms of the progression that is followed through the phases of the SDLC. Some methodologies are formal standards used by government agencies, while others have been developed by consulting firms to sell to clients. Many organizations have their own internal methodologies that have been refined over the years, and they explain exactly how each phase of the SDLC is to be performed in that company. Here we will review several of the predominant methodologies that have evolved over time.

Waterfall Development With waterfall development, analysts and users proceed sequentially from one phase to the next. (See Figure 2-2.) The key deliverables for each phase are typically voluminous (often, hundreds of pages) and are presented to the approval committee and project sponsor for approval as the project moves from phase to phase. Once the work produced in one phase is approved, the phase ends and the next phase begins. As the project progresses from phase to phase, it moves forward in the same manner as a waterfall. While it is possible to go backward through the phases (e.g., from design back to analysis), it is quite difficult. (Imagine yourself as a salmon trying to swim upstream in a waterfall).

FIGURE 2-2 Waterfall Development

Waterfall development methodologies have the advantages of identifying requirements long before programming begins and limiting changes to the requirements as the project proceeds. The key disadvantages are that the design must be completely specified before programming begins, a long time elapses between the completion of the system proposal in the analysis phase and the delivery of system, and testing is treated almost as an afterthought in the implementation phase. In addition, the deliverables are often a poor communication mechanism, so important requirements may be overlooked in the volumes of documentation. If the project team misses an important requirement, expensive post-implementation programming may be needed. Users may forget the original purpose of the system, since so much time has elapsed between the original idea and actual implementation. Also, in today's dynamic business environment, a system that met the existing environmental conditions during the analysis phase may need considerable rework to match the environment when it is implemented. This rework requires going back to the initial phase and making needed changes through each of the subsequent phases in turn.

FIGURE 2-3 Parallel Development

There are two important variants of waterfall development. The parallel development methodologies evolved to address the lengthy time frame of waterfall development. As shown in Figure 2-3, instead of doing the design and implementation in sequence, a general design for the whole system is performed. Then the project is divided into a series of subprojects that can be designed and implemented in parallel. Once all subprojects are complete, there is a final integration of the separate pieces, and the system is delivered.

Parallel development reduces the time required to deliver a system, so changes in the business environment are less likely to produce the need for rework. The approach still suffers from problems caused by voluminous deliverables. It also adds a new problem: If the subprojects are not completely independent, design decisions in one subproject may affect another, and at the project end, integrating the subprojects may be quite challenging.

The V-model is another variation of waterfall development that pays more explicit attention to testing. As shown in Figure 2-4, the development process proceeds down the left-hand slope of the V, defining requirements and designing system components. At the base of the V, the code is written. On the upward-sloping right side of the model, testing of components, integration testing, and, finally, acceptance testing are performed. A key concept of this model is that as requirements are specified and components designed, testing for those elements is also defined. In this manner, each level of testing is clearly linked to a part of the analysis or design phase, helping to ensure high quality and relevant testing and maximize test effectiveness.

FIGURE 2-4 V-Model

The V-model is simple and straightforward and improves the overall quality of systems through its emphasis on early development of test plans. Testing focus and expertise is involved in the project earlier rather than later; plus, the testers gain knowledge of the project early. It still suffers from the rigidity of the waterfall development process, however, and is not always appropriate for the dynamic nature of the business environment.

Rapid Application Development (RAD) 5 Rapid application development is a collection of methodologies that emerged in response to the weaknesses of waterfall development and its variations. RAD incorporates special techniques and computer tools to speed up the analysis, design, and implementation phases in order to get some portion of the system developed quickly and into the hands of the users for evaluation and feedback. CASE (computer-aided software engineering) tools, JAD (joint application development) sessions, fourth-generation/visual programming languages (e.g., Visual Basic.NET), and code generators may all play a role in RAD. While RAD can improve the speed and quality of systems development, it may also introduce a problem in managing user expectations. As systems are developed more quickly and users gain a better understanding of information technology, user expectations may dramatically increase and system requirements may expand during the project (sometimes known as scope creep or feature creep).

RAD may be conducted in a variety of ways. Iterative development breaks the overall project into a series of versions that are developed sequentially. The most important and fundamental requirements are bundled into the first version of the system. This version is developed quickly by a mini-waterfall process, and once implemented, the users can provide valuable feedback to be incorporated into the next version of the system. (See Figure 2-5.) Iterative development gets a preliminary version of the system to the users quickly so that business value is provided. Since users are working with the system, important additional requirements may be identified and incorporated into subsequent versions. The chief disadvantage of iterative development is that users begin to work with a system that is intentionally incomplete. Users must accept that only the most critical requirements of the system will be available in the early versions and must be patient with the repeated introduction of new system versions.

System prototyping performs the analysis, design, and implementation phases concurrently in order to quickly develop a simplified version of the proposed system and give it to the users for evaluation and feedback. (See Figure 2-6). The system prototype is a “quick and dirty” version of the system and provides minimal features. Following reaction and comments from the users, the developers reanalyze, redesign, and reimplement a second prototype that corrects deficiencies and adds more features. This cycle continues until the analysts, users, and sponsor agree that the prototype provides enough functionality to be installed and used in the organization. System prototyping very quickly provides a system for users to evaluate and reassures users that progress is being made. The approach is very useful when users have difficulty expressing requirements for the system. A disadvantage, however, is the lack of careful, methodical analysis prior to making design and implementation decisions. System prototypes may have some fundamental design limitations that are a direct result of an inadequate understanding of the system's true requirements early in the project.

FIGURE 2-5 Iterative Development

FIGURE 2-6 System Prototyping

FIGURE 2-7 Throwaway Prototyping

Throwaway prototyping 6 includes the development of prototypes, but uses the prototypes primarily to explore design alternatives rather than as the actual new system (as in system prototyping). As shown in Figure 2-7, throwaway prototyping has a fairly thorough analysis phase that is used to gather requirements and to develop ideas for the system concept. Many of the features suggested by the users may not be well understood, however, and there may be challenging technical issues to be solved. Each of these issues is examined by analyzing, designing, and building a design prototype. A design prototype is not intended to be a working system. It contains only enough detail to enable users to understand the issues under consideration.

For example, suppose that users are not completely clear on how an order entry system should work. The analyst team might build a series of HTML pages to be viewed on a Web browser to help the users visualize such a system. In this case, a series of mock-up screens appear to be a system, but they really do nothing. Or, suppose that the project team needs to develop a sophisticated graphics program in Java. The team could write a portion of the program with artificial data to ensure that they could create a full-blown program successfully.

A system that is developed by this type of methodology probably requires several design prototypes during the analysis and design phases. Each of the prototypes is used to minimize the risk associated with the system by confirming that important issues are understood before the real system is built. Once the issues are resolved, the project moves into design and implementation. At this point, the design prototypes are thrown away, which is an important difference between this approach and system prototyping, in which the prototypes evolve into the final system.

Throwaway prototyping balances the benefits of well-thought-out analysis and design phases with the advantages of using prototypes to refine key issues before a system is built. It may take longer to deliver the final system compared with system prototyping (because the prototypes do not become the final system), but the approach usually produces more stable and reliable systems.

Agile Development Agile development 7 is a group of programming-centric methodologies that focus on streamlining the SDLC. Much of the modeling and documentation overhead is eliminated; instead, face-to-face communication is preferred. A project emphasizes simple, iterative application development in which every iteration is a complete software project, including planning, requirements analysis, design, coding, testing, and documentation. (See Figure 2.8). Cycles are kept short (one to four weeks), and the development team focuses on adapting to the current business environment. There are several popular approaches to agile development, including extreme programming (XP), Scrum, and dynamic systems development method (DSDM). Here, we briefly describe extreme programming.

Extreme programming emphasizes customer satisfaction and teamwork. Communication, simplicity, feedback, and courage are core values. Developers communicate with customers and fellow programmers. Designs are kept simple and clean. Early and frequent testing provides feedback, and developers are able to courageously respond to changing requirements and technology. Project teams are kept small.

An XP project begins with user stories that describe what the system needs to do. Then, programmers code in small, simple modules and test to meet those needs. Users are required to be available to clear up questions and issues as they arise. Standards are very important to minimize confusion, so XP teams use a common set of names, descriptions, and coding practices. XP projects deliver results sooner than even the RAD approaches, and they rarely get bogged down in gathering requirements for the system.

For small projects with highly motivated, cohesive, stable, and experienced teams, XP should work just fine. However, if the project is not small or the teams aren't jelled, then the likelihood of success for the XP project is reduced. Consequently, the use of XP in combination with outside contractors produces a highly questionable out-come, since the outside contractors may never “jell” with insiders. XP requires a great deal of discipline to prevent projects from becoming unfocused and chaotic. Furthermore, it is recommended only for small groups of developers (not more than 10), and it is not advised for mission-critical applications. Since little analysis and design documentation is produced with XP, there is only code documentation; therefore, maintenance of large systems developed using XP may be impossible. Also, since mission-critical business information systems tend to exist for a long time, the utility of XP as a business information system development methodology is in doubt. Finally, the methodology requires considerable on-site user input, something that is frequently difficult to obtain.

FIGURE 2-8 Extreme Programming

CONCEPTS IN ACTION: 2-E AGILE DEVELOPMENT AT TRAVELERS

Travelers Insurance Company of Hartford, Connecticut has adopted agile development methodologies. The insurance field can be competitive, and Travelers wanted to have the shortest “time to implement” in the field. Travelers set up development teams of six people—two systems analysts, two representatives from the user group (such as claim services), a project manager, and a clerical support person. In the agile approach, the users are physically assigned to the development team for the project. While at first it might seem that the users are just sitting around drinking coffee and not doing their regular jobs, that is not the case. The rapport that is developed within the team allows for instant communication. The interaction is very deep and profound. The resulting software product is delivered quickly—and, generally, with all the features and nuances that the users wanted.

QUESTIONS:

1. Could this be done differently, such as through JAD sessions or having the users review the program on a weekly basis, rather than taking the users away from their real jobs to work on development?

2. What mind-set does an analyst need to work on such an approach?

Agile versus Waterfall-Based Methodologies Agile development approaches have existed for over a decade. Agile development practices were created in part because of dissatisfaction with the sequential, inflexible structure of waterfall-based approaches. Presently, agile development has made inroads into software development organizations, and studies show an even split between agile and waterfall users.15 Many organizations are experimenting with agile even while continuing to employ traditional waterfall approaches (see Concepts in Action 2F).

FIGURE 2-9 Criteria for Selecting a Methodology

In fact, suggesting that an organization must be “all agile” or “all waterfall” is a false choice. Many software developers are actively seeking to integrate the best elements of both waterfall and agile into their software development practices. Hybrid agile-waterfall approaches are evolving. The process of developing information systems is never static. Most IS departments and project managers recognize that the choice of the “best” development methodology depends on project characteristics, as we discuss in the next section.

Selecting the Appropriate Development Methodology

As the previous section shows, there are many methodologies. The first challenge faced by project managers is to select which methodology to use. Choosing a methodology is not simple, because no one methodology is always best. (If it were, we'd simply use it everywhere!) Many organizations have standards and policies to guide the choice of methodology. You will find that organizations range from having one “approved” methodology to having several methodology options to having no formal policies at all.

Figure 2-9 summarizes some important methodology selection criteria. One important item not discussed in this figure is the degree of experience of the analyst team. Many of the RAD and agile development methodologies require the use of new tools and techniques that have a significant learning curve. Often, these tools and techniques increase the complexity of the project and require extra time for learning. Once they are adopted and the team becomes experienced, the tools and techniques can significantly increase the speed in which the methodology can deliver a final system.

Clarity of User Requirements When the user requirements for what the system should do are unclear, it is difficult to understand them by talking about them and explaining them with written reports. Users normally need to interact with technology to really understand what the new system can do and how to best apply it to their needs. System prototyping and throwaway prototyping are usually more appropriate when user requirements are unclear, because they provide prototypes for users to interact with early in the SDLC. Agile development may also be appropriate if on-site user input is available.

Familiarity with Technology When the system will use new technology with which the analysts and programmers are not familiar (e.g., the first Web development project with Ajax), applying the new technology early in the methodology will improve the chance of success. If the system is designed without some familiarity with the base technology, risks increase because the tools may not be capable of doing what is needed. Throwaway prototyping is particularly appropriate for situations where there is a lack of familiarity with technology, because it explicitly encourages the developers to create design prototypes for areas with high risks. Iterative development is good as well, because opportunities are created to investigate the technology in some depth before the design is complete. While one might think that system prototyping would also be appropriate, it is much less so because the early prototypes that are built usually only scratch the surface of the new technology. Typically, it is only after several prototypes and several months that the developers discover weaknesses or problems in the new technology.

System Complexity Complex systems require careful and detailed analysis and design. Throwaway prototyping is particularly well suited to such detailed analysis and design, but system prototyping is not. The waterfall methodologies can handle complex systems, but without the ability to get the system or prototypes into users' hands early on, some key issues may be overlooked. Although iterative development methodologies enable users to interact with the system early in the process, we have observed that project teams who follow these methodologies tend to devote less attention to the analysis of the complete problem domain than they might if they were using other methodologies.

System Reliability System reliability is usually an important factor in system development. After all, who wants an unreliable system? However, reliability is just one factor among several. For some applications, reliability is truly critical (e.g., medical equipment, missile control systems), while for other applications it is merely important (e.g., games, Internet video). The V-model is useful when reliability is important, due to its emphasis on testing. Throwaway prototyping is most appropriate when system reliability is a high priority, because detailed analysis and design phases are combined with the ability for the project team to test many different approaches through design prototypes before completing the design. System prototyping is generally not a good choice when reliability is critical, due to the lack of careful analysis and design phases that are essential to dependable systems.

YOUR TURN: 2-3 SELECTING A METHODOLOGY

Suppose that you are an analyst for the ABC Company, a large consulting firm with offices around the world. The company wants to build a new knowledge management system that can identify and track the expertise of individual consultants anywhere in the world on the basis of their education and the various consulting projects on which they have worked. Assume that this is a new idea that has never before been attempted in ABC or elsewhere. ABC has an international network, but the offices in each country may use somewhat different hardware and software. ABC management wants the system up and running within a year.

QUESTION:

What methodology would you recommend that ABC Company use? Why?

CONCEPTS IN ACTION: 2-F WHERE AGILE WORKS AND DOESN'T WORK

British Airways experienced problems in software development despite a willing and capable development team. Mike Croucher, brought in as chief software engineer, recommended a move to agile development after studying BA's development process. The movement to agile was carefully conducted, recognizing that agile represents a huge cultural shift for the developers. BA development team members who were amenable to and suitable for agile methods were trained as agile mentors and coaches to help ease the transition.

Converting to agile methods enabled BA to substantially shorten the time requirements of certain projects. In some cases, a project that might have taken nine months following a traditional methodology was completed in eight weeks. Only about 25% of the organization has changed to agile, however. BA recognized a continuing role for the waterfall methodology in certain areas of the organization and does not intend to force-fit agile everywhere. At BA, agile is used when the user base is requiring speed, flexibility, and customer-oriented design. Agile is ideal when an area requiring small functionality can be developed and deployed earlier, according to Croucher.

Source: Mondelo, Daniel J. “Where agile development works and where it doesn't: A user story.” SearchSoftwareQuality.com. February 24, 2010.

Short Time Schedules Projects that have short time schedules are well suited for RAD methodologies because those methodologies are designed to increase the speed of development. Iterative development and system prototyping are excellent choices when timelines are short because they best enable the project team to adjust the functionality in the system on the basis of a specific delivery date. If the project schedule starts to slip, it can be readjusted by removal of the functionality from the version or prototype under development. Waterfall-based methodologies are the worst choice when time is at a premium, because they do not allow for easy schedule changes.

Schedule Visibility One of the greatest challenges in systems development is knowing whether a project is on schedule. This is particularly true of the waterfall-based methodologies because design and implementation occur at the end of the project. The RAD methodologies move many of the critical design decisions to a position earlier in the project to help project managers recognize and address risk factors and keep expectations in check.

Estimating the Project Time Frame

As the previous section illustrated, some development methodologies have evolved in an attempt to accelerate the project through the SDLC as rapidly as possible while still producing a quality system. Regardless of whether time is a critical issue on a project or not, the project manager will have to develop a preliminary estimate of the amount of time the project will take. Estimation is the process of assigning projected values for time and effort.

Estimation can be performed manually or with the help of an estimation software package like Construx Estimate,TM Costar,TM or KnowledgePLAN®—there are over 50 available on the market. The estimates developed at the start of a project are usually based on a range of possible values (e.g., the design phase will take three to four months) and gradually become more specific as the project moves forward (e.g., the design phase will be completed on March 22).

The numbers used to calculate these estimates can come from several sources. They can be provided with the methodology that is used, taken from projects with similar tasks and technologies, or provided by experienced developers. Generally speaking, the numbers should be conservative. A good practice is to keep track of the actual time and effort values during the SDLC so that numbers can be refined along the way, and the next project can benefit from real data. One of the greatest strengths of systems consulting firms is the past experience that they offer to a project; they have estimates and methodologies that have been developed and honed over time and applied to hundreds of projects.

There are two basic ways to estimate the time required to build a system. The simplest method uses the amount of time spent in the planning phase to predict the time required for the entire project. The idea is that a simple project will require little planning, and a complex project will require more planning; so using the amount of time spent in the planning phase is a reasonable way to estimate overall project time requirements.

With this approach, you take the time spent in (or estimated for) the planning phase and use industry standard percentages (or percentages from the organization's own experiences) to calculate estimates for the other SDLC phases. Industry standards suggest that a “typical” business application system spends 15% of its effort in the planning phase, 20% in the analysis phase, 35% in the design phase, and 30% in the implementation phase. This would suggest that if a project takes four months in the planning phase, then the rest of the project likely will take a total of 22.66 person-months (4 ÷.15 = 22.66). These same industry percentages are then used to estimate the amount of time in each phase (Figure 2-10). The obvious limitation of this approach is that it can be difficult to take into account the specifics of your individual project, which may be simpler or more difficult than the “typical” project.

A more precise approach to estimation is called the function point approach. This approach is a more complex—and, it is hoped, more reliable—way of estimating time and effort for a project. The details of the function point approach are explained in Appendix 2A.

FIGURE 2-10 Estimating Project Time Using Industry Standards

FIGURE 2-11 Task Information

Developing the Work Plan

Once a project manager has a general idea of the size and approximate schedule for the project, he or she creates a work plan, which is a dynamic schedule that records and keeps track of all of the tasks that need to be accomplished over the course of the project. The project manager first must assemble important details about each task to be completed. Figure 2-11 shows the type of task information needed, including when it needs to be completed, the person assigned to do the work, and any deliverables that will result. The level of detail and the amount of information captured by the work plan depend on the needs of the project (and the detail usually increases as the project progresses). Usually, the work plan is the main component of the project management software that we mentioned earlier.

To create a work plan, the project manager identifies the tasks that need to be accomplished and determines how long each one will take. Then the tasks are organized within a work breakdown structure.

Identify Tasks Remember that the overall objectives for the system were recorded on the system request, and the project manager's job is to identify all the tasks that will be needed to accomplish those objectives. This is a daunting task, certainly. The methodology that was selected by the project manager should be a valuable resource, however. The methodology that seems most appropriate for the project provides a list of steps and deliverables.

A project manager can take the methodology, select the steps and deliverables that apply to the current project, and add them to the work plan. If an existing methodology is not available within the organization, methodologies can be purchased from consultants or vendors, or books like this textbook can serve as guidance. Using an existing methodology is the most popular way to create a work plan, because most organizations have a methodology that they use for projects.

If a project manager prefers to begin from scratch, he or she can use a structured, top-down approach whereby high-level tasks are defined first and then broken down into subtasks. Each step is then broken down in turn and numbered in a hierarchical fashion. A list of tasks hierarchically numbered in this way is called a work breakdown structure, and it is the backbone of the project workplan. Figure 2-12 shows a portion of a work breakdown structure for the design phase of an actual data warehouse development project. Each of the main tasks focuses on one of the required design deliverables. Within each task, there are subtasks listed that detail the activities required to complete the main task.

FIGURE 2-12 Work Breakdown Structure

The work breakdown structure can be organized in one of two ways: by SDLC phase or by product. For example, if a firm decided that it needed to develop a Web site, the firm could create a work breakdown structure based on the SDLC phases: planning, analysis, design, and implementation. In this case, a typical task that would take place during planning would be feasibility analysis. This task would be broken down into the different types of feasibility analysis: technical, economic, and organizational. Each of these would be further broken down into a series of subtasks. Alternatively, the firm could organize the work plan along the lines of the different products to be developed. In the case of a Web site, for example, the products could include applets, application servers, database servers, the various sets of Web pages, a site map, and so on. Each of these products could be decomposed into the different tasks associated with the phases of the SDLC. With either approach, once the overall structure is determined, tasks are identified and included in the work breakdown structure of the work plan.

The number of tasks and level of detail depend on the complexity and size of the project. The larger the project, the more important it becomes to define tasks in detail so that essential steps are not overlooked.

The Project Work Plan The project work plan is the mechanism used to manage the tasks that are listed in the work breakdown structure. It is the project manager's primary tool for managing the project. Using it, the project manager can tell whether the project is ahead of or behind schedule, how well the project was estimated, and what changes need to be made to meet the project deadline.

Basically, the work plan is a table that lists all of the tasks in the work breakdown structure, along with important task information such as the people who are assigned to perform the tasks, the actual hours that the tasks took, and the variances between estimated and actual completion times. (See Figure 2-13). At a minimum, the information should include the duration of the task, the current statuses of the tasks (i.e., open, complete), and the task dependencies, which occur when one task cannot be performed until another task is completed. For example, Figure 2-13 shows that task 1.2 and task 1.3 cannot begin until task 1.1 is completed. Key milestones, or important dates, are also identified on the work plan. Presentations to the approval committee, the start of end-user training, a company retreat, and the due date of the system prototype are the types of milestones that may be important to track.

The Function Point Approach

The function point approach is an estimating technique that can be used to estimate the size of the new system, the effort that will be required to complete the system, and the time the project will require. This approach requires detailed knowledge of system to be developed. When this knowledge is available, the function point approach produces a much more precise estimate for the project than the industry standard method mentioned earlier in Chapter 2.

The function point approach uses a three-step process (Figure 2A-1). First, the project manager estimates the size of the project in terms of the number of lines of code the new system will require. This size estimate is then converted into the amount of effort required to develop the system in terms of the number of person-months. The estimated effort is then converted into an estimated schedule time in terms of the number of months from start to finish.

FIGURE 2A-1 Estimating Project Time, Using the Function Point Approach

Step 1: Estimate System Size The first step is to estimate the size of a project by using function points, a concept developed in 1979 by Allen Albrecht of IBM. A function point is a measure of program size that is based on the system's number and complexity of inputs, outputs, queries, files, and program interfaces.

To calculate the function points for a project, components are listed on a worksheet to represent the major elements of the system. For example, data-entry screens are kinds of inputs, reports are outputs, and database queries are kinds of queries. (See Figure 2A-2.) The project manager records the total number of each component that the system will include, and then he or she breaks down the number to show the number of components that have low, medium, and high complexity. In Figure 2A-2, there are 19 outputs that need to be developed for the system, 4 of which have low complexity, 10 that have medium complexity, and 5 that are very complex. After each line is filled in, a total number of points are calculated per line by multiplying each number by a complexity index. The complexity index values are drawn from function point research and tell us, for example, that a low complexity input is “worth” three function points, while a high complexity output is “worth” seven function points. The line totals are added up to determine the total unadjusted function points (TUFP) for the project.

The complexity of the overall system is greater than the sum of its parts. Things like the familiarity of the project team with the business area and the technology that will be used to implement the project also may influence how complex a project will be. A project that is very complex for a team with little experience might have little complexity for a team with lots of experience. To create a more realistic size for the project, a number of additional system factors such as end-user efficiency, reusability, and data communications are assessed in terms of their effect on the project's complexity. (See Figure 2A-2.) These assessments are totaled and placed into a formula to calculate an adjusted project complexity (APC) factor. The APC factor has a baseline value of 0.65, and the total Processing Complexity (PC) score (converted to hundredths) is added to the baseline amount. The TUFP value is multiplied by the APC factor to determine the ultimate size of the project in terms of total adjusted function points (TAFP). This number should give the project manager a reasonable idea as to how big the project will be.

CONCEPTS IN ACTION: 2A-A FUNCTION POINTS AT NIELSEN

Nielsen Media used function point analysis (FPA) for an upgrade to the Global Sample ManagementSystem (GSMS) for Nielsen Media/NetRatings, which keeps track of the Internet rating sample, a group of 40,000 homes nationwide that volunteer to participate in ongoing ratings.

In late fall of 1998, Nielsen Media did an FP count based on the current GSMS. (FPA is always easier and more accurate when there is an existing system.) Nielsen Media had its counters—three quality assurance staff—do their FPA, and then input their count into Knowledge-Plan, a productivity modeling tool. In early 1999, seven programmers began writing code for the system, which they were expected to complete in 10 months. As November approached, the project was adding staff to try to meet the deadline. When it became evident that the deadline would not be met, a new FP count was conducted. The GSMS had grown to 900 FPs. Besides the original 500 plus 20%, there were 300 FPs attributable to features and functions that had crept into the project.

How did that happen? The way it always does: The developers and users had added a button here, a new feature there, and soon the project was much larger than it was originally. But Nielsen Media had put a stake in the ground at the beginning from which they could measure growth along the way.

The best practice is to run the FPA and productivity model at the project's launch and again when there is a full list of functional requirements. Then do another analysis anytime there is a major modification in the functional definition of the project.

Source: “Ratings Game,” CIO Magazine, October 2000, by Bill Roberts.

FIGURE 2A-2 Function Point-Estimation Worksheet

YOUR TURN: 2A-1 CALCULATE SYSTEM SIZE

Imagine that job hunting has been going so well that you need to develop a system to support your efforts. The system should allow you to input information about the companies with which you interview, the interviews and office visits that you have scheduled, and the offers that you receive. It should be able to produce reports, such as a company contact list, an interview schedule, and an office visit schedule, as well as generate thank-you letters to be brought into a word processor to customize. You also need the system to answer queries, such as the number of interviews by city and your average offer amount.

QUESTIONS:

1. Determine the number of inputs, outputs, interfaces, files, and queries that this system requires. For each element, determine whether the complexity is low, medium, or high. Record this information on a worksheet similar to the one in Figure 2A-2.

2. Calculate the total function points for each line on your worksheet by multiplying the number of each element with the appropriate complexity score.

3. Sum up the total unadjusted function points.

4. Suppose that the system will be built by you using Visual Basic (VB). Given your VB skills, multiply the TUFP score by the APC score that best estimates how complex the system will be for you to develop (.65 = simple, 1 = average, 1.35 = complex), and calculate a TAFP value.

5. Using the table in Figure 2A-3, determine the number of lines of code that correspond to VB. Multiply this number by the TAFP to find the total lines of code that your system will require.

Sometimes a shortcut is used to determine the complexity of the project. Instead of calculating the exact APC score for the 14 factors listed in Figure 2A-2, project managers estimate an APC value that ranges from 0.65 for very simple systems to 1.00 for “normal” systems to as much as 1.35 for complex systems. This estimated APC score is then applied to the TUFP to compute the TAFP. For example, a very simple system that has 200 unadjusted function points would have a size of 130 adjusted function points (200 × .65 = 130). However, if the system with 200 unadjusted function points were very complex, its function point size would be 270 (200 × 1.35 = 270).

In the planning phase, the exact nature of the system has not yet been determined, so it is impossible to know exactly how many inputs, outputs, and so forth will be in the system. It is up to the project manager to make an intelligent guess. Some people feel that using function points this early in a project is not practical for this reason. We believe function points can be a useful tool for understanding a project's size at any point in the SDLC. Later in the project, once more is known about the system, the project manager will revise the estimates, using this better knowledge to produce more accurate results.

Once you have estimated the number of function points, you need to convert the number of function points into the lines of code that will be required to build the system. The number of lines of code depends on the programming language you choose to use. Figure 2A-3 presents a very rough conversion guide for some popular languages.

For example, the system in Figure 2A-2 has 243 function points. If you were to develop the system in COBOL, it would typically require approximately 26,730 lines of code to write it. Conversely, if you were to use Visual Basic, it typically would take 7290 lines of code. If you could develop the system by using a package such as Excel or Access, it would take between 2430 and 9720 lines of code. There is a great range for packages, because different packages enable you to do different things and not all systems can be built with certain packages. Sometimes you end up writing lots of extra code to do some simple function because the package does not have the capabilities you need.

There is also a very important message from the data in this figure. Since there is a direct relationship between lines of code and the amount of effort and time required to develop a system, the choice of development language has a significant impact on the time and cost of projects.

FIGURE 2A-3 Converting from Function Points to Lines of Code

Step 2: Estimate Effort Required Once an understanding is reached about the size of the system, the next step is to estimate the effort that is required to build it. Effort is a function of the system size combined with production rates (how much work someone can complete in a given time). Much research has been done on software production rates. One of the most popular algorithms, the COCOMO model,21 was designed by Barry W. Boehm to convert a lines-of-code estimate into a person-month estimate. There are different versions of the COCOMO model that vary with the complexity of the software, the size of the system, the experience of the developers, and the type of software that you are developing (e.g., business application software such as the registration system at your university; commercial software such as Word; or system software such as Windows). For small to moderate-size business software projects (i.e., 100,000 lines of code and 10 or fewer programmers), the model is quite simple:

effort (in person-months) = 1.4 × thousands of lines of code

For example, let's suppose that we were going to develop a business software system requiring 10,000 lines of code. This project would typically take 14 person-months of effort. If the system in Figure 2A-2 were developed in COBOL (which equates to 26,730 lines of code), it would require about 37.42 person-months of effort.

YOUR TURN: 2A-2 CALCULATE EFFORT AND SCHEDULE TIME

Refer to the project size and lines of code that you calculated in “Your Turn 2A-1.”

QUESTIONS:

1. Determine the effort of your project in person-months of effort by multiplying your lines of code (in thousands) by 1.4.

2. Calculate the schedule time in months for your project by using the formula 3.0 × person-months1/3.

3. Based on your numbers, how much time will it take to complete the project if you are the developer?

Step 3: Estimate Time Required Once the effort is understood, the optimal schedule for the project can be estimated. Historical data or estimation software can be used as aids, or one rule of thumb is to determine schedule by the following equation:

schedule time (months) = 3.0 × person-months1/3

This equation is widely used, although the specific numbers vary (e.g., some estimators may use 3.5 or 2.5 instead of 3.0). The equation suggests that a project that has an effort of 14 person-months should be scheduled to take a little more than 7 months to complete. Continuing the Figure 2A-2 example, the 37.42 person-months would require a little over 10 months. It is important to note that this estimate is for the analysis, design, and implementation phases; it does not include the planning phase.

Staffing the Project

Staffing the project includes determining how many people should be assigned to the project, matching people's skills with the needs of the project, motivating them to meet the project's objectives, and minimizing project team conflict that will occur over time. The deliverable for this part of project management is a staffing plan, which describes the number and kinds of people who will work on the project, the overall reporting structure, and the project charter, which describes the project's objectives and rules.

Staffing Plan

The first step to staffing is determining the average number of staff needed for the project. To calculate this figure, divide the total person-months of effort by the optimal schedule. So to complete a 40 person-month project in 10 months, a team should have an average of four full-time staff members, although this may change over time as different specialists enter and leave the team (e.g., business analysts, programmers, technical writers).

Many times, the temptation is to assign more staff to a project to shorten the project's length, but this is not a wise move. Adding staff resources does not translate into increased productivity; staff size and productivity share a disproportionate relationship, mainly because a large number of staff members is more difficult to coordinate. The more a team grows, the more difficult it becomes to manage. Imagine how easy it is to work on a two-person project team: the team members share a single line of communication. But adding two people increases the number of communication lines to six, and greater increases lead to more dramatic gains in communication complexity. Figure 2-14 and Your Turn 2-4 illustrate the impact of adding team members to a project team.

One way to reduce efficiency losses on teams is to understand the complexity that is created in numbers and to build in a reporting structure that tempers its effects.

FIGURE 2-13 Project Work Plan

FIGURE 2-14 Increasing Complexity with Larger Teams

The rule of thumb is to keep team sizes under 8 to 10 people; therefore, if more people are needed, create subteams. In this way, the project manager can keep the communication effective within small teams, which in turn communicate to a contact at a higher level in the project.

After the project manager understands how many people are needed for the project, he or she creates a staffing plan that lists the roles that are required for the project and the proposed reporting structure for the project. Typically, a project will have one project manager who oversees the overall progress of the development effort, with the core of the team composed of the various types of analysts described in Chapter 1. A functional lead usually is assigned to manage a group of analysts, and a technical lead oversees the progress of a group of programmers and more technical staff members.

There are many structures for project teams; Figure 2-15 illustrates one possible configuration of a project team. After the roles are defined and the structure is in place, the project manager needs to think about which people can fill each role. Often, one person fills more than one role on a project team.

When you make assignments, remember that people have technical skills and interpersonal skills, and both are important on a project. Technical skills are useful for working with technical tasks (e.g., programming in Java) and in trying to understand the various roles that technology plays in the particular project (e.g., how a Web server should be configured on the basis of a projected number of hits from customers).

Interpersonal skills, on the other hand, include interpersonal and communication abilities that are used when dealing with business users, senior management executives, and other members of the project team. They are particularly critical for performing the requirements-gathering activities and when addressing organizational feasibility issues. Each project will require unique technical and interpersonal skills. For example, a Web-based project may require Internet experience or Java programming knowledge, or a highly controversial project may need analysts who are particularly adept at managing political or volatile situations.

YOUR TURN: 2-4 COMMUNICATION COMPLEXITY

Figure 2-14 shows the increasing number of communication channels that exist as a team grows from two members to four members. Using the figure as a guide, draw the number of communication channels that will be needed in a six-member team. Now, determine the number of communication channels that will be needed in an eight-person team.

QUESTIONS:

1. How many communication channels are there in the six-member team? The eight-member team?

2. From your results, how effective do you think a 12-member team would be? A 16-member team?

FIGURE 2-15 Possible Reporting Structure

Ideally, project roles are filled with people who have the right skills for the job; however, the people who fit the roles best may not be available; they may be working on other projects, or they may not exist in the company. Therefore, assigning project team members really is a combination of finding people with the appropriate skill sets and finding people who are available. When the skills of the available project team members do not match those actually required by the project, the project manager has several options to improve the situation. First, people can be pulled off other projects, and resources can be shuffled around. This is the most disruptive approach from the organization's perspective. Another approach is to use outside help—such as a consultant or contractor—to train team members and start them off on the right foot. Training classes are usually available for both technical and interpersonal instruction, if time is available. Mentoring may also be an option; a project team member can be sent to work on another similar project so that he or she can return with skills to apply to the current job.

Motivation Assigning people to tasks isn't enough; project managers need to motivate the people to make the project a success. Motivation has been found to be the number-one influence on people's performance, but determining how to motivate the team can be quite difficult. You may think that good project managers motivate their staff by rewarding them with money and bonuses, but most project managers agree that this is the last thing that should be done. The more often you reward team members with money, the more they expect it—and most times monetary motivation won't work.

Assuming that team members are paid a fair salary, technical employees on project teams are much more motivated by recognition, achievement, the work itself, responsibility, advancement, and the chance to learn new skills. If you feel that you need to give some kind of reward for motivational purposes, try a pizza or free dinner, or even a kind letter or award. These often have much more effective results. Figure 2-16 lists some other motivational don'ts that you should avoid ensuring that motivation on the project is as high as possible.

FIGURE 2-16 Motivational Don'ts

Handling Conflict The third component of staffing is organizing the project to minimize conflict among group members. Group cohesiveness (the attraction that members feel to the group and to other members) contributes more to productivity than do project members' individual capabilities or experiences.19 Clearly defining the roles on the project and holding team members accountable for their tasks is a good way to begin mitigating potential conflict on a project. Some project managers develop a project charter that lists the project's norms and ground rules. For example, the charter may describe when the project team should be at work, when staff meetings will be held, how the group will communicate with each other, and the procedures for updating the work plan as tasks are completed. Figure 2-17 lists additional techniques that can be used at the start of a project to keep conflict to a minimum.

Coordinating Project Activities

Like all project management responsibilities, the act of coordinating project activities continues throughout the entire project until a system is delivered to the project sponsor and end users. This step includes putting efficient development practices in place and mitigating risk. These activities occur over the course of the entire SDLC, but it is at this point in the project that the project manager needs to put them in place. Ultimately, these activities ensure that the project stays on track and that the chance of failure is kept at a minimum. The rest of this section will describe each of these activities in more detail.

FIGURE 2-17 Conflict Avoidance Strategies

CASE Tools Computer-aided software engineering (CASE) is a category of software that automates all or part of the development process. Some CASE software packages are primarily used during the analysis phase to create integrated diagrams of the system and to store information regarding the system components (often called upper CASE), whereas others are design-phase tools that create the diagrams and then generate code for database tables and system functionality (often called lower CASE). Integrated CASE, or I-CASE, contains functionality found in both upper-CASE and lower-CASE tools in that it supports tasks that happen throughout the SDLC. CASE comes in a wide assortment of flavors in terms of complexity and functionality, and there are many good programs available in the marketplace, such as the Visible Analyst Workbench, Oracle Designer, Rational Rose, and the Logic Works suite.

The benefits of using CASE are numerous. With CASE tools, tasks are much faster to complete and alter; development information is centralized; and information is illustrated through diagrams, which typically are easier to understand. Potentially, CASE can reduce maintenance costs, improve software quality, and enforce discipline; and some project teams even use CASE to assess the magnitude of changes to the project.

Of course, like anything else, CASE should not be considered a silver bullet for project development. The advanced CASE tools are complex applications that require significant training and experience to achieve real benefits. Often, CASE serves only as a glorified diagramming tool that supports the practices described in Chapter 5 (process modeling) and Chapter 6 (data modeling). Our experience has shown that CASE is a helpful way to support the communication and sharing of project diagrams and technical specifications—as long as it is used by trained developers who have applied CASE on past projects.

The central component of any CASE tool is the CASE repository, otherwise known as the information repository or data dictionary. The CASE repository stores the diagrams and other project information, such as screen and report designs, and it keeps track of how the diagrams fit together. For example, most CASE tools will warn you if you place a field on a screen design that doesn't exist in your data model. As the project evolves, project team members perform their tasks by using CASE. As you read through the textbook, we will indicate when and how the CASE tool can be used so that you can see how CASE supports the project tasks.

YOUR TURN: 2-5 COMPUTER-AIDED SOFTWARE ENGINEERING TOOL ANALYSIS

Select a computer-aided software engineering (CASE) tool—either one that you will use for class, a program that you own, or a tool that you can examine over the Web. Create a list of the capabilities that are offered by the CASE tool.

QUESTION:

Would you classify the CASE as upper CASE, lower CASE, or integrated CASE (I-CASE)? Why?

Standards Members of a project team need to work together, and most project management software and CASE tools provide access privileges to everyone working on the system. When people work together, however, things can get pretty confusing. To make matters worse, people sometimes get reassigned in the middle of a project. It is important that their project knowledge does not leave with them and that their replacements can get up to speed quickly.

Standards are created to ensure that team members are performing tasks in the same way and following the same procedures. Standards can range from formal rules for naming files to forms that must be completed when goals are reached to programming guidelines. See Figure 2-18 for some examples of the types of standards that a project may include. When a team forms standard and then follows them, the project can be completed faster because task coordination becomes less complex.

Standards work best when they are created at the beginning of each major phase of the project and well communicated to the entire project team. As the team moves forward, new standards are added when necessary. Some standards (e.g., file-naming conventions, status reporting) are applied to the entire SDLC, whereas others (e.g., programming guidelines) are appropriate only for certain tasks.

Documentation Another technique that project teams put in place during the planning phase is good documentation, which includes detailed information about the tasks of the SDLC. Often, the documentation is stored in project binder (s) that contain all the deliverables and all the internal communication that takes place—the history of the project.

A poor project management practice is permitting the project team to wait until the last minute to create documentation. This typically leads to an undocumented system that no one understands. In fact, many problems that companies had in updating their systems to handle the year-2000 crisis were the result of the lack of documentation. Good project teams learn to document the system's history as it evolves, while the details are still fresh in their memory.

A simple way to set up your documentation is to get some binders and use dividers to separate content according to the major phases of the project. An additional divider should contain internal communication, such as the minutes from status meetings, written standards, letters to and from the business users, and a dictionary of relevant business terms. Then, as the project moves forward, place the deliverables from each task into the project binder with descriptions so that someone outside of the project will be able to understand it, and keep a table of contents up to date with the content that is added. Documentation takes time up front, but it is a good investment that will pay off in the long run.

FIGURE 2-18 A Sampling of Project Standards

Managing and Controlling the Project

The science (or art) of project management is in making trade-offs among three important concepts: the size of the system (in terms of what it does), the time to complete the project (when the project will be finished), and the cost of the project. Think of these three things as interdependent levers that the project manager controls throughout the SDLC. Whenever one lever is pulled, the other two levers are affected in some way. For example, if a project manager needs to readjust a deadline to an earlier date, then the only solution is to decrease the size of the system (by eliminating some of its functions) or to increase costs by adding more people or having team members work overtime. Often, a project manager will have to work with the project sponsor to change the goals of the project, such as developing a system with less functionality or extending the deadline for the final system, so that the project has reasonable goals that can be met.

Therefore, in the beginning of the project, the manager needs to estimate each of these levers and then continuously assess how to roll out the project in a way that meets the organization's needs.

CONCEPTS IN ACTION: 2-G TRADE-OFFS

I was once on a project to develop a system that should have taken a year to build. Instead, the business need demanded that the system be ready within 5 months—impossible!

On the first day of the project, the project manager drew a triangle on a white board to illustrate some tradeoffs that he expected to occur over the course of the project. The corners of the triangle were labeled Functionality, Time, and Money. The manager explained, “We have too little time. We have an unlimited budget. We will not be measured by the bells and whistles that this system contains. So over the next several weeks, I want you as developers to keep this triangle in mind and do everything it takes to meet this 5-month deadline.”

At the end of the 5 months, the project was delivered on time; however, the project was incredibly over budget, and the final product was “thrown away” after it was used because it was unfit for regular usage. Remarkably, the business users felt that the project was very successful because it met the very specific business needs for which it was built. They believed that the trade-offs that were made were worthwhile.

Barbara Wixom

QUESTIONS:

1. What are the risks in stressing only one corner of the triangle?

2. How would you have managed this project? Can you think of another approach that might have been more effective?

Once the project begins, the project manager monitors the progress of the team on the project tasks. As the project team members make periodic status reports, the project manager updates the project work plan. As discussed in Appendix 2B, the Gantt chart and PERT chart are valuable tools for the project manager to use to evaluate project progress and, if necessary, redirect resources. As the project proceeds, it may be necessary for the project manager to revise the original estimates made for the project. In addition, the manager must be on the watch for increases in project scope, which can make completing the project on time and under budget very difficult. Finally, the project manager should constantly assess the risk profile of the project and take steps to manage those risks.

Refining Estimates

The estimates that are produced during the planning phase will need to be refined as the project progresses. This does not necessarily mean that estimates were poorly done at the start of the project; it is virtually impossible to develop an exact assessment of the project's schedule before the analysis and design phases are conducted. A project manager should expect to be satisfied with broad ranges of estimates that become more and more specific as the project's product becomes better defined.

In the planning phase, when a system is first requested, the project sponsor and project manager attempt to predict how long the SDLC will take, how much it will cost, and what the system will ultimately do when it is delivered (i.e., its functionality). However, the estimates are based on very little knowledge of the system. As the project moves into the analysis phase, more information is gathered, the system concept is developed, and the estimates become even more accurate and precise. As the system moves closer to completion, the accuracy and precision increase until the final system is delivered.

FIGURE 2-19 Margins of Error in Cost and Time Estimates

According to one of the leading experts in software development,20 a well-done project plan (prepared at the end of the planning phase) has a 100% margin of error for project cost and a 25% margin of error for schedule time. In other words, if a carefully done project plan estimates that a project will cost $100,000 and take 20 weeks, the project will actually cost between $0 and $200,000 and take between 15 and 25 weeks. Figure 2-19 presents typical margins of error for other stages in the project. It is important to note that these margins of error apply only to well-done plans; a plan developed without much care has a much greater margin of error.

What happens if you overshoot an estimate (e.g., the analysis phase ends up lasting two weeks longer than expected)? There are a number of ways to adjust future estimates. If the project team finishes a step ahead of schedule, most project managers shift the deadlines sooner by the same amount but do not adjust the promised completion date. The challenge, however, occurs when the project team is late in meeting a scheduled date. Three possible responses to missed schedule dates are presented in Figure 2-20. We recommend that if an estimate proves too optimistic early in the project, do not expect to make up for lost time—very few projects end up working this way. Instead, change your future estimates to include an increase similar to the one that was experienced. For example, if the first phase was completed 10% over schedule, increase the rest of your estimates by 10%.

Managing Scope

You may assume that your project will be safe from scheduling problems because you carefully estimated and planned your project up front. However, the most common reason for schedule and cost overruns occurs after the project is underway—scope creep.

Scope creep happens when new requirements are added to the project after the original project scope was defined and “frozen.” It can happen for many reasons: Users may suddenly understand the potential of the new system and realize new functionality that would be useful; developers may discover interesting capabilities to which they become very attached; a senior manager may decide to let this system support a new strategy that was developed at a recent board meeting.

FIGURE 2-20 Possible Actions When a Schedule Date Is Missed

Unfortunately, after the project begins, it becomes increasingly difficult to address changing requirements. The ramifications of change become more extensive, the focus is removed from original goals, and there is at least some impact on cost and schedule. Therefore, the project manager must actively work to keep the project tight and focused.

The keys are to identify the requirements as well as possible in the beginning of the project and to apply analysis techniques effectively. For example, if needs are fuzzy at the project's onset, a combination of intensive meetings with the users and prototyping could be used so that users “experience” the requirements and better visualize how the system could support their needs. In fact, the use of meetings and prototyping has been found to reduce scope creep to less than 5% on a typical project.

Of course, some requirements may be missed no matter what precautions you take, but several practices can help to control additions to the task list. First, the project manager should allow only absolutely necessary requirements to be added after the project begins. Even at that point, members of the project team should carefully assess the ramifications of the addition and present the assessment back to the users. For example, it may require two more person-months of work to create a newly defined report, which would throw off the entire project deadline by several weeks. Any change that is implemented should be carefully tracked so that an audit trail exists to measure the change's impact.

Sometimes, changes cannot be incorporated into the present system even though they truly would be beneficial. In this case, these additions to scope should be recorded as future enhancements to the system. The project manager can offer to provide functionality in future releases of the system, thus getting around telling someone no.

Timeboxing

Up until now, we have described projects that are task oriented. In other words, we have described projects that have a schedule that is driven by the tasks that need to be accomplished, so the greater number of tasks and requirements, the longer the project will take. Some companies have little patience for development projects that take a long time, and these companies take a time-oriented approach that places meeting a deadline above delivering functionality.

Think about your use of word processing software. For 80% of the time, you probably use only 20% of the features, such as the spelling checker, boldfacing, and cutting and pasting. Other features, such as document merging and creation of mailing labels, may be nice to have, but they are not a part of your day-to-day needs. The same goes for other software applications; most users rely on only a small subset of their capabilities. Ironically, most developers agree that, typically, 75% of a system can be provided relatively quickly, with the remaining 25% of the functionality demanding most of the time.

To resolve this incongruency, a technique called timeboxing has become quite popular, especially when rapid application development (RAD) methodologies are used. This technique sets a fixed deadline for a project and delivers the system by that deadline no matter what, even if functionality needs to be reduced. Time boxing ensures that project teams don't get hung up on the final “finishing touches” that can drag out indefinitely, and it satisfies the business by providing a product within a relatively fast time frame.

There are several steps to implementing timeboxing on a project (Figure 2-21). First, set the date of delivery for the proposed goals. The deadline should not be impossible to meet, so it is best to let the project team determine a realistic due date. Next, build the core of the system to be delivered; you will find that time-boxing helps create a sense of urgency and helps keep the focus on the most important features. Because the schedule is absolutely fixed, functionality that cannot be completed needs to be postponed. It helps if the team prioritizes a list of features beforehand to keep track of what functionality the users absolutely need. Quality cannot be compromised, regardless of other constraints, so it is important that the time allocated to activities is not shortened unless the requirements are changed (e.g., don't reduce the time allocated to testing without reducing features). At the end of the period, a high-quality system is delivered. Likely, future iterations will be needed to make changes and enhancements, and the timeboxing approach can be used once again.

FIGURE 2-21 Steps for Timeboxing

CONCEPTS IN ACTION: 2-H MANAGING A LATE PROJECT: WHEN TO SAY “WHEN”?

System projects are notorious for being late and over budget. When should management stop a project that is late or costing more than the intended budget? Consider this case:

Valley Enterprises opted to implement Voice over Internet Protocol (VoIP) service in its Phoenix, Arizona, service area. The company has 15 locations in the Phoenix area, all with local area networks and all with secure Wi-Fi connections. The company's current phone system was designed and implemented in the 1950s, when Valley operated in three locations. As more locations were added, standard telecommunications solutions were implemented, with little thought devoted to compatibility. Over the years, phone services were added as new buildings and facilities arose. Valley CEO Doug Wilson heard of VoIP at a trade show and contacted TMR Telecommunications Consultants, requesting a bid. TMR spent a week with the CIO of Valley Enterprises, gathering data, and submitted a bid for $50,000 in late 2007. The project was to be started by March 2008 and completed by January 2009. The bid was accepted.

TMR started the project in March 2008. In late July 2008, TMR was bought out by Advanced Communications of Scottsdale, Arizona. The merger delayed the project by over a month initially. In early September 2008, some of the same personnel from TMR, as well as a new project manager from Advanced Communications, went back to the project.

By March 2009, the project had already cost $150,000 and only 8 of the locations had implemented VoIP. Advanced Communications insisted that the local area networks were obsolete and were unable to carry the expanded load without major upgrades to the bandwidth, the routers, and other telecommunications equipment.

QUESTIONS:

1. Is it time to end this project? Why or why not?

2. What negotiations should have occured between TMR and Valley Enterprises prior to December 2008?

3. What should a project manager/project coordinator from Valley Enterprises have done when the project first started to slip?

Managing Risk

One final facet of project management is risk management, the process of assessing and addressing the risks that are associated with developing a project. Many things can cause risks: weak personnel, scope creep, poor design, and overly optimistic estimates. The project team must be aware of potential risks so that problems can be avoided or controlled well ahead of time.

Typically, project teams create a risk assessment, or a document that tracks potential risks along with an evaluation of the likelihood of the risk and its potential impact on the project (Figure 2-22). A paragraph or two is included that explains potential ways that the risk can be addressed. There are many options: A risk could be publicized, avoided, or even eliminated by dealing with its root cause. For example, imagine that a project team plans to use new technology, but its members have identified a risk in the fact that its members do not have the right technical skills. They believe that tasks may take much longer to perform because of a high learning curve. One plan of attack could be to eliminate the root cause of the risk—the lack of technical experience by team members—by finding time and resources that are needed to provide proper training to the team.

CONCEPTS IN ACTION: 2-I POOR NAMING STANDARDS

I once started on a small project (four people) in which the original members of the project team had not set up any standards for naming electronic files. Two weeks into the project, I was asked to write a piece of code that would be referenced by other files that had already been written. When I finished my piece, I had to go back to the other files and make changes to reflect my new work. The only problem was that the lead programmer decided to name the files using his initials (e.g., GG1.prg, GG2.prg, GG3.prg)—and there were over 200 files! I spent two days opening every one of those files because there was no way to tell what their contents were.

Needless to say, from then on, the team created a code for file names that provided basic information regarding the file's contents and they kept a log that recorded the file name, its purpose, the date of last update, and programmer for every file on the project.

Barbara Wixom

QUESTION:

Think about a program that you have written in the past.

Would another programmer be able to make changes to it easily? Why or why not?

Most project managers keep abreast of potential risks, even prioritizing them according to their magnitude and importance. Over time, the list of risks will change as some items are removed and others surface. The best project managers, however, work hard to keep risks from having an impact on the schedule and costs associated with the project.

FIGURE 2-22 Sample Risk Assessment

System Acquisition Strategies

In our chapters devoted to the analysis phase of the SDLC, we have carefully avoided committing ourselves to a specific way of obtaining the new system. We have stressed that the team should focus on determining the system's logical requirements during the analysis phase, and postpone the issue of how the system should be acquired until the design phase.

PRACTICAL TIP: 7-1 AVOIDING CLASSIC DESIGN MISTAKES

In Chapters 2 and 3, we discussed several classic mistakes and how to avoid them. Here, we summarize four classic mistakes in the design phase and discuss how to avoid them:

1. Reducing design time: If time is short, there is a temptation to reduce the time spent in such “unproductive” activities as design so that the team can jump into “productive” programming. This results in missing important details that have to be investigated later at a much higher time cost (usually, at least 10 times longer).

Solution: If time pressure is intense, use rapid application development (RAD) techniques and timeboxing to eliminate functionality or move it into future versions.

2. Feature creep: Even if you are successful at avoiding scope creep, about 25% of system requirements will still change. Changes—big and small—can significantly increase time and cost.

Solution: Ensure that all changes are vital and that the users are aware of the impact on cost and time. Try to move proposed changes into future versions.

3. Silver bullet syndrome: Analysts sometimes believe the marketing claims that some design tools solve all problems and magically reduce time and costs. No one tool or technique can eliminate overall time or costs by more than 25% (although some can reduce individual steps by this much).

Solution: If a design tool has claims that appear too good to be true, just say no.

4. Switching tools in mid-project: Sometimes, analysts switch to what appears to be a better tool during design in the hopes of saving time or costs. Usually, any benefits are outweighed by the need to learn the new tool. This also applies to even “minor” upgrades to current tools.

Solution: Don't switch or upgrade unless there is a compelling need for specific features in the new tool, and then explicitly increase the schedule to include learning time.

Source: Adapted from Professional Software Development, Redmond, WA: Microsoft Press, 2003, by Steve McConnell.

Until now, we have implicitly assumed that the system will be designed, developed, and implemented by the project team. This is not an entirely realistic assumption. In many projects, the team may recognize that some parts or even all of the new system's software will be acquired from some outside provider. Some organizations have established acquisition policies strongly favoring purchased software. We explain in this chapter that there are many good reasons supporting this decision. Does this mean that all of the work described in Chapters 3 through 6 can be skipped? Our position on this issue is that the work performed in the analysis phase is still essential to the project's success, especially the tools and techniques that are used to determine, define, and clarify the business and user requirements. It is essential to know what we need before seeking a product that provides the best fit. Otherwise, we run the risk of letting a software vendor tell us what we need and we obtain software that does not fulfill our real business and user requirements.

There are, however, actually three primary ways to approach the creation of a new system: (1) develop a custom application inhouse; (2) buy a packaged system and (possibly) customize it; and (3) rely on an external vendor, developer, or service provider to build or provide the system. Each of these choices has its strengths and weaknesses, and each is more appropriate in different situations. There may be obvious characteristics of the project that suggest the preferred acquisition strategy. The following sections describe each acquisition choice in turn, and then we present criteria you can use to select one of the three approaches for your project.

CONCEPTS IN ACTION: 7-A OUT OF THE BOX…?

A consultant I know led a very large project revising the financial systems of a major global financial services company. The company had a successful, well-defined program of software standards in place. Therefore, initially, the project team attempted to employ software from one of the major ERP software vendors in the project. After experiencing dismal (and unacceptable) processing speed during tests of the ERP software, the CIO and team concluded, “Out of the Box is out of the question.” Roberta Roth

Custom Development

Many project teams assume that custom development, or building a new system from scratch, is the best way to create a system. For one, teams have complete control over the way the system looks and functions. Let's consider the purchasing process for Tune Source. If the company wants a Web-based feature that links tightly with its existing CD sales system, the project may involve a complex, highly specialized program. Alternatively, Tune Source might have a technical environment in which all information systems are built from standard technology and interface designs so that they are consistent and easier to update and support. In both cases, it could be very effective to create a new system from scratch that meets these highly specialized requirements.

In some situations, the challenges being addressed with the new system are so significant and demanding that serious systems engineering is required to solve them. In these cases, the developers really cannot find a packaged solution that is capable of meeting the project requirements, and a custom development project is the only real viable choice. (See Concepts in Action 7-A.)

Custom development also allows developers to be flexible and creative in the way they solve business problems. Tune Source may envision the Web interface that takes customer digital music purchases as an important strategic enabler. The company may want to use the information from the system to better understand its customers who buy digital music over the Web, and it may want the flexibility to evolve the system to incorporate technology such as data-mining software and geographic information systems to perform marketing research. A custom application would be easier to change to include components that take advantage of current technologies that can support such strategic efforts.

Building a system in-house also builds technical skills and functional knowledge within the company. As developers work with business users, their understanding of the business grows and they become better able to align information systems with strategies and needs. These same developers climb the technology learning curve so that future projects applying similar technology become much easier.

Custom application development, however, requires a dedicated effort that includes long hours and hard work. Many companies have a development staff that is already overcommitted. Facing huge backlogs of systems requests, the staff just does not have time for another project. Also, a variety of skills—technical, inter-personal, functional, project management, modeling—all have to be in place for the project to move ahead smoothly. IS professionals, especially highly skilled individuals, are quite difficult to hire and retain.

CONCEPTS IN ACTION: 7-B BUCKING CONVENTIONAL WISDOM WITH CUSTOM DEVELOPMENT

Bonhams 1793 Ltd. is a London-based auctioneering house, ranked number three globally behind Christie's International PLC and Sotheby's. After embarking on a series of acquisitions in 2000, the firm recognized the need to standardize its IT system. The requirements that Bonhams 1793 faced included ERP functions, customer relationship management, and auction catalog production, among others. Rather than follow the lead of its larger competitors and acquire a software package from SAP AG or Siebel Systems Inc., Bonhams 1793 instead developed a system from scratch. By carefully planning the system architecture, selecting powerful and integrated development tools, employing open source software when possible, and empowering its in-house developers, Bonhams 1793 developed a custom system rapidly and at lower cost than it could have by using a packaged solution. Bonhams 1793 avoided purchasing an expensive package and then spending a significant amount to tailor and implement it. The result is a successful custom system that provides exactly the functions that Bonhams 1793 sought.

Source: Anthes, Gary, “Best in Class 2007, Bonhams 1793,” Computerworld, August 14, 2007.

The risks associated with building a system from the ground up can be quite high, and there is no guarantee that the project will succeed. Developers could be pulled away to work on other projects, technical obstacles could cause unexpected delays, and the business users could become impatient with a growing timeline.

Packaged Software

Many business needs are not unique, and because it makes little sense to reinvent the wheel, many organizations buy packaged software that has already been written, rather than developing their own custom solution. In fact, there are thousands of commercially available software programs that have already been written to serve a multitude of purposes. Think about your own need for a word processor—did you ever consider writing your own word processing software? That would be very silly, considering the number of good software packages available for a relatively inexpensive cost.

Similarly, most companies have needs, such as payroll or accounts receivable, that can be met quite well by packaged software. It can be much more efficient to buy programs that have already been created, tested, and proven, and a packaged system can be bought and installed quickly compared with a custom system. Plus, packaged systems incorporate the expertise and experience of the vendor who created the software.

Let's think about the needs that Tune Source will have in its Digital Music Download system. One requirement is to have a simple, fast, and flexible process in place to deliver the purchased tunes over the Internet to the purchaser. Server-side download management software programs are available that are designed to optimize the delivery of file downloads. Some of these products are available for free, and in some products, these tools are incorporated into a overall shopping-cart capability as well. Tune Source will certainly need to consider this type of option as it considers alternatives for the Digital Music Download system.

Packaged software can range from small single-function tools, such as the server-side download manager, to huge all-encompassing systems, such as enterprise resource planning (ERP) applications that are installed to automate an entire business. Implementing ERP systems is a popular practice in which large organizations spend millions of dollars installing packages by such companies as SAP, Oracle, and Infor and then change their businesses accordingly. Installing ERP software is much more difficult than installing small application packages, because benefits can be harder to realize and problems are much more serious.

One problem is that companies utilizing packaged systems must accept the functionality that is provided by the system, and rarely is there a perfect fit. If the packaged system is large in scope, its implementation could mean a substantial change in the way the company does business. Letting technology drive the business can be a dangerous way to go.

Most packaged applications allow for some customization or for the manipulation of system parameters to change the way certain features work. For example, the package might have a way to accept information about your company or the company logo that would then appear on input screens. An accounting software package could offer a choice of various ways to handle cash flow or inventory control so that it could support the accounting practices in different organizations. If the amount of customization is not enough and the software package has a few features that don't quite work the way the company needs them to work, the project team can create a workaround. A workaround is a custom-built add-on program that interfaces with the packaged application to handle special needs. It can be a nice way to create needed functionality that does not exist in the software package. However, workarounds should be a last resort, for several reasons. First, workarounds are not supported by the vendor who supplied the packaged software, so when upgrades are made to the main system, they may make the workaround ineffective. Also, if problems arise, vendors have a tendency to blame the workaround as the culprit and refuse to provide support.

Although choosing a packaged software system is simpler than going with custom development, it also can benefit from following a formal methodology, just as if you were building a custom application. The search for a software package should be based on the detailed requirements identified during analysis.

Systems integration refers to the process of building new systems by combining packaged software, existing legacy systems, and new software written to integrate these. Many consulting firms specialize in systems integration, so it is not uncommon for companies to select the packaged software option and then outsource the integration of a variety of packages to a consulting firm. (Outsourcing is discussed in the next section.)

The key challenge in systems integration is finding ways to integrate the data produced by the different packages and legacy systems. Integration often hinges on taking data produced by one package or system and reformatting it for use in another package or system. The project team starts by examining the data produced by and needed by the different packages and systems and identifying the transformations that must occur to move the data from one to the other. In many cases, this involves fooling the different packages or systems into thinking that the data were produced by an existing program module that the package or system expects to produce the data, rather than by the new package or system that is being integrated.

For example, Tune Source might want to integrate its new Digital Music Download system with its existing Web-based CD sales system. The CD sales system enables customers to purchase CDs over the Web, and it interfaces with Tune Source's accounting and inventory management systems. The new Digital Music Download system will not require integration with the inventory management system, but it will need to interface with the accounting system and perhaps could share customer data with the CD sales system. The Digital Music Download project team will need to consider these areas of system integration as it evaluates its development options.

Outsourcing

The acquisition choice that requires the least in-house resources is outsourcing, which means hiring an external vendor, developer, or service provider to create or supply the system. Outsourcing has become quite popular in recent years, with both U.S. and non-U.S. (offshore) service providers available.

The term outsourcing has come to include a variety of ways to obtain IT services and products. Outsourcing firms called application service providers (ASPs) supply software applications and/or software-related services over wide area networks or the Internet. In this approach to obtaining software, the ASP hosts and manages a software application, and owns, operates, and maintains the servers that run the application. The ASP also employs the people needed to maintain the application.

Organizations wishing to use a software application contract with the ASP, who makes it available to the customer via a wide area network or the Internet, either installed on client computers or through a browser. The customer is billed by the ASP for the application either on a per-use basis or on a monthly or annual fee basis.

Software as a Service (SaaS) is a popular term that is essentially an extension of the ASP model. This term is commonly used to describe situations in which SaaS vendors develop and manage their own software rather than managing and hosting a third-party independent software vendor's software (the more traditional ASP model). Software vendor Salesforce.com was an early provider of a SaaS version of its customer relationship management (CRM) software and helped to popularize this approach to providing software solutions that are web-based and require only a browser to use.

CONCEPTS IN ACTION: 7-C FINDING JUST THE RIGHT BLEND

Welch Foods, Inc. recognized that the new ERP system being implemented did not have the same reporting capabilities as the systems that were being replaced. Key transportation operations and cost data was going to be lost. Welch's turned to a Software as a Service (SaaS) business intelligence solution to ensure continued access to old and new data. The SaaS solution was ideal because the company could not realistically manage another project or add an additional burden on its employees at the time, especially in light of the ERP implementation. The SaaS solution provided a variety of business intelligence reporting capabilities to Welch's, enabling cost savings and overall transportation operational efficiencies.

Source: Christina Torode, “SaaS BI helps boost Welch's efficiency, data retention,” SearchCIO.com, January 13, 2010.

There is an array of application service providers. Some deliver high-end business applications that can serve the entire enterprise. Some are focused more on serving a small-to medium-sized business clientele. Some ASPs specialize in specific business needs (such as CRM, for example), while some specialize in specific industries (e.g., healthcare).

Obtaining access to a software package through an application service provider has many advantages. There is a low cost of entry and, in most cases, an extremely short setup time. The pay-as-you-go model is often significantly less expensive for all but the most frequent users of the service. Investments in IT staff can be reduced, and investments in specialized IT infrastructure often can be avoided.

Outsourcing firms are also available that will develop a custom system on behalf of the customer. There can be great benefit to having others develop your system. They may be more experienced in the technology or have more resources, such as experienced programmers. Many companies embark on outsourcing deals to reduce costs, whereas others see it as an opportunity to add value to the business. For example, instead of creating a program that handles the purchasing process or buying a preexisting package, Tune Source may decide to let a Web service provider provide commercial services for them.

For whatever reason, outsourcing can be a good alternative for a new system; however, it does not come without costs. If you decide to leave the creation of a new system in the hands of someone else, you could compromise confidential information or lose control over future development. In-house professionals are not benefiting from the skills that could be learned from the project; instead, the expertise is transferred to the outside organization. Ultimately, important skills can walk right out the door at the end of the contract.

CONCEPTS IN ACTION: 7-D BUILDING A CUSTOM SYSTEM—WITH SOME HELP

I worked with a large financial institution in the southeast that suffered serious financial losses several years ago. A new chief executive officer was brought in to change the strategy of the organization to being more customer-focused. The new direction was quite innovative, and it was determined that custom systems, including a data warehouse, would have to be built to support the new strategic efforts. The problem was that the company did not have the in-house skills for these kinds of custom projects.

The company now has one of the most successful data warehouse implementations because of its willingness to use outside skills and its focus on project management. To supplement skills within the company, eight sets of external consultants, including hardware vendors, system integrators, and business strategists, were hired to take part and transfer critical skills to internal employees. An in-house project manager coordinated the data ware-house implementation full time, and her primary goals were to clearly set expectations, define responsibilities, and communicate the interdependencies that existed among the team members.

This company showed that successful custom development can be achieved even when the company may not start off with the right skills in-house. However, this kind of project is not easy to pull off—it takes a talented project manager to keep the project moving along and to transition the skills to the right people over time. Barbara Wixom

QUESTIONS:

1. What are the risks in building a custom system with-out having the right technical skills available within the organization?

2. Why did the company select a project manager from within the organization?

3. Would it have been better to hire an external professional project manager to coordinate the project? Why or why not?

FIGURE 7-3 Outsourcing Guidelines

Most risks can be addressed if you decide to outsource, but two are particularly important. First, assess the requirements for the project thoroughly—you should never outsource what you don't understand. If you have conducted rigorous planning and analysis, then you should be well aware of your needs. Second, carefully choose a vendor, developer, or service with a proven track record with the type of system and technology that your system needs.

There are three primary types of contracts that can be drawn to control the outsourcing deal. A time and arrangements deal is very flexible because you agree to pay for whatever time and expenses are needed to get the job done. Of course, this agreement could result in a large bill that exceeds initial estimates. This arrangement works best when you and the outsourcer are unclear about what it is going to take to finish the job.

You will pay no more than expected with a fixed-price contract because if the outsourcer exceeds the agreed-on price, he or she will have to absorb the costs. Outsourcers are very careful about clearly defining requirements up front, and there is little flexibility for change.

The type of contract gaining in popularity is the value-added contract, whereby the outsourcer reaps some percentage of the completed system's benefits. You have very little risk in this case but expect to share the wealth once the system is in place.

Creating fair contracts is an art because you need to carefully balance flexibility with clearly defined terms. Needs often change over time, so you don't want the contract to be so specific and rigid that alterations can't be made. Think about how quickly technology like the World Wide Web changes. It is difficult to foresee how a project may evolve over a long period. Short-term contracts leave room for reassessment if needs change or if relationships are not working out the way both parties expected. In all cases, the relationship with the outsourcer should be viewed as a partnership in which both parties benefit and communicate openly.

Managing the outsourcing relationship is a full-time job. Thus, someone needs to be assigned full time to manage the outsourcer, and the level of that person should be appropriate for the size of the job. (A multimillion-dollar outsourcing engagement should be handled by a high-level executive.) Throughout the relationship, progress should be tracked and measured against predetermined goals. If you do embark on an outsourcing design strategy, be sure to get more information. Many books have been written that provide much more detailed information on the topic. Figure 7-3 summarizes some guidelines for outsourcing.

Influences on the Acquisition Strategy

Each of the system acquisition strategies just discussed has its strengths and weaknesses, and no one strategy is inherently better than the others. Thus, it is important to understand the strengths and weaknesses of each strategy and when to use each. Figure 7-4 summarizes the project characteristics that influence the choice of acquisition strategy.

Business Need

If the business need for the system is common and technical solutions already exist in the marketplace that can fulfill the system requirements, it is usually appropriate to select a packaged software solution. Packaged systems are good alternatives for common business needs. The widespread availability and usefulness of packaged software has caused many larger companies to develop a recommended list of packaged solutions for use throughout the organization. By limiting the selection of software packages from the list of standard options, the organization is able to ensure consistency across the organizational units, streamline decision making, and ultimately reduce costs.

Packaged software is not suitable for every situation, however. A custom solution should be explored when the business need is unique, when there are especially difficult or demanding requirements that cannot be addressed successfully with a package, or when the organization is unable to change enough to adapt to the way of doing business that is embodied in a software package.

Outsourcing can be used to assist a company with custom development projects and to acquire software packages. The specialization and expertise of an outsourcing firm can be very valuable. Because outsourcing brings an outside third party into the development process, it is usually used in situations where the business need is not a critical element of company strategy. If the business need is central to the company strategy, then it is usually better for the company to retain exclusive control over the project if possible.

FIGURE 7-4 Selecting a System Acquisition Strategy

CONCEPTS IN ACTION: 7-E ELECTRONIC DATA SYSTEM'S VALUE-ADDED CONTRACT

Value-added contracts can be quite rare—and very dramatic. They exist when a vendor is paid a percentage of revenue generated by the new system, which reduces the up-front fee, sometimes to zero. The landmark deal of this type was signed several years ago by the City of Chicago and EDS (a large consulting and systems integration firm), which agreed to reengineer the process by which the city collects the fines on 3.6 million parking tickets per year. At the time, because of clogged courts and administrative problems, the city collected on only about 25% of all tickets issued. It had a $60 million backlog of uncollected tickets.

Dallas-based EDS invested an estimated $25 million in consulting and new systems in exchange for the right to up to 26% of the uncollected fines, a base processing fee for new tickets, and software rights. To date, EDS has taken in well over $50 million on the deal, analysts say. The deal has come under some fire from various quarters as an example of an organization giving away too much in a risk/reward-sharing deal. City officials, however, counter that the city has pulled in about $45 million in previously uncollected fines and has improved its collection rate to 65% with little up-front investment.

QUESTION:

Do you think the city of Chicago got a good deal from this arrangement? Why or why not?

Source: “Outsourcing? Go out on a Limb Together,” Datamation, February 1, 1999, 41(2): 58-61, by Jeff Moad.

Many organizations are using or are considering using offshore outsourcing as a way of “exporting” IT-related work to countries that have lower labor costs. Two-thirds of companies on the InformationWeek 500 list of business technology innovators say they engage in offshore IT outsourcing. Good quality IT skills are available in a number of countries, but companies considering this option in order to save money need to carefully manage the risks of this way of obtaining IT services.3

In-House Experience

If in-house experience exists for all the functional and technical needs of the system, it will be easier to build a custom application than if these skills do not exist. A packaged system may be a better alternative for companies that do not have the technical skills to build the desired system. For example, a project team that does not have Web commerce technology skills may want to acquire a Web commerce package that can be installed without many changes. Outsourcing is a good way to bring in outside experience that is missing in-house so that skilled people are in charge of building the system.

Project Skills

The skills that are applied during projects are either technical (e.g., Java, Structured Query Language [SQL]) or functional (e.g., electronic commerce), and different design alternatives are more viable, depending on how important the skills are to the company's strategy. For example, if certain functional and technical expertise that relates to Internet sales applications and Web commerce application development is important to the organization because the company expects the Internet to play an important role in sales over time, then it makes sense for the company to develop Web commerce applications in-house, using company employees so that the skills can be developed and improved. On the other hand, some skills, such as network security, may be either beyond the technical expertise of employees or not of interest to the company's strategists—it is just an operational issue that needs to be handled. In this case, packaged systems or outsourcing should be considered so that internal employees can focus on other business-critical applications and skills.

Project Management

Custom applications require excellent project management and a proven methodology. There are so many things that can push a project off track, such as funding obstacles, staffing holdups, and overly demanding business users. Therefore, the project team should choose to develop a custom application only if it is certain that the underlying coordination and control mechanisms will be in place. Packaged and outsourcing alternatives also must be managed; however, they are more shielded from internal obstacles because the external parties have their own objectives and priorities (e.g., it may be easier for an outside contractor to say no to a user than for a person within the company to do so). The latter alternatives typically have their own methodologies, which can benefit companies that do not have an appropriate methodology to use.

Time Frame

When time is a factor, the project team should probably start looking for a system that is already built and tested. In this way, the company will have a good idea of how long the package will take to put in place and what the final result will contain. Of course, this assumes that the package can be installed as-is and does not need many workarounds to integrate it into the existing business processes and technical environment. The time frame for custom applications is hard to pin down, especially when you consider how many projects end up missing important deadlines. If you must choose the custom development alternative and the time frame is very short, consider using techniques like timeboxing to manage this problem. The time to produce a system through outsourcing really depends on the system and the out-sourcer's resources. If a service provider has services in place that can be used to support the company's needs, then a business need could be met quickly. Otherwise, an outsourcing solution could take as long as a custom development initiative.

Selecting an Acquisition Strategy

Once the project team has a good understanding of how well each acquisition strategy fits with the project's needs, it must begin to understand exactly how to implement these strategies. For example, what tools and technology would be used if a custom alternative were selected? What vendors make packaged systems that address the project needs? What service providers would be able to build this system if the application were outsourced? This information can be obtained by talking to people working in the IS Department and getting recommendations from business users by contacting other companies with similar needs and investigating the types of systems that they have put in place. Vendors and consultants are usually willing to provide information about various tools and solutions in the form of brochures, product demonstrations, and information seminars.

YOUR TURN: 7-1 SELECT A DESIGN STRATEGY

Suppose that your university were interested in creating a new course registration system that could support Web-based registration.

QUESTION:

What should the university consider when determining whether to invest in a custom, packaged, or outsourced system solution?

Project teams employ several approaches to gather additional information that is needed. One helpful tool is the request for proposal (RFP), a document that solicits a formal proposal from a potential vendor, developer, or service provider. RFPs describe in detail the system or service that is needed, and vendors respond by describing in detail how they could supply those needs.

Although there is no standard way of writing an RFP, it should include certain key facts that the vendor requires, such as a detailed description of needs, any special technical needs or circumstances, evaluation criteria, procedures to follow, and timetable. In a large project, the RFP can be hundreds of pages long, since it is essential that all required project details are included.

The RFP is not just a way to gather information. Rather, it results in a vendor proposal that is a binding offer to accomplish the tasks described in the RFP. The vendor proposal includes a schedule and a price for which the work is to be per-formed. Once the winning vendor proposal is chosen, a contract for the work is entered into.

For smaller projects with smaller budgets, the request for information (RFI) may be sufficient. An RFI is a shorter, less detailed request that is sent to potential vendors to obtain general information about their products and services. Sometimes, the RFI is used to determine which vendors have the capability to perform a service. It is often then followed up with an RFP to the qualified vendors.

When a list of equipment is so complete that the vendor need only provide a price, without any analysis or description of what is needed, the request for quote (RFQ) may be used. For example, if 20 long-range RFID tag readers are needed from the manufacturer on a certain date at a certain location, the RFQ can be used. If an item is described, but a specific manufacturer's product is not named, then extensive testing will be required to verify fulfillment of the specifications.

After evaluating the acquisition strategy options and seeking additional information, the design team will likely have several viable choices to use to obtain the system. For example, the project team may find three vendors who make packaged systems that could meet the project's needs; or the team may be debating over whether to develop a system by using Visual Basic as a development tool and the database management system from Sybase; or the team may think it worthwhile to outsource the development effort to a consulting firm like Accenture or American Management Systems. Each alternative will have pros and cons associated with it that must be considered, and only one solution can be selected in the end.

Alternative Matrix

An alternative matrix can be used to organize the pros and cons of the design alternatives so that the best solution will be chosen in the end. (See Figure 7-5.) This matrix is created by the same steps as the feasibility analysis, which was presented in Chapter 1. The only difference is that the alternative matrix combines several feasibility analyses into one matrix so that the alternatives can be easily compared. The alternative matrix is a grid that contains the technical, economical, and organizational feasibilities for each system candidate, pros and cons associated with adopting each solution, and other information that is helpful when making comparisons. Sometimes, weights are provided for different parts of the matrix to show when some criteria are more important to the final decision.

To create the alternative matrix, draw a grid with the alternatives across the top and different criteria (e.g., feasibilities, pros, cons, and other miscellaneous criteria) along the side. Next, fill in the grid with detailed descriptions about each alternative. This becomes a useful document for discussion because it clearly presents the alternatives being reviewed and comparable characteristics for each one.

Sometimes, weights and scores are added to the alternative matrix to create a weighted alternative matrix that communicates the project's most important criteria and the alternatives that best address them. A scorecard is built by adding a column labeled “weight” that includes a number depicting how much each criterion matters to the final decision. Typically, analysts take 100 points and spread them out across the criteria appropriately. If five criteria were used and all mattered equally, each criterion would receive a weight of 20. However, if cost were the most important criterion for choosing an alternative, it may receive 60 points, and the other four criteria may get only 10 points each.

Then, the analysts add to the matrix a column called “Score” that communicates how well each alternative meets the criteria. Usually, number ranges like 1 to 5 or 1 to 10 are used to rate the appropriateness of the alternatives by the criteria. So, for the cost criterion, the least expensive alternative may receive a 5 on a 1-to-5 scale, whereas a costly alternative would receive a 1. Weighted scores are computed with each criterion's weight multiplied by the score it was given for each alternative. Then, the weighted scores are totaled for each alternative. The highest weighted score achieves the best match for our criteria. When numbers are used in the alternative matrix, project teams can make decisions quantitatively and on the basis of hard numbers.

FIGURE 7-5 Sample Alternative Matrix Using Weights

YOUR TURN: 7-2 WEIGHTED ALTERNATIVE MATRIX

Pretend that you have been assigned the task of selecting a CASE tool for your class to use for a semester project. Using the Web or other reference resources, select three CASE tools (e.g., Visible Analyst Workbench, Oracle Designer). Create a weighted alternative matrix that can be used to compare the three software products in the way in which a selection decision can be made. Have a classmate select the “right” tools, according to the information in your matrix.

It should be pointed out, however, that the score assigned to the criteria for each alternative is nothing more than a subjective assignment. Consequently, it is entirely possible for an analyst to skew the analysis according to his or her own biases. In other words, the weighted alternative matrix can be made to support whichever alternative you prefer and yet retains the appearance of an objective, rational analysis. To avoid the problem of a biased analysis, each analyst on the team could develop ratings independently; then, the ratings could be compared and discrepancies resolved in an open team discussion.

The final step, of course, is to decide which solution to design and implement. The approval committee should make the decision after the issues involved with the different alternatives are well understood. Remember that the line between the analysis and design is quite fuzzy. Sometimes alternatives are described and selected at the end of analysis, and sometimes this is done at the beginning of design. The bottom line is that at some point before moving into the heart of the design phase, the project team and the approval committee must understand all of the feasible ways in which the system can be created, and they must select the way that makes the most sense for the organization. The acquisition strategy selection that is made will then drive many of the remaining activities in the design phase.

Applying the Concepts at Tune Source

Jason Wells, senior systems analyst and project manager for Tune Source's Digital Music Download system, had three different approaches that he could take with the new system: He could develop the entire system, using development resources from Tune Source; he could buy a packaged software program (or a set of different packages and integrate them); or he could hire a consulting firm or service provider to create the system. Immediately, Jason ruled out the third option. Building Internet applications, especially e-commerce systems, was becoming increasingly important to the Tune Source business strategy. By outsourcing the Internet system, Tune Source would not develop Internet application development skills and business skills within the organization.

Instead, Jason decided that a custom development project using the company's standard Web development tools would be the best choice for Tune Source. In this way, the company would be developing critical technical and business skills in-house, and the project team would be able to have a high level of flexibility and control over the final product. Also, Jason wanted the new music download system to interface with the existing Internet-based CD sales system, and there was a chance that a packaged solution would not integrate as well into the Tune Source environment. Finally, Jason knew that additional features were planned for subsequent versions of this system, so he knew that having control over each version was important.

There was one part of the project that might be handled by packaged software: the purchasing portion of the application. Jason realized that a multitude of programs have been written and are available (at low prices) to handle customer transactions over the Web. These programs, called shopping-cart programs, usually allow customers to select items for an order form, input basic information, and finalize the purchase transaction. Jason believed that the project team should at least consider some of these packaged alternatives so that less time had to be spent writing a program that handled basic Web tasks and more time could be devoted to innovative marketing ideas and custom interfaces with the CD sales system.

To help better understand some of the shopping cart programs that were available in the market and how their adoption could benefit the project, Jason created a weighted alternative matrix that compared three different shopping-cart programs against one another (Figure 7-6). Although all three alternatives had positive points, Jason saw alternative 2 (WebShop) as the best alternative for handling the shopping cart functionality for the new music download system. WebShop was written in Java, the tool that Tune Source selected as its standard Web development language; the expense was reasonable, with no hidden or recurring costs; and there was an in-house person who had some positive experience with the program. Jason made a note to look into acquiring WebShop as the shopping-cart program for the Digital Music Download system.

FIGURE 7-6 Alternative Matrix for Shopping Cart Program

The Gantt Chart and PERT Chart

APPENDIX 2B PROJECT MANAGEMENT TOOLS: THE GANTT CHART AND PERT CHART

Project managers utilize several tools to help manage projects. The project work plan, discussed previously, is a critical element of managing projects. In addition, two graphical tools are widely used to understand the relationship between project tasks and to monitor progress on the project.

Gantt Chart

A Gantt chart is a horizontal bar chart that shows the same task information as the project work plan, but in a graphical way. Sometimes a picture really is worth a thousand words, and the Gantt chart can communicate the high-level status of a project much faster and easier than the work plan. Creating a Gantt chart is simple and can be done with a spreadsheet package, graphics software (e.g., Microsoft VISIO), or a project management package.

First, tasks are listed as rows in the chart, and time is listed across the top in increments based on the needs of the projects. (See Figure 2B-1). A short project may be divided into hours or days, whereas a medium-sized project may be represented in weeks or months. Horizontal bars are drawn to represent the duration of each task; the bar's beginning and end mark exactly when the task will begin and end. As people work on tasks, the appropriate bars are filled in proportionately to how much of the task is finished. Too many tasks on a Gantt chart can become confusing, so it's best to limit the number of tasks to around 20 to 30. If there are more tasks, break them down into subtasks and create Gantt charts for each level of detail.

There are many things a project manager can see by looking quickly at a Gantt chart. In addition to seeing how long tasks are and how far along they are, the project manager also can tell which tasks are sequential, which tasks occur at the same time, and which tasks overlap in some way. He or she can get a quick view of tasks that are ahead of schedule and behind schedule by drawing a vertical line on today's date. If a bar is not filled in and appears to the left of the line, that task is behind schedule.

There are a few special notations that can be placed on a Gantt chart. Project milestones are shown by upside-down triangles or diamonds. Arrows are drawn between the task bars to show task dependencies. Sometimes, the names of people assigned to each task are listed next to the task bars to show what human resources have been allocated to each task.

PERT Chart

A second graphical way to look at the project work plan information is the PERT chart, which displays the project tasks in a flowchart. (See Figure 2B-2). PERT (Program Evaluation and Review Technique) is a network analysis technique that can be used when the individual task time estimates are fairly uncertain. Instead of assigning a specific value as the duration estimate, PERT uses three time estimates: optimistic, most likely, and pessimistic. It then combines the three estimates into a single weighted average estimate using the following formula:

The PERT chart is drawn graphically with boxes (called nodes) representing each task and lines (called arcs) showing the dependency between tasks. The time estimates are shown in the nodes. Usually, the partially completed tasks are displayed with a diagonal line through the node, and completed tasks contain crossed lines.

FIGURE 2B-1 Gantt Chart

FIGURE 2B-2 PERT Chart

PERT charts are the best way to communicate task dependencies because they lay out the tasks in the order in which they need to be completed. The critical path method (CPM) allows the identification of the critical path in the network, the longest path from project inception to completion. The critical path shows all of the tasks that must be completed on schedule for the project as a whole to finish on schedule. If any of the tasks on the critical path (called critical tasks) takes longer than expected, the entire project will fall behind. CPM can be used with or without PERT.

Project management software packages like Microsoft Project enable the project manager to input the work plan once and then display the information in many different formats. You can toggle between the work plan, a Gantt chart, and a PERT chart, depending on your project management needs.

Template of System Proposal

FIGURE 3-14 Outline of the Tune Source System Proposal

Another Template of System Proposal

FIGURE 3-16 System Proposal Template

Reference

Dennis, Alan; Wixom, B.H., and Roth, R. Systems Analysis and Design, 5th Edition.

ASSIGNMENT RESOURCES 9.docx

Lecture Notes

Project Management

Created by Daniel Le

Learning objectives

1. Explain how organizations identify business needs to build information systems.

2. Recognize the importance of linking the information system to business needs.

3. Collect information to create a system request.

4. Describe technical, economic, and organizational techniques used for feasibility analysis.

5. Familiarize with techniques to perform an economic feasibility (cost-benefit) analysis.

6. Explain how projects are selected in some organizations.

7. Describe various approaches to the SDLC for structuring a development project.

8. Explain how to select a project methodology based on project characteristics.

9. Become familiar with project estimation.

10. Be able to create a project work plan.

11. Describe project staffing issues and concerns

12. Describe and apply techniques to coordinate and manage the project.

13. Explain how to manage risk on the project.

14. Describe three ways to acquire a system: custom, packaged, and outsourced alternatives.

15. Create an alternative matrix.

16. Generate and maintain an effective systems proposal.

Overview

To deliver an information system that is developed within a specified time frame, within budget, and with acceptable quality to users, systems analysts must manage the project effectively. The project management is a process of planning, scheduling, monitoring, and reporting and it is executed during the entire software development life cycle (SDLC).

The project management fundamentals describe all important project management capabilities of project managers or systems analysts. They include (1) project identification and initiation, defining the problem, (2) determining project feasibility and selecting the project, (3) creating the project plan and staffing the project, (4) managing and controlling the project, (5) analyzing and selecting a strategy to acquire the proposed system, (6) using the project management tools to manage the project, and (7) write the systems proposal.

During the system analysis phase, project managers or systems analysts gather facts about systems projects to discover information systems’ requirements which will be analyzed to build logical models of the new systems. Project managers or systems analysts conduct fact-finding using interactive methods and unobtrusive methods. The results of fact-finding will be used to build logical models of the proposed systems and to document systems’ requirements. These activities are based on techniques and tools such as data flow diagrams and data dictionaries presented in detail in later. The end product for the systems analysis phase is the system proposal. The system proposal describes management and user requirements, systems hardware and software, costs and benefits, and alternatives.

The use of project management software and techniques to schedule and monitor projects such as Gantt charts and PERT charts are introduced.

PROJECT IDENTIFICATION AND INITIATION

In an organization, a project is identified when a recognized business need could be implemented using information technology. An organization then initiates the project by analyze and evaluate its objectives and goals to propose building a new system. The project is entering its planning phase and systems analysts should put together a system request document that consists of information such as the project's sponsor, business need, business requirements, and business value. The system request document is then submitted to a management committee for approval.

FEASIBILITY ANALYSIS

The next step in the planning phase is to conduct a feasibility analysis to determine the technical, economic, and organizational feasibility of the system.

The technical feasibility focuses on whether the system can be designed, implemented, and installed based on available organization resources, on availability of current technology, on compatibility with existing systems, and on the size of the project.

The economic feasibility analyses cost versus benefit to decide whether the system should be built or not. The analysis covers development costs, operational costs, tangible benefits, and intangible costs and benefits. The project manager or systems analyst should be familiar the following cost-benefit analysis techniques to perform an economic feasibility analysis.

· Cash Flow Analysis and Measures
· Return on Investment
· Break-Even Point
· Discounted Cash Flow Technique
· Net Present Value (NPV)
· Identify Costs and Benefits
· Assign Values to Costs and Benefits

Finally, the organizational feasibility analysis assesses how well the system will be accepted by its users and incorporated into the ongoing operations of the organization.

PROJECT SELECTION

When the feasibility analysis is completed and submitted back to the approval committee along with a revised system request, the committee then decides whether to approve or reject the project. Note that the project selection process takes into account all of the projects in the organization.

Once a project has been selected, the project manager or systems analyst plans the project by selecting a project methodology, creating the project work plan, identifying project-staffing requirements, and preparing to manage and control the project. During this time, several project management deliverables are produced including the work plan, staffing plan, standards list, project charter, and risk assessment.

CREATING THE PROJECT PLAN

Several project methodologies that can be used to structure a development project are as follows:

· Waterfall development and its variations: parallel development and the V-model

· Rapid application development (RAD), including iterative development, system prototyping, and throwaway prototyping

· Agile development, including extreme programming, Scrum, and others.

In order to select the most appropriate methodology to use for the project, project managers or systems analysts evaluate the following project characteristics:

· clarity of user requirements

· familiarity with technology

· complexity

· reliability

· time frame

· schedule visibility

The project manager or systems analyst then estimates the time frame for the project and identifies tasks needed to complete the project. The function-point analysis technique can be used to estimate the project time and a work breakdown structure (WBS) is used to keep track of all tasks along with their durations, dependencies, and statuses.

Next, the project manager or systems analyst creates the project work plan that is based on all tasks listed in the WBS and associated project resources (such as people assigned to perform tasks, the actual hours that the tasks took, and the variances between estimated and actual completion times.)

STAFFING THE PROJECT

The project staffing includes the following activities: determining how many people should be assigned to the project, matching people's skills with the needs of the project, motivating them to meet the project's objectives, and minimizing project team conflict that will occur over time. All of these activities are arranged and recorded in a deliverable for the project called a staffing plan.

MANAGING AND CONTROLLING THE PROJECT

Once the project begins, the project managers or systems analysts monitor the progress of the team on the project tasks. They can use the project management tools such as the Gantt chart and PERT chart to evaluate project progress and redirect resources, if necessary. In addition, they should avoid or minimize scope creep or feature creep getting into the schedule, know how to use techniques such as timeboxing to deal with shortened time frames, and be able to access and manage the project risks.

SYSTEM ACQUISITION STRATEGIES

During the design phase, the project team must come up with an approach to acquire the proposed system. There are three primary approaches that can be select to create the new system and they include custom development, buying packaged software, or outsourcing. Each of these three choices has its strengths and weaknesses and each could selected based on characteristics of the project.

INFLUENCES ON THE ACQUISITION STRATEGY

In general, each of the acquisition strategies just discussed in the above has its strengths and weaknesses. Therefore, it is important to take into account in the selection process other organization features and resources. They are the uniqueness of “business need” for the system the amount of “in-house experience” that is available to build the system, the importance of the “project skills” to the company, the existence of “good project management” and the “amount of time available” to develop the application.

SELECTING AN ACQUISITION STRATEGY

To make a decision on a specific acquisition strategy for the system, the project manager or systems analyst could use an alternative matrix that presents feasibility information for several candidate solutions in a way for easy comparison.

PROJECT MANAGEMENT TOOLS

Project managers utilize several tools to help manage projects. The Gantt chart and PERT chart are two graphical tools that project managers or systems analysts are widely used to understand the relationship between project tasks and to monitor progress on the project.

· A Gantt chart shows activities over a period of time and it is appropriate when planning activities that are done in sequence

· A PERT chart shows the order of precedence and it can be used to determine slack time and identify the critical path (the longest path through the activities).

THE SYSTEMS PROPOSAL

Documentation is a major means of communication during the entire SDLC and it should be considered as an integral part of the various phases of the life cycle. The end product for the systems analysis phase is the system proposal and it is one important document of systems documentation that project managers or systems analysts must generate and maintain.

References

1. Alan Dennis, Barbara Haley Wixom, and Roberta M. Roth (2012). System Analysis and Design, Fifth Edition, John Wiley & Sons.

2. Alan Dennis, Barbara Haley Wixom, and David Tegarden (2012). Systems Analysis and Design with UML, 4th Edition, John Wiley & Sons.

Disclaimer: Some articles or sites I select or refer you to may include materials or opinions associated with particular political or other ideological positions. My pointing to these sites in no way suggests that I am encouraging a particular ideology or position on this or any other related topic; these are simply some of the more interesting and informative sites I have found to cover the topic(s) at hand. As always, you must consider the source when reading any materials that may reflect a particular ideological point of view on an issue.

ASSIGNMENT RESOURCES 10.docx

Information Systems Analysis, Modeling, and Design

Lecture Notes

System Analysis and Development Methodologies

Created by Daniel Le

Learning objectives

1. Types of computer-based information systems that a systems analyst needs to address.

2. Understand how new technologies affect the traditional information systems.

3. Recognize the many roles of the systems analyst in build information systems

4. Recognize the Human-Computer Interaction (HCI) factors during all phases of SDLC.

5. Understand the fundamentals of several development methodologies including SDLC, the agile approach, the object-oriented systems analysis and design, the Unified Modeling Language, and the Unified Process.

6. Learn what CASE tools are and how they help a systems analyst.

About this course

This course, ITEC 630, Information Systems Analysis, Modeling, and Design, is one of the core courses in University of Maryland Global Campus’ degree, Master of Science in Information Technology. In this course, we will study systems analysis and design by exploring all topics related to analyzing, designing, implementing, and maintaining information systems.

Information is considered as a key resource for a business and, with the rapid expansion and utilization of the Internet and World Wide Web technology, the amount of information requested for accessing, analyzing, modifying, and storage is increasing. Therefore, it is important to manage information correctly in a systematic way using information systems. The goal of this course is to teach students all major aspects of information systems analysis and design: (1) systems analysis fundamentals, (2) information requirements analysis, (3) the analysis process, (4) the essentials of design, and (5) software engineering and implementation.

In order to help students understand the course material, we have created a weekly “Class Discussion” section in the Conference area to discuss topics mentioned in the current session. To apply knowledge learned from this course to reality, we have an “Individual Project” assignment to allow students have hands-on experience in the design of real information systems. In addition, we have a “Group Project” assignment so students could explore further topics covered in this course and learn to work well in groups.

Overview

This week lecture introduces systems analysis and development methodologies by first defining the term “system”, identifying the system concepts and analyzing the flow of information within organizations. It then presents an overview of a variety of information systems that systems analysts might be involved in developing and maintaining. This week lecture points out the roles of systems analysts, briefly discusses the systematic approach – systems development life cycle (SDLC) – and productivity software tools – Computer-Aided Software Engineering (CASE) tools – used by systems analysts in working with the analysis, design, implementation, and maintenance of information systems. Other important systems analysis and design concepts are covered including Human-Computer Interaction (HCI) factors during phases of SDLC, integration of new technologies into traditional systems, and alternatives to structured analysis and design and to the SDLC

COMPUTER-BASED INFORMATION SYSTEMS

Information is a key resource for a business, so it must be organized systematically and managed correctly and carefully to help businesses make decisions, using information systems. Currently, there are six types of information systems arranged in three levels of management that system analysts might develop:

A. Lower management

1. Transaction processing systems (TPS)

B. Middle management

2. Management information systems (MIS)

C. Top management

3. Decision support systems (DSS)

4. Executive support systems (ESS)

D. All levels

5. Office automation systems (OAS)

6. Expert system or knowledge-based system

INTEGRATING TECHNOLOGIES FOR SYSTEMS

As more and more organizations are using Web applications and web-based technologies are developing and improving, the systems analysts should be aware of the affects of these new technologies to all systems users and the traditional information systems. They should be prepared to learn, adapt, and integrate the new technologies with the traditional information systems. Some technologies are being integrated into traditional systems as follows.

ROLES OF THE SYSTEMS ANALYST

In an organization, system analysts study the problems, gather the requirements, design and implement information systems to improve the organization's businesses and they usually have to communicate with all people involved with the systems (owners, users, designers, builders, etc.). Therefore, they must possess many skills and knowledge in order to build working systems and work well with others.

SYSTEMS DEVELOPMENT LIFE CYCLE

The systems analysts may work with information systems using a systematic approach called the systems development life cycle (SDLC). There are four fundamental phases of the SDLC.

1. Planning

2. Analysis

3. Design

4. Implementation

HUMAN-COMPUTER INTERACTION (HCI) FACTORS AND SDLC

Since user involvement is recognized as a critical success factor in the development of information system, the Human-Computer Interaction (HCI) factors should be considered in all phases of the SDLC. In reality, HCI factor plays a very important role starting from the beginning to the end in designing and building information systems today.

In the past, solving systems problems and completing tasks are the most important things and human needs were not the main concern even though the systems were built for human operations. As an example, after the systems have been built, users usually were brought in for system evaluation regarding user interface. Since users were not involved in many parts of the SDLC, the user interface usually was not user-friendly that made the systems hard to use. Fixing user interface problems at this stage is more expensive and it required a lot of code change that might create problems in other areas of the systems. By focusing on human needs, analysts get users involved early in the SDLC processes and they could identify and fix user interface problems in the early stages with much less effort and less expensive.

ALTERNATE APPROACHES TO THE SDLC

The structured analysis and design with the SDLC is not the only systematic approach to solving business problems. Alternate methodologies to the traditional SDLC include the agile approach and the object-oriented analysis design. Object-oriented analysis (OOA) and object-oriented design (OOD) based on the Unified Modeling Language (UML) could be used to build object-oriented information systems that can adapt quickly to dynamic business environments. The agile approach is similar to iterative prototyping that can respond quickly to changing requirements and, as a result, it is a preferred methodology for many Web-based information systems development projects.

TOOLS FOR SYSTEM ANALYSTS

In order to help systems analysts in their routine work, productivity tools called CASE (Computer-Aided Software Engineering) tools are used. The CASE tools would help systems analysts increase their productivities, improve the project management, and facilitate communication among users and systems analysts.

Other tools include project management tools such as Microsoft Project and modeling tools such as Microsoft Visio.

References

1. http://melody.syr.edu/hci/amcis04/AMCIS_04_Zhang_etal_HCI_in_SDLC.pdf

2. http://www.youtube.com

3. Alan Dennis, Barbara Haley Wixom, and David Tegarden (2012). Systems Analysis and Design with UML, 4th Edition, John Wiley & Sons.

4. Alan Dennis, Barbara Haley Wixom, and Roberta M. Roth (2012). System Analysis and Design, Fifth Edition, John Wiley & Sons.

5. J.B. Dixit and Raj Kumar (2007). Structured System Analysis and Design, Laxmi Publications

6. Bob Flisser (2015). iOS 9 iPhone First Look: Main Features.

7. Raul Sidnei Wazlawick (2014). Object-Oriented Analysis and Design for Information Systems, Morgan Kaufmann.

Disclaimer: Some articles or sites I select or refer you to may include materials or opinions associated with particular political or other ideological positions. My pointing to these sites in no way suggests that I am encouraging a particular ideology or position on this or any other related topic; these are simply some of the more interesting and informative sites I have found to cover the topic(s) at hand. As always, you must consider the source when reading any materials that may reflect a particular ideological point of view on an issue.

ASSIGNMENT RESOURCES 11.docx

W1.Safari.References

Ctrl+Click the following links to go to their place in this document

· Four Fundamental Phases of the SDLC

· Object-Oriented Systems Analysis and Design (OOSAD)

· Unified Modeling Language (UML)

· Unified Process (UP)

Four Fundamental Phases of the SDLC

THE SYSTEMS DEVELOPMENT LIFE CYCLE

In many ways, building an information system is similar to building a house. First, the owner describes the vision for the house to the developer. Second, this idea is transformed into sketches and drawings that are shown to the owner and refined (often, through several drawings, each improving on the other) until the owner agrees that the pictures depict what he or she wants. Third, a set of detailed blue prints is developed that presents much more specific information about the house (e.g., the layout of rooms, placement of plumbing fixtures and electrical outlets, and so on). Finally, the house is built following the blueprints—and often with some changes and decisions made by the owner as the house is erected.

FIGURE 1-1 Career Paths for System Developers

Building an information system using the SDLC follows a similar set of four fundamental phases: planning, analysis, design, and implementation (Figure 1-2). Each phase is itself composed of a series of steps, which rely on techniques that produce deliverables (specific documents and files that explain various elements of the system). Figure 1-3 provides more detail on the steps, techniques, and deliverables that are included in each phase of the SDLC and outlines how these topics are covered in this textbook.

Figures 1-2 and 1-3 suggest that the SDLC phases proceed in a logical path from start to finish. In some projects, this is true. In many projects, however, the project team moves through the steps consecutively, incrementally, iteratively, or in other patterns. Different projects may emphasize different parts of the SDLC or approach the SDLC phases in different ways, but all projects have elements of these four phases.

FIGURE 1-2 The Systems Development Life Cycle

FIGURE 1-3 Systems Development Life Cycle Phases

For now, there are two important points to understand about the SDLC. First, you should get a general sense of the phases and steps that IS projects move through and some of the techniques that produce certain deliverables. In this section, we provide an overview of the phases, steps, and some of the techniques that are used to accomplish the steps. Second, it is important to understand that the SDLC is a process of gradual refinement. The deliverables produced in the analysis phase provide a general idea what the new system will do. These deliverables are used as input to the design phase, which then refines them to produce a set of deliverables that describes in much more detailed terms exactly how the system should be built. These deliverables in turn are used in the implementation phase to guide the creation of the actual system. Each phase refines and elaborates on the work done previously.

Planning

The planning phase is the fundamental process of understanding why an information system should be built and determining how the project team will go about building it. It has two steps:

1. During project initiation, the system's business value to the organization is identified—how will it lower costs or increase revenues? Most ideas for new systems come from outside the IS area (from the marketing department, accounting department, etc.) in the form of a system request. A system request presents a brief summary of a business need, and it explains how a system that supports the need will create business value. The IS department works together with the person or department generating the request (called the project sponsor) to conduct a feasibility analysis. The feasibility analysis examines key aspects of the proposed project:

· The technical feasibility (Can we build it?)

· The economic feasibility (Will it provide business value?)

· The organizational feasibility (If we build it, will it be used?)

The system request and feasibility analysis are presented to an information systems approval committee (sometimes called a steering committee), which decides whether the project should be undertaken.

2. Once the project is approved, it enters project management. During project management, the project manager creates a work plan, staffs the project, and puts techniques in place to help the project team control and direct the project through the entire SDLC. The deliverable for project management is a project plan that describes how the project team will go about developing the system.

Analysis

The analysis phase answers the questions of who will use the system, what the system will do, and where and when it will be used. (See Figure 1-3.) During this phase, the project team investigates any current system(s), identifies improvement opportunities, and develops a concept for the new system. This phase has three steps:

1. An analysis strategy is developed to guide the project team's efforts. Such a strategy usually includes a study of the current system (called the as-is system) and its problems, and envisioning ways to design a new system (called the to-be system).

2. The next step is requirements gathering (e.g., through interviews, group workshops, or questionnaires). The analysis of this information—in conjunction with input from the project sponsor and many other people—leads to the development of a concept for a new system. The system concept is then used as a basis to develop a set of business analysis models that describes how the business will operate if the new system were developed. The set typically includes models that represent the data and processes necessary to support the underlying business process.

3. The analyses, system concept, and models are combined into a document called the system proposal, which is presented to the project sponsor and other key decision makers (e.g., members of the approval committee) who will decide whether the project should continue to move forward.

The system proposal is the initial deliverable that describes what business requirements the new system should meet. Because it is really the first step in the design of the new system, some experts argue that it is inappropriate to use the term analysis as the name for this phase; some argue a better name would be analysis and initial design. Because most organizations continue to use the name analysis for this phase, we will use it in this book as well. It is important to remember, however, that the deliverable from the analysis phase is both an analysis and a high-level initial design for the new system.

Design

The design phase decides how the system will operate in terms of the hardware, software, and network infrastructure that will be in place; the user interface, forms, and reports that will be used; and the specific programs, databases, and files that will be needed. Although most of the strategic decisions about the system are made in the development of the system concept during the analysis phase, the steps in the design phase determine exactly how the system will operate. The design phase has four steps:

1. The design strategy must be determined. This clarifies whether the system will be developed by the company's own programmers, whether its development will be outsourced to another firm(usually a consulting firm), or whether the company will buy an existing software package.

2. This leads to the development of the basic architecture design for the system that describes the hardware, software, and network infrastructure that will be used. In most cases, the system will add to or change the infrastructure that already exists in the organization. The interface design specifies how the users will move through the system (e.g., by navigation methods such as menus and on-screen buttons) and the forms and reports that the system will use.

3. The database and file specifications are developed. These define exactly what data will be stored and where they will be stored.

4. The analyst team develops the program design, which defines the programs that need to be written and exactly what each program will do.

This collection of deliverables (architecture design, interface design, database and file specifications, and program design) is the system specification that is used by the programming team for implementation. At the end of the design phase, the feasibility analysis and project plan are reexamined and revised, and another decision is made by the project sponsor and approval committee about whether to terminate the project or continue. (See Figure 1-3.)

Implementation

The final phase in the SDLC is the implementation phase, during which the system is actually built (or purchased, in the case of a packaged software design and installed). This is the phase that usually gets the most attention, because for most systems it is the longest and most expensive single part of the development process. This phase has three steps:

1. System construction is the first step. The system is built and tested to ensure that it performs as designed. Since the cost of fixing bugs can be immense, testing is one of the most critical steps in implementation. Most organizations spend more time and attention on testing than on writing the programs in the first place.

2. The system is installed. Installation is the process by which the old system is turned off and the new one is turned on. There are several approaches that may be used to convert from the old to the new system. One of the most important aspects of conversion is the training plan, used to teach users how to use the new system and help manage the changes caused by the new system.

3. The analyst team establishes a support plan for the system. This plan usually includes a formal or informal post-implementation review, as well as a systematic way for identifying major and minor changes needed for the system.

Object-Oriented Systems Analysis and Design (OOSAD)

Object-oriented approaches to developing information systems, technically speaking, can use any of the traditional methodologies. However, the object-oriented approaches are most associated with a phased development RAD or agile methodology. The primary difference between a traditional approach like structured design and an object-oriented approach is how a problem is decomposed. In traditional approaches, the problem-decomposition process is either process-centric or data-centric. However, processes and data are so closely related that it is difficult to pick one or the other as the primary focus. Based on this lack of congruence with the real world, new object-oriented methodologies have emerged that use the RAD-based sequence of SDLC phases but attempt to balance the emphasis between process and data by focusing the decomposition of problems on objects that contain both data and processes.

According to the creators of the Unified Modeling Language (UML), Grady Booch, Ivar Jacobson, and James Rumbaugh, any modern object-oriented approach to developing information systems must be use-case driven, architecture-centric, and iterative and incremental.

Use-Case Driven

Use-case driven means that use cases are the primary modeling tools defining the behavior of the system. A use case describes how the user interacts with the system to perform some activity, such as placing an order, making a reservation, or searching for information. The use cases are used to identify and to communicate the requirements for the system to the programmers who must write the system. Use cases are inherently simple because they focus on only one business process at a time. In contrast, the process model diagrams used by traditional structured and RAD methodologies are far more complex because they require the systems analyst and user to develop models of the entire system. With traditional methodologies, each system is decomposed into a set of subsystems, which are, in turn, decomposed into further subsystems, and so on. This goes on until no further process decomposition makes sense, and it often requires dozens of pages of interlocking diagrams. In contrast, a use case focuses on only one business process at a time, so developing models is much simpler.

Architecture-centric

Any modern approach to systems analysis and design should be architecture-centric. Architecture-centric means that the underlying software architecture of the evolving system specification drives the specification, construction, and documentation of the system. Modern object-oriented systems analysis and design approaches should support at least three separate but interrelated architectural views of a system: functional, static, and dynamic. The functional, or external, view describes the behavior of the system from the perspective of the user. The structural, or static, view describes the system in terms of attributes, methods, classes, and relationships. The behavioral, or dynamic, view describes the behavior of the system in terms of messages passed among objects and state changes within an object.

Iterative and Incremental

Modern object-oriented systems analysis and design approaches emphasize iterative and incremental development that undergoes continuous testing and refinement throughout the life of the project. This implies that the systems analysts develop their understanding of a user's problem by building up the three architectural views little by little. The systems analyst does this by working with the user to create a functional representation of the system under study. Next, the analyst attempts to build a structural representation of the evolving system. Using the structural representation of the system, the analyst distributes the functionality of the system over the evolving structure to create a behavioral representation of the evolving system. As an analyst works with the user in developing the three architectural views of the evolving system, the analyst iterates over each of and among the views. That is, as the analyst better understands the structural and behavioral views, the analyst uncovers missing requirements or misrepresentations in the functional view. This, in turn, can cause changes to be cascaded back through the structural and behavioral views. All three architectural views of the system are interlinked and dependent on each other (see Figure 1-16). As each increment and iteration is completed, a more-complete representation of the user's real functional requirements is uncovered.

Benefits of Object-Oriented Systems Analysis and Design

Concepts in the object-oriented approach enable analysts to break a complex system into smaller, more-manageable modules, work on the modules individually, and easily piece the modules back together to form an information system. This modularity makes systems development easier to grasp, easier to share among members of a project team, and easier to communicate to users, who are needed to provide requirements and confirm how well the system meets the requirements throughout the systems development process. By modularizing systems development, the project team actually is creating reusable pieces that can be plugged into other systems efforts or used as starting points for other projects. Ultimately, this can save time because new projects don't have to start completely from scratch.

FIGURE 1-16 Iterative and Incremental Development

Many people argue that “object-think” is a much more realistic way to think about the real world. Users typically do not think in terms of data or process; instead, they see their business as a collection of logical units that contain both, so communicating in terms of objects improves the interaction between a user and an analyst or developer.

Unified Modeling Language (UML)

Some developers believe that UML is a methodology, maybe because of the “M” in the acronym. However, that is not true: UML means Unified Modeling Language, and it is therefore a language that can be used to describe things.

Knowing a language does not necessarily imply the ability to produce useful artifacts. For example, English is a language, but someone who knows how to speak English does not necessarily know how to write good poetry or how to make good speeches. Besides the language syntax, there are knowledge and techniques of best practices that greatly help poets and speakers to place the elements of the language in an order and structure that is adequate to produce the expected results.

The UML language has been under development since James Rumbaugh and Grady Booch joined forces at Rational Software and started to unify their already well-known diagrammatic notations and processes. Later, Ivar Jacobson joined the group and added his use cases and other notations to the unified language that was under development.

UML is constantly being revised and currently has the following three families of diagrams:

• Structure diagrams: Includes package, class, objects, composite structure, component, profile, and deployment diagrams. They are used to define what must be implemented in the system in terms of components. They are useful to specify the part of the system architecture that is time independent.

• Behavior diagrams: Includes use case, activity, and state machine diagrams. They emphasize what must happen in the system or business process. They are used to describe the functionality of the system.

• Interaction diagrams: Includes communication, sequence, timing, and interaction overview diagrams. These are a subset of behavior diagrams and describe the control flow between different components of the system.

Not every diagram must be used during the development of a system. Only those that represent useful information for the project are recommended. This book emphasizes the use of the activity, machine state, use case, sequence, communication, and class diagrams for modeling information systems. However, other diagrams can be useful depending on the features of the system being modeled.

Unified Process (UP)

The techniques presented in this book are compatible with the Unified Process, which is heavily based (although not necessarily) on UML.

UP was also proposed by the three amigos, Grady Booch, James Rumbaugh, and Ivar Jacobson as the result of their extensive experience.

This process is based in the following principles:

• Use case driven: The development is planned and organized over a list of use cases.

• Architecture centered: The development process leads to the construction of a system architecture that allows the implementation of the requirements. That architecture is based on the identification of a structure that is iteratively built from a conceptual model.

• Iterative and incremental: Development is divided into iterations or development cycles. At each iteration, new features are added to the system architecture, or corrected/refined, leaving it more complete and closer to the final desired system.

• Risk oriented: The elements of greater risk for a project are addressed early. For instance, critical use cases are identified, detailed, and implemented before the others.

UP includes in its disciplines the main activities related to software development. Those activities have different levels or emphasis during the four major UP phases: Inception, Elaboration, Construction, and Transition (Figure 1.1). Although sequential in time, those phases must not be confused with the waterfall phases. In the waterfall model, requirements specification must be completed before design, design must be completed before construction, and so on. In UP, requirements specification, design, construction, and other activities are performed in all phases with different emphasis.

Figure 1.1 The emphasis of the different disciplines during the four phases of the Rational Unified Process (RUP®).

Inception is the first phase of UP, in which the main requirements are discovered and the extension of the system is understood. The output of this phase usually consists of a preliminary conceptual model; a requirements document, usually in the form of a list of high-level use cases and supplementary specifications (Section 3.5.8); and a development schedule based on the use case. Additionally, a list of high-importance risks and their mitigation plans may be created, as well as other plans attending the special needs of the project. But those aspects are out of the scope of this book, which will concentrate on modeling techniques, not management. Only iteration planning based on high-level use cases is presented in detail.

The Elaboration phase includes a more detailed requirements analysis, which is performed by expanding the use cases, that is, writing the sequence of steps that characterizes each of their possible flows. The conceptual model is refined after each use case is expanded. Depending on the priority of the use cases, it is expected that the number of changes applied to the software architecture decreases as the project proceeds during Elaboration.

During the Construction phase most of the code production and test activities are performed. It is expected that the Elaboration phase produces an architecture sufficiently stable so that its refactoring will be minimized during this phase.

The Transition phase consists typically of the final tests and the delivery of the system to its users including possibly its installation and data migration. During this phase, the system will be deployed, possibly replacing an existing system (manual or automatic).

The Elaboration and Construction phases are performed in iterations. An iteration may have as an objective developing one or more use cases, implementing change requests, or mitigating selected risks. During an iteration, use cases are expanded and the information learned from them is incrementally incorporated in the product. It is expected that the Elaboration phase deals with the major risks of the system, as well as with the more complex or risky use cases that affect the system architecture significantly. On the other hand, the Construction phase concentrates on producing code for the whole application and implementing change requests.

UP is usually understood as a prescriptive process. But it may also be performed as an agile method, with few artifacts. Two popular agile implementations of UP are AUP and OpenUP. An agile process is one that prioritizes:6

• People and iterations over tools and processes.

• Working software over comprehensive documentation.

• Customer collaboration over contract negotiation.

• Responding to change over following a plan.

In order to obtain such agility, all documentation must be directed to software production. Each activity performed by the developer must have a very clear goal and a precise use, aiming always toward the production of code that meets the requirements in the best way possible and in the shortest reasonable time. Software is designed with two goals in mind: understanding client needs, and producing a viable solution to those needs. In order to help people adequately communicate their needs and solutions, different artifacts, such as diagrams, may be created; diagrams are more useful when they allow code to be automatically generated from them.

Reference

Dennis, Alan; Wixom, B.H., and Tegarden, D. Systems Analysis and Design with UML, 4th Edition.