0% found this document useful (0 votes)
14 views27 pages

1-Introduction To Software Engineering

Chapter 1 of the Software Engineering book introduces the discipline of software engineering, emphasizing its importance in managing complex systems and addressing the software development crises that have historically led to project failures. It outlines the systematic approach required for software production, including specification, development, validation, and evolution, while also discussing various types of software and their attributes. The chapter highlights the critical role of software engineering in driving innovation, enhancing efficiency, and ensuring reliability in modern technology.

Uploaded by

balakhatun215
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views27 pages

1-Introduction To Software Engineering

Chapter 1 of the Software Engineering book introduces the discipline of software engineering, emphasizing its importance in managing complex systems and addressing the software development crises that have historically led to project failures. It outlines the systematic approach required for software production, including specification, development, validation, and evolution, while also discussing various types of software and their attributes. The chapter highlights the critical role of software engineering in driving innovation, enhancing efficiency, and ensuring reliability in modern technology.

Uploaded by

balakhatun215
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 27

1

Chapter 1: Introduction to
Software Engineering
Chapter 1 in Software Engineering Book
2

Overview

 Learning Objectives.

What is software engineering?

 Why is software engineering important?


3

Activity
Virtually all countries
depend on complex
Think about all the devices and systems computer-based
.systems
that you encounter in your everyday
life which have software controlling
…them

List as many as you can


4

Why is Software Engineering important?

Complex systems need a disciplined approach for designing,


developing and managing them.
5

Software Development Crises

Projects were:
• Late.
• Over budget.
• Unreliable.
• Difficult to maintain.
• Performed poorly.
6

Software errors….the cost

Errors in computer software can have


devastating effects.
7

Software Crisis
Example 1: 2009,Computer glitch delays flights

Saturday 3rd October 2009-London, England (CNN)

•Dozens of flights from the UK were delayed Saturday after


a glitch in an air traffic control system in Scotland, but the
problem was fixed a few hours later.
•The agency said it reverted to backup equipment as
engineering worked on the system.
•The problem did not create a safety issue but could cause
delays in flights.
•Read more at:
http://edition.cnn.com/2009/WORLD/europe/10/03/uk.flig
hts.delayed
8

Software Crisis
Example 2: Ariane 5 Explosion

•European Space Agency spent 10 years and $7 billion


to produce Ariane 5.

•Crash after 36.7 seconds.

•Caused by an overflow error. Trying to store a 64-bit


number into a 16-bit space.

•Watch the video:


http://www.youtube.com/watch?v=z-r9cYp3tTE
9

Software Crisis
Example 3: 1992, London Ambulance Service

•Considered the largest ambulance service in the


world.

•Overloaded problem.

•It was unable to keep track of the ambulances and


their statuses. Sending multiple units to some
locations and no units to other locations.

•Generates many exceptions messages.

•46 deaths.
10

Therefore…
A well-disciplined approach to software
development and management is
necessary. This is called engineering.
11

What is Software Engineering?

 The term software engineering first appeared in the 1968 NATO


Software Engineering Conference and was meant to provoke
thought regarding what was then called the “software crisis”..

 “.. An engineering discipline that is concerned with all aspects of


software production from the early stages of system specification
to maintaining the system after it has gone into use.” Sommerville,
pg.7
12

What is Software Engineering?

"The application of a systematic, disciplined, quantifiable


approach to the development, operation, and maintenance of
software; that is, the application of engineering to software.“

A systematic, disciplined, and engineering-based approach to


creating high-quality and reliable software applications.

Software engineering is the systematic application of


engineering principles and practices to the design,
development, testing, and maintenance of software systems.
13

Importance of Software Engineering

• Software engineering plays a pivotal role in shaping the


modern world, with its importance spanning across various
domains and industries.
• Software engineering drives innovation by facilitating the
creation of new technologies, applications, and services.
• From breakthroughs in artificial intelligence to advancements
in cloud computing, software engineers are at the forefront of
pushing technological boundaries and introducing
groundbreaking solutions to complex problems.
14

Importance of Software Engineering

• Software engineering enhances efficiency by optimizing processes and


workflows.

• Through automation, optimization algorithms, and data analytics, software


engineers streamline operations, reduce costs, and improve productivity
across diverse sectors.

• Software engineering enables connectivity and fosters collaboration in an


increasingly interconnected world.

• By empowering individuals and organizations to connect, share ideas, and


collaborate effectively, software engineering contributes to building a more
connected and collaborative global community, driving progress and
innovation forward.
15

What is Software?

System
Documentation

User
Documentation
16

Types of Software

• 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.
• 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 or bespoke 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.
• 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.
17

Types of Software

1. System Software
This type of software includes operating systems like Windows, macOS, and Linux,
which manage computer hardware and provide a platform for running other software
applications.

2. Real-time Software
Real-time software is designed to respond to inputs or events within a predetermined
time frame. Unlike traditional software, which may prioritize throughput or completion
time, real-time software emphasizes meeting strict timing requirements to ensure
timely responses to external stimuli.

3. Embedded Software
This type of software is embedded within hardware devices and controls their
operation. Examples include firmware in consumer electronics, control software in
industrial machinery, and software in automotive systems.
18

Types of Software

4. Enterprise Software
Enterprise software is designed to support the needs of organizations and
businesses. Examples include enterprise resource planning (ERP) systems,
customer relationship management (CRM) software, and business intelligence (BI)
tools.

5. Game Software
Game software is specifically designed for entertainment purposes and includes
video games, simulations, and virtual reality (VR) applications.

6. Application Software
These are software programs designed to perform specific tasks or provide specific
functionality for users. Examples include word processors, web browsers, email
clients, and multimedia players.
19

Types of Software

7. Utility Software
Utility software provides additional functionality to enhance system performance or
perform specific tasks. Examples include antivirus programs, disk cleanup utilities,
file compression tools, and backup software.

8. Artificial Intelligence (AI) Software


Programs make use of AI techniques and methods to solve complex
problems. Active areas are expert systems, pattern recognition, games
20

What is a Software Process?

 Activities and results that produce a software product:

SW Process Activity What is going on there?

What does the customer need?


Specification
What are the constraints?

Development Design & programming.

Validation Checking whether it meets requirements.

Evolution Modifications (e.g. customer/market).


21

What is a Software Process Model?

 Description of the software process that represents one view, such


as the activities, data or roles of people involved.

Examples of views Focus on…

Activities = human actions.


Workflow
What is input, output, and dependencies.

Activities = transformations of information.


Dataflow
How the input is transformed into output.
What is the role of people involved in each step of
Role/Action
the process?
22

The Cost of Software Engineering

 Depends on:
 The process used, and
 The type of software being developed.

 Each generic approach has a different profile of cost distribution.

 Roughly 60% of costs are development costs, 40% are testing


costs.

 For custom software, evolution costs often exceed development


costs.
23

Attributes of good software

 Functional attributes (performance; what the system does).


 Non-functional attributes (quality; how the system does it).
Functionality: The software should fulfill its intended purpose effectively
and efficiently, providing the features and capabilities expected by users.

Reliability: Users should be able to depend on the software to perform


consistently and predictably under normal and abnormal conditions, without
unexpected failures or errors.

Usability: The software should be intuitive and easy to use, with a user
interface that is clear, understandable, and responsive to user interactions.
24

Attributes of good software

Performance: The software should operate efficiently, with acceptable response


times and resource utilization, even under high loads or demanding conditions.

Scalability: The software should be able to handle increasing workloads or user


demands by scaling up or out without significant degradation in performance or
functionality.

Security: The software should protect sensitive data, resources, and functionalities
from unauthorized access, manipulation, or breaches, adhering to best practices for
security and privacy.

Maintainability: The software should be well-structured and documented, making it


easy for developers to understand, modify, and extend over time, minimizing the cost
and effort of maintenance.
25

Attributes of good software

Flexibility: The software should be adaptable to changes in requirements, environments, and


technologies, allowing for customization, configuration, and integration with other systems.

Portability: The software should be able to run on different hardware platforms, operating
systems, and environments without significant modifications or dependencies.

Compatibility: The software should be compatible with other software and systems, adhering
to industry standards and protocols for interoperability and integration.

Testability: The software should be designed with testability in mind, allowing for
comprehensive testing to validate its correctness, reliability, and adherence to requirements.

Robustness: The software should gracefully handle unexpected inputs, errors, and exceptions,
recovering gracefully and minimizing the impact of failures on users or other system
components.
26

Activity
 What are the key attributes for..
Cardiac monitor in an ICU
Interactive game Banking system
unit
Players, score, scenes, Client accounts, stocks heart rate, temperature,
theme. bonds, money transfers. blood pressure.
27

Challenges facing software engineering

Challenge Why? Software needs to ..

Different computers, different


Heterogeneity platforms, different support systems.
Cope with this variability.

Businesses are more responsive


Be delivered in shorter time
Delivery  supporting software needs to
without compromising quality.
evolve as rapidly.

Software is a part of many aspects of


Demonstrate that it can be
Trust our lives (work, study, leisure).
trusted by users.

You might also like