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.