0% found this document useful (0 votes)
0 views

03 Software Conceots-1

The document outlines the principles and practices of software engineering, emphasizing the need for a disciplined approach to manage complex systems effectively. It details the attributes of good software, various software categories, types of software products, and the importance of software documentation and ethics. Additionally, it discusses the software crisis, the software development lifecycle, and different software process models.

Uploaded by

anas77najeeb898
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
0 views

03 Software Conceots-1

The document outlines the principles and practices of software engineering, emphasizing the need for a disciplined approach to manage complex systems effectively. It details the attributes of good software, various software categories, types of software products, and the importance of software documentation and ethics. Additionally, it discusses the software crisis, the software development lifecycle, and different software process models.

Uploaded by

anas77najeeb898
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 24

Software

Engineering

1
• Complex systems need a disciplined approach for designing, developing
and managing them.

• A well-disciplined approach to software development and management


is necessary.

2
Programs

Software
System
Documentation
Data Documentation
User
Documentation

3
Attributes of good software
• Functional attributes (performance; what the system does).
• Non-functional attributes (quality; how the system does it).
Product Characteristic Description
Maintainability Evolution qualities such as Testability, extensibility.
Dependability Reliability, security, safety.
Efficiency Response time, processing time, memory utilization.
Easy to learn how to use the system by target users.
Efficient to use the system by users to accomplish a task.
Usability Satisfying to use by intended users.

4
Software Categories
System software
acts as tools to help construct or support applications software.
Examples: operating systems, databases, networking software, compilers.

Applications software
Performs some directly useful or enjoyable task.

Examples :games, the software for automatic teller machines (ATMs), the
control software in an airplane, e-mail software, word processors,
spreadsheets.

5
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 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.
6
What is Software Engineering?
•Engineering approach to develop software.
•Software Engineering is the science and art of building significant
software systems that are:
1) on time.
2) on budget.
3) with acceptable performance.
4) with correct operation.
•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.
7
The Role of Software
Engineering
A bridge from customer needs to programming implementation

Programmer

Customer
Customer

8
Why Study Software Engineering?
• To acquire skills to develop large programs.
• Exponential growth in complexity and difficulty level with size.

• Ability to solve complex programming problems:


• How to break large projects into smaller and manageable parts?

• Learn techniques of:


• specification, design, interface development, testing, project management, etc.

• To acquire skills to be a better programmer:


• Higher Productivity
• Better Quality9 Programs
Software Crisis
• Late.
• Over budget.
• Over time.
• Unreliable.
• Difficult to maintain.
• Performed poorly (low quality).
• Never delivered.
• Did not meet requirements.

10
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.
11
• Read more at:
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-r9cYp
3tTE
12
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


13
messages.
Software Process Models
Software Development Lifecycle SDLC

14
Software Process
a sequence of activities that leads to the production of a software
product. There are four fundamental activities that are common to
all software processes.

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)
15
Waterfall Model

Requirements
Requirements

Design
Design

Implementation
Implementation

Integration
Integration

Validation
Validation

Deployment
Deployment
16
Evolutionary Process Model
Concurr ent
activities

Initial
Specification
version

Outline Intermediate
Development
description versions

Final
Validation
version

17
Spiral Process Model
Determine objectives
Evaluate alternatives
alternatives and identify, resolve risks
constraints Risk
analysis
Risk
analysis
Risk
analysis Opera-
Prototype 3 tional
Prototype 2 protoype
Ri s k
REVIEW analys i s Proto-
type 1
Requirements plan Simulations, models, benchmarks
Life-cycle plan Concept of
Operation S/W
requirements Product
design Detailed
Requirement design
Development
plan validation Code
Design Unit test
Integration
and test plan V&V Integr ation
Plan next phase test
Acceptance
Service test Develop, verify
next-level product

18
Agile Model

19
Software Documentation
For software to be used properly and maintained efficiently,
documentation is needed. Documentation is an ongoing process.

Purpose of Software Documentation:


- Provide a software product in an executable form.
- Describe the software product precisely.
- Show that the product is correct.
- Make the product easier to:
• Use.
• Maintain.
• Reuse.
20
Documentation Categories
1. System Documentation:
Describes how the system works, but not how to operate it. For example:
- Software Requirements Specification (SRS): Describes what the finished
software will do.
- Software Test Plan (STP): Describes how the software will be tested to
ensure proper behavior.
- Software User Manual (SUM): Describes how to use the finished
software.
- Database Design Description (DBDD): describes the design of a database
system.
2. User Documentation: Describes how to operate the system. For
example : Help, Guide, Tutorial.
21
Software Engineering Ethics
• Like other engineering disciplines, software engineering is
carried out within a social and legal framework that limits
the freedom of people working in that area.

• Software engineer must accept that his job involves wider


responsibilities than simply the application of technical
skills.

• Software engineer must behave in an ethical and morally


responsible way.
22
However, there are areas where standards of acceptable behavior are
not bound by laws but by the more tenuous notion of professional
responsibility. Some of these are:

1. Confidentiality:
Respect the confidentiality of employers or clients irrespective of
whether or not a formal confidentiality agreement has been signed.

2. Competence:
Should not misrepresent the level of competence. Should not
knowingly accept work that is outside person competence.

23
3. Intellectual property rights:
Should be aware of local laws governing the use of intellectual property
such as patents and copyright. Should be careful to ensure that the
intellectual property of employers and clients is protected.

4. Computer misuse:
Should not use technical skills to misuse other people’s computers.
Computer misuse ranges from relatively trivial (game playing on an
employer’s machine, say) to extremely serious (dissemination of viruses
or other malware).

24

You might also like