This document provides an overview of computer science and software engineering. It discusses different types of software systems and how software engineering techniques are tailored to different applications. Professional software development requires techniques like specification, design, validation and evolution. Software engineering aims to produce reliable, trustworthy systems economically. It is related to both computer science and systems engineering. General issues that affect many systems are heterogeneity, business/social change, and security/trust. The document also discusses case studies in embedded systems, information systems, and sensor-based data collection. It concludes with a section on ethics in software engineering.
4. Overview
Different types of software systems exist:
From simple embedded systems to complex, worldwide information systems
Organizational information system & Controller
Developing an organizational information system is completely different
from developing a controller for a scientific instrument
Graphics-intensive computer game
Neither of these systems has much in common with a graphics-intensive
computer game.
Introduction
Different approaches are required for different types of software
It is pointless to look for universal notations, methods, or techniques for
software engineering
Same software engineering techniques are not required
All of these applications need software engineering; they do not all need
the same software engineering techniques.
5. Overview (cont.,)
1. Increasing demands
Demands change as new software engineering techniques help us to build
larger, more complex systems
Larger & even more complex systems are required
systems have to have new capabilities that were previously
thought to be impossible
Existing software engineering methods cannot cope
New software engineering techniques have to be developed to meet
new demands
Introduction
There are still many reports of software projects going wrong and ‘software failures’.
many of these so-called software failures
are a consequence of two factors
Software Failures
Two factors:
6. Overview (cont.,)
2. Low expectations
It is easy to write computer programs without software engineering
Introduction
Not using
software engineering
methods
Software
more expensive
less reliable
without software engineering
It is easy to write
computer programs
Result
8. Professional software development
Software engineering supports professional software development
If writing a program for yourself
No need program guides
No need program design to document
Etc.
No one else will use it
If writing software for people
Engineers will change it
You have to provide additional information & code
SE techniques supports:
program specification,
design, and evolution
None of which are normally relevant for personal
software development
9. Software Products
Professional software development
Software engineers are concerned with developing software products
There are two kinds of software products:
Generic products
These are stand-alone systems
Produced by a development organization
Sold on the open market to any customer
Examples
software for PCs, like:
databases,
word processors,
drawing packages, and
project-management tools.
10. Software Products (cont.,)
Professional software development
Customized (or bespoke) products
Systems that are commissioned by a particular customer
A software contractor develops the software for that customer
Examples
Control systems for electronic devices,
Systems to support a business process,
Air traffic control systems
12. Software engineering
Software engineering is an engineering discipline that is concerned with
all aspects of software production from the early stages of system
specification through to maintaining the system after it has gone into use.
In this definition, there are two key phrases:
Engineering discipline
Engineers apply theories, methods, and tools where these
are appropriate.
to discover solutions to problems
to discover solutions even when there are no applicable
theories and methods.
Look for solutions within these constraints
Engineers must work to organizational and financial constraints so
they look for solutions within these constraints.
13. All aspects of software production
It also includes activities, such as:
software project management
development of tools, methods,
theories to support software production.
Software engineering
14. Software engineering is important for two reasons:
1. Individuals and society rely on advanced software systems
It is required to produce reliable and trustworthy systems
economically and quickly.
2. It is usually cheaper, in the long run, to use software engineering
methods and techniques for software systems rather than just write the
programs as if it was a personal programming project. For most types of
systems, the majority of costs are the costs of changing the software after it
has gone into use.
Software engineering
15. Software process & Fundamental activities
A software process is a sequence of activities that leads to the
production of a software product
Four fundamental activities that are common to all software processes:
1. Software specification, where customers and engineers define the software
that is to be produced and the constraints on its operation
2. Software development, where the software is designed and programmed
3. Software validation, where the software is checked to ensure that it is what
the customer requires
4. Software evolution, where the software is modified to reflect changing
customer and market requirements
Software engineering
16. Different types of systems need different development processes
Software engineering
Real-time software has to be completely specified before development
begins for an aircraft
Other side:
In e-commerce systems, the specification and the program are usually
developed together
For example
Software Processes will be described in more detail in Chapter 2
17. Software engineering is related to both computer science and systems engineering:
Software engineering
SE relation with Computer science:
Computer science is concerned with the theories and methods that
underlie computers and software systems
underlie
be the cause or basis of (something)
software engineering is concerned with the practical problems of
producing software
Other side:
Some knowledge of computer science is essential for software engineers
Computer science theory is often most applicable to small programs
But these cannot always be applied to large, complex problems that
require a software solution
18. Software engineering
SE relation with System engineering:
System Engineering is concerned with all aspects of the development and
evolution of complex systems
System engineering is concerned with:
hardware development,
policy and process
design and system deployment
System engineers are involved in:
Specifying the system,
Defining its overall architecture,
Integrating the different parts to create
the finished system
Software engineering is related to both computer science and systems engineering:
19. General issues affecting different types of software:
Software engineering
there are three general issues that affect many different types of software:
Heterogeneity Increasingly
Systems are required to operate even on Distributed systems
Distributed systems exist across networks
includes different types of computer and mobile devices
Software may also have to execute on mobile phones
It is often required to integrate new software with older systems
written in different programming languages
Integrate new software with older systems:
Challenge Here:
To develop techniques for building dependable software
This should be flexible enough to cope with this heterogeneity
20. General issues affecting different types of software: (cont.,)
Software engineering
there are three general issues that affect many different types of software:
Business and social change
Business and society are changing incredibly quickly
New technologies become available
As emerging economies develop
Need to change the existing software
To rapidly develop new software
21. Security and trust
General issues affecting different types of software: (cont.,)
Software engineering
Software is intertwined with all aspects of our lives,
It is essential that we can trust that software
Make sure that malicious users cannot
Attack our software
Information security is maintained
23. Software engineering diversity
Perhaps the most significant factor in determining which software engineering
methods and techniques are most important is the type of application that is
being developed.
There are many different types of application including:
Stand-alone applications
Application systems that run on a local computer
Include all necessary functionality
Do not need to be connected to a network
Examples:
office applications on a PC,
CAD programs,
photo manipulation software, etc.
24. Software engineering diversity
Interactive transaction-based applications
Embedded control systems
Applications are executed on a remote computer
To by accessed by users from their own PCs or terminals
To interact with a remote system to buy goods and services
web applications such as e-commerce applications
cloud-based services, such as mail and photo sharing
Examples
Software control systems
Control and manage hardware devices
Examples:
software in a mobile phone
software in a microwave oven to control the cooking process
25. Software engineering diversity
Batch processing systems
To process large numbers of individual inputs
Examples
Periodic billing systems
phone billing systems
salary payment systems
26. Entertainment systems
Systems for modeling and simulation
Software engineering diversity
systems for personal use
to entertain the user
Example:
games of one kind or another.
Developed by scientists and engineers
To model physical processes or situations
Include many, separate, interacting objects
Require high-performance parallel systems for execution.
27. Data collection systems
Systems of systems
Software engineering diversity
Collect data from their environment using a set of sensors
Send that data to other systems for processing.
To interact with sensors and
It is installed in a hostile environment
systems composed of a number of other software systems
Some of these may be generic software products, such as a
spreadsheet program
28. software engineering fundamentals that apply to all types
of software system:
software engineering fundamentals
Software engineering diversity
1. Managed and Understood development Process:
To develop using a managed and understood development Process
To plan the development process to develop the software
To have clear ideas of what will be produced and when it will be completed
Different processes are used for different types of software
2. Dependability and performance:
Software should behave as expected
It should be without failures and
It should be available for use when it is required
It should be safe in its operation
It should be secure against external attack
The system should perform efficiently and should not
waste resources
29. To existing resources as effectively as possible of
you should reuse software, where appropriate, that has already been
developed rather than write new software
3. Understanding and managing
Understanding and managing the software specification and requirements
To know what customers and users expect from the system
To manage expectations of customers/users deliever a useful
system within budget and to schedule
software engineering fundamentals (cont.,)
Software engineering diversity
4. Reuse of existing developed software
31. Instead of writing software and deploying it on users’ PCs,
the software is deployed on a web server
This made it much cheaper to change and upgrade the software,
No need to install the software on every PC
It reduces costs, as user interface development is expensive
Many businesses have moved to web-based interaction with
company software systems
Web Application:
Software engineering and the Web
32. The next stage in the development of web-based systems
Web services are software components that deliver specific functionality
Applications are constructed by integrating these web services,
Web services may be provided by different companies
Web Services:
Software engineering and the Web
Web Services
Of specific kind
companies
Provided by
Database
Client
Programs
using
web services
33. Software as a Service (SAAS)
Software engineering and the Web
last few years, the notion of ‘software as a service’ has been developed
Software not do run on local computers
It is run on ‘computing clouds’
Computing clouds are accessed over the Internet
If using a web-based mail, you are using a cloud-based
system
A computing cloud is a huge number of linked computer
systems that is shared by many users
Users do not buy software but pay according to how much
the software is being used
34. Software engineering and the Web
Advent of the web has led to a change in the way that business software is organized
Business applications were mostly monolithic
Single programs running on single computers or computer clusters
Communications were local, within an organization
Software is highly distributed, sometimes across the world
Business applications are not programmed from scratch
It involves extensive reuse of components and programs
Before the web:
Now:
36. To illustrate software engineering concepts,
three different types of systems throughout the book have
been used
Three types of systems used as case studies are:
Software controls a hardware device
It is embedded in that device.
Issues:
Issues in embedded systems typically include:
Physical size,
Responsiveness,
Power management, etc.
The example of the embedded system:
‘A medical device’
1. An embedded system:
Case studies
Overview:
37. Case studies
This is a system an information system
primary purpose is to manage and provide access to a database of
information.
Issues:
Issues in information systems
include:
Security, Usability,
Privacy,
Maintaining data integrity
2. An information system
‘A medical records system’
38. Case studies
A system whose primary purpose
is:
to collect data from a set of sensors
process that data in some way
The key requirements
Reliability, even in hostile environmental conditions, and
Maintainability
The example of a data collection system that has been used is a wilderness
weather station.
3. A sensor-based data collection system
‘ wilderness weather station’
40. As a software engineer, your job involves wider responsibilities
Software engineering ethics
You must behave in an ethical and morally responsible way, if you
are to be respected as a professional engineer
1. Confidentiality
Respect the confidentiality of your employers or clients irrespective
of whether or not a formal confidentiality agreement has been signed.
2. Competence
Do not accept work that is outside your competence
Do not misrepresent your level of competence
Ethics in Software engineering
41. Software engineering ethics
3. Intellectual property rights
Be careful to ensure intellectual property of employers and client is protected
Be aware of local laws governing the use of intellectual property
such as:
Patents and Copyright
4. Computer misuse
Do not use your technical skills to misuse other people’s computers
Computer misuse ranges from relatively trivial to extremely serious
Like:
game playing on an employer’s machine
dissemination of viruses or other malware