SOFTWARE
ENGINEERING
Prepared by:
Ms. Rose Ann Malaborbor
OBJECTIVES:
To introduce software engineering and to
explain its importance
To set out the answers to key questions
about software engineering
WHAT IS SOFTWARE?
Computer programs and associated
documentation such as
requirements, design models and
user manuals.
Software products may be developed
for a particular customer or may be
developed for a general market.
IMPORTANCE OF SOFTWARE
IMPORTANCE OF SOFTWARE
It is embedded in system of all kinds :
transportation, medical,
telecommunications, military, industrial
process, entertainment, office products,
… the list is almost endless.
Software is virtually inescapable in a
modern world. it becomes the driver for
new advances in everything from
elementary education to genetic
engineering.
SOFTWARE
Software are everywhere
SOFTWARE COSTS
1950-1965 : Batch orientation, limited
distribution, custom software
1964-1974 : Multi user, Real-time,
Database, Product Software
1973-1988 : Distributed System,
Embedded “Intelligence”, Low Cost
Hardware, Consumer Impact
1985-2000 : Powerful desktop system,
Object Oriented Technology, Expert
System, Artificial Neural Network,
Parallel Computing, Internet (Global
Network), Multimedia
SOFTWARE COSTS
Software costs often dominate computer
system costs. The costs of software on a PC
are often greater than the hardware cost.
Software costs more to maintain than it does
to develop. For systems with a long life,
maintenance costs may be several times
development costs.
Software engineering is concerned with cost-
effective software development.
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.
Customized products (bespoke)
Software that is commissioned by a specific customer to
meet their own needs.
Examples – embedded control systems, air traffic control
software, traffic monitoring systems.
PRODUCT SPECIFICATION
Generic products
The specification of what the software should
do is owned by the software developer and
decisions on software change are made by the
developer.
Customized products
The specification of what the software should
do is owned by the customer for the software
and they make decisions on software changes
that are required.
SOFTWARE’S DUAL ROLE
[Link] is a vehicle for delivering a product
Supports or directly provides system
functionality
Controls other programs (operating system)
Effects communications (networking software)
Helps build other software (software tools)
2. Software is a product
Deliverscomputing potential
Produces, manages, acquires, modifies, displays,
or transmits information
SOME POPULAR ONES
SOME POPULAR ONES
SOME POPULAR ONES
SOME POPULAR ONES
SOFTWARE TYPES
1. System Software- enables the application software
to interact with the computer hardware.
Examples: Operating Systems, Utilities and Device
Drivers.
2. Real-time Software- enables the user to execute
various task and activities all at the same time, as
long as the programs are kept open. Some of these
software programs are also designed to fulfill
scheduled tasks, thus, even if not opened, they
automatically respond to the computer’s time
clock and do the tasks given to them.
Examples: Anti Virus
SOFTWARE TYPES
3. Business Software – or business application is
any software or set of computer programs that
are used by business users to perform various
business functions.
Examples: accounting software, and office
suites such as [Link] or Microsoft
Office.
4. Engineering & Scientific Software - help with
acquisition and analysis of beam line data.
Examples: Time-Resolved EXAFS, Visualization /
Data Processing, Detector Controls
SOFTWARE TYPES
5. Embedded Software - is computer software, written to
control machines or devices that are not typically
thought of as computers. It is typically specialized for
the particular hardware that it runs on and has time and
memory constraints.
Examples: electronics in cars, telephones,
modems, robots, appliances, toys, security systems,
televisions, and digital watches
[Link]-based Software - is an application that is accessed
by users over a network such as the Internet or
an intranet.
Examples: webmail, online retail sales, online
auctions, wikis
SOFTWARE TYPES
7. Artificial Intelligence Software -is an
advance branch of science that studies
the process of human thinking and
attempts to apply the knowledge to
simulate the same process in machines.
Examples: computer games, expert systems
robots
NEW - SOFTWARE TYPES
Ubiquitous computing—wireless networks
Net sourcing—the Web as a computing engine
Open source—”free” source code open to the
computing community.
Also …
Data mining
Grid computing
Cognitive machines
Software for nanotechnologies
SOFTWARE ISSUES
The final Software doesn´t fulfill the
needs of the customer.
Hard to extend and improve: if you
want to add a functionality later is
mission impossible.
Bad documentation.
Bad quality: frequent errors, hard to
use, …
More time and costs than expected
ATTRIBUTES OF GOOD
SOFTWARE
The software should deliver the required
functionality and performance to the user and
should be maintainable, dependable and
acceptable.
Maintainability
Software must evolve to meet changing needs;
Dependability
Software must be trustworthy;
Efficiency
Software should not make wasteful use of system resources;
Acceptability
Software must accepted by the users for which it was designed.
This means it must be understandable, usable and compatible
with other systems.
WHAT IS 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.
SOFTWARE ENGINEERING
An engineering discipline that provides
knowledge, tools, and methods for:
− Defining software requirements
− Performing software design
− Software construction
− Software testing
− Software maintenance tasks
− Software project management
SE VS CS
1. Computer science is concerned with
theory and fundamentals; software
engineering is concerned with the
practicalities of developing and
delivering useful software.
2. Computer science theories are still
insufficient to act as a complete
foundation for software engineering
SE VS CS
COMPUTER
CUSTOMER
SCIENCE
Computer
Theories
Functions Problem
SOFTWARE
ENGINEERING
Tools and
Techniques to
Solve Problem
IMPORTANCE OF SOFTWARE
ENGINEERING
1. More and more, individuals and society rely on
advanced software systems. We need to be
able 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 system, the
majority of costs are the costs of changing the
software after it has gone into use.
GENERAL ISSUES THAT AFFECT
MOST 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.
Security and trust
As software is intertwined with all aspects of our lives,
it is essential that we can trust that software.
PROBLEMS OF SOFTWARE
ENGINEERING
Ability to build new programs cannot meet
demand for new programs, nor do we build
fast enough to meet business and market
needs.
Widespread use of computers has made
society increasingly dependent.
Struggle to build software with high
reliability & quality
Ability to support and enhance programs is
threatened by poor design and few resources
SOFTWARE PROCESS
A set of activities whose goal is the
development or evolution of software.
Generic activities in all software
processes are:
Specification - what the system should do and
its development constraints
Development - production of the software
system
Validation - checking that the software is what
the customer wants
Evolution - changing the software in response
to changing demands.
WHAT ARE THE COSTS OF SOFTWARE
ENGINEERING?
Roughly 60% of costs are development costs,
40% are testing costs. For custom software,
evolution costs often exceed development
costs.
Costs vary depending on the type of system
being developed and the requirements of
system attributes such as performance and
system reliability.
Distribution of costs depends on the
development model that is used.
WHAT ARE SOFTWARE ENGINEERING
METHODS?
Structured approaches to software
development which include system models,
notations, rules, design advice and process
guidance.
Model descriptions
Descriptions of graphical models which should be
produced;
Rules
Constraints applied to system models;
Recommendations
Advice on good design practice;
Process guidance
What activities to follow.
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.
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.
Embedded control systems
These are software control systems that control and manage
hardware devices.
Examples:telecom,smartcard,missiles,computer networking,
software in mobile phones, software in microwave oven that
control the cooking process.
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.
Examples: billing system such as credit card, phone
billing system and salary payment.
Entertainment systems
Theseare systems that are primarily for personal use
and which are intended to entertain the user.
Example: games
Systems for modelling and simulation
Theseare systems that are developed by scientists and
engineers to model physical processes or situations,
which include many, separate, interacting objects.
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.
Example: An airplane is an example of a large-scale, complex
system. Many systems, operate various parts of the plane, but
the plane flies when all its systems work in tandem and
doesn’t fly if the systems work independently of each other.
Generic software: Spreadsheet
SOFTWARE PROCESS MODEL
A simplified representation of a software
process, presented from a specific perspective.
Examples of process perspectives are
Workflow perspective - sequence of activities;
Data-flow perspective - information flow;
Role/action perspective - who does what.
Generic process models
Waterfall;
Iterative development;
Component-based software engineering.