UNIT-1 Software Process and Agile Development

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 21

UNIT-1

SOFTWARE PROCESS AND AGILE DEVELOPMENT


Introduction to Software Engineering - Definitions of Software EngineeringThe Serial or
Linear Sequential Development Model – Iterative Development Model- The incremental
Development Model- The Parallel or Concurrent Development Model- Software Process,
Perspective and Specialized Process Models – Introduction to Agility- Agile process-
Extreme programming- XP Process - Introduction and Evolving Role of Software- Software
Characteristics - Software Applications.

1.1 INTRODUCTION
1.1.1 Software
Computer programs and associated documentation

Software is
(1) instructions (computer programs) that when executed provide desired features, function
and performance,
(2) data structures that enable the programs to adequately manipulate information,
(3) descriptive information in both hard copy and virtual forms that describes the operation
and use of the programs

Software takes on a dual role. It is a product, and at the same time, the vehicle for delivering
a product.

Software products may be


Generic - developed to be sold to a range of different customers
• E.g. Database, word processor, drawing packages and project management tools
Bespoke (custom) - developed for a single customer according to their specification
• E.g. Control systems for electronic devices, air traffic control systems

Software Characteristics
Software is a logical rather than a physical system element.

1. Software is developed or engineered; it is not manufactured in the classical sense.


Software development and hardware manufacturing-the two activities are
fundamentally different.
In both activities, high quality is achieved through good design, but the manufacturing
phase for hardware can introduce quality problems that are nonexistent (or easily corrected)
for software.
Software costs are concentrated in engineering. This means that software projects
cannot be managed as if they were manufacturing projects.

2. Software doesn't "wear out."


The figure below shows failure rate as a function of time for hardware. The
relationship, often called the "bathtub curve," indicates that hardware exhibits relatively high
failure rates early in its life (these failures are often attributable to design or manufacturing
defects); defects are corrected and the failure rate drops to a steady-state level (ideally, quite
low) for some period of time.

Software Application Domains


System software
System software is a collection of programs written to service other programs.
e.g., compilers, editors, and file management utilities, operating system components, drivers

Application software
Application software are stand-alone programs that solve a specific business need.
used to control business functions in real time
e.g., point-of-sale transaction processing, real-time manufacturing process control

Engineering and scientific software


Engineering and scientific software have been characterized by "number crunching"
algorithms.
e.g., Computer-aided design, system simulation, and other interactive applications

Embedded software
Embedded software resides in within a product or system and is used to control products and
systems for the consumer and industrial markets.
e.g., keypad control for a microwave oven, digital functions in an automobile such as fuel
control, dashboard displays, and braking systems
Product-line software
designed to provide a specific capability for use by many different customers.
e.g., inventory control products, word processing, spreadsheets, computer graphics and
personal and business financial applications

Web applications
WebApps are sophisticated computing environments that not only provide stand-alone
features, computing functions, and content to the end user, but also are integrated with
corporate databases and business applications

Artificial intelligence software


Artificial intelligence (AI) software makes use of non-numerical algorithms to solve complex
problems that are not amenable to computation or straightforward analysis.
e.g., robotics, expert systems, pattern recognition (image and voice), artificial neural
networks, theorem proving, and game playing

1.1.2 Software engineering

The application of a systematic, disciplined, quantifiable approach to the development,


operation, and maintenance of software; that is, the application of engineering to software.

An engineering discipline that is concerned with all aspects of software production

The establishment and use of sound engineering principles in order to economically obtain
software that is reliable and works efficiently on real machines

Difference between software engineering and computer science


Computer science is concerned with theory and fundamentals;
Software engineering is concerned with the practicalities of developing and delivering
useful software

Difference between software engineering and system engineering


System engineering is concerned with all aspects of computer-based systems
development including hardware, software and process engineering.
Software engineering is part of this process concerned with developing the software
infrastructure, control, applications and databases in the system

Software Engineering: A Layered Technology


Software engineering is a layered technology.
Any software can be developed using these layered approaches.
Software engineering layers

A Quality focus
The bedrock that supports software engineering is a quality focus.
Total quality management, Six Sigma and similar philosophies foster a continuous
process improvement culture, and this culture ultimately leads to the development of
increasingly more mature approaches to software engineering.

Process
The foundation for software engineering is the process layer.
Software engineering process is the glue that holds the technology layers together and
enables rational and timely development of computer software.
Process defines a framework for a set of key process areas (KPAs) that must be
established for effective delivery of software engineering technology.
The key process areas form the basis for management control of software projects and
establish the context in which technical methods are applied, work products (models,
documents, data, reports, forms, etc.) are produced, milestones are established, quality is
ensured, and change is properly managed.

Methods
Methods provide the technical how-to's for building software.
Methods encompass a broad array of tasks that include requirements analysis, design,
program construction, testing, and support.
Software engineering methods rely on a set of basic principles that govern each area of
the technology and include modeling activities and other descriptive techniques.

Tool
Tools provide automated or semi-automated support for the process and the methods.
When tools are integrated so that information created by one tool can be used by another,
a system for the support of software development, called computer-aided software
engineering is established.
1.2 SOFTWARE PROCESS

Software Process
It is a is a collection of activities, actions, and tasks that are performed when some work
product is to be created.
An activity strives to achieve a broad objective (e.g., communication with stakeholders)
and is applied regardless of the application domain, size of the project, complexity of the
effort, or degree of rigor with which software engineering is to be applied.
An action encompasses a set of tasks that produce a major work product.
A task focuses on a small, but well-defined objective (e.g., conducting a unit test) that
produces a tangible outcome.

A Generic Process Model


A process framework establishes the foundation for a complete software engineering
process by identifying a small number of framework activities that are applicable to all
software projects, regardless of their size or complexity.

In addition, the process framework encompasses a set of umbrella activities that are
applicable across the entire software process.
A generic process framework for software engineering defines five framework activities

1. Communication
This framework activity involves heavy communication and collaboration with the
customer and other stakeholders
It encompasses requirements gathering and other related activities that help define
software features and functions.
2. Planning
This activity establishes a plan for the software engineering work.
It describes the technical tasks to be conducted, the risks that are likely, the resources that
will be required, the work products to be produced, and a work schedule.
3. Modeling
This activity encompasses the creation of models that allow the developer and the
customer to better understand software requirements and the design that will achieve those
requirements.
1. Analysis
2. Design
4. Construction
This activity combines code generation (either manual or automated) and testing, i.e.,
required to uncover errors in the code.
5. Deployment
The software (as a complete entity or as a partially completed increment) is delivered to
the customer who evaluates the delivered product and provides feedback based on the
evaluation.

Software engineering process framework activities are complemented by a number of


umbrella activities. In general, umbrella activities are applied throughout a software project
and help a software team manage and control progress, quality, change, and risk.
Typical umbrella activities include:
Software project tracking and control—allows the software team to assess progress
against the project plan and take any necessary action to maintain the schedule.
Risk management—assesses risks that may affect the outcome of the project or the
quality of the product.
Software quality assurance—defines and conducts the activities required to ensure
software quality.
Technical reviews—assesses software engineering work products in an effort to uncover
and remove errors before they are propagated to the next activity.
Measurement—defines and collects process, project, and product measures that assist the
team in delivering software that meets stakeholders’ needs; can be used in conjunction with
all other framework and umbrella activities.
Software configuration management—manages the effects of change throughout the
software process.
Reusability management—defines criteria for work product reuse (including software
components) and establishes mechanisms to achieve reusable components.
Work product preparation and production—encompasses the activities required to
create work products such as models, documents, logs, forms, and lists

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
through the five activities 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)
1.3 PRESCRIPTIVE PROCESS MODELS
Prescriptive Process Models
It prescribes a set of process elements—framework activities, software engineering
actions, tasks, work products, quality assurance, and change control mechanisms for each
project.
Each process model also prescribes a process flow (also called a work flow)—that is, the
manner in which the process elements are interrelated to one another
The software process model is also known as software development life cycle (SDLC)
model
Various Perspective models are

Waterfall Model
Incremental Process Models
Incremental Model
RAD Model
Evolutionary Process Models
Prototyping
The Spiral Model
Concurrent Models

1.3.1 Waterfall Model


Also called as the classic life cycle or the linear sequential model
The linear sequential model is the oldest and the most widely used paradigm for software
engineering.
It suggests a systematic, sequential approach to software development that begins with
customer specification of requirements and progresses through analysis, design, coding,
testing, and support.
When requirements are well defined and reasonably stable, it leads to a linear fashion.

Communication
This is the first phase of waterfall model which includes a meeting with the customer to
understand his requirements.
The information domains, function, behavioral requirements of the system are
understood.
Requirement gathering and Analysis phase the basic requirements of the system must be
understood by software engineer.
Planning
This activity establishes a plan for the software engineering work that follows.
It describes the technical tasks to be conducted, the risks that are likely.

(a) the resources that will be required


(b) the work products to be produced
(c) work schedule
Modeling
This activity encompasses the creation of models that allow the developer and the
customer to better understand software requirements and the design.
The generic process framework, the modeling activity is composed of two software
engineering actions
• Analysis
• Design
Software design is actually a multistep process that focuses on four distinct attributes of a
program: data structure, software architecture, interface representations, and procedural
(algorithmic) detail. The design process translates requirements into a representation of the
software that can be assessed for quality before coding begins.

Construction
The design must be translated into a machine-readable form.
The code generation step performs this task.
Once code has been generated, program testing begins.
The testing process focuses on the logical internals of the software, ensuring that all
statements have been tested, and
On the functional externals; that is, conducting tests to uncover errors and ensure that
defined input will produce actual results that agree with required results.

Deployment
The software is delivered to the customer who evaluates the delivered product and
provides feedback based on the evaluation.
Software will undoubtedly undergo change after it is delivered to the customer.
Change will occur because errors have been encountered, because the software must be
adapted to accommodate changes in its external environment (e.g., a change required because
of a new operating system or peripheral device), or because the customer requires functional
or performance enhancements.
Software support/maintenance reapplies each of the preceding phases to an existing
program.

When to use the Waterfall Model


Requirements are very well known
Product definition is stable
Technology is understood
New version of an existing product
Porting an existing product to a new platform.
Waterfall Model Disadvantages
Real projects rarely follow the sequential flow that the model proposes.
Although the linear model can accommodate iteration, it does so indirectly. As a result,
changes can cause confusion as the project team proceeds.
The linear sequential model requires the customer to state all requirements explicitly.
A working version of the program(s) will not be available until late in the project time-
span. A major blunder, if undetected until the working program is reviewed, can be
disastrous.

The linear nature of the classic life cycle leads to “blocking states” in which some project
team members must wait for other members of the team to complete dependent tasks.
The project requires the fulfillment of one phase, before proceeding to the next.
Waterfall Model Advantages
Easy to understand, easy to use
Provides structure to inexperienced staff
Milestones are well understood
Sets requirements stability
Good for management control (plan, staff, track)
Works well when quality is more important than cost or schedule

1.3.2 Incremental Process Models


1.3.2.1 The Incremental model
The incremental model 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 (basic requirements are addressed but
supplementary features remain undelivered)
The core product is used by the customer (or undergoes detailed evaluation)
Based on evaluation results, a plan is developed for the next increment
The process is repeated following the delivery of each increment, until the complete
product is produced.
The incremental process model, like prototyping and other evolutionary approaches, is
iterative in nature
But unlike prototyping, the incremental model focuses on the delivery of an operational
product with each increment
E.g. Word processing software incremental method developed as follows:
Basic file management, editing and document production functions in the first increment.
More sophisticated editing and document production capabilities in the second increment.
Spelling and grammar checking in the third increment.
Advanced page layout capability in the fourth increment.

When to use the Incremental Model


Risk, funding, schedule, program complexity, or need for early realization of benefits.
Most of the requirements are known up-front but are expected to evolve over time
A need to get basic functionality to the market early
On projects which have lengthy development schedules
On a project with new technology

Incremental Model advantages


Particularly useful when staffing is unavailable
Increments can be planned to manage technical risks
Each release delivers an operational product
Customers get important functionality early
Risk of changing requirements is reduced

Incremental Model disadvantages


Requires good planning and design
Well-defined module interfaces are required
Total cost of the complete system is high

1.3.2.2 The RAD Model


Rapid Application Development is a incremental model that emphasizes a short
development cycle
A “high speed” adaptation of the waterfall model
Uses a component-based construction approach
May deliver software within a very short time period (e.g. ,60 to 90 days) if requirements
are well understood and project scope is constrained
The application should be modularized and addressed by separate RAD teams
Integration is required

Various phases of RAD model are


Communication
To understand the business problem and the information characteristics that the software
must accommodate.
Planning
Planning is essential because multiple software teams work in parallel on different system
functions.
Modeling
Modeling encompasses three major phases and establishes design representations that serve
as the basis for RAD's construction activity.
Business modeling
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?
Data modeling
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 defined.
Process modeling
The data objects defined in the data modeling phase are transformed to achieve the
information flow necessary to implement a business function. Processing descriptions are
created for adding, modifying, deleting, or retrieving a data object.
Construction
It emphasizes the use of pre-existing software components and the application of automatic
code generation.
Deployment
Deployment establishes a basis for subsequent iterations if required.
The RAD Model – Drawbacks
For large, but scalable projects, RAD requires sufficient human resources
RAD projects will fail if developers and customers are not committed to the rapid-fire
activities
If a system cannot be properly modularized, building the components necessary for RAD
will be problematic
If high performance is an issue, and performance is to be achieved through tuning the
interfaces to system components, the RAD approach may not work
RAD may not be appropriate when technical risks are high. This occurs when a new
application makes heavy use of new technology or when the new software requires a high
degree of interoperability with existing computer programs.

The RAD Model Advantages


Extremely short development time.
Uses component-based construction and emphasizes reuse and code generation

1.3.3 Evolutionary Process Models


Software, like all complex systems, evolves over a period of time
Business and product requirements often change as development proceeds, making a
straight-line path to an end product is unrealistic
Evolutionary models are iterative
A process model that has been explicitly designed to accommodate a product that evolves
over time

1.3.3.1 The Prototyping Model


Often, a customer defines a set of general objectives for software but does not identify
detailed input, processing, or output requirements. In other cases, the developer may be
unsure of the efficiency of an algorithm, the adaptability of an operating system, or the form
that human/machine interaction should take. In these, and many other situations, a
prototyping paradigm may offer the best approach.
The prototyping paradigm begins with Communication.
Developer and customer meet and define the overall objectives for the software, identify
whatever requirements are known, and outline areas where further definition is mandatory.
A prototyping iteration is planned quickly and modeling in the form of quick design
occurs.
The quick design focuses on a representation of those aspects of the software that will be
visible to the customer/user (e.g.,human interface layout or output display formats).
The quick design leads to the construction of a prototype.
The prototype is evaluated by the customer/user and used to refine requirements for the
software to be developed

Iteration occurs as the prototype is tuned to satisfy the needs of the customer, while at the
same time enabling the developer to better understand what needs to be done.
Ideally, the prototype serves as a mechanism for identifying software requirements.
If a working prototype is built, the developer attempts to use existing program fragments
or applies tools (e.g., report generators, window managers) that enable working programs to
be generated quickly.

Prototyping Disadvantages
Customers may press for immediate delivery of working but inefficient products
The developer often makes implementation compromises in order to get a prototype
working quickly
Iterative process continues forever which cannot be stopped at a particular stage.
Prototyping Advantages
Iterative process facilitating enhancements.
Partial products can be viewed by the customer.
Flexibility of the product.
Customer satisfaction of the product.

1.3.3.2 The Spiral Model


Couples the iterative nature of prototyping with the controlled and systematic aspects of
the waterfall model
It provides the potential for rapid development of increasingly more complete versions of
the software

It is a risk-driven process model generator


It has two main distinguishing features
– Cyclic approach
• Incrementally growing a system’s degree of definition and implementation while decreasing
its degree of risk
– A set of anchor point milestones
• A combination of work products and conditions that are attained along the path of the spiral
Unlike other process models that end when software is delivered, the spiral model can be
adapted to apply throughout the life of the computer s/w
The circuits around the spiral might represent
– Concept development project
– New Product development project
– Product enhancement project
The spiral model demands a direct consideration of technical risks at all stages of the
project
The Spiral Model – Drawbacks
It may be difficult to convince customers (particularly in contract situations) that the
evolutionary approach is controllable.
It demands considerable risk assessment expertise and relies on this expertise for success.
If a major risk is not uncovered and managed, problems will undoubtedly occur.

1.3.3.3 The Concurrent Development Model


Sometimes called concurrent engineering
Can be represented schematically as a series of framework activities, s/w engineering
actions and tasks, and their associated states
Defines a series of events that will trigger transitions from state to state for each of the
s/w engineering activities, actions, or tasks
The activity—modeling —may be in any one of the states noted at any given time.
Similarly, other activities (e.g., communication or construction) can be represented in an
analogous manner. All activities exist concurrently but reside in different states.
For example, early in a project the customer communication activity has completed its
first iteration and exists in the awaiting changes state.
The modeling activity (which existed in the inactive state while initial communication
was completed, now makes a transition into the under development state.
If, however, the customer indicates that changes in requirements must be made, the
modeling activity moves from the under development state into the awaiting changes state.
For example, during early stages of design, an inconsistency in the requirements model is
uncovered. This generates the event analysis model correction, which will trigger the
requirements analysis action from the done state into the awaiting changes state.
The concurrent process model is often used as the paradigm for the development of
client/server applications
It provides an accurate picture of the current state of a project.

1.4 SPECIALIZED PROCESS MODELS


Specialized Process Models
Specialized process models take on many of the characteristics of one or more of the
traditional models
These models tend to be applied when a specialized or narrowly defined software
engineering approach is chosen
Various types are
o Component-Based Development
o Formal Methods Model
o Aspect-Oriented Software Development

1.4.1 Component-Based Development


Commercial off-the-shelf (COTS) software components, developed by vendors who offer
them as products, provide targeted functionality with well-defined interfaces that enable the
component to be integrated into the software that is to be built
It incorporates many of the characteristics of the spiral model.
It is evolutionary in nature demanding an iterative approach to the creation of software.
But, the component-based development model constructs applications from prepackaged
software components.
Modeling and construction activities begin with the identification of candidate
components (either conventional software modules or object-oriented classes or packages of
classes).
The component-based development model incorporates the following steps:

1. Available component-based products are researched and evaluated for the application
domain in question.
2. Component integration issues are considered.
3. A software architecture is designed to accommodate the components.
4. Components are integrated into the architecture.
5. Comprehensive testing is conducted to ensure proper functionality.
The component-based development model leads to software reuse, and reusability
provides software engineers with a number of measurable benefits.
Software engineering team can achieve a reduction in development cycle time as well as
a reduction in project cost

1.4.2 The Formal Methods Model


The formal methods model encompasses a set of activities that leads to formal
mathematical specification of computer software.
Formal methods enable us to specify, develop, and verify a computer-based system by
applying a rigorous, mathematical notation.
When formal methods are used during development, they provide a mechanism for
eliminating many of the problems that are difficult to overcome using other software
engineering paradigms. Ambiguity, incompleteness, and inconsistency can be discovered and
corrected more easily through the application of mathematical analysis.

When formal methods are used during design, they serve as a basis for program
verification and therefore enable to discover and correct errors that might otherwise go
undetected.
Concerns about its applicability
o The development of formal models is currently quite time consuming and expensive.
o Because few software developers have the necessary background to apply formal methods,
extensive training is required.
o It is difficult to use the models as a communication mechanism for technically
unsophisticated customers.
The formal methods approach is mainly used in building safety-critical software (e.g.,
developers of aircraft avionics and medical devices) and among developers that would suffer
severe economic hardship should software errors occur
1.4.3 Aspect-Oriented Software Development
As modern computer-based systems become more sophisticated (and complex), certain
concerns—customer required properties or areas of technical interest—span the entire
architecture.
Some concerns are high-level properties of a system (e.g., security, fault tolerance). Other
concerns affect functions (e.g., the application of business rules), while others are systemic
(e.g., task synchronization or memory management)
When concerns cut across multiple system functions, features, and information, they are
often referred to as crosscutting concerns.
Aspectual requirements define those crosscutting concerns that have an impact across the
software architecture.
Aspect-oriented software development (AOSD), often referred to as aspect-oriented
programming (AOP), is a software engineering paradigm that provides a process and
methodological approach for defining, specifying, designing, and constructing aspects—
“mechanisms beyond subroutines and inheritance for localizing the expression of a
crosscutting concern”
It will adopt characteristics of both evolutionary and concurrent process models.
The evolutionary model is appropriate as aspects are identified and then constructed.
The parallel nature of concurrent development is essential because aspects are engineered
independently of localized software components and aspects have a direct impact on these
components.
It is essential to instantiate asynchronous communication between the software process
activities applied to the engineering and construction of aspects and components

Verification and Validation


Verification refers to the set of activities that ensure that software correctly implements a
specific function.
Validation refers to a set of activities that ensure that the software that has been built is
traceable to customer requirements.
Verification: "Are we building the product right?"
Validation: "Are we building the right product?"

Introduction to Agility

• Agility is ability to move quickly and easily.


• It is a property consisting of quickness, lightness, & ease of movement;
• The ability to create and respond to change in order to profit in a turbulent global
business environment
• The ability to quickly reprioritize use of resources when requirements, technology,
and knowledge shift
• A very fast response to sudden market changes and emerging threats by intensive
customer interaction
• Use of evolutionary, incremental, and iterative delivery to converge on an optimal
customer solution
• Maximizing BUSINESS VALUE with right sized, just- enough, and just-in-time
processes and documentation
What is Agility?
Agile Process
• Agile software process addresses few assumptions
– Difficulty in predicting changes of requirements and customer priorities.
– For many types of software; design and construction are interleaved
(mixed).
– Analysis, design, construction and testing are not as predictable as we
might like.
• An agile process must be adaptable
• Requires customer feedback
Agility Principles

• Highest priority is to satisfy the customer through early & continuous delivery if
software
• Welcome changing requirements
• Deliver working software frequently
• Business people and developers must work together
• Build projects around motivated individuals
• Emphasize face-to-face conversation
• Working software is the measure of progress
• Continuous attention to technical excellence and good design
• Simplicity – the art of maximizing the amount of work done
• The best designs emerge from self-organizing teams
• The team tunes and adjusts its behaviour to become more effective
Agile Process Models

• Extreme Programming (XP)


• Adaptive Software Development (ASD)
• Dynamic Systems Development Method (DSDM)
• Scrum
• Feature Driven Development (FDD)
• Crystal



• A
gi
le

Modelling (AM)
Extreme Programming (XP)
• The most widely used approach to agile software development
• A variant of XP called Industrial XP (IXP) has been proposed to target process for
large organizations
• It uses object oriented approach as its preferred development model
XP Values
• Communication: To achieve effective communication, it emphasized close &
informal (verbal) collaboration between customers and developers
• Simplicity: It restricts developers to design for immediate needs not for future
needs
• Feedback: It is derived from three sources the implemented software, the customer
and other software team members, it uses Unit testing as primary testing
• Courage: It demands courage (discipline), there is often significant pressure to design
for future requirements, XP team must have the discipline (courage) to design for
today
• Respect: XP team respect among members

The XP Process

You might also like