Risk Identification

 

If you don't ask for risk information, you are asking for trouble.

 
 --Tom Gilb

The first step in managing risks is to identify the factors that pose a risk to your schedule. Three general risks to any rapid-development project are overlooking the first three pillars of rapid development, which were described in Chapter 2, Chapter 2:

Once you get past these general risks, you'll find almost as many different risks as there are software projects. Some risks appear again and again, however, and one of the easiest ways to identify risks is to check your project against a list of schedule risks. The next subsection describes the most common schedule risks. The subsection after that provides an exhaustive list of possible schedule risks.

Most Common Schedule Risks

Table 5-2 lists the most common schedule risks.

image with no caption

Table 5-2. Most Common Schedule Risks

Sources: Adapted from Software Risk Management (Boehm 1989) and Assessment and Control of Software Risks (Jones 1994).

  1. Feature creep

  2. Requirements or developer gold-plating

  3. Shortchanged quality

  4. Overly optimistic schedules

  5. Inadequate design

  6. Silver-bullet syndrome

  7. Research-oriented development

  8. Weak personnel

  9. Contractor failure

  10. Friction between developers and customers

If you think the risks in this table look familiar, it's because each of them were also presented as classic mistakes in Chapter 3. The only difference between a classic mistake and a risk is that the classic mistake has been made more often. Risks can be less common or unique to your project. Each of the risks listed in Table 5-2 is described in more detail in Classic Mistakes Enumerated, Classic Mistakes Enumerated, and means of controlling them are described later in this chapter, in Table 5-6.

Complete List of Schedule Risks

Table 5-3 contains an exhaustive list of risks that can adversely affect a software schedule. Only a few of the risks will apply to most projects. The risks are organized by loose categories but otherwise are in no particular order. If the list seems overwhelming, you can concentrate on the most common risks, listed in the preceding subsection.

In addition to the lists presented in this table, most projects have risks that are unique to the specific project: "Joe's going to quit unless he can start bringing his dog to work, and management hasn't decided yet whether to let Bowser come to the office." You'll have to identify those risks yourself.

Table 5-3. Potential Schedule Risks

Sources: Principles of Software Engineering Management (Gilb 1988), Software Risk Management (Boehm 1989), A Manager's Guide to Software Engineering (Pressman 1993), Third Wave Project Management (Thomsett 1993), and Assessment and Control of Software Risks (Jones 1994).

Schedule creation

Schedule, resources, and product definition have all been dictated by the customer or upper management and are not in balance

Schedule is optimistic, "best case" (rather than realistic, "expected case")

Schedule omits necessary tasks

Schedule was based on the use of specific team members, but those team members were not available

Cannot build a product of the size specified in the time allocated

Product is larger than estimated (in lines of code, function points, or percentage of previous project's size)

Effort is greater than estimated (per line of code, function point, module, etc.)

Reestimation in response to schedule slips is overly optimistic or ignores project history

Excessive schedule pressure reduces productivity

Target date is moved up with no corresponding adjustment to the product scope or available resources

A delay in one task causes cascading delays in dependent tasks

Unfamiliar areas of the product take more time than expected to design and implement

Organization and management

Project lacks an effective top-management sponsor

Project languishes too long in fuzzy front end

Layoffs and cutbacks reduce team's capacity

Management or marketing insists on technical decisions that lengthen the schedule

Inefficient team structure reduces productivity

Management review/decision cycle is slower than expected

Budget cuts upset project plans

Management makes decisions that reduce the development team's motivation

Nontechnical third-party tasks take longer than expected (budget approval, equipment purchase approval, legal reviews, security clearances, etc.)

Planning is too poor to support the desired development speed

Project plans are abandoned under pressure, resulting in chaotic, inefficient development

Management places more emphasis on heroics than accurate status reporting, which undercuts its ability to detect and correct problems

Development environment

Facilities are not available on time

Facilities are available but inadequate (e.g., no phones, network wiring, furniture, office supplies, etc.)

Facilities are crowded, noisy, or disruptive

Development tools are not in place by the desired time

Development tools do not work as expected; developers need time to create workarounds or to switch to new tools

Development tools are not chosen based on their technical merits and do not provide the planned productivity

Learning curve for new development tool is longer or steeper than expected

End-users

End-user insists on new requirements

End-user ultimately finds product to be unsatisfactory, requiring redesign and rework

End-user does not buy into the project and consequently does not provide needed support

End-user input is not solicited, so product ultimately fails to meet user expectations and must be reworked

Customer

Customer insists on new requirements

Customer review/decision cycles for plans, prototypes, and specifications are slower than expected

Customer will not participate in review cycles for plans, prototypes, and specifications or is incapable of doing so—resulting in unstable requirements and time-consuming changes

Customer communication time (e.g., time to answer requirements-clarification questions) is slower than expected

Customer insists on technical decisions that lengthen the schedule

Customer micro-manages the development process, resulting in slower progress than planned

Customer-furnished components are a poor match for the product under development, resulting in extra design and integration work

Customer-furnished components are poor quality, resulting in extra testing, design, and integration work and in extra customer-relationship management

Customer-mandated support tools and environments are incompatible, have poor performance, or have inadequate functionality, resulting in reduced productivity

Customer will not accept the software as delivered even though it meets all specifications

Customer has expectations for development speed that developers cannot meet

Contractors

Contractor does not deliver components when promised

Contractor delivers components of unacceptably low quality, and time must be added to improve quality

Contractor does not buy into the project and consequently does not provide the level of performance needed

Requirements

Requirements have been baselined but continue to change

Requirements are poorly defined, and further definition expands the scope of the project

Additional requirements are added

Vaguely specified areas of the product are more time-consuming than expected

Product

Error-prone modules require more testing, design, and implementation work than expected

Unacceptably low quality requires more testing, design, and implementation work to correct than expected

Pushing the computer science state-of-the-art in one or more areas lengthens the schedule unpredictably

Development of the wrong software functions requires redesign and implementation

Development of the wrong user interface results in redesign and implementation

Development of extra software functions that are not required (gold-plating) extends the schedule

Meeting product's size or speed constraints requires more time than expected, including time for redesign and reimplementation

Strict requirements for compatibility with existing system require more testing, design, and implementation than expected

Requirements for interfacing with other systems, other complex systems, or other systems that are not under the team's control result in unforeseen design, implementation, and testing

Requirement to operate under multiple operating systems takes longer to satisfy than expected

Operation in an unfamiliar or unproved software environment causes unforeseen problems

Operation in an unfamiliar or unproved hardware environment causes unforeseen problems

Development of a kind of component that is brand new to the organization takes longer than expected

Dependency on a technology that is still under development lengthens the schedule

External environment

Product depends on government regulations, which change unexpectedly

Product depends on draft technical standards, which change unexpectedly

Personnel

Hiring takes longer than expected

Task prerequisites (e.g., training, completion of other projects, acquisition of work permit) cannot be completed on time

Poor relationships between developers and management slow decision making and follow through

Team members do not buy into the project and consequently do not provide the level of performance needed

Low motivation and morale reduce productivity

Lack of needed specialization increases defects and rework

Personnel need extra time to learn unfamiliar software tools or environment

Personnel need extra time to learn unfamiliar hardware environment

Personnel need extra time to learn unfamiliar programming language

Contract personnel leave before project is complete

Permanent employees leave before project is complete

New development personnel are added late in the project, and additional training and communications overhead reduces existing team members' effectiveness

Team members do not work together efficiently

Conflicts between team members result in poor communication, poor designs, interface errors, and extra rework

Problem team members are not removed from the team, damaging overall team motivation

The personnel most qualified to work on the project are not available for the project

The personnel most qualified to work on the project are available for the project but are not used for political or other reasons

Personnel with critical skills needed for the project cannot be found

Key personnel are available only part time

Not enough personnel are available for the project

People's assignments do not match their strengths

Personnel work slower than expected

Sabotage by project management results in inefficient scheduling and ineffective planning

Sabotage by technical personnel results in lost work or poor quality and requires rework

Design and Implementation

Overly simple design fails to address major issues and leads to redesign and reimplementation

Overly complicated design requires unnecessary and unproductive implementation overhead

Poor design leads to redesign and reimplementation

Use of unfamiliar methodology results in extra training time and in rework to fix first-time misuses of the methodology

Product is implemented in a low-level language (e.g., assembler), and productivity is lower than expected

Necessary functionality cannot be implemented using the selected code or class libraries; developers must switch to new libraries or custom-build the necessary functionality

Code or class libraries have poor quality, causing extra testing, defect correction, and rework

Schedule savings from productivity enhancing tools are overestimated

Components developed separately cannot be integrated easily, requiring redesign and rework

Process

Amount of paperwork results in slower progress than expected

Inaccurate progress tracking results in not knowing the project is behind schedule until late in the project

Upstream quality-assurance activities are shortchanged, resulting in time-consuming rework downstream

Inaccurate quality tracking results in not knowing about quality problems that affect the schedule until late in the project

Too little formality (lack of adherence to software policies and standards) results in miscommunications, quality problems, and rework

Too much formality (bureaucratic adherence to software policies and standards) results in unnecessary, time-consuming overhead

Management-level progress reporting takes more developer time than expected

Half-hearted risk management fails to detect major project risks

Software project risk management takes more time than expected

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

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