SEN chp1

Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

SEN (AY 2023-24) Software Development Process

UNIT 1: SOFTWARE DEVELOPMENT PROCESS

1.1 What is Software?

Software is-
• Instructions (computer programs) that when executed provide desired
function and performance,
• Data structures that enable the programs to adequately manipulate
information, and
• Documents that describe the operation and use of the programs.

Software Engineering

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.

Software Engineering as a layered approach

• A Quality Focus:
Any engineering approach must rest on an organizational commitment to quality.
Total quality management, six sigma and similar philosophies foster a continuous
process improvement culture, and it is this culture that ultimately leads to the
development of increasingly more effective approaches to software engineering.
The bedrock that supports software engineering is a quality focus.

• Process Layer:
The foundation for software engineering is the process layer. Software Engineering
process is the glue that holds the technology layers together and enables rational
ZEBA SYED Page 1
SEN (AY 2023-24) Software Development Process

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, works products are
produced, milestones are established, quantity is ensured and change is properly
managed.

• Methods:
Software Engineering methods provide the technical ―how to building software.
Methods encompass a broad array of tasks that include communication,
requirements analysis, design modeling, program construction, testing and support.

• Tools:
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.

TYPES OF SOFTWARE

1. System Software: System Software is a collection of programs written to serve


other programs. Some system software (e.g.:- compliers, editor) processes
complex, but determinate information structures. Other system applications (e.g.
operating system components, drivers) process largely indeterminate data. In either
case, the systems software area is characterized by heavy interaction with
computer hardware; heavy usage by multiple users; concurrent operation that
requires scheduling, resource sharing, and sophisticated process management;
complex data structures; and multiple external interfaces.

2. Application Software: Application Software consists of standalone programs


that solve a specific business need. Applications in this area process business or
technical data in a way that facilities business operations or management /
technical decision making.

3. Embedded 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 and esoteric
functions (e.g. keypad control for a microwave oven) or provide significant

ZEBA SYED Page 2


SEN (AY 2023-24) Software Development Process

function and control capability (e.g. digital functions in an automobile such as fuel
control, dashboard displays, braking systems, etc.)

4. Web – applications: Web Apps, span a wide array of applications. Web apps
are evolving into sophisticated computing environments that not only provide
standalone features, computing functions, and content to the end user, but also are
integrated with corporate databases and business applications.

5. Artificial Intelligence Software: AI 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.

1.2 SOFTWARE PROCESS FRAMEWORK

Basic framework activities:

1. Communication: This framework activity involves heavy communication &


collaboration with the customer (and the stakeholders) and encompasses
requirements gathering and other related activities.
2. Planning: This activity establishes a plan for the software engineering work that
follows. It describes the technical tasks to be conducted; the risks are analyzed.
Project tracking should be done. Deadline is fixed.
3. Modeling: This activity encompasses the creation of models that allow the
developer & the customer to better understand software requirements & the design
that will achieve those requirements.
4. Construction: This activity combines code generation and the testing that is
required uncovering errors in the code.
5. Deployment: The software is delivered to the customer who evaluates the
delivered product and provides feedback based on the evaluation.

PROCESS MODELS

ZEBA SYED Page 3


SEN (AY 2023-24) Software Development Process

The Waterfall Model

The waterfall model is a traditional method, sometimes called the classic life cycle.
This is one of the initial models. As the figure implies stages are cascaded and
shall be developed one after the other. It suggests a systematic, sequential approach
to software development that begins with customer specification of requirements
and progresses through, communication, planning, modeling construction and
deployment.

In other words one stage should be completed before the other begins. Hence,
when all the requirements are elicited by the customer, analyzed for completeness
and consistency, documented as per requirements, the development and design
activities commence. One of the main needs of this model is the user„s explicit
prescription of complete requirements at the start of development. For developers
it is useful to lay out what they need to do at the initial stages. Its simplicity makes
it easy to explain to customers who may not be aware of software development
process. It makes explicit with intermediate products to begin at every stage of
development.

One of the biggest limitation is it does not reflect the way code is really developed.
Problem is well understood but software is developed with great deal of iteration.
Often this is a solution to a problem which was not solved earlier and hence
software developers shall have extensive experience to develop such application;
as neither the user nor the developers are aware of the key factors affecting the
desired outcome and the time needed. Hence at times the software development
process may remain uncontrolled. Today software work is fast paced and subject to
a never-ending stream of changes in features, functions and information content.
Waterfall model is inappropriate for such work. This model is useful in situation
where the requirements are fixed and work proceeds to completion in a linear
manner.

ZEBA SYED Page 4


SEN (AY 2023-24) Software Development Process

Incremental Process Model

Incremental process model is also known as successive version model. First, a


simple working system implementing only a few basic features is built and then
that is delivered to the customer. Then thereafter many successive iterations/
versions are implemented and delivered to the customer until the desired system is
realized.

A, B, C are modules of Software Product that are incrementally developed and


delivered.

The incremental model combines elements of linear and parallel process flows.

When an incremental model is used, the first increment is often a core product.
That is, basic requirements are addressed but many supplementary features remain
undelivered. The core product is used by the customer. As a result of use and/or
evaluation, a plan is developed for the next increment. The plan addresses the
modification of the core product to better meet the needs of the customer and the

ZEBA SYED Page 5


SEN (AY 2023-24) Software Development Process

delivery of additional features and functionality. This process is repeated following


the delivery of each increment, until the complete product is produced.

The incremental process model focuses on the delivery of an operational product


with each increment. Early increments are stripped-down versions of the final
product, but they do provide capability that serves the user and also provide a
platform for evaluation by the user.

Prototyping Process Model

• In Prototyping model initially requirement gathering is done.


• Developer and customer define overall objective and identify areas needing
more requirement gathering.
• Then a quick design is prepared.
• This design represents what will be visible to user in input and output
format.
• From the quick design prototype is prepared.
• Customer evaluates the prototype in order to refine the requirement initial
prototype satisfy customer requirement.
• When a working prototype is build the developer uses existing program to
through away the prototype and rebuild the system to high quality.

ZEBA SYED Page 6


SEN (AY 2023-24) Software Development Process

Spiral Model

This Spiral model is a combination of iterative development process model and


sequential linear development model. It allows incremental releases of the product
or incremental refinement through each iteration around the spiral.
The spiral model has four phases. A software project repeatedly passes through
these phases in iterations called Spirals.

Identification
This phase starts with gathering the business requirements in the baseline spiral. In
the subsequent spirals as the product matures, identification of system
requirements, subsystem requirements and unit requirements are all done in this
phase.
This phase also includes understanding the system requirements by continuous
communication between the customer and the system analyst. At the end of the
spiral, the product is deployed in the identified market.

Design
The Design phase starts with the conceptual design in the baseline spiral and
involves architectural design, logical design of modules, physical product design
and the final design in the subsequent spirals.

ZEBA SYED Page 7


SEN (AY 2023-24) Software Development Process

Construct or Build
The Construct phase refers to production of the actual software product at every
spiral. In the baseline spiral, when the product is just thought of and the design is
being developed a POC (Proof of Concept) is developed in this phase to get
customer feedback.
Then in the subsequent spirals with higher clarity on requirements and design
details a working model of the software called build is produced with a version
number. These builds are sent to the customer for feedback.

Evaluation and Risk Analysis


Risk Analysis includes identifying, estimating and monitoring the technical
feasibility and management risks, such as schedule slippage and cost overrun.
After testing the build, at the end of first iteration, the customer evaluates the
software and provides feedback.

1.4 AGILE PROCESS

What is agile process?


Agile programming is an approach to project management, typically used in
software development. It helps teams react to the instability of building software
through incremental, iterative work cycles, known as sprints.

eXTREME PROGRAMMING (XP)

Extreme Programming involves-

ZEBA SYED Page 8


SEN (AY 2023-24) Software Development Process

• Writing unit tests before programming and keeping all of the tests running at
all times. The unit tests are automated and eliminate defects early, thus
reducing the costs.
• Starting with a simple design just enough to code the features at hand and
redesigning when required.
• Programming in pairs (called pair programming), with two programmers at
one screen, taking turns to use the keyboard. While one of them is at the
keyboard, the other constantly reviews and provides inputs.
• Integrating and testing the whole system several times a day.
• Putting a minimal working system into the production quickly and
upgrading it whenever required.
• Keeping the customer involved all the time and obtaining constant feedback.
Iterating facilitates the accommodating changes as the software evolves with
the changing requirements.

ADAPTIVE SOFTWARE DEVELOPMENT

Speculation
The project is initiated and adaptive cycle planning is conducted.
Adaptive cycle planning uses the customer‟s mission statement, project constraints,
and basic requirements to define the set of release cycles that will be required.

Collaboration
Motivated people work together in a way that multiplies their talent and creative
output beyond their absolute numbers.
People working together must trust one another to:
• Criticize without animosity. Assist without resentment
• Work as hard as they do.

ZEBA SYED Page 9


SEN (AY 2023-24) Software Development Process

• Communicate problems in ways that lead to effective action

Learning
ASD teams learn in three ways:
• Focus groups where the customer or users provide feedback on software
increments
• Formal technical reviews where ASD team members review the software
components developed
• Postmortems where the team becomes introspective, addressing its own
performance

SCRUM

• Backlog is a prioritized list of project requirements or features. Items can be


added to the backlog anytime.
• Sprints are work units that are required to achieve a requirement defined in
the backlog that must fit into a time-box. During the sprint, the backlog item
it uses are frozen.
• Scrum meetings are short daily meetings, where „scrum master‟ assesses the
responses from each person. The meetings help the team uncover potential
problems early.

ZEBA SYED Page 10


SEN (AY 2023-24) Software Development Process

• Demos are an increment delivered to the customer so that functionality can


be demonstrated and evaluated.

Dynamic Systems Development Method (DSDM)

The Dynamic Systems Development Method (DSDM) “provides a framework for


building and maintaining systems which meet tight time constraints through the
use of incremental prototyping in a controlled project environment.”

Main features of the DSDM are as follows:


 User Involvement
 Iterative and incremental development
 Increased delivery frequency
 Integrated tests at each phase
 The acceptance of delivered products depends directly on fulfilling
requirements.

CRYSTAL

Crystal method is an agile software development approach that focuses primarily


on people and their interactions when working on a project rather than on
processes and tools. Crystal Method is based on two fundamental assumptions:
• Teams can streamline their processes as their work and become a more
optimized team.
• Projects are unique and dynamic and require specific methods.

ZEBA SYED Page 11

You might also like