You are on page 1of 107

Software Engineering

Prof. Lakshita Mandpe


What is Software?
❖ The product that software professionals build and then support over the
long term.
Software encompasses:
1.Instructions (computer programs) that when executed provide desired
features, function, and performance;
2.Data structures that enable the programs to adequately store and
manipulate information and
3.Documentation that describes the operation and use of the programs.
Software products
❖ Generic products
Stand-alone systems that are marketed and sold to any customer who
wishes to buy them.
Examples – PC software such as editing, graphics programs, project
management tools; CAD software; software for specific markets such
as appointments systems for dentists.
❖ Customized products
Software that is commissioned by a specific customer to meet their
own needs.
Examples – embedded control systems, air traffic control software,
traffic monitoring systems.
Why Software is Important?
❖ The economies of ALL developed nations are dependent on software.
❖ More and more systems are software controlled ( transportation, medical,
telecommunications, military, industrial, entertainment,)
❖ Software engineering is concerned with theories, methods and tools for
professional software development.
❖ Expenditure on software represents a significant fraction of GNP in all
developed countries.
Software costs
❖ Software costs often dominate computer system costs. The costs of
software on a PC are often greater than the hardware cost.

❖ Software costs more to maintain than it does to develop. For


systems with a long life, maintenance costs may be several times
development costs.

❖ Software engineering is concerned with cost-effective software


development.
Features of Software?
❖ Its characteristics that make it different from other things human being build.
Features of such logical system:
❖ Software is developed or engineered, it is not manufactured in the classical
sense which has quality problem.
❖ Software doesn't "wear out.” but it deteriorates. Hardware has bathtub curve
of failure rate.
❖ Although the industry is moving toward component-based construction (e.g.
standard screws and off-the-shelf integrated circuits), most software
continues to be custom-built. Modern reusable components encapsulate data
and processing into software parts to be reused by different programs. E.g.
graphical user interface, window, pull-down menus in library etc.
Software Applications
1. System software such as compilers, editors, file management utilities
2. Application software stand-alone programs for specific needs.
3. Engineering/scientific software Characterized by “number crunching”algorithms. such as
automotive stress analysis, molecular biology, orbital dynamics etc
4. Embedded software resides within a product or system. (key pad control of a microwave
oven, digital function of dashboard display in a car)
5. Product-line software focus on a limited marketplace to address mass consumer market.
(word processing, graphics, database management)
6. WebApps(Web applications) network centric software. As web 2.0 emerges, more
sophisticated computing environments is supported integrated with remote database and
business applications.
7. AI software uses non-numerical algorithm to solve complex problem. Robotics, expert
system, pattern recognition game playing
Software Engineering Definition
The seminal definition:
[Software engineering is] the establishment and use of sound
engineering principles in order to obtain economically software
that is reliable and works efficiently on real machines.
The IEEE definition:
Software Engineering: (1) The application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of
software; that is, the application of engineering to software. (2) The study
of approaches as in (1).
Importance of Software Engineering
❖ More and more, individuals and society rely on advanced software
systems. We need to be able to produce reliable and trustworthy
systems economically and quickly.

❖ It is usually cheaper, in the long run, to use software engineering


methods and techniques for software systems rather than just write the
programs as if it was a personal programming project. For most types
of system, the majority of costs are the costs of changing the software
after it has gone into use.
FAQ about software engineering
Question Answer

Computer programs, data structures and associated documentation.


What is software? Software products may be developed for a particular customer or may be
developed for a general market.

Good software should deliver the required functionality and performance to


What are the attributes of good software?
the user and should be maintainable, dependable and usable.

Software engineering is an engineering discipline that is concerned with all


What is software engineering?
aspects of software production.

Computer science focuses on theory and fundamentals; software


What is the difference between software engineering
engineering is concerned with the practicalities of developing and delivering
and computer science?
useful software.

System engineering is concerned with all aspects of computer-based


What is the difference between software engineering
systems development including hardware, software and process
and system engineering?
engineering. Software engineering is part of this more general process.
Essential attributes of good software
Product characteristic Description

Software should be written in such a way so that it can evolve to meet the changing
Maintainability needs of customers. This is a critical attribute because software change is an inevitable
requirement of a changing business environment.

Software dependability includes a range of characteristics including reliability, security


and safety. Dependable software should not cause physical or economic damage in the
Dependability and security
event of system failure. Malicious users should not be able to access or damage the
system.

Software should not make wasteful use of system resources such as memory and
Efficiency processor cycles. Efficiency therefore includes responsiveness, processing time,
memory utilisation, etc.

Software must be acceptable to the type of users for which it is designed. This means
Acceptability
that it must be understandable, usable and compatible with other systems that they use.
Software Engineering

A Layered Technology

tools

methods

process model

a “quality” focus
■ Any engineering approach must rest on organizational commitment to quality which fosters a continuous process improvement culture.
■ Process layer as the foundation defines a framework with activities for effective delivery of software engineering technology. Establish the
context where products (model, data, report, and forms) are produced, milestone are established, quality is ensured and change is managed.
■ Method provides technical how-to’s for building software. It encompasses many tasks including communication, requirement analysis, design
modeling, program construction, testing and support.
■ Tools provide automated or semi-automated support for the process and methods.
Software Process
❖A process is a collection of activities, actions and tasks
that are performed when some work product is to be
created. It is not a rigid prescription for how to build
computer software. Rather, it is an adaptable approach
that enables the people doing the work to pick and
choose the appropriate set of work actions and tasks.
❖Purpose of process is to deliver software in a timely
manner and with sufficient quality to satisfy those who
have sponsored its creation and those who will use it.
Software Process
❖ Communication: communicate with customer to understand objectives and gather
requirements
❖ Planning: creates a “map” defines the work by describing the tasks, risks and
resources, work products and work schedule.
❖ Modeling: Create a “sketch”, what it looks like architecturally, how the constituent
parts fit together and other characteristics.
❖ Construction: code generation and the testing.
❖ Deployment: Delivered to the customer who evaluates the products and provides
feedback based on the evaluation.
❖ These five framework activities can be used to all software development regardless of
the application domain, size of the project, complexity of the efforts etc, though the
details will be different in each case.
❖ For many software projects, these framework activities are applied iteratively as a
project progresses. Each iteration produces a software increment that provides a
Five Activities of a Generic Process
subset of overall software features and functionality.

framework
Definition of Software Process

❖ A framework for the activities, actions, and tasks that are


required to build high-quality software.

❖ SP defines the approach that is taken as software is


engineered.

❖ Is not equal to software engineering, which also encompasses


technologies that populate the process– technical methods
and automated tools.
A Generic Process Model
■ As we discussed before, a generic process framework for software
engineering defines five framework activities-communication, planning,
modeling, construction, and deployment.
■ In addition, a set of umbrella activities- project tracking and control, risk
management, quality assurance, configuration management, technical
reviews, and others are applied throughout the process.
■ Next question is: how the framework activities and the actions and tasks
that occur within each activity are organized with respect to sequence and
time? See the process flow for answer.

A Generic Process Model


Process Flow
Process Flow
■ Linear process flow executes each of the five activities in
sequence.
■ An iterative process flow repeats one or more of the activities
before proceeding to the next.
■ An evolutionary process flow executes the activities in a
circular manner. Each circuit leads to a more complete version
of the software.
■ A parallel process flow executes one or more activities in
parallel with other activities ( modeling for one aspect of the
software in parallel with construction of another aspect of the
software.
Identifying a Task Set
■ Before you can proceed with the process model, a key question:
what actions are appropriate for a framework activity given the
nature of the problem, the characteristics of the people and the
stakeholders?
■ A task set defines the actual work to be done to accomplish the
objectives of a software engineering action.
■ A list of the task to be accomplished
■ A list of the work products to be produced
■ A list of the quality assurance filters to be applied
Identifying a Task Set
■ For example, a small software project requested by one person
with simple requirements, the communication activity might
encompass little more than a phone all with the stakeholder.
Therefore, the only necessary action is phone conversation, the
work tasks of this action are:
■ 1. Make contact with stakeholder via telephone.
■ 2. Discuss requirements and take notes.
■ 3. Organize notes into a brief written statement of requirements.
■ 4. E-mail to stakeholder for review and approval.
Example of a Task Set for Elicitation
■The task sets for Requirements gathering action for a simple
project may include:
1. Make a list of stakeholders for the project.
2. Invite all stakeholders to an informal meeting.
3. Ask each stakeholder to make a list of features and functions
required.
4. Discuss requirements and build a final list.
5. Prioritize requirements.
6. Note areas of uncertainty.
■ The task sets for Requirements gathering action for a big project may include:
1. Make a list of stakeholders for the project.
2. Interview each stakeholders separately to determine overall wants and needs.
3. Build a preliminary list of functions and features based on stakeholder input.
4. Schedule a series of facilitated application specification meetings.
5. Conduct meetings.
6. Produce informal user scenarios as part of each meeting.
7. Refine user scenarios based on stakeholder feedback.
8. Build a revised list of stakeholder requirements.
9. Use quality function deployment techniques to prioritize requirements.
10. Package requirements so that they can be delivered incrementally.
11. Note constraints and restrictions that will be placed on the system.
12. Discuss methods for validating the system.

Both do the same work with different depth and formality. Choose the task sets that achieve the goal and still maintain quality and agility.

Example of a Task Set for Elicitation


Process Patterns
❖ A process pattern
describes a process-related problem that is encountered during software engineering work,
identifies the environment in which the problem has been encountered, and
suggests one or more proven solutions to the problem.
❖ Stated in more general terms, a process pattern provides you with a template [Amb98]—a
consistent method for describing problem solutions within the context of the software process.
( defined at different levels of abstraction)
1. Problems and solutions associated with a complete process model (e.g. prototyping).
2. Problems and solutions associated with a framework activity (e.g. planning) or
3. an action with a framework activity (e.g. project estimating).
Process Pattern Types
❖ Stage patterns—defines a problem associated with a framework activity
for the process. It includes multiple task patterns as well. For example,
EstablishingCommunication would incorporate the task pattern
RequirementsGathering and others.
❖ Task patterns—defines a problem associated with a software engineering
action or work task and relevant to successful software engineering
practice
❖ Phase patterns—define the sequence of framework activities that occur
with the process, even when the overall flow of activities is iterative in
nature. Example includes SprialModel or Prototyping.
An Example of Process Pattern
❖ Describes an approach that may be applicable when stakeholders have a general idea of what must be done but are unsure of
specific software requirements.
❖ Pattern name. RequiremetnsUnclear
❖ Intent. This pattern describes an approach for building a model that can be assessed iteratively by stakeholders in an effort to
identify or solidify software requirements.
❖ Type. Phase pattern
❖ Initial context. Conditions must be met (1) stakeholders have been identified; (2) a mode of communication between
stakeholders and the software team has been established; (3) the overriding software problem to be solved has been
identified by stakeholders ; (4) an initial understanding of project scope, basic business requirements and project
constraints has been developed.
❖ Problem. Requirements are hazy or nonexistent. stakeholders are unsure of what they want.
❖ Solution. A description of the prototyping process would be presented here.
❖ Resulting context. A software prototype that identifies basic requirements. (modes of interaction, computational features,
processing functions) is approved by stakeholders. Following this, 1. This prototype may evolve through a series of
increments to become the production software or 2. the prototype may be discarded.
❖ Related patterns. CustomerCommunication, IterativeDesign, IterativeDevelopment, CustomerAssessment,
RequirementExtraction.
Process Assessment and Improvement
SP cannot guarantee that software will be delivered on time, meet the needs, or has the desired technical characteristics. However,
the process can be assessed to ensure that it meets a set of basic process criteria that have been shown to be essential for a
successful software engineering.

❖Standard CMMI Assessment Method for Process Improvement (SCAMPI) — provides a five step process assessment model that
incorporates five phases: initiating, diagnosing, establishing, acting and learning.
❖CMM-Based Appraisal for Internal Process Improvement (CBA IPI)—provides a diagnostic technique for assessing the relative
maturity of a software organization; uses the SEI CMM as the basis for the assessment [Dun01]
❖SPICE—The SPICE (ISO/IEC15504) standard defines a set of requirements for software process assessment. The intent of the
standard is to assist organizations in developing an objective evaluation of the efficacy of any defined software process. [ISO08]

❖ISO 9001:2000 for Software—a generic standard that applies to any organization that wants to improve the overall quality of the
products, systems, or services that it provides. Therefore, the standard is directly applicable to software organizations and companies.
[Ant06]
Prescriptive Models
❖ Originally proposed to bring order to chaos.
❖ Prescriptive process models advocate an orderly approach to software engineering. However, will
some extent of chaos (less rigid) be beneficial to bring some creativity?

That leads to a few questions …


❖ If prescriptive process models strive for structure and order (prescribe a set of process elements and
process flow), are they inappropriate for a software world that thrives on change?
❖ Yet, if we reject traditional process models (and the order they imply) and replace them with
something less structured, do we make it impossible to achieve coordination and coherence in
software work?
Software Development Life Cycle
SDLC( Software Development Life Cycle)/Process Model-
1.Prescriptive model-
Waterfall Model, Prototyping Model, RAD Model

2.Evolutionary model- Spiral Model, Incremental Model

3.Agile Process Model- Extreme Programming, Adaptive Software


Developmen
1. The Waterfall Model
❖ The Waterfall Model was the first Process Model to be introduced.
❖ It is also referred to as a linear-sequential life cycle model.
❖ It is also referred to as a Classical waterfall model.
❖ Waterfall model is very simple to understand and use.
❖ In a waterfall model, each phase must be completed before the next phase can
begin and there is no overlapping in the phases.
❖ Classical waterfall model divides the life cycle into a set of phases. This model
considers that one phase can be started after completion of the previous phase.
The Waterfall Model

It is the oldest paradigm for SE. When requirements are well defined and reasonably stable, it
leads to a linear fashion.
(problems: 1. rarely linear, iteration needed. 2. hard to state all requirements explicitly. Blocking state. 3. code will not be released
until very late.)

The classic life cycle suggests a systematic, sequential approach to software development.
The Waterfall Model
The Waterfall Model Cont……
❖ Most organizations usually define:
standards on the outputs (deliverables) produced at the end of every phase
entry and exit criteria for every phase.
❖ They also prescribe specific methodologies for:
specification,
design,
testing,
project management, etc.
The Waterfall Model Cont……
1. Feasibility Study:
• The main goal of this phase is to determine whether it would be financially and technically
feasible to develop the software.
• The feasibility study involves understanding the problem and then determine the various
possible strategies to solve the problem.

❖ First roughly understand what the customer wants:


different data which would be input to the system,
processing needed on these data,
output data to be produced by the system,
various constraints on the behavior of the system.
Activities during Feasibility Study
❖Work out an overall understanding of the problem.
❖Formulate different solution strategies.
❖Examine alternate solution strategies in terms of:
▪ resources required,
▪ cost of development, and
▪ development time.
Activities during Feasibility Study
❖Perform a cost/benefit analysis:
to determine which solution is the best.
you may determine that none of the solutions is feasible
due to:
▪ high cost,
▪ resource constraints,
▪ technical reasons.
Requirements Analysis and Specification
❖ Aim of this phase:
understand the exact requirements of the customer,
document them properly.
❖ Consists of two distinct activities:
requirements gathering and analysis
requirements specification.
Goals of Requirements Analysis
❖ Collect all related data from the customer:
analyze the collected data to clearly understand what the
customer wants,
find out any inconsistencies and incompleteness in the
requirements,
resolve all inconsistencies and incompleteness.
Requirements Gathering
❖Gathering relevant data:
usually collected from the end-users through interviews
and discussions.
For example, for a business accounting software:
▪ interview all the accountants of the organization to find out
their requirements.
Requirements Analysis Cont....
❖ The data you initially collect from the users:
would usually contain several contradictions and ambiguities:
each user typically has only a partial and incomplete view of the system.
❖ Ambiguities and contradictions:
must be identified
resolved by discussions with the customers.
❖ Next, requirements are organized:
into a Software Requirements Specification (SRS) document.
❖ Engineers doing requirements analysis and specification:
are designated as analysts.
Design
❖ Design phase transforms requirements specification:
into a form suitable for implementation in some programming
language.
❖ In technical terms:
during design phase, software architecture is derived from the
SRS document.
❖ Two design approaches:
traditional approach,
object oriented approach.
Traditional Design Approach
❖Consists of two activities:
1. Structured analysis 2.Structured design
Structured analysis
1.Identify all the functions to be performed.
2.Identify data flow among the functions.
3.Decompose each function recursively into sub-functions.
4.Identify data flow among the subfunctions as well.
Structured Analysis (CONT.)
❖ Carried out using Data flow diagrams (DFDs).
❖ After structured analysis, carry out structured design:
architectural design (or high-level design)
detailed design (or low-level design).
Structured Design
❖High-level design:
decompose the system into modules,
represent invocation relationships among the modules.
❖Detailed design:
different modules designed in greater detail:
▪ data structures and algorithms for each module are designed.
Object Oriented Design
❖First identify various objects (real world entities)
occurring in the problem:
identify the relationships among the objects.
For example, the objects in a pay-roll software may be:
▪ employees,
▪ managers,
▪ pay-roll register,
▪ Departments, etc.
Implementation
❖ During the implementation phase:
each module of the design is coded,
each module is unit tested
▪ tested independently as a stand alone unit, and debugged,
each module is documented.
❖ The purpose of unit testing:
test if individual modules work correctly.
❖ The end product of implementation phase:
a set of program modules that have been tested individually
Integration and System Testing
❖ Different modules are integrated in a planned manner:
modules are almost never integrated in one shot.
Normally integration is carried out through a number of steps.
❖ During each integration step,
the partially integrated system is tested.

M1 M2

M3 M4
System Testing

❖After all the modules have been successfully


integrated and tested:
system testing is carried out.
❖Goal of system testing:
ensure that the developed system functions according to its
requirements as specified in the SRS document.
Maintenance
❖ Maintenance of any software product:
requires much more effort than the effort to develop the product itself.
development effort to maintenance effort is typically 40:60.
❖ Corrective maintenance:
Correct errors which were not discovered during the product
development phases.
❖ Perfective maintenance:
Improve implementation of the system
enhance functionalities of the system.
❖ Adaptive maintenance:
Port software to a new environment,
▪ e.g. to a new computer or to a new operating system.
Advantages of Waterfall Model
❖ This model is very simple and is easy to understand.
❖ Phases in this model are processed one at a time.
❖ Each stage in the model is clearly defined.
❖ This model has very clear and well undestood milestones.
❖ Process, actions and results are very well documented.
❖ Reinforces good habits: define-before- design,
design-before-code.
❖ This model works well for smaller projects and projects where requirements are
well understood.
Drawbacks of Classical Waterfall Model
❖ No feedback path: In this model evolution of a software from one phase to
another phase is like a waterfall. It assumes that no error is ever committed by
developers during any phases. Therefore, it does not incorporate any
mechanism for error correction.
❖ Difficult to accommodate change requests: This model assumes that all the
customer requirements can be completely and correctly defined at the beginning
of the project, but actually customers’ requirements keep on changing with
time. It is difficult to accommodate any change requests after the requirements
specification phase is complete.
❖ No overlapping of phases: This model recommends that new phase can start
only after the completion of the previous phase. But in real projects, this can’t
be maintained. To increase the efficiency and reduce the cost, phases may
overlap.
2. Iterative Waterfall Model
2. Iterative Waterfall Model
❖ The iterative waterfall model provides feedback paths from every phase to its
preceding phases, which is the main difference from the classical waterfall
model.
❖ Advantages : 1. Feedback Path 2. Simple Model
❖ Drawbacks:
1.Difficult to incorporate change requests:
2.Incremental delivery not supported:
3.Overlapping of phases not supported:
4. Risk handling not supported:
5. Limited customer interactions:
3.The V-Model
A variation of waterfall model depicts the
relationship of quality assurance actions to
the actions associated with communication,
modeling and early code construction
activates.

Team first moves down the left side of the


V to refine the problem requirements.
Once code is generated, the team moves up
the right side of the V, performing a series
of tests that validate each of the models
created as the team moved down the left
side.
3.The V-Model
Why preferred?
It is easy to manage due to the rigidity of the model. Each phase of V-Model
has specific deliverables and a review process.
Proactive defect tracking – that is defects are found at early stage.
When to use?
Where requirements are clearly defined and fixed.
The V-Model is used when sample technical resources are available with
technical expertise.
3. The V-Model
Advantages:
❖ This is a highly disciplined model and Phases are completed one at a time.
❖ V-Model is used for small projects where project requirements are clear.
❖ Simple and easy to understand and use.
❖ This model focuses on verification and validation activities early in the life cycle thereby
enhancing the probability of building an error-free and good quality product.
❖ It enables project management to track progress accurately.
Disadvantages:
❖ High risk and uncertainty.
❖ It is not a good for complex and object-oriented projects.
❖ It is not suitable for projects where requirements are not clear & contains high risk of
changing.
❖ This model does not support iteration of phases.
❖ It does not easily handle concurrent events.
4.The Incremental Model
4.The Incremental or Successive Versions Model
4.The Incremental or Successive Versions Model
❖ Requirements of Software are first broken down into several modules that can be
incrementally constructed and delivered. At any time, the plan is made just for the next
increment and not for any kind of long term plans. Therefore, it is easier to modify the
version as per the need of the customer. Development Team first undertakes to develop core
features of the system.
❖ Once the core features are fully developed, then these are refined to increase levels of
capabilities by adding new functions in Successive versions. Each incremental version is
usually developed using an iterative waterfall model of development.
❖ As each successive version of the software is constructed and delivered, now the feedback of
the Customer is to be taken and these were then incorporated in the next version. Each
version of the software have more additional features over the previous ones.
4.The Incremental or Successive Versions Model
When to use this –
❖ Funding Schedule, need for early realization of benefits.
❖ When Requirements are known up-front.
❖ Projects with new Technology.
Advantages –
❖ Error Reduction (core modules are used by the customer from the beginning of the phase and
then these are tested thoroughly)
❖ Uses divide and conquer for breakdown of tasks.
❖ Incremental Resource Deployment.
Disadvantages –
❖ Requires good planning and design.
❖ Well defined module interfaces are required.
4. The Incremental Model
❖ When initial requirements are reasonably well defined, but the overall scope of
the development effort precludes a purely linear process. A compelling need to
expand a limited set of new functions to a later system release.
❖ It combines elements of linear and parallel process flows. Each linear sequence
produces deliverable increments of the software.
❖ The first increment is often a core product with many supplementary features.
Users use it and evaluate it with more modifications to better meet the needs.
Evolutionary Models
❖ Software system evolves over time as requirements often change as development
proceeds. Thus, a straight line to a complete end product is not possible.
However, a limited version must be delivered to meet competitive pressure.
❖ Usually a set of core product or system requirements is well understood, but the
details and extension have yet to be defined.
❖ You need a process model that has been explicitly designed to accommodate a
product that evolved over time.
❖ It is iterative that enables you to develop increasingly more complete version of
the software.
❖ Two types are introduced, namely Prototyping and Spiral models.
5. Evolutionary Models: Prototyping
❖ When to use: Customer defines a set of general objectives but does not identify detailed
requirements for functions and features. Or Developer may be unsure of the efficiency of an
algorithm, the form that human computer interaction should take.
❖ What step: Begins with communication by meeting with stakeholders to define the objective,
identify whatever requirements are known, outline areas where further definition is mandatory. A
quick plan for prototyping and modeling (quick design) occur. Quick design focuses on a
representation of those aspects the software that will be visible to end users. ( interface and
output). Design leads to the construction of a prototype which will be deployed and evaluated.
Stakeholder’s comments will be used to refine requirements.
❖ Both stakeholders and software engineers like the prototyping paradigm. Users get a feel for the
actual system, and developers get to build something immediately. However, engineers may make
compromises in order to get a prototype working quickly. The less-than-ideal choice may be
adopted forever after you get used to it.
5. Evolutionary Models: Prototyping

Quick
plan
communication

Modeling
Quick design

Deployment Construction
delivery & of prototype
feedback Construction
of prototype
6. Evolutionary Models: The Spiral Model
❖ It couples the iterative nature of prototyping with the controlled and systematic aspects of the waterfall
model and is a risk-driven process model generator that is used to guide multi-stakeholder concurrent
engineering of software intensive systems.
❖ Two main distinguishing features: one is cyclic approach for incrementally growing a system’s degree of
definition and implementation while decreasing its degree of risk. The other is a set of anchor point
milestones for ensuring stakeholder commitment to feasible and mutually satisfactory system solutions.
❖ A series of evolutionary releases are delivered. During the early iterations, the release might be a model or
prototype. During later iterations, increasingly more complete version of the engineered system are
produced.
❖ The first circuit in the clockwise direction might result in the product specification; subsequent passes
around the spiral might be used to develop a prototype and then progressively more sophisticated versions
of the software. Each pass results in adjustments to the project plan. Cost and schedule are adjusted based
on feedback. Also, the number of iterations will be adjusted by project manager.
❖ Good to develop large-scale system as software evolves as the process progresses and risk should be
understood and properly reacted to. Prototyping is used to reduce risk.
❖ However, it may be difficult to convince customers that it is controllable as it demands considerable risk
assessment expertise.
The Spiral Model
The Spiral Model
When to use Spiral Model:
1.When there is a budget constraint and risk evaluation is important.
2.For medium to high-risk projects.
3.Long-term project commitment because of potential changes to economic priorities as the
requirements change with time.
4.Customer is not sure of their requirements which is usually the case.
5.Requirements are complex and need evaluation to get clarity.
6.New product line which should be released in phases to get enough customer feedback.
7.Significant changes are expected in the product during the development cycle.
The Spiral Model
Advantages:
1. High amount of risk analysis hence, avoidance of risk is enhanced.
2. Good for large projects
3.Strong approval and documentation control
4.High Customer Satisfaction: Customer can see the development of the product at the early phase of
the software development and thus, they habituated with the system by using it before completion of the
total product.

Disadvantages :
1.Complex: The Spiral Model is much more complex than other SDLC models.
2.Expensive: Spiral Model is not suitable for small projects as it is expensive.
3. Risk Analysis: The successful completion of the project is very much dependent on Risk Analysis.
Without very highly experienced experts, it is going to be a failure to develop a project using this model.
Three Concerns on Evolutionary Processes
❖ First concern is that prototyping poses a problem to project planning because
of the uncertain number of cycles required to construct the product.
❖ Second, it does not establish the maximum speed of the evolution. If the
evolution occur too fast, without a period of relaxation, it is certain that the
process will fall into chaos. On the other hand if the speed is too slow then
productivity could be affected.
❖ Third, software processes should be focused on flexibility and extensibility
rather than on high quality. We should prioritize the speed of the
development over zero defects. Extending the development in order to reach
high quality could result in a late delivery of the product when the
opportunity niche has disappeared.
Concurrent Model
❖ Allow a software team to represent iterative and concurrent elements of any of the process
models. For example, the modeling activity defined for the spiral model is accomplished
by invoking one or more of the following actions: prototyping, analysis and design.
❖ The Figure shows modeling may be in any one of the states at any given time. For
example, communication activity has completed its first iteration and in the awaiting
changes state. The modeling activity was in inactive state, now makes a transition into the
under development state. If customer indicates changes in requirements, the modeling
activity moves from the under development state into the awaiting changes state.
❖ Concurrent modeling is applicable to all types of software development and provides an
accurate picture of the current state of a project. Rather than confining software
engineering activities, actions and tasks to a sequence of events, it defines a process
network. Each activity, action or task on the network exists simultaneously with other
activities, actions or tasks. Events generated at one point trigger transitions among the
states.
Concurrent Model
Still Other Process Models
❖ Component based development—the process to apply when reuse is a
development objective ( like spiral model)
❖ Formal methods—emphasizes the mathematical specification of
requirements ( easy to discover and eliminate ambiguity, incompleteness
and inconsistency)
❖ Aspect Oriented software development (AOSD)—provides a process and
methodological approach for defining, specifying, designing, and
constructing aspects
❖ Unified Process—a “use-case driven, architecture-centric, iterative and
incremental” software process closely aligned with the Unified Modeling
Language (UML) to model and develop object-oriented system iteratively
and incrementally.
7. Rational Unified Process (RUP)
❖ RUP is a software development process for object-oriented models. It is
also known as the Unified Process Model. It is created by Rational
corporation and is designed and documented using UML (Unified
Modeling Language).
❖ This process is included in IBM Rational Method Composer (RMC)
product. IBM (International Business Machine Corporation) allows us to
customize, design, and personalize the unified process.
❖ RUP is proposed by Ivar Jacobson, Grady Bootch, and James Rambaugh.
Some characteristics of RUP include use-case driven, Iterative (repetition
of the process), and Incremental (increase in value) by nature, delivered
online using web technology, can be customized or tailored in modular and
electronic form, etc. RUP reduces unexpected development costs and
prevents wastage of resources.
The Unified Process (UP)

elaboration

inception
The Unified Process (UP)
1. Inception –
Communication and planning are main.
Identifies Scope of the project using use-case model allowing managers to estimate costs and time
required.
Customers requirements are identified and then it becomes easy to make a plan of the project.
Project plan, Project goal, risks, use-case model, Project description, are made.
Project is checked against the milestone criteria and if it couldn’t pass these criteria then project
can be either cancelled or redesigned.
2. Elaboration –
Planning and modeling are main.
Detailed evaluation, development plan is carried out and diminish the risks.
Revise or redefine use-case model (approx. 80%), business case, risks.
Again, checked against milestone criteria and if it couldn’t pass these criteria then again project can
be cancelled or redesigned.
Executable architecture baseline.
The Unified Process (UP)
3.Construction –
Project is developed and completed.
System or source code is created and then testing is done.
Coding takes place.
4.Transition –
Final project is released to public.
Transit the project from development into production.
Update project documentation.
Beta testing is conducted.
Defects are removed from project based on feedback from public.
5.Production –
Final phase of the model.
Project is maintained and updated accordingly.
UP Phases
UP Work Products
8. Component Assembly Model
9.Rapid application development model (RAD)
❖ The Rapid Application Development Model was first proposed by IBM in
1980’s. The critical feature of this model is the use of powerful development
tools and techniques.
❖ A software project can be implemented using this model if the project can be
broken down into small modules wherein each module can be assigned
independently to separate teams. These modules can finally be combined to
form the final product.
❖ Development of each module involves the various basic steps as in waterfall
model i.e. analyzing, designing, coding and then testing, etc.
❖ Another striking feature of this model is a short time span i.e. the time frame
for delivery(time-box) is generally 60-90 days.
9.Rapid application development model (RAD)
The Manifesto for Agile Software Development

“We are uncovering better ways of developing software by doing it and


helping others do it. Through this work we have come to value:
•Individuals and interactions over processes and tools
•Working software over comprehensive documentation
•Customer collaboration over contract negotiation
•Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on
the left more.”
Kent Beck et al
What is “Agility”?

❖ Effective (rapid and adaptive) response to change (team members, new technology,
requirements)
❖ Effective communication in structure and attitudes among all team members, technological
and business people, software engineers and managers。
❖ Drawing the customer into the team. Eliminate “us and them” attitude. Planning in an
uncertain world has its limits and plan must be flexible.
❖ Organizing a team so that it is in control of the work performed
❖ Eliminate all but the most essential work products and keep them lean.
❖ Emphasize an incremental delivery strategy as opposed to intermediate products that gets
working software to the customer as rapidly as feasible.
What is “Agility”?

Yielding …
❖ Rapid, incremental delivery of software
❖ The development guidelines stress delivery over analysis and design
although these activates are not discouraged, and active and
continuous communication between developers and customers.
Why and What Steps are“Agility” important?

❖ Why? The modern business environment is fast-paced and ever-changing.


It represents a reasonable alternative to conventional software engineering
for certain classes of software projects. It has been demonstrated to deliver
successful systems quickly.
❖ What? May be termed as “software engineering lite” The basic activities-
communication, planning, modeling, construction and deployment remain.
But they morph into a minimal task set that push the team toward
construction and delivery sooner.
❖ The only really important work product is an operational “software
increment” that is delivered.
Agility and the Cost of Change

❖ Conventional wisdom is that the cost of change increases nonlinearly as a project


progresses. It is relatively easy to accommodate a change when a team is gathering
requirements early in a project. If there are any changes, the costs of doing this work are
minimal. But if the middle of validation testing, a stakeholder is requesting a major
functional change. Then the change requires a modification to the architectural design,
construction of new components, changes to other existing components, new testing and
so on. Costs escalate quickly.

❖ A well-designed agile process may “flatten” the cost of change curve by coupling
incremental delivery with agile practices such as continuous unit testing and pair
programming. Thus team can accommodate changes late in the software project without
dramatic cost and time impact.
Agility and the Cost of Change
An Agile Process

❖ Is driven by customer descriptions of what is required (scenarios). Some assumptions:


Recognizes that plans are short-lived (some requirements will persist, some will change.
Customer priorities will change)
Develops software iteratively with a heavy emphasis on construction activities (design
and construction are interleaved, hard to say how much design is necessary before
construction. Design models are proven as they are created. )
Analysis, design, construction and testing are not predictable.
❖ Thus has to Adapt as changes occur due to unpredictability
❖ Delivers multiple ‘software increments’, deliver an operational prototype or portion of an OS
to collect customer feedback for adaption.
Agility Principles - I

1.Our highest priority is to satisfy the customer through early and continuous delivery of valuable
software.
2.Welcome changing requirements, even late in development. Agile processes harness change for the
customer's competitive advantage.
3.Deliver working software frequently, from a couple of weeks to a couple of months, with a preference
to the shorter timescale.
4.Business people and developers must work together daily throughout the project.
5.Build projects around motivated individuals. Give them the environment and support they need, and
trust them to get the job done.
6.The most efficient and effective method of conveying information to and within a development team is
face–to–face conversation.
7.Working software is the primary measure of progress.
Agility Principles - II

8.Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely.
9.Continuous attention to technical excellence and good design enhances agility.
10. Simplicity – the art of maximizing the amount of work not done – is essential.
11. The best architectures, requirements, and designs emerge from self–organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly.
Human Factors

❖ The process molds to the needs of the people and team, not the other way
around
❖ key traits must exist among the people on an agile team and the team
itself:
Competence. ( talent, skills, knowledge)
Common focus. ( deliver a working software increment )
Collaboration. ( peers and stakeholders)
Decision-making ability. ( freedom to control its own destiny)
Fuzzy problem-solving ability.(ambiguity and constant changes, today problem may not be tomorrow’s problem)
Mutual trust and respect.
Self-organization. ( themselves for the work done, process for its local environment, the work schedule)
Extreme Programming (XP)

❖ The most widely used agile process, originally proposed by Kent Beck in 2004. It uses an object-oriented
approach.
❖ XP Planning
Begins with the listening, leads to creation of “user stories” that describes required output, features, and
functionality. Customer assigns a value(i.e., a priority) to each story.
Agile team assesses each story and assigns a cost (development weeks. If more than 3 weeks, customer asked
to split into smaller stories)
Working together, stories are grouped for a deliverable increment next release.
A commitment (stories to be included, delivery date and other project matters) is made. Three ways: 1. Either
all stories will be implemented in a few weeks, 2. high priority stories first, or 3. the riskiest stories will be
implemented first.
After the first increment “project velocity”, namely number of stories implemented during the first release is
used to help define subsequent delivery dates for other increments. Customers can add stories, delete existing
stories, change values of an existing story, split stories as development work proceeds.
Extreme Programming (XP)

❖ XP Design ( occurs both before and after coding as refactoring is encouraged)


Follows the KIS principle (keep it simple) Nothing more nothing less than the story.
Encourage the use of CRC (class-responsibility-collaborator) cards in an object-oriented context. The only design work product of
XP. They identify and organize the classes that are relevant to the current software increment. (see Chapter 8)
For difficult design problems, suggests the creation of “spike solutions”—a design prototype for that portion is implemented and
evaluated.
Encourages “refactoring”—an iterative refinement of the internal program design. Does not alter the external behavior yet
improve the internal structure. Minimize chances of bugs. More efficient, easy to read.
❖ XP Coding
Recommends the construction of a unit test for a story before coding commences. So implementer can focus on what must be
implemented to pass the test.
Encourages “pair programming”. Two people work together at one workstation. Real time problem solving, real time review for
quality assurance. Take slightly different roles.
❖ XP Testing
All unit tests are executed daily and ideally should be automated. Regression tests are conducted to test current and previous
components.
“Acceptance tests” are defined by the customer and executed to assess customer visible functionality
Extreme Programming (XP)
Scrum

❖ A software development method Originally proposed by Schwaber and Beedle (an activity
occurs during a rugby match) in early 1990.
❖ Scrum—distinguishing features
Development work is partitioned into “packets”
Testing and documentation are on-going as the product is constructed
Work units occurs in “sprints” and is derived from a “backlog” of existing changing prioritized requirements
Changes are not introduced in sprints (short term but stable) but in backlog.
Meetings are very short (15 minutes daily) and sometimes conducted without chairs ( what did you do since
last meeting? What obstacles are you encountering? What do you plan to accomplish by next meeting?)
“demos” are delivered to the customer with the time-box allocated. May not contain all functionalities. So
customers can evaluate and give feedbacks.
Scrum
Crystal

❖ Proposed by Cockburn and Highsmith


❖ Crystal—distinguishing features
Actually a family of process models that allow “maneuverability”
based on problem characteristics
Face-to-face communication is emphasized
Suggests the use of “reflection workshops” to review the work
habits of the team
Software Process Customization and Improvement
Capability Maturity Model
❖ The Capability Maturity Model (CMM) is a procedure used to develop and
refine an organization's software development process.
❖ The model defines a five-level evolutionary stage of increasingly organized and
consistently more mature processes.
❖ CMM was developed and is promoted by the Software Engineering Institute
(SEI), a research and development center promote by the U.S. Department of
Defense (DOD).
❖ It is also know as Software Engineering Institute Capability Maturity Model
(SEICMM)
Capability Maturity Model
Capability Maturity Model
Level-1:Initial –
❖ No KPA’s defined.
❖ Processes followed are adhoc and immature and are not well defined.
❖ Unstable environment for software dvelopment.
❖ No basis for predicting product quality, time for completion, etc.

Level-2: Repeatable –
❖ Focuses on establishing basic project management policies.
❖ Experience with earlier projects is used for managing new similar natured projects.
❖ Project Planning- It includes defining resources required, goals, constraints, etc. for the
project. It presents a detailed plan to be followed systematically for successful completion of
a good quality software.
Capability Maturity Model
Level-2: Repeatable –
❖ Configuration Management- The focus is on maintaining the performance of the software
product, including all its components, for the entire lifecycle.
❖ Requirements Management- It includes the management of customer reviews and feedback
which result in some changes in the requirement set. It also consists of accommodation of
those modified requirements.
❖ Subcontract Management- It focuses on the effective management of qualified software
contractors i.e. it manages the parts of the software which are developed by third parties.
❖ Software Quality Assurance- It guarantees a good quality software product by following
certain rules and quality standard guidelines while development.
Capability Maturity Model
Level-3:Defined –
❖ At this level, documentation of the standard guidelines and procedures takes place.
❖ It is a well defined integrated set of project specific software engineering and management
processes.
❖ Peer Reviews- In this method, defects are removed by using a number of review methods like
walkthroughs, inspections, buddy checks, etc.
❖ Intergroup Coordination- It consists of planned interactions between different development teams
to ensure efficient and proper fulfillment of customer needs.
❖ Organization Process Definition- It’s key focus is on the development and maintenance of the
standard development processes.
❖ Organization Process Focus- It includes activities and practices that should be followed to
improve the process capabilities of an organization.
❖ Training Programs- It focuses on the enhancement of knowledge and skills of the team members
including the developers and ensuring an increase in work efficiency.
Capability Maturity Model
Level-4: Managed –

❖ At this stage, quantitative quality goals are set for the organization for software products as
well as software processes.
❖ The measurements made help the organization to predict the product and process quality
within some limits defined quantitatively.
❖ Software Quality Management- It includes the establishment of plans and strategies to
develop a quantitative analysis and understanding of the product’s quality.
❖ Quantitative Management- It focuses on controlling the project performance in a quantitative
manner.
Capability Maturity Model
Level-5: Optimizing –

❖ This is the highest level of process maturity in CMM and focuses on continuous process
improvement in the organization using quantitative feedback.
❖ Use of new tools, techniques and evaluation of software processes is done to prevent
recurrence of known defects.
❖ Process Change Management- Its focus is on the continuous improvement of organization’s
software processes to improve productivity, quality and cycle time for the software product.
❖ Technology Change Management- It consists of identification and use of new technologies to
improve product quality and decrease the product development time.
❖ Defect Prevention- It focuses on identification of causes of defects and to prevent them from
recurring in future projects by improving project defined process.
Q&A
THANKS

You might also like