Introduction To Software Engineering: Kamal Taha Acknowledgement: Dr. Rabeb Mizouni
Introduction To Software Engineering: Kamal Taha Acknowledgement: Dr. Rabeb Mizouni
Chap1: Introduction
CHAPTER 1:
INTRODUCTION TO SOFTWARE
ENGINEERING
1 Kamal Taha
09/05/2023
Introducing software engineering and explaining its
importance
Chap1: Introduction
Setting out the answers to key questions about software
engineering
2
WHAT IS SOFTWARE?
Computer programs and associated documentation
09/05/2023
Software products may be developed for a particular
customer or may be developed for a general market
Chap1: Introduction
3
TYPES OF SOFTWARE...
Custom
09/05/2023
For a specific customer
Generic
Chap1: Introduction
Sold on open market
Often called:
COTS (Commercial Off The Shelf)
Shrink-wrapped
Open source
Embedded
Builtinto hardware
Hard to change
4
TYPES OF SOFTWARE
09/05/2023
Differences among custom, generic and embedded
software
Chap1: Introduction
Custom Generic Embedded
Number of copies in use low medium high
5
TYPES OF SOFTWARE
09/05/2023
Real time software
E.g.control and monitoring systems
Chap1: Introduction
Must react immediately
Safety often a concern
6
WHAT IS SOFTWARE ENGINEERING?
09/05/2023
Software engineering is an engineering discipline which is
concerned with all aspects of software production
{Sommerville}
Chap1: Introduction
The process of solving customers’ problems by the
systematic development and evolution of large, high-quality
software systems within cost, time and other constraints
{Lethbrigde}
8
WHAT IS SOFTWARE ENGINEERING?…
09/05/2023
Solving customers’ problems
This is the goal of software engineering
Chap1: Introduction
Sometimes the solution is to buy, not build
Adding unnecessary features does not help solve the problem
Software engineers must communicate effectively to identify
and understand the problem
9
WHAT IS SOFTWARE ENGINEERING?…
09/05/2023
Systematic development and evolution
An engineering process involves applying well understood
techniques in a organized and disciplined way
Chap1: Introduction
Many well-accepted practices have been formally
standardized
e.g. by the IEEE, ISO, or CMM
Most development work is evolution
10
WHAT IS SOFTWARE ENGINEERING?…
09/05/2023
Software engineering techniques are needed because large
systems cannot be completely understood by one person
Chap1: Introduction
Teamwork and co-ordination are required
Key challenge: Dividing up the work and ensuring that the parts
of the system work properly together
The end-product must be of sufficient quality
11
WHAT IS SOFTWARE ENGINEERING?
09/05/2023
Cost, time and other constraints
Finiteresources
Chap1: Introduction
The benefit must outweigh the cost
Others are competing to do the job cheaper and faster
Inaccurate estimates of cost and time have caused many
project failures
12
SOFTWARE ENGINEERING
13
SOME DEFINITIONS OF SOFTWARE ENGINEERING
14
RELATIONSHIP BETWEEN COMPUTER SCIENCE
AND SOFTWARE ENGINEERING
Computer
Theories Problem
Functions
Software
Engineering
Tools and
Techniques
to Solve
Problem 15
WHAT IS THE DIFFERENCE BETWEEN SOFTWARE
ENGINEERING AND COMPUTER SCIENCE?
09/05/2023
Computer science is concerned with theory and
fundamentals; software engineering is concerned with
Chap1: Introduction
the practicalities of developing and delivering useful
software
Computer science theories are currently insufficient to
act as a complete underpinning for software engineering
16
WHAT IS THE DIFFERENCE BETWEEN SOFTWARE
ENGINEERING AND SYSTEM ENGINEERING?
System engineering is concerned with all aspects of
09/05/2023
computer-based systems development including
hardware, software and process engineering. Software
Chap1: Introduction
engineering is part of this process
System engineers are involved in system specification,
architectural design, integration and deployment
17
THE NATURE OF SOFTWARE...
09/05/2023
Software is intangible
Hard to understand development effort
Chap1: Introduction
Software is easy to reproduce
Cost is in its development
in other engineering products, manufacturing is the costly stage
The industry is labor-intensive
Hard to automate
18
THE NATURE OF SOFTWARE ...
09/05/2023
Software is easy to modify
People make changes without fully understanding it
Chap1: Introduction
Software deteriorates by having its design changed:
erroneously, or
in ways that were not anticipated, thus making it complex
19
THE NATURE OF SOFTWARE
09/05/2023
Conclusions
Much software has poor design and is getting worse
Chap1: Introduction
Demand for software is high and rising
We are in a perpetual ‘software crisis’
We have to learn to ‘engineer’ software
20
WHAT IS A SOFTWARE PROCESS?
09/05/2023
Who are the stakeholders in a software project?
1. Users
Chap1: Introduction
Those who use the software
2. Customers
Those who pay for the software
3. Software developers
4. Development Managers
24
SOFTWARE QUALITY (1)
Usability
09/05/2023
Users can learn it fast and get their job done easily
Efficiency
Chap1: Introduction
It doesn’t waste resources such as CPU time and memory
Reliability
It does what it is required to do without failing
Maintainability
It can be easily changed
Reusability
Its parts can be used in other projects, so reprogramming is not
needed
25
SOFTWARE QUALITY AND THE STAKEHOLDERS
Customer: User:
solves problems at easy to learn;
an acceptable cost in efficient to use;
terms of money paid and helps get work done
resources used
QUALITY
SOFTWARE
These:
Characterizeaspects of the design of the software
Have an effect on the external quality attributes
E.g.
The amount of commenting of the code
The complexity of the code
28
SHORT TERM VS. LONG TERM QUALITY
Short term:
Does the software meet the customer’s immediate needs?
Is it sufficiently efficient for the volume of data we have today?
Long term:
Maintainability
Customer’s future needs
29
ACTIVITIES COMMON TO SOFTWARE PROJECTS...
Requirements gathering
Requirements analysis
Requirements specification
behave
ACTIVITIES COMMON TO SOFTWARE PROJECTS...
Design
Deciding how the requirements should be implemented,
using the available technology
Includes:
Systems engineering: Deciding what should be in hardware and what
in software
Software architecture: Dividing the system into subsystems and
Design of databases
ACTIVITIES COMMON TO SOFTWARE PROJECTS
Modeling
Creating representations of the domain or the software
Use case modeling
Structural modeling
Programming
Quality assurance
Reviews and inspections: formal meetings organized to
discuss requirements, designs or code to see if they are
satisfactory
Testing
Deployment
Managing the process:
Estimating the cost of the system
Planning
WHAT IS CASE
09/05/2023
CASE: Computer Aided Software Engineering
CASE is the use of computer-based support in the software
development process.
Chap1: Introduction
Wide range of programs used to support software
process activities: requirement analysis, modeling,
debugging, and testing.
Examples of CASE:
JDeveloper (from Oracle)
Visual Studio .NET Enterprise Architect (from Microsoft)
iUML (from Abstract solutions)
33
DIFFICULTIES AND RISKS IN SOFTWARE ENGINEERING
Constant change
34
SUMMARY
Software engineering is an engineering discipline that is concerned
with all aspects of software production
09/05/2023
Software product: Developed Programs + Documentation
Chap1: Introduction
Essential product attributes are: ….
35