Fundamentals of Software Engineering
Fundamentals of Software Engineering
Fundamentals of Software Engineering
Software Engineering
(Compulsory)
UCSC - 2014 2
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 3
IT3205 - Software Development Process Models
Detailed Syllabus
2.1 What is a software process?
UCSC - 2014 4
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 5
IT3205 - Software Development Process Models
UCSC - 2014 6
IT3205 - Software Development Process Models
Software Process
• It is important to go through a series of steps
to produce high quality software. These steps
or the road map followed is called the
software process.
• Software process is a set of ordered tasks
involving activities, constraints and resources
that produce a software system
• A process is important because it imposes
consistency and structure on a set of activities
UCSC - 2014 7
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 8
IT3205 - Software Development Process Models
UCSC - 2014 9
IT3205 - Software Development Process Models
UCSC - 2014 10
IT3205 - Software Development Process Models
UCSC - 2014 11
IT3205 - Software Development Process Models
UCSC - 2014 12
IT3205 - Software Development Process Models
UCSC - 2014 13
IT3205 - Software Development Process Models
Waterfall Model
• Separate and distinct phases of specification
and development
• A linear sequential model
UCSC - 2014 14
IT3205 - Software Development Process Models
Software Design
Coding
Testing
Maintenance
UCSC - 2014 15
IT3205 - Software Development Process Models
UCSC - 2014 16
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 17
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 18
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 19
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 20
IT3205 - Software Development Process Models
UCSC - 2014 21
IT3205 - Software Development Process Models
UCSC - 2014 22
IT3205 - Software Development Process Models
2.2.2 EVOLUTIONARY
DEVELOPMENT
UCSC - 2014 23
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".
UCSC - 2014 24
IT3205 - Software Development Process Models
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).
UCSC - 2014 25
IT3205 - Software Development Process Models
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.
UCSC - 2014 26
IT3205 - Software Development Process Models
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
UCSC - 2014 27
IT3205 - Software Development Process Models
Throw-away Prototyping
UCSC - 2014 28
IT3205 - Software Development Process Models
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.
UCSC - 2014 29
IT3205 - Software Development Process Models
UCSC - 2014 30
IT3205 - Software Development Process Models
Evolutionary Prototyping
UCSC - 2014 31
IT3205 - Software Development Process Models
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
– Mainly suitable for projects with vague and unstable
requirements
UCSC - 2014 32
IT3205 - Software Development Process Models
Evolutionary Prototyping
• Disadvantages
– Prototype usually evolve so quickly that it is not cost-
effective 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
– It is not clear how the range of skills which is normal in
software engineering teams can be used effectively for this
mode of development
– Languages which are good for prototyping not always best
for final product
UCSC - 2014 33
IT3205 - Software Development Process Models
2.2.3 COMPONENT-BASED
SOFTWARE ENGINEERING (CBSE)
UCSC - 2014 34
IT3205 - Software Development Process Models
UCSC - 2014 35
IT3205 - Software Development Process Models
UCSC - 2014 36
IT3205 - Software Development Process Models
• 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.
UCSC - 2014 37
IT3205 - Software Development Process Models
UCSC - 2014 38
IT3205 - Software Development Process Models
UCSC - 2014 39
IT3205 - Software Development Process Models
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).
• The iterative process can be used where the
decision is not easily revocable or where the
consequences of revocation could be costly.
UCSC - 2014 40
IT3205 - Software Development Process Models
UCSC - 2014 41
IT3205 - Software Development Process Models
Incremental Model
UCSC - 2014 42
IT3205 - Software Development Process Models
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.
UCSC - 2014 43
IT3205 - Software Development Process Models
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.
UCSC - 2014 44
IT3205 - Software Development Process Models
UCSC - 2014 45
IT3205 - Software Development Process Models
UCSC - 2014 47
IT3205 - Software Development Process Models
Spiral Model
UCSC - 2014 48
IT3205 - Software Development Process Models
UCSC - 2014 49
IT3205 - Software Development Process Models
UCSC - 2014 51
IT3205 - Software Development Process Models
UCSC - 2014 52
IT3205 - Software Development Process Models
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.
• The development guidelines stress delivery and
active and continuous communication between
developers and customers.
UCSC - 2014 53
IT3205 - Software Development Process Models
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.
• Software increments must be delivered in short time
periods so that the adaptation keep pace with the
change This iterative approach enables the customer
to evaluate the software increment regularly and
provide necessary feedback to the software team.
UCSC - 2014 54
IT3205 - Software Development Process Models
UCSC - 2014 55
IT3205 - Software Development Process Models
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
framework activities;
planning, design , coding and testing.
UCSC - 2014 56
IT3205 - Software Development Process Models
Extreme programming
• “Extreme Programming is a discipline of
software development based on values of
simplicity, communication, feedback and
courage”
– Ron Jeffries
UCSC - 2014 57
IT3205 - Software Development Process Models
UCSC - 2014 58
IT3205 - Software Development Process Models
UCSC - 2014 59
IT3205 - Software Development Process Models
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.
UCSC - 2014 60
IT3205 - Software Development Process Models
UCSC - 2014 61
IT3205 - Software Development Process Models
UCSC - 2014 62
IT3205 - Software Development Process Models
UCSC - 2014 63
IT3205 - Software Development Process Models
UCSC - 2014 65
IT3205 - Software Development Process Models
UCSC - 2014 67
IT3205 - Software Development Process Models
UCSC - 2014 68
IT3205 - Software Development Process Models
UCSC - 2014 69
IT3205 - Software Development Process Models
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.
• Prototypes had several advantages over
traditional specifications:
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
Unified Process
• The Unified Process or Rational Unified
Process (RUP) is a framework for object
oriented software engineering using UML.
• This is a use-case driven, architecture centric,
iterative and incremental software
development model.
UCSC - 2014 75
IT3205 - Software Development Process Models
Unified Process
UCSC - 2014 76
IT3205 - Software Development Process Models
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.
UCSC - 2014 77
IT3205 - Software Development Process Models
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 implementation
model and the deployment model.
UCSC - 2014 78
IT3205 - Software Development Process Models
Unified Process
• Construction Phase:
– The construction phase of the UP is identical to
the construction activity defined in the generic
software process. Using the architectural model as
input, the construction phase develops or
acquires the software components that will make
each usecase operational for end-users. As
components are developed unit tests are designed
and executed for each component. Integration
testing and acceptance testing are carried out
using use-cases to derive required test cases.
UCSC - 2014 79
IT3205 - Software Development Process Models
Unified Process
• Transition Phase:
– The Transition Phase of the UP encompasses the
later stages of the generic construction activity
and the first part of the generic deployment
activity. Software is given to end-users for beta
testing. The software team creates necessary
support information (user manual, installation
manual etc.). At the end of transition phase, the
software increment becomes a usable software
release.
UCSC - 2014 80
IT3205 - Software Development Process Models
Unified Process
• Production Phase:
– The production phase of the UP coincides with the
deployment activity of the generic process. During
this phase, the on going use of the software is
monitored, support for operating environment is
provided, and defect reports and requests for
change are submitted and evaluated.
UCSC - 2014 81
IT3205 - Software Development Process Models
Unified Process
• It is likely that at the same time the
construction, transition and production
phases are being conducted, work may have
already begun on the next software
increment. This means that the unified
process do not occur in a sequence, but rather
with staggered concurrency.
UCSC - 2014 82
IT3205 - Software Development Process Models
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
UCSC - 2014 89
IT3205 - Software Development Process Models
CASE Tools
• Tools used to assist the all aspects of the software
development lifecycle are known as CASE Tools.
UCSC - 2014 90
IT3205 - Software Development Process Models
CASE Classification
• Help to understand the types of CASE tools and their
role in supporting software process activities.
UCSC - 2014 91
IT3205 - Software Development Process Models
UCSC - 2014 92
IT3205 - Software Development Process Models
UCSC - 2014 93
IT3205 - Software Development Process Models
UCSC - 2014 94