0% found this document useful (0 votes)
16 views38 pages

Chapter-1

Uploaded by

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

Chapter-1

Uploaded by

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

Introduction to Software Engineering

[ Part 1 ]
Why Software Engineering (SE)?
What is Engineering? What is Software Engineering?
the Importance of Software Engineering?
FAQs about Software Engineering:
– a Software? .. Its Good Attributes ? Software Engineering? .. Its
Activities ?
– Software Engineeringvs. System Engineeringvs. Computer Science ?
– a Domain ? .. a System’s Environment?.. a System’s Boundary?
the Important Characteristics of Software that affect its
Development

Selected topics in SE Approaches & Processes


Applied Software Engineering
Software Engineering .. Why?

o The economies of ALL developed nations are dependent on


software.
o More and more systems are software controlled.
o Software engineering is concerned with theories, methods
and tools for
professional software development.
o Expenditure on software represents a significant fraction of
GNP (Gross National Product) in all developed countries.

2
Software Engineering .. Why?
•The Standish Group has been publishing reports on the success of
software projects since 1994. In its 2015 report it identified that:
 Only 39% of all projects were being delivered on time, on budget,
with the required features and functions.
 .. 43% were late, or over budget, or not delivering all the required
• features.
 .. 18% were either cancelled before delivery or delivered but never
used.
•In those reports, the major problems have been identified.
Among these problems were the following:
 Poor, or lack of, user involvement.
 Lack of clear business objectives.
 Under and over building – building features that are never
used and
• not building all the required features.
3
Frequently Asked Questions about SE
[ a Software ? .. Its GoodAttributes ? ]
What is a Software?
Computer programs and associated documentation. Software
products may be developed for a particular customer or may be
developed for a general market. What are the Attributes of Good
Software?
Good software should deliver the required functionality and
performance to the user (useful) and should be flexible, usable,
reliable, available, affordable, and maintainable (greatly influenced by
how it is designed and written).

4
Frequently Asked Questions about SE
[ Software Engineering ? .. Its Activities ? ]
What is Software Engineering?
Software engineering is an engineering discipline that is concerned
with all aspects of software production.
What are the Fundamental Software Engineering Activities?
Software specification, software development, software validation
and software evolution.

5
Frequently Asked Questions about SE
[ Software Engineering vs. System Engineering vs.
Computer Science .. ? ]
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.

6
Frequently Asked Questions about SE
[ .. a Domain ? .. a System’s Environment ?
.. a System’s Boundary ? ]
What is a System’s Boundary?
A conceptual line that divides the system that we wish to study from
‘everything else’, (that is, the scope of a system).
What is a System’s Environment?
It is made up of those things which are not part of the system, but
which can either affect the system or be affected by it.
What is a Domain?
It is a particular area of interest.

7
the Important Characteristics of Software
that affect its Development

Malleability: Software is easy to change. This malleability creates


a constant pressure for software to be changed rather than replaced.
Complexity: Software is often complex. Complexity can usually be
recognized, but it is less easy to define. One item of software can be
considered more complex than
another if the description of the first requires more explanation than
that of the second. If complexity is increased, errors will be increased.
Size: It is likely that there will be more errors in a large piece of
software than
there will be in a small one..
8
Introduction to Software Engineering
[ Part 2 ]
Software Engineering Processes & Process
Descriptions
Software Engineering Process Models
– Plan-Driven versus Agile Processes
– the Waterfall Model, Phases, and Problems
– the Iterative & Incremental Model, its Pros & Cons
– Waterfal versus Agile: Risks and Value
– Reuse-Oriented SE, .. & the Types of a Softw.
Component

Selected topics in SE Approaches & Processes


the Software Process .. & .. the Software
Process Model
A structured set of activities required to develop a software system.

Many different software processes but all involve:


• Specification – defining what the system should do;
• Design – defining the organization of the system;
• Implementation – implementing the system;
• Validation (Testing) – checking that it does what the
customer
wants;
• Evolution (Maintenance) – changing the system in
response to changing customer needs.

A software process model is an abstract representation of a


process. It presents a description of a process from some particular
perspective.

CHAPTER 2 SOFTWARE PROCESSES 10


the Software Process
Software Process Descriptions
When we describe and discuss processes, we usually talk
about the activities in these processes such as specifying a data
model, designing a user interface, etc. and the ordering of these
activities.
Process descriptions may also include:
o Products, which are the outcomes of a process activity;

o Roles, which reflect the responsibilities of the people

involved in the process;


o Pre- and Post- Conditions, which are statements that are true
before and after a process activity has been enacted or a product
produced.

CHAPTER 2 SOFTWARE PROCESSES 11


the Software Process
Plan-Driven versus Agile Processes
Plan-driven processes are processes where all the process
activities are
planned in advance and progress is measured against this plan.

In agile processes, planning is incremental, and it is easier to


change the process to reflect changing customer requirements.

N.B., In practice, most practical processes include


elements of both plan-driven and agile approaches.

N.B., There are no right or wrong software processes.


CHAPTER 2 SOFTWARE PROCESSES 12
Software Process Models [ Waterfall |
•Incremental & Iterative | Reuse-Oriented ]
• The Waterfall Model:
• A plan-driven model.
• Separate and distinct phases of specification and development.
• Incremental (& Iterative) Development:
• Specification, development and validation are interleaved.
• May be plan-driven or agile (but mostly agile).
• Reuse-Oriented Software Engineering:
• The system is assembled from existing components.
• May be plan-driven or agile.
•In practice, most large systems are developed using a process
that incorporates elements from all of these models.

CHAPTER 2 SOFTWARE PROCESSES 13


the Software Process
Software Process Models [ the
WaterfallModel]

CHAPTER 2 SOFTWARE PROCESSES 14


Software Process Models
[ the WaterfallModel Phases ]
There are separate identified phases in the waterfall model:
• Requirements Analysis and Definition
• System and Software Design
• Implementation and Unit Testing
• Integration and System Testing
• Operation and Maintenance
The main drawback of the waterfall model is the difficulty
of accommodating change after the process is underway. In
principle, a phase has to be complete before moving onto the
next phase.
CHAPTER 2 SOFTWARE PROCESSES 15
Software Process Models
•[ the Waterfall Model Problems ]
•Inflexible partitioning of the project into distinct stages makes it difficult to
respond to changing customer requirements.
• Therefore, this model is only appropriate when the requirements
are well-understood and changes will be fairly limited during the
design process.
• Few business systems have stable requirements.

The waterfall model is mostly used for large systems engineering
projects where a system is developed at several sites.

In those circumstances, the plan-driven nature of the waterfall
model helps coordinate the work.

CHAPTER 2 SOFTWARE PROCESSES 16


Software Process Models
[ the Incremental& IterativeModel ]

CHAPTER 2 SOFTWARE PROCESSES 17


Software Process Models
[ the Incremental& IterativeModel Advantages]
The cost of accommodating changing customer requirements is
reduced.
• The amount of analysis and documentation that has to be
redone is much less than is required with the waterfall model.
• It is easier to get customer feedback on the
development work that ha been done.
• Customers can comment on demonstrations of the software
and see how much has been implemented.
• More rapid delivery and deployment of useful software to
the customer is possible.
• Customers are able to use and gain value from the software
earlier than is possible with a waterfall process.

CHAPTER 2 SOFTWARE PROCESSES 18


the Software Process
Software Process Models
[ the Incremental& IterativeModel Problems]
The process is not visible.

Managers need regular deliverables to measure progress. If systems are
developed quickly, it is not cost-effective to produce documents that reflect every
version of the system.
System structure tends to degrade as new increments are added.

Unless time and money is spent on refactoring to improve the software, regular
change tends to corrupt it's structure Incorporating further software changes
becomes increasingly difficult and costly.

CHAPTER 2 SOFTWARE PROCESSES 19


Software Process Models
[ WaterfallversusAgile]

CHAPTER 2 SOFTWARE PROCESSES 29


Software Process Models [ Riskand Value ]

CHAPTER 2 SOFTWARE PROCESSES 21


Software Process Models

[ Reuse-OrientedSoftwareEngineering ]
Based on systematic reuse where systems are integrated from
existing components or COTS (Commercial-off-the-Shelf) systems.

The Software Process stages:


• Requirements Specification.
• Component Analysis;
• Requirements Modification;
• System Design with Reuse;
• Development and Integration.
Reuse is now the standard approach for building many types of
business system.
CHAPTER 2 SOFTWARE PROCESSES 22
the Software Process
Software Process Models

[ Reuse-Oriented Software Engineering]

CHAPTER 2 SOFTWARE PROCESSES 23


the Software Process
Software Process Models
[ Reuse-Oriented SE Types of a Software Component]


Web Services that are developed according to service standards and
which are available for remote invocation.

Collections of objects that are developed as a package to be integrated
with a component framework such as .NET or J2EE.

Stand-alone Software Systems (COTS) that are configured for use in
a particular environment.

CHAPTER 2 SOFTWARE PROCESSES 24


Introduction to Software Engineering
[ Part 3 ]
the Software Process Activities
– Software Specification [ Requirements
Engineering ]
– Software Development [ Design &
Implementation ]
– a general model of the Software Design process
– Software Testing
– Verification and Validation (V & V)
– Stages of Testing
– Software/System Evolution

Selected topics in SE Approaches &


The Software Process Activities
Real software processes are inter-leaved sequences of technical, collaborative
and managerial activities with the overall goal of specifying, designing,
implementing and testing a software system.

The four basic process activities of specification, development


(design & implementation), validation and evolution are organized
differently in different development processes. In the waterfall
model, they are organized in sequence, whereas in incremental
development they are inter-leaved.

CHAPTER 2 SOFTWARE PROCESSES 26


Software Specification [ a.k.a. Requirements ]:

Engineering or Requirements Specification ]


The process of establishing what services are required AND the
constraints on the system’s operation and development.

Requirements Engineering process:


Feasibility Study
Is it technically and financially feasible to build the system?
Requirements Elicitation and Analysis
What do the system stakeholders require or expect from the system?
Requirements Specification
Defining the requirements in detail
Requirements Validation
Checking the validity of the requirements

CHAPTER 2 SOFTWARE PROCESSES 27


Software Specification [ the REQs Eng. Process ]

CHAPTER 2 SOFTWARE PROCESSES 28


Software Development [ Design&
Implementation]

The process of converting the system specification into an


executable system.
Software Design:
• Design a software structure that realises the specification;
Implementation:
• Translate this structure into an executable program;

– The activities of design and implementation are closely


related and may be inter-leaved.
CHAPTER 2 SOFTWARE PROCESSES 29
Software Design [ a general model of
theprocess]

CHAPTER 2 SOFTWARE PROCESSES 30


Software Design [ a general model of the process ]

The Design Activities:


• Architectural Design; where you identify the overall structure of
the system, the principal components (sometimes called sub
systems or modules), their relationships and how they are
distributed.
• Interface Design; where you define the interfaces between
system components.
• Component Design; where you take each system component and
design how it will operate.
• Database Design; where you design the system data structures
and how these are to be represented in a database.

CHAPTER 2 SOFTWARE PROCESSES 31


Software Testing [ a.k.a. Software Validation ]

Verification and Validation (V & V)

Is intended to show that a system conforms to its specification


and meets the requirements of the system customer.

Involves checking and review processes and system testing.

System testing involves executing the system with test cases that
are derived from the specification of the real data to be processed
by the system.

Testing is the most commonly used V & V activity.

CHAPTER 2 SOFTWARE PROCESSES 32


Software Testing [ Stages of
Testing ]

CHAPTER 2 SOFTWARE PROCESSES 33


Software Testing [ Stages of Testing ]

Development or Component Testing


• Individual components are tested independently;
• Components may be functions or objects or coherent
groupings of these entities.
System Testing
• Testing of the system as a whole. Testing of emergent
properties is particularly important.
Acceptance Testing
• Testing with customer data to check that the system meets the
customer’s needs.

CHAPTER 2 SOFTWARE PROCESSES 34


Software Testing [ Testing Phases in a Plan–
Driven Software Process ]

CHAPTER 2 SOFTWARE PROCESSES 35


Software Evolution

• Software is inherently flexible and can change.


• As requirements change through changing business circumstances, the
software that supports the business must also evolve and change.
• Although there has been a demarcation between development and
evolution (maintenance) this is increasingly irrelevant as fewer and
fewer systems are completely new.

CHAPTER 2 SOFTWARE PROCESSES 36


Software Evolution [ System Evolution ]

CHAPTER 2 SOFTWARE PROCESSES 37


Lecture is based on its counterparts in the follo
wingcourses (and the following resources):

• Sommerville, I. (2016). Software Engineering 10th Edition. International


Computer Science.

• Sommerville, I. (2020). Engineering Software Products – An


Introduction to Modern Software Engineering. Pearson.

• Gerard O'Regan, (2017). Concise Guide to Software Engineering.


Springer, Cham.

Lecture Source: Dr. Amr S. Ghoneim

by Dr. Sarah Naiem Thank You!

You might also like