Fundamentals of Software Engineering
Fundamentals of Software Engineering
Software Engineering
(Compulsory)
Learning Outcome
After successfully completing this course
students should be able to;
– explain the software engineering principles and
techniques that are used in developing quality
Software products
– apply software engineering principles and
techniques appropriately to develop a moderately
complex software system
UCSC - 2014 2
IT3205: Fundamentals of Software Engineering - Introduction
Outline of Syllabus
1. Introduction
2. Software Development Process Models
3. Requirements Analysis & Specification
4. Design
5. Coding
6. Software Testing and Quality Assurance
7. Software Maintenance
8. Software Project Management
UCSC - 2014 3
IT3205: Fundamentals of Software Engineering - Introduction
Main References
Software Engineering by
1. Ian Sommerville, 7th edition,
Addison-Wesley, 2006.
3. http://www.softwareengineering-9.com
UCSC - 2014 4
IT3205: Fundamentals of Software Engineering - Introduction
Introduction
Duration: 4 hours
UCSC - 2014 5
IT3205: Fundamentals of Software Engineering - Introduction
Learning Objectives
• Describe what software is, different types of
software and software quality attributes
• Describe with the problems associated with
software and software development
• Define what software engineering is and
explain why it is important
• State some professional issues related to
software development
UCSC - 2014 6
IT3205: Fundamentals of Software Engineering - Introduction
Detailed Syllabus
1.1 Software
1.1.1 What is software?
1.1.2 Types of software
1.1.3 Characteristics of Software
1.1.4 Attributes of good software
UCSC - 2014 7
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 8
IT3205: Fundamentals of Software Engineering - Introduction
What is software?
• Instructions given to a computer (computer
programs)
• Software is a general term for the various
kinds of programs used to operate computers
and related devices
• It can be;
– System Software
– Application Software
UCSC - 2014 9
IT3205: Fundamentals of Software Engineering - Introduction
What is software?
• Software is the set of instructions that makes
the computer work.
UCSC - 2014 10
IT3205: Fundamentals of Software Engineering - Introduction
What is software?
• Software is held either on your computer’s
hard disk, CDROM, DVD or on a diskette
(floppy disk) and is loaded (i.e. copied) into
the computer’s RAM (Random Access
Memory), as and when required.
UCSC - 2014 11
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 12
IT3205: Fundamentals of Software Engineering - Introduction
2. Application Software
– set of one or more programs designed to carry
out operations for a specific application
UCSC - 2014 13
IT3205: Fundamentals of Software Engineering - Introduction
System Software
System Software
UCSC - 2014 14
IT3205: Fundamentals of Software Engineering - Introduction
Application Software
Application Software
UCSC - 2014 15
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 16
IT3205: Fundamentals of Software Engineering - Introduction
• Embedded software:
Embedded software resides in
read-only memory and is used to
control product and system for the
customer and industrial markets
UCSC - 2014 17
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 18
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 19
IT3205: Fundamentals of Software Engineering - Introduction
1.1.3 CHARACTERISTICS OF
SOFTWARE
UCSC - 2014 20
IT3205: Fundamentals of Software Engineering - Introduction
Characteristics of Software
• Intangibility
– Cannot touch software
• Increase use will not introduce any defects
• Software is configurable
– able to build software by combining a basic set of software
components in different ways
– One can change the product easily by re-implementing it
without changing the design
• Custom built
– Most software are made upon order
UCSC - 2014 21
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 22
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 23
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 24
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 25
IT3205: Fundamentals of Software Engineering - Introduction
Software Quality
• The degree in which software possesses a
desired combination of quality attributes
UCSC - 2014 26
IT3205: Fundamentals of Software Engineering - Introduction
Software Quality
• Maintainability
– Software must evolve to meet changing needs
• Dependability
– Software must be trustworthy
• Efficiency
– Software should not make wasteful use of system
resources
• Acceptability
– Software must accepted by the users for which it was
designed. This means it must be understandable, usable
and compatible with other systems
UCSC - 2014 27
IT3205: Fundamentals of Software Engineering - Introduction
Bohem’s Classification
• Current Usefulness
– The qualities expected from a software system in
user’s point of view
• Potential Usefulness
– The qualities expected from a software system
UCSC - 2014 28
IT3205: Fundamentals of Software Engineering - Introduction
Current usefulness
• Efficiency
– Software should not make wasteful use of system
resources
• Reliability
• Usability
• Correctness
– The degree with which software adheres to its specified
requirements
• User friendliness
• Robustness
UCSC - 2014 29
IT3205: Fundamentals of Software Engineering - Introduction
Potential usefulness
• Maintainability
– Software must evolve to meet changing needs. The ease
with which changes can be made to satisfy new
requirements or to correct deficiencies
• Modularity
• Reusability
– The ease with which software can be reused in developing
other software
• Portability
– The ease with which software can be used on computer
configurations other than its current one
UCSC - 2014 30
IT3205: Fundamentals of Software Engineering - Introduction
McCall’s Classification
• Product operation
• Product revision
• Product transition
UCSC - 2014 31
IT3205: Fundamentals of Software Engineering - Introduction
Product Operation
• Efficiency
– The degree with which software fulfills its purpose without
waste of resources
• Correctness
• User friendliness
• Usability
• Reliability
– The frequency and criticality of software failure, where
failure is an unacceptable effect or behavior occurring
under permissible operating conditions
• Robustness
UCSC - 2014 32
IT3205: Fundamentals of Software Engineering - Introduction
Product Revision
• Maintainability
• Flexibility
• Testability
Product Transition
• Interoperability
• Reusability
• Portability
UCSC - 2014 33
IT3205: Fundamentals of Software Engineering - Introduction
1.2.1 INTRODUCTION TO
SOFTWARE ENGINEERING
UCSC - 2014 34
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 35
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 37
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 38
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 39
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 40
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 41
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 42
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 43
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 44
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 45
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 46
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 47
IT3205: Fundamentals of Software Engineering - Introduction
Development Failures
IBM Survey, 2002
– 55% of systems cost more than expected
– 68% overran the schedules
– 88% had to be substantially redesigned
UCSC - 2014 48
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 49
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 50
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 51
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 53
IT3205: Fundamentals of Software Engineering - Introduction
Statistics
UCSC - 2014 54
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 55
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 56
IT3205: Fundamentals of Software Engineering - Introduction
Software Problems
1. Time Schedules and cost estimates of many
software projects are grossly inaccurate
2. Software is costly
3. The quality of software is not satisfactory
4. Software is difficult to maintain
5. The productivity of software people is not
satisfactory to meet the demand
UCSC - 2014 57
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 58
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 59
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 60
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 61
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 62
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 63
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 65
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 66
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 67
IT3205: Fundamentals of Software Engineering - Introduction
UCSC - 2014 68