SE is not like other projects.SE is not like other projects.
The project is intangible. There is no standardized solution
process. New projects may have little or no
relationship to completed projects. Rapid changes in technology
often makes the "experience" learned from other projects non-transferable.
Successful software Successful software requiresrequires that we understand:that we understand:
the scope of the work to be done
the risks to be incurred the resources to be needed the tasks to be accomplished the milestones to be tracked the effort (cost) to be expended the schedule to be followed
Successful software Successful software requiresrequires that we understand:that we understand:
the scope of the work to be done
the risks to be incurred the resources to be needed the tasks to be accomplished the milestones to be tracked the effort (cost) to be expended the schedule to be followed
Project Objectives Project Objectives - identify - identify the overall goals of the project the overall goals of the project without considering how these without considering how these
goals will be achievedgoals will be achieved
Project Size Project Size (Scope) - identifies (Scope) - identifies the primary functions that the primary functions that software is to accomplishsoftware is to accomplish
Formalize Software Formalize Software RequirementsRequirements
It is unreasonable to expect a Software Engineer to estimate the amount of work required to build “something” before that “something” has been
defined.
Adapted from Code Complete
How can the size of a project be How can the size of a project be estimated?estimated? Use scheduling software Use an algorithmic approach such as
COCOMO Hire an expert to do the estimation Use previous project experience as a
guideline
Adapted from Code Complete
How can the size of a project be How can the size of a project be estimated?estimated? Have team members carefully discuss
the schedule Estimate project pieces and add the
parts together Estimate the time available for the entire
project and divide it among the parts Estimate, see what actually happens and
adjust
Adapted from Code Complete
Effort Estimates can include:Effort Estimates can include:
estimates of required human effort
(person-months) estimates of project duration
(calendar time) estimates of the cost of the project
(in dollars)
Estimate pieces of the Estimate pieces of the project and project and
add the parts together!add the parts together!
Project Time Project Time In Work HoursIn Work Hours
Actual Time Required
Project Estimation
Project Progress in Milestones1 2 3 4 5 6 7
Adapted from Code Complete
IF - enough TIME is available,IF - enough TIME is available, A problem CAN be properly analyzed, A solution CAN be comprehensively
designed, Source code CAN be carefully
implemented, and The program CAN be thoroughly tested
BUT -- there never is enough
SE involves significant time SE involves significant time pressure.pressure. Part of the pressure comes from
arbitrary and sometimes unrealistic deadlines established by those who do not have to build the product!
But, Part of the pressure is created by the people involved!
WHY is there TIME pressure?WHY is there TIME pressure?
In most cases: Projects are planned and
scheduled in a haphazardly. Risks, if at all, are considered as
they happen! – Crisis Management
People aren't organized effectively!
Every software project has a Every software project has a schedule,schedule,
BUT not all schedules are created equal--
Two views to scheduling a Two views to scheduling a project:project:
1) An end date is set in advance and cannot be changed (Management decision)
2) Schedule is roughly set by the primary players
Poor scheduling CAN--Poor scheduling CAN--
reduce market impact create dissatisfied customers raise internal costs by creating
additional problems during system integration
Scheduling IssuesScheduling Issues
How do we balance chronological time with human effort?
What tasks and parallelisms are to be expected?
What milestones can be used to show progress?
"...if we fall behind "...if we fall behind schedule we can always schedule we can always add more programmers add more programmers
and catch up later in and catch up later in the project."the project."
Management often believes:
Adding people to a Adding people to a late project only late project only makes it later!!!makes it later!!!
WHY???
If If 1 cat can catch 1 mouse in 1
hourThen
2 cats might be able to catch 1 mouse in 30 minutes
Then Can? 60 cats catch the mouse in 1
minute?
CommunicationCommunication
New people have to learn the project form the existing team members.
The time lost in teaching the new people is time away from the project.
The more people in a group, the more complex the communication, the less that gets done in the same amount of time.
Benefits can be gained by:Benefits can be gained by:
Using fewer people over a longer period of time span
When more than one person is involved in a SE project try to complete tasks in parallel
Why does a project fall Why does a project fall behind?behind?
What kinds of things What kinds of things influence a project’s influence a project’s
schedule?schedule?
Influences on ScheduleInfluences on Schedule
Team motivation Management quality Amount of code reuse Personnel Turnover Requirements volatility
Adapted from Code Complete
Influences on ScheduleInfluences on Schedule
Quality of relationship with customer
User participation in requirements Classified security environment Amount of documentation Experiences-level of Team
Adapted from Code Complete
Factors that Influence Factors that Influence Software Software Project EffortProject Effort Reliability required
Database size Project complexity Execution time required Volatility of Operating System Turnaround time on development
computer Analyst team capability Team’s experience in application areaAdapted from Code Complete
Factors that Influence Factors that Influence Software Software Project EffortProject Effort Programmer team capability
Programmers’ experience with underlying hardware and software
Team’s programming language experience
Use of modern programming practices Use of software tools Required development schedule
Adapted from Code Complete
Effort should be divided as Effort should be divided as follows:follows:
Project planning = 2-3% Requirements analysis = 10-25% Software design = 20-25%
If the above time is spent then
Coding = 15-20% Testing/debugging could = 30-
40%
Project tracking-- Project tracking-- How are we doing?How are we doing?
"Software Projects fall behind schedule one day at a time."
How do we know if we're on How do we know if we're on track?track? Conduct periodic project status
meetings in which each team member reports on progress and problems.
Evaluate the results of all reviews conducted throughout the SE process.
How do we know if we're on How do we know if we're on track?track? Determine whether formal
project milestones have been accomplished by the scheduled date.
Compare the actual start date to the planned start date for each project task.