KEMBAR78
1.software Development Process | PDF | Agile Software Development | Software Prototyping
0% found this document useful (0 votes)
18 views79 pages

1.software Development Process

The document outlines the software development process, detailing various models such as Waterfall, Incremental, RAD, Prototype, and Spiral, along with their advantages and disadvantages. It emphasizes the importance of communication, planning, modeling, construction, and deployment in software engineering, as well as the role of agile methodologies like Extreme Programming and Scrum. Additionally, it discusses the characteristics of software, categories of software, and the layered technology approach in software engineering.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views79 pages

1.software Development Process

The document outlines the software development process, detailing various models such as Waterfall, Incremental, RAD, Prototype, and Spiral, along with their advantages and disadvantages. It emphasizes the importance of communication, planning, modeling, construction, and deployment in software engineering, as well as the role of agile methodologies like Extreme Programming and Scrum. Additionally, it discusses the characteristics of software, categories of software, and the layered technology approach in software engineering.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 79

Software Development Process

Unit 1
12 marks
CO1 - Select suitable software
development process model
Definition of Software

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, and
3. Descriptive information (documents) in
both hard copy and virtual forms that describes
the operation and use of the programs.
Characteristics of software
Software is developed or engineered; it is not
manufactured in the classical sense.

• The two activities (software development


and hardware manufacturing) are
fundamentally different.
• In both activities, high quality is achieved
through good design, but the manufacturing
phase for hardware can introduce quality
problems.
• Software doesn’t “wear out.” But it does
deteriorate!

• During its life, software will undergo change. As


changes are made, it is likely that errors will be
introduced, causing the failure rate curve to
spike as shown in the “actual curve” .
• Before the curve can return to the original
steady-state failure rate, another change is
requested, causing the curve to spike
again.
• Slowly, the minimum failure rate level begins to
rise—the software is deteriorating due to
change.
Although the industry is moving toward component-
based construction, most software continues
to be custom built.
Categories of software /changing
nature of software
System software
It is collection of programs written to service other programs.
Some system software (e.g., compilers,editors, and file
management utilities) processes complex, but determinate,
information structures.
Other systems applications (e.g., operating system components,
drivers, networking software process largely indeterminate data.

Application software
Stand-alone programs that solve a specific business need.
Applications in this area process business or technical data in a
way that facilitates business operations or management/technical
decision making
Engineering/scientific software
Applications range from astronomy to volcanology, from
automotive stress analysis to space shuttle orbital dynamics,
and from molecular biology to automated manufacturing
E.g.: CAD software.

Embedded software
Resides within a product or system and is used to
implement and control features and functions for the end
user and for the system itself.
Embedded software can perform limited functions (e.g., key
pad control for a microwave oven) or provide significant
function and control capability (e.g., digital functions in an
automobile such as fuel control, dashboard displays, and
braking systems).
E.g. Control buttons of washing machine.
Product-line software
Designed to provide a specific capability for use by many
different customers.
Product-line software can focus on a limited marketplace
(e.g., inventory control products) or address mass consumer
markets (e.g., word processing, spreadsheets, computer
graphics, multimedia,
entertainment, database management, and personal and
business financial applications).

Web applications
Called “WebApps,” this network-centric software category
spans a wide array of applications.
In their simplest form, WebApps can be little more than a
set of linked hypertext files that present information using
text and limited graphics.
Artificial intelligence software
Makes use of non-numerical algorithms to
solve complex problems that are not amenable
to computation or straightforward analysis.

Applications within this area include robotics,


expert systems, pattern recognition (image and
voice), artificial neural networks, theorem
proving, and game playing
Software Engineering:
A layered technology approach:
Software engineering is a layered technology.
Referring to, any engineering approach (including
software engineering) must rest on an
organizational commitment to quality. The bedrock
that supports software engineering is a quality
focus.

The foundation for software engineering is the


process layer. The 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
that must be established for effective delivery of
software engineering technology.
The software process forms the basis for
management control of software projects and
establishes 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.
Software engineering methods provide the
technical how-to’s for building software.
Software engineering 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.
The software process framework
/framework activities:
• A process framework establishes the foundation for a
complete software process by identifying a small
number of framework activities that are applicable to
all software projects, regardless of their size or
complexity.
• In fig each framework activity is populated by a set of
software engineering actions. A collection of related
tasks that produces a major software engineering work
product.
Each action in process framework is populated with
individual work tasks that accomplish some part of the
work implied by the action
1. Communication:
Communication framework activity involves heavy
communication and collaboration with the
customer, encompasses requirements gathering,
data gathering and other related activities.

2. Planning:
Planning activity establishes a plan for software
engineering work that follows. Planning describes
the technical tasks to be conducted, the resources
that will be required, schedule, and the risks that
are likely in the work products to be produced.
3. Modeling:
• Modeling activity encompasses the creation of
models that allow the developer and the
customer to better understand software
requirements specifications and the design
that will achieve those requirements.

• There are two types of modeling


i.e. analysis modeling and design modeling.
4. Construction:
Construction activity combines code generation
and the testing.

5. Deployment:
The software is delivered to the customers who
evaluates the delivered product and provides
feedback based on the evaluation.
Umbrella Activities:
• Generic views of SE is complemented by a set of
unbrella activities.

• They are Software Project tracking and control:


 It allows the software team to access progress
against the project plan and takes necessary action
to maintain schedule.
 Umbrella activities occur throughout the software
process and focus primarily on project
management, tracking and control.
• Risk Management:
Assess risks that are likely to affect performance
and quality of project.

• Software quality assurance:


Define and conduct activities to ensure software
quality
• Formal Technical Review: Assess Software
Engg. Work products to uncover and remove
errors before they are shifted to next level of
activity.

• Measurement: Defines and collects process,


project and product measures to assist the
team in delivering the software that meets
customer needs can be used in conjunction with
all framework and umbrella activities
• Software configuration Management (SCM):
Manages and effects the changes
throughout the software process.

• Reusability management: Defines criteria


for work product reuse (including software
components) and establishes the mechanism
to achieve reusable components.

• Work product preparation and


production: Includes activities for creating
work product such as models, documents,
large
Prescriptive Process Models:
Irrespective of which level of CMM the organization
has, the software engineer has five choices for
selection of software process models.
They are –

1. Waterfall Model
2. Incremental Model
3. RAD Model
4. Prototype Model
5. Spiral Model
The Waterfall Model:
Communication:
It involves heavy communication with the customer (or stakeholder) and encompasses
requirement gathering and related activities.

Planning:
In this activity, effort required, cost/budget, risk analysis ,time duration are estimated
(project plan is made)

Modeling:
This activity creates analysis and design models that both developers and customer to
better understand the requirements. Data structure, software architecture and other
details are made.

Construction:
This activity performs code generation and testing to ensure whether requirements
are fulfilled.
Code generation is done first and then testing is done after that.

Deployment:
Once the product is fully developed, it is delivered to the customer. Customer
evaluates the product and provides feedback.
• one stage should be completed before the other
begins.
• All phases are clearly defined.
• Being oldest, this is one of the time tested Methods
• Real projects rarely follow sequential model.
• It is often difficult for the customer to state
all requirements explicitly.
• The working model is available only in the latter part
of the development.
• This model presents a high level view and
suggests to the developer the sequence of
events they should expect to encounter. This
model is used to prescribe software
development activities in variety of contexts.

• One of the biggest limitation is it does not


reflect the way code is really developed.
Advantages:
It is the simplest software process model.
Easy to understand
Phases are completed one at a time
Works well for smaller projects
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.

It is often difficult for the customer to state all requirements


explicitly. The waterfall model requires this and has difficulty
accommodating the natural uncertainty that exists at the
beginning of many projects.

The customer must have patience. 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 Incremental Model:
Situation in which incremental model is applicable:
• The incremental model combines elements of linear
and parallel process flows.

• There are many situations in which initial software


requirements are reasonably well defined, but the
overall scope of the development effort prevents a
purely linear process.

• When an incremental model is used, the first increment


is often a core product.

• That is, basic requirements are addressed but many


supplementary features (some known, others
unknown) remain undelivered.
• Few of the steps are defined

• It is iterative in nature.

• New model for development

• It provides on the rigid nature(fixed) of sequential approach

• This method is of great help when organization is low on staffing.

• This model could be time consuming.


Advantages:
Useful when staffing is unavailable
Less costly to change the scope of the project
Customer can respond to each build.

Disadvantages:
Cost is higher than waterfall model.
Needs good planning and design
The RAD Model:
• Rapid Application Development (RAD) is a modern software process model
that emphasizes a short development cycle.

• “high-speed” adaptation (Rapid Application Development )

• If requirements are well understood and project scope is considered, the


RAD process enables a development team to create a “Fully Functional
System” within a very short period of time (e.g. 60 to 90 days).

• This model should be used if domain experts are available with relevant
business knowledge.

Advantages:

1. Changing requirements can be accommodated and progress can


be measured.

2. Powerful RAD tools can reduce development time.

3. Productivity with small team in short development time and quick


reviews, risk control increases reusability of components, better
quality.

4. Due to risks in new approach only modularized systems are


recommended through RAD.

5. Suitable for scalable component based systems.


Disadvantages:

1. Success of RAD model depends on strong technical team


expertise and skills.

2. Highly skilled developers needed with modeling skills.

3. User involvement throughout life cycle. If developers


&customers are not committed to the rapid fire activities necessary
to complete the System in a much-abbreviated time frame, RAD
projects will fail.

4. May not be appropriate for very large scale systems where the
technical risks are high.
drawback of RAD model.
1. RAD needs enough human resources to create the
required number of RAD teams.

2. If developers and customers are not committed to the


rapid model, the RAD project fails.

3. Rapid-fire activities need to be completed in very short or


small time frame. Time is the major constraint in RAD.

4. RAD has to be modularized in a proper way otherwise


creates a lots of confusions and problems.

5. In case of high performance requirement, RAD cannot be


ideal model.
The Prototype Model:
Situation in which prototyping model
is applicable:
• Often, a customer defines a set of general objectives for
software, but does not identify detailed requirements for
functions and features.

• Prototyping iteration is planned quickly, and modeling (in the


form of a “quick design”) occurs.

• The prototyping paradigm assists you and other stakeholders


to better understand what is to be built when requirements
are indefinite.

• The prototyping paradigm begins with communication. You


meet with other stakeholders to define the overall objectives
for the software, identify whatever requirements are known,
and outline areas where further definition is mandatory.
Advantages:
Users are actively involved in the development.
Users get better understanding of the system being
developed.
Errors can be detected much earlier.
Quick user feedback is available.

Disadvantages:
Overall software quality or maintainability may not get
considered when the prototype is being developed.
An inefficient algorithm may be implemented.
Inappropriate OS or programming language maybe used
simply because it is available.
The Spiral Model
• Using the spiral model, software is developed in
a series of evolutionary releases. During early
iterations, the release might be a model or
prototype.
• During later iterations, increasingly more
complete versions of the engineered system are
produced.
• A spiral model is divided into a set of framework
activities defined by the software engineering team.
• Risk is considered as each revolution is made.
• Each pass through the planning region results
in adjustments to the project plan.
• Cost and schedule are adjusted based on
feedback derived from the customer after
delivery.
Advantages:
The spiral model is a realistic approach to the
development of large-scale systems and software.
High amount of risk analysis hence, avoidance of
risk is enhanced.

Disadvantages:
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.
Agile Software Development
Agile :
“Our highest priority is to satisfy the customer through early
and continuous delivery of valuable software“

• It is an recent approach for Project Management

• Cycle-time reduction is most important

• Model focuses on modularity, iterative, time bound,


parsimony, adaptive, incremental convergent, collaborative
approach

• Agile process model uses the concept of Extreme Programming


Features of the Agile Software Development Approach

• Modularity allows a process to be broken into


components called activities.
• Iterative Agile software processes focus on short
cycles. Within each cycle, a certain set of activities
is completed.
• Time-Bound set time limits (between one and six
weeks is normal) on each iteration and schedule
Parsimony require a minimal number of activities
necessary to reduce risks and achieve their goals.
• Adaptive The agile process adapts the process
to attack these new found risks.
• Incremental partitions the nontrivial system into
increments which may be developed in parallel,
at different times, and at different rates.
• Convergent actively attacking all of the risks
worth attacking.
• People-Oriented Developers that are
empowered raise their productivity, quality, and
performance.
• Collaborative When a project is developed in
pieces, understanding how the pieces fit together
is vital to creating the finished product.
Agile process
Agile Methodologies
eXtreme Programming (XP)
Scrum
Crystal family of methodologies

• Feature-Driven Development (FDD)


Adaptive Software Development (ASD)
Dynamic System Development Model (DSDM)

• Agile Unified Process (AUP)


eXtreme Programming (XP)
XP's Four Values
1. Communication. Most projects fail because of
poor communication. So implement practices that
force communication in a positive way.
2. Simplicity. Develop the simplest product that meets the
customer’s needs
3. Feedback. Developers must obtain and value feedback
from the customer, from the system, and from each other.
1. The same as standard Agile values: value customer collaboration
over contract negotiation.

4. Courage. Be prepared to make hard decisions that


support the other principles and practices.

5. Respect . The agile team inculcates respect among it


members, between other stakeholders and team
members, and indirectly, for the software itself.
The XP Process
• Extreme Programming uses an object-
oriented approach as its preferred
development paradigm and encompasses a
set of rules and practices that occur within the
context of four framework activities:
• Planning
• Design
• Coding
• Testing
Industrial XP
• Joshua Kerievsky [Ker05] describes Industrial
Extreme Programming (IXP) in the following manner:

“IXP is an organic evolution of XP. It is imbued with XP’s


minimalist, customer-centric, test-driven spirit.

IXP differs most from the original XP in its greater inclusion of


management, its expanded role for customers, and its upgraded
technical practices.”

IXP incorporates six new practices that are designed to help ensure
that an XP project works successfully for significant projects within a
large organization.
Readiness assessment.

Prior to the initiation of an IXP project, the organization should


conduct a readiness assessment.

The assessment ascertains whether


(1) an appropriate development environment exists to support IXP,
(2) the team will be populated by the proper set of stakeholders,
(3) the organization has a distinct quality program and
supports continuous improvement,
(4) the organizational culture will support the new values of an
agile team,
(5) the broader project community will be populated appropriately.
Project community.
• When XP is to be applied for a significant project in a
large organization, the concept of the “team” should
morph into that of a community.

• A community may have a technologist and


customers who are central to the success of a
project as well as many other stakeholders (e.g.,
legal staff, quality auditors, manufacturing or sales
types) who “are often at the periphery of an IXP
project yet they may play important roles on the
project”
Project chartering.
• The IXP team assesses the project itself to
determine whether an appropriate business
justification for the project exists and whether
the project will further the overall goals and
objectives of the organization.

• Chartering also examines the context of the


project to determine how it complements,
extends, or replaces existing systems or
processes.
Test-driven management.
• An IXP project requires measurable criteria
for assessing the state of the project and the
progress that has been made to date.

• Test-driven management establishes a series


of measurable “destinations” and then
defines mechanisms for determining whether
or not these destinations have been reached.
Retrospectives.
• An IXP team conducts a specialized technical
review after a software increment is
delivered. Called a retrospective, the review
examines “issues, events, and lessons-
learned” across a software increment and/or
the entire software release. The intent is to
improve the IXP process.
Continuous learning.
• Because learning is a vital part of continuous
process improvement, members of the XP team
are encouraged (and possibly, incented) to
learn
new methods and techniques that can lead to a
higher quality product.
Adaptive Software Development (ASD)
Speculation
uses project initiation information—the
customer’s mission statement, project constraints
(e.g. delivery dates or user descriptions), and basic
requirements—to define the set of release cycles
(software increments) that will be required for the
project.
• Collaboration It encompasses communication and
teamwork, but it also emphasizes individualism, because
individual creativity plays an important role in
collaborative thinking.

• People working together must trust one another to


(1) criticize without hatred,
(2) Assist without anger,
(3) work as hard as or harder than they do,
(4) have the skill set to contribute to the work,
(5) discuss problems or concerns in a way that leads to
effective action.
Learning
ASD teams learn in three ways:
• focus groups ,
• technical reviews,
• project postmortems.

• Software developers often overestimate their own


understanding (of the technology, the process, and
the project) and that learning will help them to
improve their level of real understanding.
Scrum
• Scrum itself is a framework for effective team
collaboration on complex software projects.
• The team is hard working and goal oriented even though
it is a small team work.
• Scrum is a repetitive and incremental framework for
project management majorly used in very active
software development.

• The scrum methodology requires openness and trust in


the team, which these five values of Scrum support

i. Openness
ii. Commitment
iii. Courage
iv. Respect
v. Focus
Advantages:
• Transparency in project development status.
• Flexibility towards the changes.
• Improved communication, minimum overhead
in development process.
• Productivity can be improved.

Disadvantages:
• Some decisions are hard to track in fixed
time span.
• There are problems to deal with non-
functional requirements of the system.
Dynamic Systems Development
Method(DSDM)
DSDM is a,

• Straight forward framework based on best


principles to start implementing a project
structure.
• Simple
• Extendible
• But not calming to be the solution to all kind of
projects.
Crystal
• Primary goal of this method is to deliver useful
and working software.

• Crystal is actually comprised of a family of agile


methodologies such as Crystal Clear, Crystal
Yellow, Crystal Orange and others, whose unique
characteristics are driven by several factors such
as team size, system criticality, and project
priorities.

• This Crystal family addresses the realization that each


project may require a slightly tailored set of policies,
practices, and processes in order to meet the project
's unique characteristics.
selection criteria for software process model
Type Of the Project Suggested Model
small Project

Requirements of the project


well understand.
Waterfall Model
Existing manual system has
to be automated.

If no need for customer


involvement in project
development cycle
Type Of the Project Suggested Model

When project
requirements are not
clear.

System will be operated


by novice user. RAD Model

The GUI of project is


very important.

Delivery of the project is


expected within a short
period of time.
Type Of the Project Suggested Model

When project requirements


are not properly known.

For the system in which


customer involvement is must.
Agile Model
The GUI of project is very
important.

Quick Delivery of the project is


expected .
Type Of the Project Suggested Model
The risk of long project is not
affordable.

Requirements are not known Spiral Model


and will be known only with
time.

Project is of large size.

You might also like