Site MapHelpFeedbackChapter Summary
Chapter Summary
(See related pages)

Overview

The chapter describes the process of building and monitoring schedules for software development projects. To build complex software systems, many engineering tasks need to occur in parallel with one another to complete the project on time. The output from one task often determines when another may begin. It is difficult to ensure that a team is working on the most appropriate tasks without building a detailed schedule and sticking to it.

Root Causes for Late Software
  • Unrealistic deadline established outside the team
  • Changing customer requirements not reflected in schedule changes
  • Underestimating the resources required to complete the project
  • Risks that were not considered when project began
  • Technical difficulties that have not been predicted in advance
  • Human difficulties that have not been predicted in advance
  • Miscommunication among project staff resulting in delays
  • Failure by project management to recognize project falling behind schedule and failure to take corrective action to correct problems
How to Deal With Unrealistic Schedule Demands
  1. Perform a detailed project estimate for project effort and duration using historical data.
  2. Use an incremental process model that will deliver critical functionality imposed by deadline, but delay other requested functionality.
  3. Meet with the customer and explain why the deadline is unrealistic using your estimates based on prior team performance.
  4. Offer an incremental development and delivery strategy as an alternative to increasing resources or allowing the schedule to slip beyond the deadline.
Project Scheduling Perspectives
  • One view is that the end-date for the software release is set externally and that the software organization is constrained to distribute effort in the prescribed time frame.
  • Another view is that the rough chronological bounds have been discussed by the developers and customers, but the end-date is best set by the developer after carefully considering how to best use the resources needed to meet the customer's needs.
Software Project Scheduling Principles
  • Compartmentalization - the product and process must be decomposed into a manageable number of activities and tasks
  • Interdependency - tasks that can be completed in parallel must be separated from those that must completed serially
  • Time allocation - every task has start and completion dates that take the task interdependencies into account
  • Effort validation - project manager must ensure that on any given day there are enough staff members assigned to complete the tasks within the time estimated in the project plan
  • Defined Responsibilities - every scheduled task needs to be assigned to a specific team member
  • Defined outcomes - every task in the schedule needs to have a defined outcome (usually a work product or deliverable)
  • Defined milestones - a milestone is accomplished when one or more work products from an engineering task have passed quality review
Relationship Between People and Effort
  • Adding people to a project after it is behind schedule often causes the schedule to slip further
  • The relationship between the number of people on a project and overall productivity is not linear (e.g., 3 people do not produce 3 times the work of 1 person, if the people have to work in cooperation with one another)
  • The main reasons for using more than 1 person on a project are to get the job done more rapidly and to improve software quality.
Project Effort Distribution
  • The 40-20-40 rule (a rule of thumb):
    • 40% front-end analysis and design
    • 20% coding
    • 40% back-end testing
  • Generally accepted guidelines are:
    • 02-03 % planning
    • 10-25 % requirements analysis
    • 20-25 % design
    • 15-20 % coding
    • 30-40 % testing and debugging
Software Project Types
  1. Concept development - initiated to explore new business concept or new application of technology
  2. New application development - new product requested by customer
  3. Application enhancement - major modifications to function, performance, or interfaces (observable to user)
  4. Application maintenance - correcting, adapting, or extending existing software (not immediately obvious to user)
  5. Reengineering - rebuilding all (or part) of a legacy system
Factors Affecting Task Set
  • Size of project
  • Number of potential users
  • Mission criticality
  • Application longevity
  • Requirement stability
  • Ease of customer/developer communication
  • Maturity of applicable technology
  • Performance constraints
  • Embedded/non-embedded characteristics
  • Project staffing
  • Reengineering factors
Concept Development Tasks
  • Concept scoping - determine overall project scope
  • Preliminary concept planning - establishes development team's ability to undertake the proposed work
  • Technology risk assessment - evaluates the risk associated with the technology implied by the software scope
  • Proof of concept - demonstrates the feasibility of the technology in the software context
  • Concept implementation - concept represented in a form that can be used to sell it to the customer
  • Customer reaction to concept - solicits feedback on new technology from customer
Scheduling
  • Task networks (activity networks) are graphic representations that can be of the task interdependencies and can help define a rough schedule for particular project
  • Scheduling tools should be used to schedule any non-trivial project.
  • PERT (program evaluation and review technique) and CPM (critical path method) are quantitative techniques that allow software planners to identify the chain of dependent tasks in the project work breakdown structure that determine the project duration time.
  • Timeline (Gantt) charts enable software planners to determine what tasks will be need to be conducted at a given point in time (based on estimates for effort, start time, and duration for each task).
  • The best indicator of progress is the completion and successful review of a defined software work product.
  • Time-boxing is the practice of deciding a priori the fixed amount of time that can be spent on each task. When the task's time limit is exceeded, development moves on to the next task (with the hope that a majority of the critical work was completed before time ran out).
Tracking Project Schedules
  • Periodic status meetings
  • Evaluation of results of all work product reviews
  • Comparing actual milestone completion dates to scheduled dates
  • Comparing actual project task start-dates to scheduled start-dates
  • Informal meeting with practitioners to have them assess subjectively progress to date and future problems
  • Use earned value analysis to assess progress quantitatively
Tracking Increment Progress for OO Projects
  • Technical milestone: OO analysis complete
    • All hierarchy classes defined and reviewed
    • Class attributes and operations are defined and reviewed
    • Class relationships defined and reviewed
    • Behavioral model defined and reviewed
    • Reusable classed identified
  • Technical milestone: OO design complete
    • Subsystems defined and reviewed
    • Classes allocated to subsystems and reviewed
    • Task allocation has been established and reviewed
    • Responsibilities and collaborations have been identified
    • Attributes and operations have been designed and reviewed
    • Communication model has been created and reviewed
  • Technical milestone: OO programming complete
    • Each new design model class has been implemented
    • Classes extracted from the reuse library have been implemented
    • Prototype or increment has been built
  • Technical milestone: OO testing complete
    • The correctness and completeness of the OOA and OOD models has been reviewed
    • Class-responsibility-collaboration network has been developed and reviewed
    • Test cases are designed and class-level tests have been conducted for each class
    • Test cases are designed, cluster testing is completed, and classes have been integrated
    • System level tests are complete
Earned Value Analysis
  • Earned value is a quantitative measure given to each task as a percent of project completed so far.
    1. The total hours to complete each project task are estimated
    2. The effort to complete the project is computed by summing the effort to complete each task
    3. Each task is given an earned value based on its estimated percentage contribution to the total.







PressmanOnline Learning Center

Home > Chapter 24 > Chapter Summary