17spm_L01
Software Project Management
SPM 2017 © Ron Poet Lecture 1 1
Introduction
Why do Some Computer Systems Fail to
Work as Expected
� We have all heard of computing systems that fail at
enormous expense.
o NHS Records System
o Radar for the Nimrod aircraft
SPM 2017 © Ron Poet Lecture 1 2
o Radar for the Nimrod aircraft
o The Heartbleed bug in OpenSSL
� Smaller scale projects fail all the time, in a less visible
manner. It is often said that 80% of computer systems fail
in some way.
� Most modern software needs to be updated regularly to fix
bugs.
o Security failures.
Incorrect Code
� A bug in the code used to be a relatively rare cause of
failure.
� The Heartbleed bug was a coding error, but inadequate
management let it be added to OpenSSL.management let it be added to OpenSSL.
� Most software seems to work well.
o But needs regular updates.
� The most common form of failure is building the wrong
system.
o It is difficult to find out customer requirements.
o This becomes more of a challenge the larger the system
being built.
SPM 2017 © Ron Poet Lecture 1 3
The Nature of Software
� Software consists of instructions on how to manipulate
information.
o It is very flexible. There are a large number of different
ways in which information can be processed.ways in which information can be processed.
o Contrast this with other aspects of engineering such as
building a consumer device. The number of physical
controls are limited (e.g. Microwave)
� Duplication of an existing piece of software is very cheap.
o Contrast this with the mass production of a car.
� The major expense in producing software is in the design
process, not the mass production.
SPM 2017 © Ron Poet Lecture 1 4
Software Creation
� Most of the work in the software industry is design, not
manufacturing.
� This is labour intensive and is a craft activity.
� It is very difficult to automate the process of software � It is very difficult to automate the process of software
creation.
o Like automating other design activity.
o It is possible to produce better tools that help the
designer.
� The cost of producing software is largely independent of
the number of copies sold.
o It is a high risk activity.
SPM 2017 © Ron Poet Lecture 1 5
Software Complexity
� Most software is very complex
� It is difficult to understand exactly how it works.
� It is relatively easy to modify.
� It is relatively easy to create software that appears to work.� It is relatively easy to create software that appears to work.
� It is hard to demonstrate that software does everything that
it should do.
� The main way is by testing using different input values.
o There are so many possible input values.
o It is impossible to test all of them.
SPM 2017 © Ron Poet Lecture 1 6
Estimating Work Involved
� It is difficult to say in advance how much work it will take
to build a particular piece of software.
� In many cases you will have to quote a price before you
start work on the software.start work on the software.
o When you know the least about how long it will take.
� The first 90% of the work takes the first 90% of the time.
� The second 90% of the work takes the remaining 90% of
the time.
� Fortunately, most customers realise that there will be
uncertainty.
o Quote your lowest price and increase it later.
SPM 2017 © Ron Poet Lecture 1 7
Software Rot
� Software does not wear out.
� Bugs are found after it is released.
o User experience.
o Continued testing.o Continued testing.
� The underlying operating system and supporting programs
change.
� Corrections are made.
o The consistency of the design deteriorates.
o New defects are introduced.
� Eventually the software stops working.
o Exception FormatIO!
SPM 2017 © Ron Poet Lecture 1 8
Techniques for Creating Software
� It is possible to get small pieces software to work using
almost any approach.
� As the size of software gets larger, most ways of
developing software don’t scale up.developing software don’t scale up.
o The software reaches an ‘almost working’ state, where
it stays.
� It becomes impossible to understand and change.
� Software Project management and Software Engineering
teach a process that scales up.
SPM 2017 © Ron Poet Lecture 1 9
Time To Market
� In a competitive market
� The first company to get a new piece of software to market
gets most of the sales.
� The company with the ‘best’ software may not make any � The company with the ‘best’ software may not make any
money if it is late to market.
� Software has to be ‘good enough’.
� The ‘best’ is the enemy of the ‘good enough’
� Many bugs will still need to be fixed after a product is
sold.
o The patch cycle.
SPM 2017 © Ron Poet Lecture 1 10
Types of Software
� Custom
o Developed to solve a specific problem.
o Air traffic control system.
� Generic� Generic
o Developed to solve many different problems.
o Word processor
� Embedded
o Runs hardware devices.
o Camera
o Cars
SPM 2017 © Ron Poet Lecture 1 11
Software Engineering
� Solving customers’ problems
� Systematic development� Systematic development
� Large high quality systems
� Within cost, time and other constraints.
SPM 2017 © Ron Poet Lecture 1 12
Solving Customers’ Problems
� The customer will decide what needs to be done.
o Avoid unnecessary features.
o Find out what the customers really want / need.
� Would it be more cost effective to buy existing software.� Would it be more cost effective to buy existing software.
� Would it be more cost effective not to develop the
software.
� It is a human activity and needs interaction with non-
technical people.
SPM 2017 © Ron Poet Lecture 1 13
Systematic Development
� Use well understood techniques.
o Object oriented design with UML.
� Apply a disciplined approach.
� Continue developing software after it is delivered.� Continue developing software after it is delivered.
� Use a precise language to interact with non technical
people.
o Natural language is often ambiguous.
SPM 2017 © Ron Poet Lecture 1 14
Large High Quality System
� A single highly skilled programmer can keep track of and
understand about:
o 50,000 lines of code written in an object oriented style.
o 10,000 lines of code in a non-object oriented style.o 10,000 lines of code in a non-object oriented style.
� Many systems are larger than this and need a team of
developers.
� Need a consistent approach to documentation and coding
style.
SPM 2017 © Ron Poet Lecture 1 15
Teaching in University
� It is hard to teach this in university.
� You can do all of the exercises using a ‘bad’ technique
because they are not large enough to need a good
approach.approach.
� Use our approach because it will work when you get a job.
SPM 2017 © Ron Poet Lecture 1 16
Within Cost, Time and Other Constraints
� Someone will be paying your wages and needs to earn that
money, and more, from what you do.
� It is not worth doing something if it won’t earn enough
money.money.
� If someone else is cheaper or faster then they will make the
money, rather than us.
� Create a budget and a plan.
� Monitor if you are sticking to the plan.
� Meet planned milestones.
� Check that the customer is satisfied.
SPM 2017 © Ron Poet Lecture 1 17
Stakeholders
� Users
o They will use the software to do more interesting things
� Customers
o They pay for the softwareo They pay for the software
o They often employ users
� Developers
o Create the software
� Managers
o Keep the customer satisfied
o Make the most money
SPM 2017 © Ron Poet Lecture 1 18
External Software Quality
� Usability
o Learnability, efficiency of use, error handling
� Efficiency
o CPU, memory, disk space, network bandwidtho CPU, memory, disk space, network bandwidth
� Reliability
� Maintainability
� Reusability
o Many different applications
� Can’t be excellent at all of these. Will have to make
tradeoffs.
SPM 2017 © Ron Poet Lecture 1 19
Internal Software Quality
� Not noticed by the customer!
� Effects Maintainability
� Amount of commenting in the code
o More important as programs get biggero More important as programs get bigger
o The person trying to understand your code in a years
time may well be you!
� Complexity of the code
o Use the object oriented style to stop complexity
spreading throughout the code.
o Make individual code segments less complex.
SPM 2017 © Ron Poet Lecture 1 20
Different Types of Software Engineering
Projects
� Greenfield Project
o Start from scratch
o Not constrained by previous bad decisions
o Don’t have to understand code written by others.o Don’t have to understand code written by others.
o Common in university software courses.
o Relatively rare in industry
� Evolutionary Project
o Fix defects
o Add features
o Adapt to changing environments
SPM 2017 © Ron Poet Lecture 1 21
Building a Framework
� Software reuse across projects will save money
� Most projects are different, specific to individual
customers
� There will be common components across different � There will be common components across different
projects.
� Creating a library of common components or a framework
will pay off in the future
o But they cost more now.
� It is an internal project
� Money comes from customer projects
SPM 2017 © Ron Poet Lecture 1 22