ICT 319
SOFTWARE ENGINEERING
Lecturer:
Matthew Cobbinah
Email: [email protected]
[email protected]
Contact: +233 547 900 989
COURSE OUTCOMES
▪ Explain the issues of producing quality software
▪ Design systems using UML notation
▪ Explain human issues in the software engineering
profession: ethics and professional practice
▪ Discuss the different aspects of project management
in producing secure quality software
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 3
COURSE MATERIALS
1. Software engineering and testing (Agarwal etal., 2010)
2. Software Engineering, 9th Edition (Sommerville, 2011)
3. Software Engineering, 10th Edition (Sommerville, 2015)
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 4
COURSE OVERVIEW
Introduction to Software Engineering (Agarwal etal,
pages 3-26)
Software and software engineering
Various types and classes of softwares
Software component
Software characteristics
Software crises and causes
Software Myths
Engineering processes
Software Evolutions (Eras of software)
Terminologies in software engineering
Professional software development (Ian, page 5)
Software engineering ethics (Ian, page 14)
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 5
COURSE OVERVIEW
The Software Life Cycle (Agarwal etal, pages 29-50)
Software-Development Life-Cycle
Waterfall Model
Prototyping Model
Spiral Model
Evolutionary Development Model
Iterative-Enhancement Model
RAD Model
Comparison of Various Process Models
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 6
COURSE OVERVIEW
Agile Software Developpent (Ian, pages 56-74)
Agile methods
Plan-driven and agile development
Extreme programming
Agile project management
Scaling agile methods
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 7
COURSE OVERVIEW
Software Quality Management (Ian, pages 651-668)
Software quality
Software standards
Reviews and inspections
Software measurement and metrics
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 8
COURSE OVERVIEW
Requirements Engineering (Ian , pages 82-111)
Functional and non-functional requirements
The software requirements document
Requirements specification
Requirements engineering processes
Requirements elicitation and analysis
Requirements validation
Requirements management
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 9
COURSE OVERVIEW
System Modeling (Ian, pages 118-138)
Context models
Interaction models
Structural models
Behavioral models
Model-driven engineering
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 10
COURSE OVERVIEW
Software Architecture (Ian, pages 147-164)
Architectural design decisions
Architectural views
Architectural patterns
Application architectures
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 11
COURSE OVERVIEW
Software Design and implementation (Ian, pages 176-
198)
Object-oriented design using the UML
Design patterns
Implementation issues
Open-source development
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 12
COURSE OVERVIEW
Software Testing and strategies (Ian and Agarwal etal)
Testing (Ian, pages 205-228)
Development testing
Test-driven development
Release testing
User testing
Strategies (Agarwal etal, pages 181-189)
Static-Testing Strategies
Debugging
Error, Fault, and Failure
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 13
COURSE OVERVIEW
Software Maintenance (Agarwal etal, pgs 193, 202-204,
215)
Software as an Evolution Entity
Need for Maintenance
Categories of Maintenance
Maintenance Costs
Software-Risk Analysis and Management
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 14
MODE OF DELIVERY
In order to complete the semester work and to enable
students gain a rich learning experience;
This course will be delivered via both a face to face lectures and
online interaction
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 15
MODE OF ASSESSMENT & EVALUATION
Assessment and Evaluation will be based on:
1. Assignments/Quizzes = 10mks
2. Midsemester Exam = 15mks
3. Lecture Attendance = 5mks
4. End of term Exam= 70mks
TOTAL (1+2+3+4) = 100mks
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 16
LECTURE ONE:
INTRODUCTION TO SOFTWARE
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 17
INTRODUCTION TO SOFTWARE ENGINEERING
▪ WHAT IS SOFTWARE?
▪ The set of computer programs, procedures, and associated
documents (flowcharts, manuals, etc.) that describe the programs
and how they are to be used.
▪ A collection of programs whose objective is to enhance the
capabilities of the hardware.
▪ A set of instructions used to acquire inputs and to manipulate
them to produce the desired output in terms of functions and
performance as determined by the user of the software.
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 18
INTRODUCTION TO SOFTWARE ENGINEERING
▪ WHAT IS SOFTWARE?...
▪ According to IEEE,
▪ Software is the collection of computer programs, procedure
rules and associated documentation and data
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 19
INTRODUCTION TO SOFTWARE ENGINEERING
▪ Software:
Softwares comprises of Source Codes, Executables, Design
Documents, Operations, System Manuals and ‘Installation and
Implementation Manuals’.
Typically, a software includes;
1. Instructions (computer programs) that when executed provide desired
functions and performance.
2. Data structures that enable the programs to adequately manipulate
information.
3. Documents that describe the operation and use of the programs.
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 20
INTRODUCTION TO SOFTWARE ENGINEERING
▪ SOFTWARE COMPONENTS
▪ A component is an object written to a specification.
▪ A software component is a system element offering a
predefined service and is able to communicate with other
components.
▪ It takes significant effort and awareness to write a software
component that is effectively reusable.
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 21
INTRODUCTION TO SOFTWARE ENGINEERING
▪ SOFTWARE COMPONENTS…
The component needs:
▪ To be fully documented;
▪ To be more thoroughly tested;
▪ To have robust input validity checking;
▪ To pass back useful error messages as appropriate;
▪ To be built with an awareness that it will be put to
unforeseen uses
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 22
INTRODUCTION TO SOFTWARE ENGINEERING
▪ WHY SOFTWARE?
1. It is the engine that drives business decision making.
2. It serves as the basis for modern scientific investigation
and engineering problem-solving.
3. It is embedded in all kinds of systems, such as
transportation, medical, telecommunications, military,
industrial processes, entertainment, office products, etc.
.
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 23
INTRODUCTION TO SOFTWARE ENGINEERING
▪ Qualities of a good software
▪ Good software should deliver the required functionality and
performance to the user
▪ A good software should be maintainable, dependable, and
usable
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 24
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TYPES OF SOFTWARE
1. System software
2. Application software
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 25
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TYPES OF SOFTWARE
1. System software
▪ Includes the operating system and all utilities that enable the
computer to function.
▪ They are low-level programs that interact with the computer at a
very basic level.
Types:
▪ Operating Systems
▪ Utilities Programs
▪ Device drivers
▪ Language Translators
Compilers
Interpreters and
Assemblers
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 26
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TYPES OF SOFTWARE
1. System software…
Operating Systems
▪ The operating system provides interface between the
user and the hardware
▪ It manages hardware, such as memory, CPU, input/
output devices, files, etc., for the user
Examples:
▪ Microsoft Windows,
▪ DOS,
▪ Mac OS,
▪ Linux, etc
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 27
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TYPES OF SOFTWARE
1. System software…
Utility Programs
▪ Perform the specification tasks related to managing
system resources.
▪ These programs mostly act as the ‘Zoom lions’ for the
operating systems.
Examples:
▪ Anti-virus
▪ Disk cleaners
▪ System diagnostics
▪ Backup
▪ Data recovery SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 28
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TYPES OF SOFTWARE
1. System software…
Device drivers
▪ Device drivers contains the detail machine language
necessary to control each device.
▪ These can be viewed as “divisional managers”.
▪ The operating system commands the driver, which in
turn commands the peripheral devices.
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 29
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TYPES OF SOFTWARE
1. System software…
Language Translators
▪ Any computer package capable of translating a source
program written in either a high level language or an
assembly language into a machine language.
Types:
▪ Compilers
▪ Interpreters, and
▪ Assemblers
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 30
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TYPES OF SOFTWARE
1. System software…
Language Translators…
▪ A compiler translates source code into object code.
▪ The compiler derives its name from the way it works,
looking at the entire piece of source code and
collecting and reorganizing the instructions.
▪ Programs produced by compilers run much faster than
the same programs executed by an interpreter
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 31
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TYPES OF SOFTWARE
1. System software…
Language Translators…
▪ Interpreter analyses and executes each line of source
code in succession, without looking at the entire
program.
▪ The advantage of interpreters is that they can execute
a program immediately, as opposed to compilers which
require some time before executing a program
▪ An interpreter usually gives better error diagnostics
than a compiler, because it executes the source
program statement by statement.
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 32
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TYPES OF SOFTWARE
1. System software…
Language Translators…
▪ An Assembler translates and assembles a program
written in assembly code into machine (object) code.
▪ The assembler translates the symbolic function codes
into the equivalent machine operation code; symbolic
addresses are allocated actual internal memory
locations
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 33
INTRODUCTION TO SOFTWARE ENGINEERING
▪ TYPES OF SOFTWARE
2. Application software
▪ Special softwares that are designed to perform
particular task.
▪ Consist of programs that do real work for users.
▪ They sits above system software because they need
the help of system software to run.
▪ Thus, system software provides the platform for
running application softwares.
Examples/Types:
Word Processing, spreadsheet, presentation, database
management systems, image processing softwares, etc.
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 34
INTRODUCTION TO SOFTWARE ENGINEERING
▪ CLASSES OF SOFTWARE:
▪ Two main classes:
Generic and Customized softwares
▪ Generic Softwares are designed for a broad customer
market whose requirements are very common, fairly
stable, and well-understood by the software engineer.
▪ Examples are Database systems, web browsers,
ERP/CRM packages, and system softwares
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 35
INTRODUCTION TO SOFTWARE ENGINEERING
▪ CLASSES OF SOFTWARE:
▪ Two main classes:
Generic and Customized softwares
▪ Customized Softwares are those that are developed for
unique customer domain, which the generic ones cannot
be used to meet them.
▪ Examples are traffic-management systems, hospital-
management systems, school management systems,
etc.
SOFTWARE ENGINEERING:
LECTURER: MATTHEW COBBINAH 36
T FOR THANKS
ANY QUESTION