0% found this document useful (0 votes)
22 views

CP5046 - Week 1 Part 1 - Student Preparation - Introduction To Software Engineering

chapter

Uploaded by

shailamaria01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views

CP5046 - Week 1 Part 1 - Student Preparation - Introduction To Software Engineering

chapter

Uploaded by

shailamaria01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 37

CP5046: Week One

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;

it may be the beginning of knowledge, but you have scarcely


in your thoughts advanced to the state of Science, whatever
the matter may be. ”

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”

In other contexts, it has related meanings:


• A recipe is a kind of software for describing how to cook a meal
• Legislation is a kind of software for describing how to govern people

There are many more:


• Kit-building, Assembly instructions, Driving directions, …
jcu.edu.au
Software can’t be touched
and has no physical form,
but is often used to manage
physical things

• E.g. recipes are intended to


specify the preparation and
management of food items

• E.g. computer software is


intended to solve real-world
problems by managing real-world
data and people.

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.

• Interactive transaction-based applications


• They execute on a remote computer and are accessed by users from their
own PCs or terminals. These include web applications such as e-commerce
applications.

• Embedded control systems


• They control and manage hardware devices. Numerically, there are probably
more embedded systems than any other type of system.
jcu.edu.au
There are many types of computer software
• Batch processing systems
• These are business systems designed to process data in large batches. They
turn the data information and useful knowledge.

• 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

• “made-to-order” (aka “customized”)


• Software that is commissioned by a specific customer to meet their own
needs.
• Examples – embedded control systems, air traffic control software, traffic
monitoring systems, government financial systems, …
jcu.edu.au
Who decides the purpose of computer
software?
• “as-advertised” (aka “generic”)
• What the software should do is owned by the software developer, so they
decide what it should be and how it should change over time

• “made-to-order” (aka “customized”)


• What the software should do is owned by the customer, so they decide what
it should be and how it should change over time

• CP5046 students are encouraged to work on “made-to-order”


software
jcu.edu.au
What attributes makes computer software
“good”?
Attribute What it means
Software should be written in such a way so that it can evolve to meet the
Maintainability changing needs of customers. This is a critical attribute because software change
is an inevitable requirement of a changing business environment.

Software dependability includes a range of characteristics including reliability,


Dependability security and safety. Dependable software should not cause physical or economic
damage in the event of system failure. Malicious users should not be able to
and security access or damage the system.

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

• Expenditure on software represents a significant fraction of GNP in all


developed countries

jcu.edu.au
Creating computer software costs time and
money
• Software production costs often dominate computer hardware costs

• Software costs more to maintain than it does to develop

• 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

• So, only about 34% of all software


projects over the last 20 years were
successful, worldwide!

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

• Failure to use software engineering well enough


• Many companies drifted into software development as their products and
services are digitized
• Their software is often more expensive and less reliable than it should be

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)

Expected to be developed in 4 phases - began in March 2006 and


scheduled to be deployed in 2009

By 2010 the project had only delivered the first two

Nearly all the projected funds had been spent

The project had major delays and cost-overruns

jcu.edu.au
Notable Case Study – the FBI
Sentinel project
New CIO decided to try Agile methods,
proposed to finish project in 1 year

By November 2011, within a year of restarting with the new


approach, all phases of Sentinel had been completed

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

Even though software engineering continued to improve and evolve, failure


rates have remained steady over the last 20 years

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

An engineering discipline uses appropriate theories and methods to


solve problems bearing in mind organisational and financial constraints.

jcu.edu.au
It takes time and skill to apply software
engineering successfully

• It’s not just about writing computer programs…

• It’s concerned with all aspects of software production

• 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

• We need trustworthy software systems that are reliable and


economical

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

• Software must be dependable and have good performance

• It’s important to understanding and managing the software


specification and requirements (aka what the software should do)

• Where appropriate, reuse software already developed rather than


write new software
jcu.edu.au
The common stages of software engineering are:
• Software specification: where customers and engineers define the
software that is to be produced and the constraints on its operation

• Software development: where the software is designed and


programmed

• Software validation: where the software is checked to ensure that it is


what the customer requires

• Software evolution: where the software is modified to reflect


changing customer and market requirements
jcu.edu.au
Frequently asked questions about software engineering
Question Answer
Yes. Computer science is about theory and
fundamentals; software engineering is
Is it different to computer science? about the practicalities of developing and
delivering useful software
Well, system engineering is concerned with
all aspects of computer systems
Is it different to system engineering? development: hardware engineering,
process engineering, as well as software
engineering

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…

The web enabled highly distributed online


software.
What differences has the web
made to software engineering? Web-based systems development (hardware
and software) led to important advances in
programming languages and software reuse

jcu.edu.au
Frequently asked questions about software engineering

Question Answer

Coping with diversity, demands for reduced delivery


What are its key challenges? times and developing trustworthy software

Roughly 60% goes into developmental costs, 40% are


Do the software validation costs.
engineering stages all
But updating/evolving software in use might cost
cost the same? more than developmental and testing costs combined!

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…

• Software engineers must behave in an honest and ethically


responsible way if they are to be respected as professionals

• 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

• Professional societies around the world define


codes of ethical practice

• Members sign up to the code of practice when


they join

• The Code apply to practitioners, educators,


managers, supervisors, policy makers, trainees
and students

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

• Computers have an important and ever-increasing role society at large


such as in commerce, industry, government, medicine, education,
entertainment, …

• Software engineers have opportunities to do good or cause harm, to


enable others to do good or cause harm, or to influence others to do good
or cause harm

• Hence the need for a code of ethics for software engineers


jcu.edu.au
Key points
• Software engineering is an engineering discipline that is concerned
with all aspects of software production.
• Essential software product attributes are maintainability,
dependability and security, efficiency and acceptability.
• The high-level activities of specification, development, validation and
evolution are part of all software processes.
• The fundamental notions of software engineering are universally
applicable to all types of system development.

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…

It is cheaper to use software engineering

Rather than programming as if it was a


personal project…

jcu.edu.au

You might also like