You are on page 1of 33

Chapter One

Introduction to Software Engineering


The process of utilizing
knowledge and scientific
principles to design,
build, and analyze
objects.
1
Software engineering

• The economies of all developed nations are dependent on


software.

• More and more systems are software controlled

• Software engineering is concerned with theories, methods and


tools for professional software development.

2
Software costs

• Software costs often dominate computer system costs.

• Software costs more to maintain than it does to develop.

• Software engineering is concerned with cost-effective


software development.

3
Frequently asked questions about software engineering

• What is software?
• Computer programs and associated documentation. Software products
may be developed for a particular customer or may be developed for a
general market.

• What are the attributes of good software?


• Good software should deliver the required functionality and performance
to the user and should be maintainable, dependable and usable.

4
Frequently asked questions about software engineering

• What are the attributes of good software?


• Good software should deliver the required functionality and performance
to the user and should be maintainable, dependable and usable.

• What is software engineering?


• Software engineering is an engineering discipline that is concerned with
all aspects of software production.

5
Frequently asked questions about software engineering

• What are the fundamental software engineering activities?

6
Software process activities

• 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.

7
Software process activities

• 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.

8
Frequently asked questions about software engineering

• What is the difference between software engineering and


computer science?
• Computer science focuses on theory and fundamentals;
• software engineering is concerned with the practicalities of
developing and delivering useful software.

9
Frequently asked questions about software engineering

• What is the difference between software engineering and


system engineering?
• System engineering is concerned with all aspects of computer -based
systems development including hardware, software and process
engineering.
• Software engineering is part of this more general process.

10
Frequently asked questions about software engineering

• What are the key challenges facing software engineering?


• Coping with increasing diversity,
• demands for reduced delivery times and
• developing trustworthy software.

11
Frequently asked questions about software engineering

• What are the costs of software engineering?


• Roughly 60% of software costs are development costs,
• 40% are testing costs.
• For custom software, evolution costs often exceed development costs.

12
Frequently asked questions about software engineering

• What are the best software engineering techniques and methods?


• While all software projects have to be professionally managed and developed,
different techniques are appropriate for different types of system.
• For example, games should always be developed using a series of prototypes
whereas safety critical control systems require a complete and analysable
specification to be developed.
• You can’t, therefore, say that one method is better than another.

1
Frequently asked questions about software engineering

• What differences has the web made to software engineering?


• The web has led to the availability of software services and
• the possibility of developing highly distributed service -based systems.
• Web-based systems development has led to important advances in
programming languages and software reuse.

1
Software products

• Generic products
• Stand-alone systems that are
marketed and sold to any customer
who wishes to buy them.
• Examples – PC software such as
graphics programs, project
management tools; CAD software;
software for specific markets such as
appointments systems for dentists.
Software products

• Customized products
• Software that is commissioned by
a specific customer to meet their
own needs.
• Examples – embedded control
systems, air traffic control
software, traffic monitoring
systems.
Application types

• Stand-alone applications
• These are application systems that run on a local computer, such as
a PC.
• They include all necessary functionality and do not need to be
connected to a network.

17
Application types

• Interactive transaction-based applications


• Applications that 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.

18
Application types

• Batch processing systems


• These are business systems that are designed to process data in
large batches.
• They process large numbers of individual inputs to create
corresponding outputs.

19
Application types

• Entertainment systems
• These are systems that are primarily for personal use and which are
intended to entertain the user.

20
Application types

• Systems for modelling and simulation


• These are systems that are developed by scientists and engineers to
model physical processes or situations, which include many, separate,
interacting objects.

21
Application types

• Data collection systems


• These are systems that collect data from their environment using a
set of sensors and send that data to other systems for processing.

• Systems of systems
• These are systems that are composed of a number of other software
systems.
2
2
Application types

• Embedded control systems


• These are software control systems that control and manage
hardware devices. Numerically, there are probably more embedded
systems than any other type of system.

2
3
Essential attributes of good software

• Maintainability
• Software should be written in such a way so that it can evolve to
meet the changing needs of customers.
• This is a critical attribute because software change is an inevitable
requirement of a changing business environment.
Essential attributes of good software

• Dependability and security


• Software dependability includes a range of characteristics including
• Reliability
• security and
• safety.

2
Essential attributes of good software

• Dependability and security


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

2
Essential attributes of good software

• Efficiency
• Software should not make wasteful use of system resources such as
memory and processor cycles.

2
Essential attributes of good software

• Efficiency
• Efficiency therefore includes
• responsiveness,
• processing time,
• memory utilisation,
• etc...
2
Essential attributes of good software

• Acceptability
• Software must be acceptable to the type of users for which it is
designed.
• This means that it must be
• understandable,
• usable and
• compatible with other systems that they use.

2
General issues that affect software

• Heterogeneity
• Increasingly, systems are required to operate as distributed systems across
networks that include different types of computer and mobile devices.

• Business and social change


• Business and society are changing incredibly quickly as emerging economies
develop and new technologies become available.
• They need to be able to change their existing software and to rapidly develop
new software.

3
General issues that affect software

• Security and trust


• As software is intertwined with all aspects of our lives, it is essential
that we can trust that software.

• Scale
• Software has to be developed across a very wide range of scales, from
very small embedded systems in portable or wearable devices through to
Internet-scale, cloud-based systems that serve a global community.

3
Software engineering diversity

• There are many different types of software system and there is no


universal set of software techniques that is applicable to all of
these.
• The software engineering methods and tools used depend on
• the type of application being developed,
• the requirements of the customer and
• the background of the development team.
3
2
Software engineering fundamentals

• Some fundamental principles apply to all types of software system, irrespective


of the development techniques used:
• Systems should be developed using a managed and understood development process.
• Dependability and performance are important for all types of system.
• Understanding and managing the software specification and requirements are
important.
• Where appropriate, you should reuse software that has already been developed
rather than write new software.

You might also like