程序代写代做代考 Excel flex 17spm_L01

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