Software Engineering 1 Fundamental Introduction PDF
Software Engineering 1 Fundamental Introduction PDF
Software Engineering 1 Fundamental Introduction PDF
Software Engineering
IT3205 - Software Development Process Models
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 - Software Development Process Models
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
UCSC - 2014 3
IT3205 - Software Development Process Models
Software Engineering: A
practitioner's
2.approach by Roger S. Pressman,
UCSC - 2014 4
IT3205 - Software Development Process Models
3. http://www.softwareengineering-9.com
IT3205: Fundamentals of Software
Engineering Introduction
Duration: 4 hours
UCSC - 2014 5
IT3205 - Software Development Process Models
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
UCSC - 2014 6
IT3205 - Software Development Process Models
UCSC - 2014 7
IT3205 - Software Development Process Models
UCSC - 2014 8
IT3205 - Software Development Process Models
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
UCSC - 2014 9
IT3205 - Software Development Process Models
– Application Software
What is software?
• Software is the set of instructions that makes
the computer work.
UCSC - 2014 10
IT3205 - Software Development Process Models
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.
1.1.2 TYPES OF SOFTWARE
UCSC - 2014 11
IT3205 - Software Development Process Models
2. Application Software
UCSC - 2014 12
IT3205 - Software Development Process Models
UCSC - 2014 13
IT3205 - Software Development Process Models
System Software
System Software
UCSC - 2014 14
IT3205 - Software Development Process Models
Application Software
Application Software
UCSC - 2014 15
IT3205 - Software Development Process Models
UCSC - 2014 16
IT3205 - Software Development Process Models
UCSC - 2014 17
IT3205 - Software Development Process Models
• Embedded software:
Embedded software resides in read-
only memory and is used to control
product and system for the customer
and industrial markets
Common Software
Types
• Web-based software:
The network becomes a massive
computer providing an almost
UCSC - 2014 18
IT3205 - Software Development Process Models
UCSC - 2014 19
IT3205 - Software Development Process Models
UCSC - 2014 20
IT3205 - Software Development Process Models
1.1.3
CHARACTERISTICS OF
SOFTWARE
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
UCSC - 2014 21
IT3205 - Software Development Process Models
UCSC - 2014 22
IT3205 - Software Development Process Models
UCSC - 2014 23
IT3205 - Software Development Process Models
UCSC - 2014 24
IT3205 - Software Development Process Models
UCSC - 2014 25
IT3205 - Software Development Process Models
UCSC - 2014 26
IT3205 - Software Development Process Models
UCSC - 2014 27
IT3205 - Software Development Process Models
UCSC - 2014 28
IT3205 - Software Development Process Models
1.1.4
ATTRIBUTES OF GOOD
SOFTWARE
Software Quality
• The degree in which software possesses a
desired combination of quality attributes
UCSC - 2014 29
IT3205 - Software Development Process Models
UCSC - 2014 30
IT3205 - Software Development Process Models
Bohem’s Classification
• Current Usefulness
– The qualities expected from a software system in
user’s point of view
UCSC - 2014 31
IT3205 - Software Development Process Models
• Potential Usefulness
– The qualities expected from a software system
Current usefulness
• Efficiency
– Software should not make wasteful use of system
resources
• Reliability
• Usability
• Correctness
UCSC - 2014 32
IT3205 - Software Development Process Models
UCSC - 2014 33
IT3205 - Software Development Process Models
• 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
McCall’s Classification
• Product operation
UCSC - 2014 34
IT3205 - Software Development Process Models
• Product revision
• Product transition
Product Operation
• Efficiency
– The degree with which software fulfills its purpose without
waste of resources
• Correctness
• User friendliness
• Usability
UCSC - 2014 35
IT3205 - Software Development Process Models
• Reliability
– The frequency and criticality of software failure, where
failure is an unacceptable effect or behavior occurring
under permissible operating conditions
• Robustness
Product Revision
• Maintainability
• Flexibility
• Testability
UCSC - 2014 36
IT3205 - Software Development Process Models
Product Transition
• Interoperability
• Reusability
• Portability
UCSC - 2014 37
IT3205 - Software Development Process Models
1.2.1 INTRODUCTION TO
SOFTWARE ENGINEERING Need
for Software Engineering
• The economies of ALL developed nations are
dependent on software.
• More and more systems are software
controlled
UCSC - 2014 38
IT3205 - Software Development Process Models
UCSC - 2014 39
IT3205 - Software Development Process Models
UCSC - 2014 40
IT3205 - Software Development Process Models
UCSC - 2014 41
IT3205 - Software Development Process Models
UCSC - 2014 42
IT3205 - Software Development Process Models
UCSC - 2014 43
IT3205 - Software Development Process Models
UCSC - 2014 44
IT3205 - Software Development Process Models
UCSC - 2014 45
IT3205 - Software Development Process Models
– I Sommerville
UCSC - 2014 46
IT3205 - Software Development Process Models
UCSC - 2014 47
IT3205 - Software Development Process Models
UCSC - 2014 48
IT3205 - Software Development Process Models
UCSC - 2014 49
IT3205 - Software Development Process Models
1.2.2 SOFTWARE
ENGINEERING COSTS
Software Engineering Costs
Distribution of costs across the different
activities in the software process depends on
the process used and the type of software
that is being developed.
UCSC - 2014 50
IT3205 - Software Development Process Models
UCSC - 2014 51
IT3205 - Software Development Process Models
UCSC - 2014 52
IT3205 - Software Development Process Models
UCSC - 2014 53
IT3205 - Software Development Process Models
UCSC - 2014 54
IT3205 - Software Development Process Models
UCSC - 2014 55
IT3205 - Software Development Process Models
UCSC - 2014 56
IT3205 - Software Development Process Models
UCSC - 2014 57
IT3205 - Software Development Process Models
UCSC - 2014 58
IT3205 - Software Development Process Models
UCSC - 2014 59
IT3205 - Software Development Process Models
Statistics
UCSC - 2014 60
IT3205 - Software Development Process Models
UCSC - 2014 61
IT3205 - Software Development Process Models
UCSC - 2014 62
IT3205 - Software Development Process Models
Software Problems
1. Time Schedules and cost estimates of many
software projects are grossly inaccurate
2. Software is costly
UCSC - 2014 63
IT3205 - Software Development Process Models
UCSC - 2014 64
IT3205 - Software Development Process Models
UCSC - 2014 65
IT3205 - Software Development Process Models
UCSC - 2014 66
IT3205 - Software Development Process Models
UCSC - 2014 67
IT3205 - Software Development Process Models
UCSC - 2014 68
IT3205 - Software Development Process Models
– size / complexity
– novelty of the application
– response-time
characteristics
– security requirements
– user interface requirements
– reliability / criticality requirements
UCSC - 2014 69
IT3205 - Software Development Process Models
UCSC - 2014 70
IT3205 - Software Development Process Models
UCSC - 2014 71
IT3205 - Software Development Process Models
UCSC - 2014 72
IT3205 - Software Development Process Models
UCSC - 2014 73
IT3205 - Software Development Process Models
UCSC - 2014 74
IT3205 - Software Development Process Models
UCSC - 2014 75
IT3205 - Software Development Process Models
IT3205: Fundamentals of
Software Engineering
(Compulsory)
UCSC - 2014 76
IT3205 - Software Development Process Models
UCSC - 2014 77
IT3205 - Software Development Process Models
Learning Objectives
• Describe different process models used for
software development
• Identify the most appropriate software
process model for a given problem
• Identify how CASE tools can be used to
support software process activities
UCSC - 2014 78
IT3205 - Software Development Process Models
Detailed Syllabus
2.1 What is a software process?
UCSC - 2014 79
IT3205 - Software Development Process Models
Detailed Syllabus
2.4 Rapid software development
2.4.1 Agile methods
2.4.2 Extreme programming
2.4.3 Rapid application development (RAD)
2.4.4 Software prototyping
UCSC - 2014 80
IT3205 - Software Development Process Models
UCSC - 2014 81
IT3205 - Software Development Process Models
UCSC - 2014 82
IT3205 - Software Development Process Models
Software Process
• It guides our actions by allowing us to
examine, understand, control and improve the
activities that comprise the process
• The process of building a product is
sometime called a lifecycle because it
describes the life of that product from
conception through to its implementation,
delivery, use and maintenance
UCSC - 2014 83
IT3205 - Software Development Process Models
UCSC - 2014 84
IT3205 - Software Development Process Models
UCSC - 2014 85
IT3205 - Software Development Process Models
UCSC - 2014 86
IT3205 - Software Development Process Models
UCSC - 2014 87
IT3205 - Software Development Process Models
UCSC - 2014 88
IT3205 - Software Development Process Models
Waterfall Model
• Separate and distinct phases of specification
and development
• A linear sequential model
UCSC - 2014 89
IT3205 - Software Development Process Models
UCSC - 2014 90
IT3205 - Software Development Process Models
Requirement
Analysis &
UCSC - 2014 91
IT3205 - Software Development Process Models
UCSC - 2014 92
IT3205 - Software Development Process Models
Software design
• The design process translates requirements
into a representation of the software that can
be implemented using software tools.
• The major objectives of the design process
are the identification of the software
components, the software architecture,
interfaces, data structures and algorithms.
UCSC - 2014 93
IT3205 - Software Development Process Models
Coding (implementation)
• The design must be translated to a machine
readable form.
• During this stage the software design is
realized as a set of programs or program units.
• Programming languages or CASE tools can
be used to develop software.
UCSC - 2014 94
IT3205 - Software Development Process Models
Testing
• The testing process must ensure that the
system works correctly and satisfies the
requirements specified.
• After testing, the software system is
delivered to the customer.
UCSC - 2014 95
IT3205 - Software Development Process Models
Maintenance
• Software will undoubtedly undergo changes
after it is delivered to the customer.
• Errors in the system should corrected and
the system should be modified and updated
to suit new user requirements.
UCSC - 2014 96
IT3205 - Software Development Process Models
UCSC - 2014 97
IT3205 - Software Development Process Models
UCSC - 2014 98
IT3205 - Software Development Process Models
2.2.2 EVOLUTIONARY
DEVELOPMENT
UCSC - 2014 99
IT3205 - Software Development Process Models
Evolutionary Development
• Evolutionary development approach is
typically used to develop and implement
software in a evolutionary manner.
• This approach has been described by Steve
McConnell as the "best practice for software
development and implementation".
Evolutionary Development
• Early versions of the system are presented
to the customer and the system is refined and
enhanced based on customer feedback.
• The cycle continues until development time
runs out (schedule constraint) or funding for
development runs out (resource constraint).
Prototyping
• It is very difficult for end-users to anticipate how
they will use new software systems to support their
work. If the system is large and complex, it is
probably impossible to make this assessment before
the system is built and put into use.
Prototyping
• A prototype is a working model that is
functionally equivalent to a component of the
product.
• There are two types of Prototyping
techniques
– Throw-away Prototyping
– Evolutionary Prototyping
Throw-away Prototyping
Throw-away Prototyping
• The objective is to understand the system
requirements clearly.
• Starts with poorly understood requirements.
Once the requirements are cleared, the
system will be developed from the beginning.
• This model is suitable if the requirements
are vague but stable.
Evolutionary Prototyping
Evolutionary Prototyping
• Advantages
– Effort of prototype is not wasted
– Faster than the Waterfall model
– High level of user involvement from the start
– Technical or other problems discovered early – risk
reduced
– A working system is available early in the process
– Misunderstandings between software users and
developers are exposed
Evolutionary Prototyping
• Disadvantages
– Prototype usually evolve so quickly that it is not
costeffective to produce great deal of documentation
– Continual change tends to corrupt the structure of the
prototype system. Maintenance is therefore likely to be
difficult and costly
• Component Analysis
– During this stage try to find the software components need
for the implementation once the requirements are
specified.
• Requirements Modification
– Analyze the discovered software components to find out
whether it is able to achieve the specified requirements.
Process Iteration
• A process for arriving at a decision or a
desired result by repeating rounds of analysis
or a cycle of operations.
• The objective is to bring the desired decision
or result closer to discovery with each
repetition (iteration).
Incremental Model
Incremental Development
• The Incremental development model involves
developing the system in an incremental fashion.
• The most important part of the system is fist
delivered and the other parts of the system are then
delivered according to their importance.
• Incremental development avoids the problems of
constant change which characterize evolutionary
prototyping.
Incremental Development
• An overall system architecture is established
early in the process to act as a framework.
• Incremental development is more
manageable than evolutionary prototyping as
the normal software process standards are
followed.
• Plans and documentation must be produced.
Spiral Model
Agile Process
• Agile software engineering combines a philosophy
and a set of development guidelines.
• The philosophy encourages the customer
satisfaction and early incremental delivery of
software.
• small and highly motivated software teams,
informal methods, minimal software engineering
work products, and overall development simplicity.
Agile Process
• An agile process adapt incrementally. To
accomplish incremental adaptation, an agile team
requires customer feedback.
• An effective tool to get customer feedback is an
operational prototype or a portion of an operational
system.
Extreme programming
• Extreme Programming (XP) is the most
widely used Agile Process model.
• XP uses an object oriented approach as its
development paradigm.
• XP encompasses a set of rules and practices
that occur within the context of four
3. Coding
– XP recommends developing a series of unit tests for each of the story –
Once the code is complete, units should be unit tested.
– Pair programming – two people work together at one computer.
– Acceptance tests are derived from user stories that have been
implemented as parts of the software release.
• Process Modeling
– The data objects defined in the data modeling phase are
transformed to achieve the information flow necessary to
implement business functions.
Software Prototyping
• The first RAD alternative was developed by
Barry Boehm and was known as the spiral
model.
• Boehm and other subsequent RAD
approaches emphasized developing
prototypes as well as or instead of rigorous
design specifications.
Unified Process
Unified Process
• Inception Phase:
– The Inception Phase of UP includes both customer
communication and planning activities. By
collaborating with the customer and end-users,
business requirements for the software are
identified, a rough architecture for the system is
proposed, and a plan for the iterative,
incremental nature of the project is developed.
Unified Process
• Elaboration Phase:
– The Elaboration Phase encompasses the
planning and modeling activities of the generic
process model. Elaboration refines and expands
the primary use-cases that were developed as
part of the inception phase and expands the
architectural representation to include five
different views of the software – the use-case
model, the analysis model, the design model, the
UCSC - 2014 83
IT3205: Fundamentals of Software Engineering - Introduction
2.6.1
OVERVIEW OF CASE
APPROACH
Overview of CASE Approach
• Computer Aided Software Engineering
(CASE) is the use of computer-based support
in the software development process.
IT3205: Fundamentals of Software Engineering - Introduction
2.6.2 CLASSIFICATION OF
CASE TOOLS
CASE Tools
• Tools used to assist the all aspects of the software
development lifecycle are known as CASE Tools.
– UML
– Refactoring tools
– QVT or Model transformation Tools
– Configuration management tools including revision
control
CASE Classification
• Help to understand the types of CASE tools and
their role in supporting software process activities.