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

Introduction To Software Engineering: Kamal Taha Acknowledgement: Dr. Rabeb Mizouni

The document introduces software engineering and discusses its objectives, which are to introduce the field and explain its importance while answering key questions. It defines software, discusses types of software including custom, generic, and embedded, and defines software engineering as applying engineering principles to software development. The history and nature of software engineering are also covered.

Uploaded by

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

Introduction To Software Engineering: Kamal Taha Acknowledgement: Dr. Rabeb Mizouni

The document introduces software engineering and discusses its objectives, which are to introduce the field and explain its importance while answering key questions. It defines software, discusses types of software including custom, generic, and embedded, and defines software engineering as applying engineering principles to software development. The history and nature of software engineering are also covered.

Uploaded by

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

09/05/2023

Chap1: Introduction
CHAPTER 1:
INTRODUCTION TO SOFTWARE
ENGINEERING
1 Kamal Taha

Acknowledgement: Dr. Rabeb Mizouni


This material is a modified version of the slides provided by Ian Sommerville for his book “Software
Engineering”, 6th edition and the slides provided by Lethbridge and Laganiere for their book Object
Oriented Software Engineering, 2nd edition
OBJECTIVES

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

Worldwide annual high medium low


development effort

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

 Data processing software


 Used to run businesses
 Accuracy and security of data are key

 Some software systems have both aspects

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}

 Software engineers should adopt a systematic and organised


approach to their work and use appropriate tools and
techniques depending on the problem to be solved, the 7
development constraints and the resources available
HISTORY

 The field of software engineering was born in 1968 in


response to chronic failures of large software projects to
meet schedule and budget constraints
 Recognition of "the software crisis"
 Term became popular after NATO Conference in
Garmisch Partenkirchen (Germany), 1968

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?…

 Large, high quality software systems

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

 The application of engineering to software


 Field of computer science dealing with software systems
 Large and complex
 Built by teams
 Exist in many versions
 Undergo changes

13
SOME DEFINITIONS OF SOFTWARE ENGINEERING

 Application of a systematic, disciplined, quantifiable


approach to the development, operation, and
maintenance of software (IEEE 1990)
 Multi-person construction of multi-version software
(Parnas 1978)

14
RELATIONSHIP BETWEEN COMPUTER SCIENCE
AND SOFTWARE ENGINEERING

Computer Science Customer

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?

 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
SOFTWARE ENGINEERING PROJECTS
 Most projects are evolutionary or maintenance projects,
involving work on legacy systems (an old computer system or
application program that continues to be used because the
user (typically an organization) does not want to replace or
redesign it)
 Correctiveprojects: fixing defects
 Adaptive projects: changing the system in response to changes in
 Operating system
 Database

 Rules and regulations

 Enhancement projects: adding new features for users


 Reengineering or perfective projects: changing the system
internally so it is more maintainable
STAKEHOLDERS IN SOFTWARE ENGINEERING

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

Developer: Development manager:


easy to design; sells more and
easy to maintain; pleases customers
easy to reuse its parts while costing less
to develop and maintain
SOFTWARE QUALITY

 The different qualities can conflict


 Increasing efficiency can reduce maintainability or reusability
 Increasing usability can reduce efficiency

 Setting objectives for quality is a key engineering


activity
 You then design to meet the objectives
 Avoids ‘over-engineering’ which wastes money

 Optimizing is also sometimes necessary


 E.g.obtain the highest possible reliability using a fixed
budget
27
INTERNAL QUALITY CRITERIA

 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 and specification


 Includes
 Domain analysis: Understanding the background
 Defining the problem: the precise problem that needs solving

 Requirements gathering

 Obtaining input from as many sources as possible

 Requirements analysis

 Organizing the information

 Requirements specification

 Writing detailed instructions about how the software should

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

deciding how the subsystems will interact


 Detailed design of the internals of a subsystem

 User interface design

 Design of databases
ACTIVITIES COMMON TO SOFTWARE PROJECTS
 Modeling
 Creating representations of the domain or the software
 Use case modeling
 Structural modeling

 Dynamic and behavioral 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

 Complexity and large numbers of details


 Uncertainty about requirements

 Constant change

 Uncertainty about technology

 Uncertainty about software engineering skills

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: ….

 The common activities to software projects are : …

35

You might also like