Software Engineering - 2: Higher Technological Institute

Download as pdf or txt
Download as pdf or txt
You are on page 1of 32

Higher Technological

Institute

Software Engineering -2

Dr. Sameh Zarif

Lecture 1
1
General Rules

Multimedia 2
Lecturer Background

Dr. Sameh Zarif


 Lecturer in IT department.
 BSc. Of information technology --> Mufic
 MSc. Of information technology --> Mufic
• Restoration of missing parts or scratches in digital images.
 Ph.D Of information technology-->UTP, Malaysia
• Multichannel image and video inpainting based on statistical
texture analysis.
 Email: [email protected]
Course Book

Chapter 1 Introduction 4
Course Syllabus

• Chapter 1: Introduction
• Chapter 2: Software processes
• Chapter 3: Agile software development
• Chapter 4: Requirements engineering
• Chapter 5: System modeling
• Chapter 6: Architectural design
• Chapter 7: Design and implementation
• Chapter 8: Software testing
• Chapter 9: Software evolution
• Chapter 10: Dependable systems 5
Course Materials

All support materials for this course will be


available at:
 Department groups
 Course group
 Google drive
This includes
 All Lectures chapters and slides in .pdf format
 All Problem sheets in .pdf format
 All Lab sheets in .pdf format
 Links to support information on particular topics
Course Objectives

• This course aims to provide advanced introduction


to software engineering.
• It continues important concepts such as:
• Architectural design
• Design and implementation
• Software testing
• Software evolution
• Describe essential software development activities,
from initial software specification to system evolution.
7
Course Assessment

Midterm Exam: ?

Group Project and lab. Work : ?

Final Written Exam: ?

Attendance : ?

8/17/2020 8
Chapter 1

Introduction
SWE-1 Revision

11
Chapter objectives

The objectives of this chapter are to introduce software


engineering. At the end of the chapter, you will:
 Understand what software engineering is and why it is
important.
 Understand that the development of different types of
software systems may require different software
engineering techniques.
 Understand some ethical and professional issues that
are important for software engineers.

12
Why … Software Engineering?

 The economies of all developed nations are dependent


on software.

 More and more systems (employing for example in


infrastructures, utilities, industrial manufacturing and
entertainments, Internet, modern telecommunications)
are software controlled

 software engineering is concerned with theories,


methods and tools for professional software
development.

13
Software costs

 Software costs often dominate computer system costs.


 The costs of software on a PC are often greater than the
hardware cost.
 For software systems with a long life, maintenance costs
may be several times development costs.
 Software engineering is concerned with cost-effective
software development.

14
Software Engineering and System Engineering

 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.

15
Software engineering

 Software engineering is 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.
 Engineering discipline
 Using appropriate theories and methods to solve problems
bearing in mind organizational and financial constraints.
 All aspects of software production
 Not just technical process of development, but also project
management and the development of tools, methods etc. to
support software production.

16
Software process activities

A software process is a sequence of activities that leads to


the production of a software product.
1. Software specification, where customers and engineers
define the software that is to be produced and the
constraints on its operation.
2. Software development, where the software is designed
and programmed.
3. Software validation, where the software is checked to
ensure that it is what the customer requires.
4. Software evolution, where the software is modified to
reflect changing customers and market requirements.
17
Software engineering ethics

 Job of software engineers involves wider responsibilities


than simply the application of technical skills.
 Software engineers must behave in an honest and
ethically responsible way if they are to be respected as
professionals.
 Ethical behaviour is more than simply upholding the law
but involves the following set of principles that are
morally correct.

18
Case studies
(to illustrate software engineering concepts)

Self Revision

19
Case studies

 A personal insulin pump


 An embedded system in an insulin pump used by diabetics to
maintain blood glucose control.
 A mental health case patient management system
 Mentcare. A system used to maintain records of people receiving
care for mental health problems.
 weather station
 A data collection system that collects data about weather
conditions in remote areas.
 iLearn: a digital learning environment
 A system to support learning in schools

20
Chapter 2

Software processes

21
Topics covered

 Software process models


 Plan-Driven and Agile Processes
 The waterfall model
 Incremental development
 Reuse-oriented software engineering
 Process activities
 Software specification
 Software design and implementation
• Design activities
 Software validation
• Testing stages
 Software evolution
22
The software process

 Software Process is 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 and implementation – defining the organization of the
system and implementing the system;
 Validation – checking whether it does what the customer wants;
 Evolution – changing the system in response to changing customer
needs.
 A software process model is an abstract representation of a
process.

23
Plan-driven and agile processes

 Software processes are categorized into plan-driven


processes or agile processes.
 Plan-driven processes are processes where all of the
process activities are planned in advance and the
progress is measured against this plan.
 In agile processes, planning is incremental and it is
easier to change the process to reflect the changing in
customer requirements.
 Most practical processes include elements of both plan-
driven and agile approaches.
 There are no right or wrong software processes.
24
Software process models

 The waterfall model


 It is a plan-driven model.
 Incremental development
 Specification, development and validation are interleaved. It may
be plan-driven or agile approach.
 Integration and configuration (Reuse-oriented software engineering)
 The system is assembled from existing configurable components.
It may be plan-driven or agile approach.
 In practice, most large systems are developed using a
process that incorporates elements from all of these
models.

25
The waterfall model

Phase has to be complete before moving onto the next


phase. 26
Incremental development

The idea is to develop an initial implementation, expose it to user


comment and evolve it through several versions until an adequate system
has been developed.

27
Integration and configuration
Reuse-oriented software engineering

 Based on the software reuse approach, systems are


integrated from existing components or application
systems (called COTS or commercial-off-the-shelf
systems).
 Reused elements may be configured to adapt their
behaviour and functionality to a user’s requirements.
 Reuse is now the standard approach for building many
types of business systems.

28
SOFTWARE PROCESSES ACTIVITIES

29
Software specification

 It is the process of establishing what services are required


and the constraints on the system’s operation.
 The requirements engineering process has four activities:
 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 user and system requirements in detail.
 Requirements validation
• Checking the validity (in terms of realism, consistency, and
completeness) of the requirements. 30
Software design and implementation

The process of converting the system specification into an


executable system.
 Software design
 Design a software structure that realizes the specification;
 Implementation
 Translate this structure into an executable program;
The activities of design and implementation are closely
related.

31
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.

32
Software evolution

 Software is inherently flexible and can change.


 As requirements change through changing business, 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

33
Chapter 3

Agile Software Development

34

You might also like