Download as pdf or txt
Download as pdf or txt
You are on page 1of 17

Computer Maintenance

course code CSE 3421

Software
Engineering
Lecture 1

Dr. Sarah Ayyad


Faculty of engineering, Mansoura university
Textbook
Why 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.
▪ The economics of all developed nations are dependent on software.
▪ More and more systems are software controlled.
The Ariane 5 Rocket Disaster
• On June 4, 1996 an unmanned Ariane 5 rocket launched by the European Space
Agency exploded just forty seconds after its lift-off.
• The failure resulted in a loss of more than $370 million.
• Failure due to unhandled Floating-Point exception.
64-bit floating point number was converted to a 16-bit signed integer.

video for the crashed rocket


https://www.youtube.com/watch?v=N6PWATvLQCY&ab_channel=SciNews
Questions about Software Engineering
What is software?
Computer programs and associated documentation.

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 are the fundamental software engineering activities?
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.
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.

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.
Software Costs
▪ Roughly 60% of software costs are development costs; 40% are testing costs. For
custom software, evolution costs often exceed development costs.
▪ For systems with a long life, maintenance costs may be several times development costs.
▪ The costs of software on a PC are often greater than the hardware cost.
▪ Software costs often control computer system costs.
▪ Software engineering is concerned with cost-effective software development.
Hardware Costs vs Software Costs
Software Products

01 02
Generic Products Customized Products
stand-alone systems that are produced These are systems that are
by a development organization and commissioned by a
sold on the open market to any particular customer.
customer who is able to buy them. A software contractor
Examples of this type of product develops the software
include software for PCs such as especially for that
databases, word processors, drawing customer.
packages, and project-management
tools.
General issues that affect many different types of software
Heterogeneity
01
Increasingly, systems are required to operate as distributed systems across
networks that include different types of computer and mobile devices.

Business and social change


02 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
03 As software is intertwined with all aspects of our lives, it is essential that we can trust
that software.
We have to make sure that malicious users cannot attack our software and that
information security is maintained.
Software Engineering Diversity
❑ There are no universal software engineering methods and techniques that are
suitable for all systems and all companies.
❑ 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:

01
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.
Examples of such applications are office applications on a PC, CAD programs, photo
manipulation software, etc.
Software Engineering Diversity

02
Interactive transaction-based applications
These are applications that execute on a remote computer and that are accessed by users
from their own PCs or terminals.
These include web applications such as e-commerce applications where you can interact
with a remote system to buy goods and services.
They often incorporate a large data store that is accessed and updated in each
transaction such as internet banking.

03
Embedded control systems
These are software control systems that control and manage hardware devices.
Examples of embedded systems include the software in a mobile (cell) phone, software
that controls anti-lock braking in a car, central heating systems, and software in a
microwave oven to control the cooking process.
Software Engineering Diversity
Batch processing systems

04 05
Business systems that are designed to
Entertainment systems
process data in large batches. These are systems that are primarily for
They process large numbers of individual personal use and which are intended to
inputs to create corresponding outputs. entertain the user. e.g., games.
Examples include periodic billing systems,
such as phone billing systems, and salary
payment systems.

06 07
Systems for modeling Data collection systems
and simulation
systems that are developed by These are systems that
scientists and engineers to model collect data from their
physical processes or situations environment using a set of
sensors and send that data to
other systems for processing.
Software Engineering Diversity

08
Systems of systems
These are systems that are composed of a number of other software systems.
Some of these may be generic software products, such as a spreadsheet program.
Other systems in the assembly may be specially written for that environment

▪ The boundaries between these system types are blurred.


▪ If you develop a game for a mobile (cell) phone, you have to take into account the same
constraints (power, hardware interaction) as the developers of the phone software.
▪ Batch processing systems are often used in conjunction with web-based systems.
Case Study
A personal insulin pump
An embedded system in an insulin pump used by
diabetics to maintain blood glucose control.

A mental health case patient management system


An information system used to maintain records of people
receiving care for mental health problems.

A wilderness weather station


A data collection system that collects data about weather
conditions in remote areas.
Software Engineering
Tools
Requirement Project Management
Management
Enterprise Project Management
Enterprise Architect (Sparx) (Microsoft)
IBM Rational
Development Software Configuration
Visual Studio Team Foundation Server (Microsoft)
Eclipse Testing
Team Foundation Server (Microsoft)
HP Quality Server (HP)
Thanks!
Do you have any questions?

Sarah_Ayyad@mans.edu.eg

CREDITS: This presentation template was created by Slidesgo, including


icons by Flaticon, infographics & images by Freepik and illustrations by
Stories

You might also like