Professional Documents
Culture Documents
Software Engineering
Software Engineering
1
Contents
Basic System Development Life Cycle
Different approaches and models for System Development:
Waterfall
Prototyping
Spiral
WIN-WIN Spiral
Rapid Application Development
Group Based Approach: Joint Application Development
Object Oriented methodology
2
What is a Software?
Computer programs and associated documentation together
constitute the software.
A software may be developed for
A single customer according to his/her specification
General market i.e generic in nature and to be sold to a range of
different customers through different channels.
3
Nature of Software Systems
Used in variety of application
Business domain
Scientific domain
Engineering domain
Categories
Simple or complex
Internal use within the organization or for public use( railway
reservation system)
For a single well defined task or for the entire business functions
of an organization (enterprise wide application)
One location or distributed
4
Characteristics of a good software
Maintainability
Software must evolve to meet changing needs
Dependability
Software must be reliable
Efficiency
Software should not make wasteful use of system resources
Usability
It should be usable by the user for whom it was designed
5
Challenges in developing Software
Effort intensive
High cost involved (if soln. not successful then entire
investment go waste)
Long development time
Changing requirements of the user
High risk of failure- user acceptance, performance &
maintainability
Developing a software is quite different from the one-time
programs which we develop, try and throw way.
6
Successful Software Systems
Development should be completed
It should be useful
It should be usable and
It must be used
8
Reasons for failure
Schedule slippage
Cost over-runs
Does not solve the user’s problem
Poor quality
Not maintainable
9
Software Engineering
10
Applying engineering approach: Process
12
Software Process
While building a software or a system it is important
to go through a series of predictable steps – a road
map that helps you create a timely, high quality
result. The road map that we follow, is called a
‘software process’.
Software Process can be defined as a framework for
the tasks that are required to build high- quality
software.
13
Software Process is a set of activities and associated results
which lead to the production of a software product.
The total set of activities needed to transform a user’s
requirements into software is termed a software
engineering process.
14
Software Process
Fundamental Assumption:
Good processes lead to good software
Good processes reduce risk
Good processes enhance visibility
15
Variety of Software Processes
Software products are very varied...
Therefore, there is no standard process
for all software engineering projects
BUT successful software development
projects all need to address similar issues.
This creates a number of process steps that
must be part of all software projects
16
System/ Software Development
Life Cycle(SDLC)
SDLC is a framework composed of a sequence of
distinct steps or phases in the development of a
system.
17
Preliminary Investigation
Implementation Determination of
& Evaluation System Requirements
SDLC
Development of software
18
Preliminary Investigation
Request Clarification
Request Approval
19
A feasibility study precedes the decision to begin a
project.
What is the scope of the proposed project?
Is the project technically feasible?
What are the projected benefits?
What are the costs, timetable?
20
Feasibility Report: A written document
22
The requirements analysis and definition establish the
system's services, constraints and goals by consultation
with users. They are then defined in a manner that is
understandable by both users and development staff.
This phase can be divided into:
Requirements analysis
Requirements definition
Requirements specification
Requirements define the function of the system FROM THE
CLIENT'S VIEWPOINT.
23
Design of System
Describes the final system and the process by which it is to be
developed.
High level design- architectural design ( identifying the modules
and the interfaces)
Low level design –detailed design ( data structures & algorithms
of the each moddule)
It is a technical specification which describes
The output
The input and
Processes
The inter relationship between them with the help of designing
tools
24
Development of Software (Coding)
Programming
The software design is realized as a set of programs or program
units. (Written specifically, acquired from elsewhere, or
modified.)
Software acquisition
The choice depends on -The cost of each option, The time
available
25
System Testing
Individual components are tested against specifications.
The individual program units are integrated and tested
against the design as a complete system.
System is used experimentally –alpha testing, beta
testing
Test data are input
Limited no. of users
Testing is performed by persons other than those who wrote the
original programs to ensure more complete & unbiased testing
26
and more reliable software
Acceptance
The complete system is tested against the
requirements by the client.
Delivery and release
The complete system is delivered to the client
and released into production.
27
Implementation & Evaluation
Theory is turned into practice
Operation: The system is put into practical use.
Install the software
Train users
Required since both the organization & the users change and the
environment will be different over weeks and months
28
Implementation & Evaluation
Evaluation of the system is performed to identify the
strengths and weakness
Operational evaluation
Manner in which the system functions
Ease of use
Response time
Overall reliability
Level of utilization
Organizational impact
Measurement of benefits of the organization
Financial concerns
Operational efficiency
Competitive impact
29
A Generic Process Framework for SE
Communication
Planning
Modeling
Construction
Deployment
33
Process Flow
Describes how the framework activities, and the actions and
the tasks that occur within the framework activity are
organized with respect to sequence and time.
34
Linear Process Flow
35
Iterative Process Flow
36
The feasibility
Iterative Refinement study is
continuous
Concurrent
Activities
Initial
Requirements Version
Outline Intermediate
Design
Description Versions
Implementation Final
Version
37
Planning Modeling
Communication
Increment
released
Deployment Construction
38
Phased Development
Concept
A simple system with basic functionality is brought quickly
into production (Phase 1).
Subsequent phases are based on experience gained from
users of each previous phase.
Advantages
• Pay-back on investment begins soon.
• Requirement are more clearly understood in developing
subsequent phases
39
Communication Planning
Time
Modeling
Construction Deployment
40
SOFTWARE PROCESS MODELS
41
How a process model is chosen?
Based on
Nature of the project and application
Methods and tools to be used
Controls and deliverables that are required
Level of customer interaction
Risk perception
Understanding & application skill of the s/w engineer
(Domain knowledge of the s/w developer)
42
Different Approaches & Models for
System Development
Waterfall
Prototyping
RAD
Spiral
WIN –WIN Spiral
Rational Unified Process
43
Waterfall Model
This model is used when the requirements of a problem are
reasonably well understood.
The waterfall model derives its name due to the cascading effect
from one phase to the other
This model is sometimes referred to as the linear sequential model
or the classic life cycle
Is the oldest paradigm for SE.
It has a systematic, sequential approach to s/w development that
begins with customer specification of requirements and progress
through planning, modelling, construction and deployment
culminating in on-going support for the completed s/w.
44
Requirements analysis
& definition
System Specification
Implementation
& Unit testing
Integration
& System testing
Operation
& Maintenance
45
Phases of Waterfall Model
The model consist of six distinct stages, namely:
1.In the requirements analysis phase
(a) The problem is specified along with the desired service
objectives (goals)
(b) The constraints are identified
46
3. In the system and software design phase, the system
specifications are translated into a software representation.
The software engineer at this stage is concerned with:
The overall system architecture
Data structure
Algorithmic detail and
Interface representations
The hardware requirements are determined at this stage
along with a picture of the overall system architecture.
By the end of this stage the software engineer should be
able to identify the relationship between the hardware,
software and the associated interfaces.
47
4. In the implementation and unit testing
phase the software design is realised as a set of
programs or program units. Unit testing involves
verifying that each unit meets its specifications.
Testing at this stage focuses on making sure that
errors are identified and that the software meets
its required specification.
48
5. In the integration and system-testing
phase all the program units are integrated and
tested as a complete system to ensure that the
software requirements have been met. After this
stage the software is delivered to the customer
Deliverable – project result delivered to the
client for acceptance testing.
49
6. The maintenance phase is usually the longest stage of
the software. In this phase the software is updated to:
Meet the changing customer needs
Adapted to accommodate changes in the external
environment
Correct errors and oversights previously undetected in
the testing phases
Enhancing the efficiency of the software
The feed back loops allow for corrections to be
incorporated into the model.
For example a problem/update in the design phase
requires a ‘revisit’ to the specifications phase.
Note: When changes are made at any phase, the relevant
documentation should be updated to reflect that change.
50
When should one choose Waterfall
model?
Requirement analysis & definition is stable, and unlikely to change
in a significant way during development and in post –
implementation period.
The system is so well understood by the user that changes are not
expected during the operations and maintenance.
51
Advantages
Testing is inherent to every phase of the waterfall model
It is an enforced disciplined approach
The process is well- documented (It is documentation driven,
that is, documentation is produced at every stage)
Disadvantages
Many projects rarely follow its sequential flow.
This is due to the inherent problems associated with its rigid
format. Namely:
As the client usually only has a vague idea of exactly what is
required from the software product, this WM has difficulty
accommodating the natural uncertainty that exists at the
beginning of the project.
The customer only sees a working version of the product after it
has been coded. This may result in disaster if any undetected
problems are precipitated at this stage.
52
Incremental Model
Used in situations in which initial software
requirements are reasonably well defined, but
the overall scope of the development effort
prevent a purely linear process.
Used when there is a compelling need to provide a
limited set of s/w functionality to users quickly and then
refine and expand on that functionality in later software
release.
Incremental model delivers software in small but usable
pieces called increments.
53
Incremental development
System is developed and delivered in increments
after establishing an overall architecture
Requirements and specifications for each
increment may be developed
Users may experiment with delivered
increments while others are being developed.
therefore, these serve as a form of prototype
system
54
Incremental development process
Define system
deliverables
NO
55
The first increment is often called as the
core product.
Is proposed when requirements and
solutions can be modularized as
independent s/w components, each of
which can be developed by different teams.
These components are later integrated to
produce the larger s/w system solution.
56
Rapid Application Development
(RAD) Model
57
Team 3
Team 2
Team 1
58
RAD Model
59
RAD is used primarily for information systems
applications; the RAD approach encompasses the
following phases:
Business modelling :The Information flow is modeled
The information flow among business functions is modeled
in a way that answers the following questions:
What information drives the business process?
What information is generated?
Who generates it?
Where does the information go?
Who processes it?
60
Data modelling
The information flow defined as part of the business-
modeling phase is refined into a set of data objects that
are needed to support the business.
The characteristics (called attributes) of each object are
identified and the relationships between these objects
are defined.
Process modelling
The data objects defined in the data-modeling phase are
transformed to achieve the information flow necessary
to implement a business function.
61
Application generation
Uses fourth generation techniques and tools like VB, VC++ etc rather
than creating software using conventional third generation
programming languages.
The RAD works to reuse existing program components (when
possible) or create reusable components (when necessary).
In all cases, automated tools are used to facilitate construction of the
software.
Testing and turnover
Since the RAD process emphasizes reuse, many of the program
components have already been tested. This minimizes the testing
and development time.
When RAD can be employed?
If a business application can be modularized so that each major
function can be completed within the development cycle.
In this case, each team can be assigned a model, which is then
integrated to form a whole.
62
Disadvantages
For Large (but scalable) projects, RAD requires sufficient
resources to create the right number of RAD teams.
RAD projects will fail if there is no commitment by the
developers or the clients to ‘rapid-fire’ activities necessary to
get a system complete in a much-abbreviated time frame.
If a system cannot be properly modularized, building
components for RAD will be problematic
RAD is not appropriate when technical risks are high, e.g.
this occurs when a new application makes heavy use of new
technology, interface to other systems are an issue.
Difficult to scale to large projects.
63
Prototyping
Prototyping is an engineering inspired approach to systems
development.
Is a process model that is explicitly designed to accommodate a
product that evolves over time.
Emphasis on constructing a working model of the system as
quickly as possible.
The model is called ‘prototype’
Information gained through its use by user can be given as
feedback immediately and a new prototype can be prepared to get
still more information. This process can be iterated many times
until satisfactory design is evolved.
64
Prototyping process
Establish Define
Develop Evaluate
prototype prototype
prototype prototype
objectives functionality
65
Characteristics of a prototype
66
Approaches to prototyping
Evolutionary Delivered
prototyping system
Outline
Requirements
Throw-away Executable Prototype +
Prototyping System Specification
67
Prototyping in the software process
Evolutionary prototyping
An approach to system development where an initial prototype is
produced and refined through a number of stages to the final system
Throw-away prototyping
A prototype which is usually a practical implementation of the
system is produced to help discover requirements problems and
then discarded. The system is then developed using some other
development process
68
Evolutionary prototyping
Must be used for systems where the specification cannot be
developed in advance e.g. AI systems
69
Evolutionary prototyping
70
Evolutionary prototyping advantages
Accelerated delivery of the system
Rapid delivery and deployment are sometimes
more important than functionality or long-term
software maintainability
User engagement with the system
Not only is the system more likely to meet user
requirements, they are more likely to commit
to the use of the system
71
Evolutionary prototyping
The system is developed as a series of
increments that are delivered to the
customer
Techniques for rapid system development
are used such as CASE tools and 4GLs
User interfaces are usually developed using
a GUI development toolkit
72
Throw-away prototyping
Used to reduce requirements risk
The prototype is developed from an initial
specification, delivered for experiment then discarded
The throw-away prototype should NOT be considered
as a final system
Some system characteristics may have been left out
There is no specification for long-term maintenance
The system will be poorly structured and difficult to
maintain
73
Throw-away prototyping
Reusable
components
Delivered
Develop Validate software
software system system
74
Prototyping languages
75
When is Prototype useful?
76
Advantages
Faster development
Easier for end users to learn/use
Fewer changes needed after implementation
End-user involvement
Users know what to expect at implementation
User/analyst communication enhanced
User requirements easier to determine
Development costs reduced
77
Spiral Model or Boehm’s Model
The spiral model, combines the iterative nature of
prototyping with the controlled and systematic aspects of the
waterfall model, therein providing the potential for rapid
development of incremental versions of the software.
78
79
Distinguishing Features
Cyclic approach ( for incrementally growing system’s degree
of definition & implementation while decreasing its degree of
risk)
Anchor point milestones (for ensuring stakeholder’s
commitment to feasible & mutually satisfactory system
solutions)
In this model the software is developed in a series of
incremental releases with the early stages being either paper
models or prototypes. Later iterations become increasingly
more complete versions of the product.
80
Initial project RA based on initial req.
planning
Prdt.
Initial req. Specification
gathering
Engineered
system
Radius
81
The‘6-task region’ model.
These regions are:
1.The customer communication task – to establish effective
communication between developer and customer.
2. The planning task – to define resources, time lines and other
project related information.( it determines the objectives)
3.The risk analysis task – to assess both technical and management
risks. (alternatives are evaluated)
The main purpose of risk management is to identify and handle
the uncommon causes of project variation.
examples: diminished quality of the end product, increased costs,
delayed completion, or outright project failure.
Risk can be
Internal, within the control of project manager, and
External, outside the control of project manager.
82
4.The engineering task – to build one or
more representations of the application.
5. The construction and release task – to
construct, test, install and provide user
support (e.g., documentation and training).
6. The customer evaluation task – to obtain
customer feedback based on the evaluation
of the software representation created
during the engineering stage and
implemented during the install stage.
83
The evolutionary process begins at the
centre position and moves in a clockwise
direction. Each traversal of the spiral
typically results in a deliverable. For
example, the first and second spiral
traversals may result in the production of a
product specification and a prototype,
respectively. Subsequent traversals may then
produce more sophisticated versions of the
software.
84
An important distinction between the spiral model and other
software models is the explicit consideration of risk.
There are no fixed phases such as specification or design
phases in the model and it encompasses other process
models. For example, prototyping may be used in one spiral
to resolve requirement uncertainties and hence reduce risks.
This may then be followed by a conventional waterfall
development
Other process models end when software is delivered but the
spiral model can be adapted to apply throughout the life of
the computer software
85
Advantages of the Spiral Model
The spiral model is a realistic approach to the development of large-
scale software products because the software evolves as the process
progresses. In addition, the developer and the client better understand
and react to risks at each evolutionary level.
The model uses prototyping as a risk reduction mechanism and allows
for the development of prototypes at any stage of the evolutionary
development.
It maintains a systematic stepwise approach, like the classic life cycle
model, but incorporates it into an iterative framework that more
reflect the real world.
If employed correctly, this model should reduce risks before they
become problematic, as consideration of technical risks are considered
at all stages.
86
Disadvantages of the Spiral
Model
Demands considerable risk-assessment
expertise
it is time-consuming
87
88
The WINWIN Spiral Model
89
The model, derives its name from the objective of these
negotiations, i.e. “win-win”.
The client gets the product that satisfies majority of his/her
needs, and the developer wins by working to realistic and
achievable budgets and deadlines.
To achieve this objective the model defines a set of
negotiation activities at the beginning of each pass around the
spiral.
90
Rather than a single customer communication activity the
following activities are defined:
Identification of the system stakeholders. That is the people in
the organisation that have direct business interest in the product
to be built and will be rewarded for a successful outcome or
criticised if the effort fails (e.g. user, customer, developer,
maintainer, interfacer, etc.).
Determination of the stake holder's “win conditions”
Negotiations of the stake holder's win conditions to reconcile
them into a set of win-win conditions for all concerned
(including the software project team).
91
92
Typical Cycle of the Win- Win Spiral
Elaborate the system or subsystem's product and process objectives, constraints, and
alternatives.
Evaluate the alternatives with respect to the objectives and constraints. Identify an
resolve major sources of product and process risk.
Plan the next cycle, and update the life-cycle plan, including partition of the system into
subsystems to be addressed in parallel cycles. This can include a plan to terminate the
project if it is too risky or infeasible. Secure the management's commitment to proceed
as planned.
93
In addition to the early emphasis placed on the win-win condition, the
model also introduces three process milestones (anchor points),
which help establish the completion of one cycle around the spiral and
provide the decision milestones before the software project proceeds.
These are,
1. Life Cycle Objectives (LCO) – Defines a set of objectives for each
major software activity (e.g. a set of objectives associated with the
definition of top level product requirements)
2. Life Cycle Architecture (LCA) – Establishes the objectives that
must be met as the as the software architecture is defined.
3. Initial Operational Capability (IOC) – represents a set of
objectives associated with the preparation of the software for installation
/ distribution, site preparations prior to installations, and assistance
required by all parties that will use or support the software.
94
Advantages:
Faster software production facilitated through
collaborative involvement of the relevant
stakeholders.
95
Rational Unified Process
(RUP)
96
Rational Unified Process (RUP)
97
History of RUP
The Rational Unified Process (RUP) is a software
process product, originally developed by Rational
Software, which was acquired by IBM in February
2003.
Manage Requirements
Control Changes
99
Characteristics of RUP
Give emphasize on Models rather than Paper
documents:
RUP emphasize on Models rather than Paper
documents Because to minimize the overhead
associated with generating and maintaining
documents and to maximize the relevant information
content.
100
WHY Modeling?
Why Modeling?
To analyze the desired structure and behavior.
To visualize and control the system architecture.
To better understand the system for simplification
and reuse.
To manage the risks.
101
Characteristics of RUP
(Continued…)
Architecture-centric:
Development under the RUP is Architecture-Centric.
The process focuses on the early development and
baselining of a s/w architecture. It also minimizes
work and increases the probability of component
reuse.
102
Characteristics of RUP (Continued…)
Supports Object oriented techniques:
RUP are based on the concepts of objects and classes and
relationships among them.
It is Configurable process:
Contained in the RUP is guidance about how to configure
the process to suit the needs of the organization.
104
Phases of RUP
106
Phases of RUP
1. Inception:
Establish the business case for the project and delimit
the project’s scope.
Business Case includes-
Success Criteria
Risk Assessment
Estimates of resources needed
(Focus is on Requirements gathering)
At the end of the inception phase, you examine the
life cycle objectives of the project.
107
Phases of RUP
2.Elaboration:
Establish a project plan and sound architecture.
The goals of the elaboration are to analyze the
problem domain, develop the project plan, and
eliminate the highest risk elements of the project.
At the end of the elaboration phase, you examine the
detailed system objectives, scope and the resolution of
major risks, and decide whether to proceed with
construction.
(Focus is on Analysis and design)
108
Phases of RUP
3.Construction: Grow the System.
This implies describing the remaining requirements
and completing the implementation and test of s/w.
At the end of the construction phase, you decide if the
software and users are all ready to go operational.
(Implementation is the central activity)
109
Phases of RUP
4.Transition: Supply the system to its end users.
Here, The software is deploy to the user community.
At the end of the transition, you decide whether the
life cycle objectives of the project have been met and if
you should start another development cycle.
(Focus is on Deployment)
112
Process Workflows
Development: Covers the deliverable system
configuration.
Configuration Managements: Control changes to
and maintains the integrity of a project’s
artifacts.
Project Management: Describe the various
strategies of working with an iterative
process.
113
Artifacts
Each process workflow is a set of correlated artifacts
and activities.
An Artifact is some document, report or executable
that is produces or manipulated.
Each RUP has associated artifacts, either required as
input or generated as an output.
Artifacts are associated with certain of these
workflows.
Eg. The Use case model generated during
requirements capture is realized by the
design model from analysis and design
process, implemented by implementation model
from implementation process and verified by
the test model from test process.
114
Model
Models are the most important kind of artifact in the
RUP.
A Model is a simplification of reality created to better
understand the system being created.
A large part of RUP focuses on modeling. Models
help developers understand and shape both the
problem and the solution.
The model is not the reality, but the best models are
the ones that stick very close to reality.
115
Model
There are nine models that used for visualizing,
specifying, constructing and documenting software
system.
1. Business Model: Establish an abstraction of the
organization.
2. Domain model: Establish the context of the system.
3. Use case model: Establishes the system’s functional
requirements.
4. Analysis model (optional): Establishes an idea
design.
5. Design model: Establishes the vocabulary of the
problem and its solution.
116
Model
6. Process model (optional): Establish the system’s
concurrency and synchronization mechanism.
7. Deployment model: Establishes the hardware
topology on which the system is executed.
8. Implementation model: Establishes the part used
to assemble and release the physical system.
9. Test model: Establishes the path by which the
system is validated and verified.
117