SWE2301: Introduction to software Engineering 1
SWE2301: INTRODUCTION TO
SOFTWARE ENGINEERING
Lecture 01: Introduction
Venue: CIT Theater
Time: 10-12am
Presented by M. I. Mukhtar
SWE2301: Introduction to software Engineering 2
Course Objectives
• To introduce the concepts and methods
required for the construction of large
software system.
• To help students to acquire skills that will
enable them to develop software of high
quality- software that is reliable, and that is
reasonably easy to understand, modify and
maintain
SWE2301: Introduction to software Engineering 3
Course Lecture
• Monday
• 10-12pm
• Friday
• 12-1pm ----x
SWE2301: Introduction to software Engineering 4
Essential Texts
• MainText : “Software Engineering by
Sommerville”
• Other Text: “Software Engineering by K.K.
Aggarwal and Yogesh Singh”
SWE2301: Introduction to software Engineering 5
Course Outline
• Software engineering concepts and
principles
• Introduction to software life cycle.
• Requirements, design & Software
architecture.
• Object Oriented Modelling using UML
• Software testing.
• Framework and APIs
• User Interface Design Considerations
• **Outline can be modified by the course
tutors.
SWE2301: Introduction to software Engineering 6
Course Assessment
• CA – 30%
• Exams – 70%
7 questions to answer 5
SWE2301: Introduction to software Engineering 7
… end of the road
• Students will be able understand the
issues affecting the analysis, design,
implementation, testing and maintenance
of large systems.
• Students will be able to read and
understand the professional and technical
literature on software engineering
History of Software Engineering
• Software used to be quite simple.
• Developed for use by the developer, no rules.
• Software got more and more complicated,
and because of lack of systematic methods,
software projects increasingly failed.
• In 1968, a big software engineering
conference was organized to solve software
failures (crisis)
• birth of software engineering as a distinct
discipline.
SWE2301: Introduction to software Engineering 9
Software Crisis
• Projects running over-budget and over-time.
• Software was very inefficient.
• Software was of low quality.
• Software often did not meet requirements.
• Projects were unmanageable and code difficult
to maintain.
• Software was never delivered.
• The rapid advancement of hardware = need for
new software.
• The increasing use of computers = need for the
development of more software.
SWE2301: Introduction to software Engineering 10
Software Engineering
• Software Engineering (SE) is a discipline whose
aim is the production of quality software ,
software that is delivered on time, within
budget, and that satisfies its requirements.
• SE is an engineering discipline that is
concerned with all aspects of software
production from the early stages of system
specification through to maintaining the
system after it has gone into use.
SWE2301: Introduction to software Engineering 11
Software Engineering..
• SE is concerned with theories, methods and
tools for professional software development.
• SE is not a static discipline, there are
unresolved debates and controversies.
SWE2301: Introduction to software Engineering 12
Software Engineering Concepts
• Some important concepts in SE include:
• Software Product
• Software Diversities
• Software Issues
• Software Ethics
• Software Principles
SWE2301: Introduction to software Engineering 13
Software Products
• Generic products:
• stand-alone systems that are marketed and sold to
any customer,
• specification owned by the software developer,
• decisions on software change are made by the
developer.
• Customized products:
• commissioned for a specific customer to meet their
own needs,
• specification owned by the customer for the software
• decisions of software changes are made by
customers.
SWE2301: Introduction to software Engineering 14
Software Diversities
• Different types of software system:
• Stand-alone applications, Interactive transaction-
based applications, Entertainment systems,
Embedded control systems, Batch processing
systems, Data collection systems, Systems of
systems.
• No universal set of software techniques that is
applicable to all of these.
• Methods and tools used depend on application
type, requirements and development team.
SWE2301: Introduction to software Engineering 15
Software Issues
• Three (3) general issues:
• Heterogeneity: The need to operate systems as
distributed systems across networks that
include different types of computer and mobile
devices and to integrate new with old systems
• Business and Social Change: The need to adapt
systems to respond rapidly to changes.
• Security and Trust: The need to prevent
unauthorized access to software especially those
that can be accessed over the network.
SWE2301: Introduction to software Engineering 16
Software Engineering Ethics
• Software engineering is carried out within a
social and legal framework that restricts the
freedom of people working in the area.
• Software engineer must uphold
Confidentiality, Competence, Intellectual
property right and avoid Computer misuse.
SWE2301: Introduction to software Engineering 17
Software Engineering Principles
• Separation of Concerns: “Divide and Conquer”
• Modularity: Separating software into components
based on functions and responsibility--- next
slide
• Abstraction: Separating “What” from “How”
• Anticipation of Change: Main requirements must
be worked out early but changes can be made
later
• Generality: Software should be designed to be as
general as possible.
• Incremental Development: Developing in small
increments eases the task.
12/28/2021 Software Design 18
Modularity
Modularity
Coupling Cohesion
Cohesion and coupling are important in making every software reliable and
extendable. A software engineer must design the modules with goal of low
coupling and high cohesion
12/28/2021 Software Design 19
Coupling
• Coupling is the measure of the degree of
interdependence between modules.
• Three (3) types:
Uncoupled loosely coupled highly coupled
12/28/2021 Software Design 20
Cohesion
• Cohesion is a measure of the degree to
which the elements of a module are
functionally related.
• Cohesion is the measure of functional
strength of a module.
• Types of cohesion include functional,
sequential, coincidental and Temporal.
SWE2301: Introduction to software Engineering 21
Summary
• Software engineering is an engineering
discipline that is concerned with all aspects of
software production.
• There are many different types of system and
each requires appropriate software engineering
tools and techniques for their development.
• Concepts such as principles, ethics, issues are
important in understanding SE.
SWE2301: Introduction to software Engineering 22
Question ??