CP5046 - Week 1 Part 1 - Student Preparation - Introduction To Software Engineering
CP5046 - Week 1 Part 1 - Student Preparation - Introduction To Software Engineering
jcu.edu.au
Topics
• What is software?
• How successful are software projects?
• What is software engineering?
jcu.edu.au
Lord Kelvin’s thoughts
from 100+ years ago
“… when you can measure what you are speaking about, and
express it in numbers, you know something about it;
but when you cannot measure it, when you cannot express it
in numbers, your knowledge is of a meagre and
unsatisfactory kind;
jcu.edu.au
The term “software” has lots of meanings in
different contexts
• In the world of IT, a simple definition of “software” is: “a computer
program and its associated resources and documentation”
jcu.edu.au
There are many types of computer software
• Stand-alone applications
• Run on a local computer, such as a PC. They include all necessary functionality
and do not need to be connected to a network.
• Entertainment systems
• Are primarily for personal use and which are intended to entertain the user.
• Simulations
• Developed by scientists and engineers to model physical processes or
situations, which include many, separate, interacting objects.
jcu.edu.au
There are many types of computer software
• Data collection software
• These collect data from their environment using a set of sensors and send
that data to other software for processing.
• Systems of systems
• These are systems that are composed of a number of other software systems.
jcu.edu.au
Generally speaking, computer software is
either “as-advertised” or “made-to-order”:
• “as-advertised” (aka “generic”)
• Stand-alone software marketed and sold to any customer wishing to buy it
• Examples – PC software such as graphics programs, project management
tools; CAD software; software for specific markets such as appointments
systems for dentists
Software should not make wasteful use of system resources such as memory and
Efficiency processor cycles. Efficiency therefore includes responsiveness, processing time,
memory utilisation, etc.
Software must be acceptable to the type of users for which it is designed. This
Acceptability means that it must be understandable, usable and compatible with other
systems that they use.
jcu.edu.au
How important is computer software to our
society?
• The economies of all developed nations are dependent on software –
most government systems are software controlled
jcu.edu.au
Creating computer software costs time and
money
• Software production costs often dominate computer hardware costs
• For software with a long life, maintenance costs may be several times
development costs
jcu.edu.au
Unfortunately,
software projects are
not always successful
Where “success” means:
• delivered on time + within budget +
satisfactory result
Why is that?
jcu.edu.au
Why do professional software projects fail?
• The desire for bigger and more complex capabilities
• Technologies previously thought impossible are now possible - faster CPUs,
powerful GPUs – enable augmented reality, artificial intelligence
jcu.edu.au
There are many examples of software project
failure…
https://en.wikipedia.org/wiki/List_of_failed_and_overbudget_custom_
software_projects
jcu.edu.au
Notable Case Study – the
FBI Sentinel project
Traditional software development process targeting 30,000 users (FBI
agents, analysts and admin workers)
jcu.edu.au
Notable Case Study – the FBI
Sentinel project
New CIO decided to try Agile methods,
proposed to finish project in 1 year
The FBI was able to complete Sentinel for $30 million dollars
within 12-months, a cost savings of more than 90 percent.
jcu.edu.au 18
The latest information from the Standish Group seems to indicate that the
ability of software engineering to further reduce failure rates has stagnated
For more insights, check out: CHAOS Report 2020 sneak peek
jcu.edu.au
Okay, let’s leave that thought, and talk about
what software engineering actually is…
jcu.edu.au
Software engineering is an engineering
discipline
jcu.edu.au
It takes time and skill to apply software
engineering successfully
• From initial meetings with the customer, all the way to maintaining
software over many years
jcu.edu.au
Software engineering is very important
• Modern society relies on advanced software systems
jcu.edu.au
Here are some principles of software
engineering that are fundamental:
• Software should be developed using a managed and well-understood
development process
jcu.edu.au
Frequently asked questions about software engineering
Question Answer
Computer games are created as a series of
prototypes; safety critical hospital software
What are the best techniques require complete and detailed specifications.
and methods used in software
engineering? There is no single “best” technique or method…
jcu.edu.au
Frequently asked questions about software engineering
Question Answer
jcu.edu.au
Let’s talk about what is means to be a
software engineer...
jcu.edu.au
A software engineer has responsibilities beyond
producing software using their technical skills…
• Ethical behaviour is more than simply upholding the law but involves
following a set of principles that are morally correct
jcu.edu.au
Codes of Ethics
jcu.edu.au
Here are some common principles of
professional responsibility
• Confidentiality
• Respect the confidentiality of employers or clients irrespective of
whether or not a formal confidentiality agreement has been signed
• Competence
• Do not knowingly accept work which is beyond your abilities
jcu.edu.au
Here are some common principles of
professional responsibility
• Intellectual property rights
• Be aware of local laws governing the use of intellectual property such
as patents, copyright
• Be careful to ensure that the intellectual property of employers and
clients is protected
• Computer misuse
• Do not use technical skills to misuse other people’s computers
• E.g. game playing on an employer’s machine, dissemination of viruses
jcu.edu.au
Software engineers commit themselves to making
software engineering a respected profession
jcu.edu.au
Key points
• There are many different types of software and each requires
appropriate software engineering tools and techniques for their
development.
• The fundamental ideas of software engineering are applicable to all
types of software system.
• Software engineers have responsibilities to the engineering profession
and society. They should not simply be concerned with technical
issues.
• Professional societies publish codes of conduct which set out the
standards of behaviour expected of their members.
jcu.edu.au
In the long run, when professionals work on
software…
jcu.edu.au