CSCI 630 - Software Engineering
Software Project Scheduling
- Do
you believe in Magic?
- 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

- dealing with unrealistic schedule demands...
- Perform a detailed project estimate for project effort and duration
using historical data.
- Use an incremental process model that will deliver critical functionality
imposed by deadline, but delay other requested functionality.
- Meet with the customer and explain why the deadline is unrealistic
using your estimates based on prior team performance.
- Offer an incremental development and delivery strategy as an alternative
to increasing resources or allowing the schedule to slip beyond the
deadline.
- Software Project Scheduling Principles

- 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
- the Putnam-Norden-Rayleigh (PNR) Curve relates time spent with
effort cost
- note: The Software Equation was derived from this curve
- The 40-20-40 Rule (a rule of thumb)

- Getting started...

- software project types
- concept development - initiated to explore new business concept
or new application of technology
- new application development - new product requested by customer
- application enhancement - major modifications to function, performance,
or interfaces (observable to user)
- application maintenance - correcting, adapting, or extending existing
software (not immediately obvious to user)
- 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
- Example
- major tasks for a concept development project
- 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
- task refinement
- Project Scheduling
- task networks (activity networks)
- are graphic representations of the task interdependencies
- can help define a rough schedule for particular project
- Program
Evaluation and Review Technique (PERT) Charts and Critical Path
Method (CPM) - also called PERT/CPM
- quantitative techniques
- allow software planners to
- identify the chain of dependent tasks in the project work breakdown
structure
- determine the project duration time.
- Gantt
Charts
- enable software planners to determine what tasks will be need to
be conducted at a given point in time
- are based on estimates for effort, start time, and duration for
each task
- scheduling tools should be used to schedule any non-trivial project
- pretty
examples from SmartDraw.com (not free but you can get a 30 day
evaluation)
- Microsoft Visio can be used with Microsoft Project (widely used)
- Google will turn up lots of products
- Time-boxing
- 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
- techniques used for tracking include
- 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
- The best indicator of progress is the completion and successful review
of a defined software work product.
- Example - Tracking Increment Progress for OO Projects
Notes and figures from:
- Software Engineering: A Practitioner's Approach, 6th Edition, by Roger S
Pressman, R.S. Pressman & Associates, McGraw-Hill, 2005