Lec1 PDF
Lec1 PDF
Lec1 PDF
Lecture 1
What is software?
Intervals
Costs Shrinking
Up Market
Expectations
Up
Complexity
Up Stockholders : ROI
Revenues Customers: Value
Down Users : Functionality & Quality
A project is a temporary
endeavour undertaken
to create a unique product,
service, or result
• Customer-focused
1-17
General Project Characteristics (1/2)
• Ad-hoc endeavors with a clear life cycle
1-18
General Project Characteristics (2/2)
• Entail crossing functional and organization boundaries
1-19
Why are Projects Important?
1-20
Project Life Cycles
Man Hours
1-21
Project Life Cycles and Their Effects
Client Interest
Project Stake
Resources
Creativity
Uncertainty
1-22
Determinants of Project Success
Client
Budget Acceptance
Success
Schedule Performance
1-23
Six Criteria for Software Project
Success
• System quality
• Information quality
• Use
• User satisfaction
• Individual Impact
• Organizational impact
1-24
Four Dimensions of Software Project
Success
Importance
4
Preparing for
The Future
3
Business
2 Success
1 Impact on
Project Customer
Efficiency
Project Time
Completion
1-25
What are Subprojects?
Subprojects are comprised of project team members and are headed by subproject
managers who, similar to the project manager, must have excellent decision-making,
communication and other requisite skills, and be in a position to manage the
implementation of the subproject work effectively and efficiently.
What is a Programme?
Afforestation
E X AMP LE S
A programme is basically a group Primary Education Promotion
of related projects managed in Electrification
a coordinated way to obtain
benefits and control not Immunization
available from managing them
OF
Poverty Alleviation
individually
Privatization
P ROGRAMME S
Space Exploration
Project A Project D
Urban Regeneration
Programme
Project B Project E Water Resource Development
X
Weaponization
Project C Project F
Programmes & Projects: Similarities
ü Programmes and projects have goals and objectives which define their
purpose of existence
1-31
Software Project Properties
• The product is intangible.
– Its hard to claim a bridge is 90% complete if there
is not 90% of the bridge there. It is easy to claim
that a software project is 90% complete, even if
there are no visible outcomes.
• We don’t have much experience.
– Software engineering is a new discipline, and so
we simply don’t have much understanding of how
to engineer large scale software projects.
Software Project Properties (Cont’d)
• Large software projects are often
“bespoke”(tailored).
– Most large software systems are one-off, with
experience gained in one project being of little
help in another.
• The technology changes very quickly.
– Most large software projects employ new
technology; for many projects, this is the raison
d’etre.
Software Project Management
• Software project management is the art and
science of planning and leading software
projects. It is a sub-discipline of project
management in which software projects are
planned, implemented, monitored and
controlled.
Software Project Management
38
Why do software projects fail?
• The team has an unrealistic idea about how
much work is involved.
– From far away, most complex problems seem
simple to solve
– Teams can commit to impossible deadlines by
being overly optimistic and not thinking through
the work
– Few people realize the deadline is optimistic until
it’s blown
39
Why do software projects fail?
• Defects are injected early but discovered late.
– Projects can address the wrong needs
– Requirements can specify incorrect behavior
– Design, architecture and code can be technically flawed
– Test plans can miss functionality
– The later these problems are found, the more likely they
are to cause the project to fail
40
Why do software projects fail?
• Programmers have poor habits – and they don’t feel
accountable for their work.
– Programmers don’t have good control of their source code
– Code written by one person is often difficult for another
person to understand
– Programmers don’t test their code, which makes
diagnosing and fixing bugs more expensive
– The team does not have a good sense of the overall health
of the project.
41
Why do software projects fail?
• Managers try to test quality into the software.
– Everyone assumes that the testers will catch all of the
defects that were injected throughout the project.
– When testers look for defects, managers tell them they are
wasting time.
– When testers find defects, programmers are antagonized
because they feel that they are being personally criticized.
– When testers miss defects, everyone blames them for not
being perfect.
42
How can we make sure that our projects
succeed?
• Make sure all decisions are based on openly shared
information
– It’s important to create a culture of transparency, where
everyone who needs information knows where to find it
and is comfortable looking at it.
– All project documents, schedules, estimates, plans and
other work products should be shared with the entire
team, managers, stakeholders, users and anyone else in
the organization who wants them.
– Major decisions that are made about the project should be
well-supported and explained.
43
How can we make sure that our projects
succeed?
• Don’t second-guess your team members’
expertise
– Managers need to trust team members.
– Just because a manager has responsibility for a
project’s success, it doesn’t mean that he’s more
qualified to make decisions than the team
members.
– If you don’t have a good reason to veto an idea,
don’t.
44
How can we make sure that our projects
succeed?
• Introduce software quality from the very
beginning of the project
– Review everything, test everything.
– Use reviews to find defects – but don’t expect the
review to be perfect.
– Use reviews to gain a real commitment from the
team.
– It’s always faster in the long run to hold a review
than it is to skip it.
45
How can we make sure that our projects
succeed?
• Don’t impose an artificial hierarchy on the project
team
– All software engineers were created equal.
– A manager should not assume that programming is more
difficult or technical than design, testing or requirements
engineering.
– Managers should definitely not assume that the
programmer is always right, or the tester is always raising
false alarms.
46
How can we make sure that our projects
succeed?
• Remember that the fastest way through the project
is to use good engineering practices
– Managers and teams often want to cut important tasks –
especially estimation, reviews, requirements gathering and
testing.
– If it were faster to build the software without these
practices, we would never use them.
– Every one of these practices is about saving time and
increasing quality by planning well and finding defects
early. Cutting them out will cost time and reduce quality.
47
How can we make sure that our
projects succeed?
• Project Managers should show the impacts of
theirs decision to senior managers since:
– Decisions are frequently made based on gut
feelings instead of objective analysis.
– The people making decisions about the project
need to understand the details.
– Show senior managers that improving project
management practices will help them meet their
goals.