Вы находитесь на странице: 1из 58

Software Development Process

1.1 Introduction to software:


1.1.1 Definition of software:-

1. Software is defined as “a collection of programs, procedures, and associated documentation and data”.
2. Software is “a data structure that enables the programs to manipulate information”.
 Computer software is a product that design and built by software engineers.
 Software is designed to perform a well-defined task or function.
 Software controls integrate and manages the hardware components of computer system.
 Software is a collection of programs, documentation and operating procedures.

Programs

Documentation Operating Procedures

Fig. Software = program + documentation + operating procedures


Types/categories of software:-
• THERE ARE NINE TYPES OF SOFTWARE:-
• System Software:-
• System software is collection of programs designed to operate and control the
processing capabilities of computer itself.
• It is a collection of programs written to service other programs.
• System software’s are developed by computer manufacturer.
• Without these software user cannot use the hardware.
• Examples are Operating system, compilers, drivers etc.
• Application Software:
• Application software is the software that is designed to satisfy a particular need.
• Examples are: Student record software, railway reservation software.
• Embedded Software:
• It resides within hardware.
• It performs limited functions.
• Examples are: A.C., Washing machine, toys, mobile phones,
• Real-Time Software:-
• A software program that monitors real-world events as they occur
is called real-time.
• Such software requires quick response from user.
• A real time system must respond within strict time constraints.
• Examples are aero plane, Car, Missiles etc.
• Product-line Software::-
• This software focuses on limited marketplace such as inventory
control products.
• Examples are spreadsheets, word processing, computer graphics,
database management
• Engineering/Scientific Software:-
• These are used for scientific and engineering purpose.
• Used for large computing.
• Examples are Weather forecasting, CAD/CAM, MATLAB etc.
• Web-based Software:-
• This software act as interface between user and internet.
• It is developed using set of linked hypertext pages (HTML) which
consist of text and graphics, JAVA, PHP etc.
• The software related to web applications comes under this
category.
• Artificial Intelligence (AI) Software:-
• The science which enables the machines to behave like human
being is known as artificial intelligence.
• Examples are Robotics, Game playing etc.
• Personal Computer Software:-
• This software is used in personal computers.
• Used for both Official and personal use.
• Examples are word processors, computer graphics, games,
multimedia etc.
Software Engineering:-

Definition:-
• “A discipline whose aim is the production of
quality software, software that is delivered on time,
within budget and that satisfies requirements.”
OR
• IEEE defines software engineering as,” The
application of systematic, disciplined approach to the
development, operation, and maintenance of
software.”
• The primary goal of software engineering is to produce
high quality software in time within budget.
Need of Software Engineering:-

• Following points describe the need of software engineering:-


• As software development is expensive so proper measures are
required so that the resources are used efficiently.
• To manage the time and cost software engineering is required.
• Software engineering is needed for building complex software
system, in time with high quality.
• Some projects are complicated so software engineering is needed to
develop such software.
• Controlling and scheduling are the main activities of software
project guided by software engineering.
• Software project teams have to continuously deal with day to day or
new technology challenges.
Software Engineering: A Layered
Technology:
Process layer:-

• The foundation for software engineering is the


process layer.
• It holds the technology layers together.
• It defines framework for set of key Process Areas
(KPA) which can be used for effective delivery of
software engineering technology.
• It forms the basis for management of software
projects and provides the context in which
technical methods are applied, work products are
produced, and changes are managed.
• Methods layer:-
• It provides technical knowledge for building software.
• It consists of set of tasks such as communication,
requirement analysis, design, coding, testing.
• Tools layer:-
• Provides automated or semi-automated support for
process and methods.
• A system for support of software development called
Computer Aided Software Engineering (CASE) is
established.
Characteristics of software:-

• The main characteristics of software are:-


• Software is developed or engineered:
• In both software development and hardware
manufacturing the focus is on quality.
• Software projects cannot manage like
hardware manufacturing projects.
• The software is developed not manufactured.
• Software does not wear out:-







• Above fig is called as ‘bath tub curve’ which indicates that
the hardware have high failure rate early in its life ,then
defects are corrected and failure rate drops to steady level
for some period of time.
• As time passes, the failure rate rises again because of
environmental melodies like excess use,dust, vibrations etc.
and finally hardware begins to wear out. But the software
does not wear out like hardware.
• Most software is custom built:-
• To build the hardware fixed guidelines are
followed by hardware manufacturer but to
build the software no fix format is there. For
every software project, developer has to apply
new ideas.
Software Development Generic
Process Framework:
• “A process is a collection of activities, actions and tasks that
are performed to develop the software.”
• “A process framework is a collection of software
development activities which forms base for software engineering
process.”
• 1 Software Process OR Software engineering Process:-
• Definition:
• “Software process is defined as a collection of activities to
develop software product according to goals or customer
requirements.” OR
• “It is the way in which we produce software”.
• Software process includes guidelines useful for developing the
software.
• Set of activities are performed uniformly.
• Every activity has entry and exit criteria, to find out the beginning
and end of activity.
Characteristics of Software Process:-
• Understandability: - Process should be defined simply and easy so
it can be understood.
• Visibility: - Process activities should give clear output or result so
process is visible externally.
• Supportability:-CASE (Computer Aided Software Engineering) tool
must support process activities.
• Reliability:-Errors in the process should be avoided before they
result in product.
• Rapidity:-The speed with which complete software is delivered
with specification.
• Acceptability:- The extent to which s/w process is acceptable and
usable by software developers to produce the software.
• Robustness:- The software process should continue in spite of
unexpected errors or problems.
• Maintainability:-The process should evolve to reflect the changing
requirements.
software process framework:
• A process framework consists of set of
framework activities or tasks that are
applicable to all software projects.
• It also consists of set of umbrella activities that
are applicable across the entire software
project.
• Each framework activity consists of set of
actions and each action in process framework
consists of individual work tasks that
accomplish some part of work.
• The following five generic framework activities are performed to develop
the computer software.
• Communication:
• Involves the communication with customer and requirements are gathered.
• Planning:-
• Establishes a plan for s/w engineering work that follows.
• It describes the technical tasks to be conducted, the resources to be
required, and risks are identified.

• Modeling:-
• Models are developed for better understanding of developer and customer.
• Construction:-
• Code is generated.
• Code is tested to uncover errors in the code.

• Deployment:-
• The software is delivered to customer who evaluates the product and
provides feedback.
• . Process Models:
• “A framework containing the processes, activities and tasks involved
in the development, operation, and maintenance of software
product for whole life of system”.
• All s/w process models consist of generic framework activity and
the workflow between activities.
• There are two types of the process models:-
• Prescriptive process models:-
• There are three prescriptive models.
• Waterfall model. b. Incremental model.
• RAD (Rapid Application Development) model.

• Evolutionary process models:-


• There are two evolutionary models.
• Prototyping model.
• Spiral model.
• Prescriptive process models:-
• The models which have predefined process
framework are known as prescriptive process
models.
• It defines set of tasks, activities, actions and
work products required to produce high
quality software.
• These models provide guidelines for
developing the software.
• There are three prescriptive process models.
Waterfall Model:-
• This is first published model.
• It is developed by Winston Royce.
• It is linear model because after completion of one
phase it enters into next phase.
• The output of one phase is given as input for next
phase so if output of one phase is wrong it affects the
next phases.
• Features of waterfall model are:-
• It can be implemented for all size projects.
• It leads to clear approach for s/w development.
• Testing is inherent in every phase.
• At every stage, documentation is done which is helpful
for s/w development.
situation where it is applicable:-
• The projects which follows sequential flow for
such projects this model can be applied.
• Each phase consist of set of activities and
performed by different people.
• It has sequential linear flow among phases.
• By using work products we can easily measure
the progress of project.
• Phases of waterfall model :-
• Preliminary investigation or system engineering:-
• In this phase, the requirements for all parts of the system are
identified.
• We decide the requirements of system elements.

• Requirements Analysis:-
• This phase focuses on the requirements of the software to be
developed.
• The analyst must understand the information domain, the required
function, the performance, and the interfacing.
• System Design:-
• This phase determines the detailed process of s/w development.
• During this phase, the designer develops the design for four
attributes of program:
• Data structure.
• Software Architecture.
• Procedural detail
• Interface characterization.
• System Coding:-
• The design must be translated into a machine -readable
form.
• The coding step performs this task.
• System Testing:-
• Testing phase ensures that the software is developed as per
the user’s requirements.
• This phase focuses on the logical internals of the software
(source code) and functional externals (output of the
software).
• Implementation and maintenance:-
• This phase delivers fully functioning software to the user.
• There are certain problems encountered while applying
waterfall model:
• It is difficult to state all requirements by the customer.
• The customer must have patience.
Advantages of Waterfall model:-
• Waterfall model is linear model so it is very easy to
implement.
• The amount of resources required to implement this
model is very minimum.
• The documentation is produced at every stage of
waterfall model development. This makes the
understanding of the product designing procedure
simpler.
• After coding stage, testing is done to check the
correctness of the code.
• In waterfall model, the progress is measurable.
• Each phase of development proceeds sequentially.
Incremental Model:-
• It was developed by Mills Etal in 1980.
• The incremental model is also known as iterative
enhancement model.
• In this model, the project is divided into small subsets called
as increments and are implemented individually.
• Each linear sequence produces a deliverable increment of the
software.
• When the incremental model is used, the first increment is a
“core product”.
• For later increments the supplementary features are added.
• This model is useful when staff is unavailable for complete
implementation and there is deadline.
• Example: MS word is developed by using this model. The
first increment was just providing editing and documentation
production, more sophisticated editing and documentation
production was capabilities of second increment. And spelling
and grammar checking feature is added in the third increment.
• Advantages of Incremental model:-
• It combines the linear nature of waterfall model and iterative nature of
prototyping model.
• Number of people required is less.
• Easy to add quality.
• The system can be designed in such a way that it can be delivered into
pieces.
• Increments are developed one after the other, after feedback has been
received from the user.
• It is easy to predict the resources required for software development.
• Technical risks can be managed.
• Becomes understandable after successive refinements.
• Disadvantages of Incremental model:-
• Reusability of code is minimum.
• Integration testing is difficult to do.
• It is very difficult to assess the risks and to solve that.
• Each increment requires testing.
• It can be applied to only those projects whose modules are independent.
• When there is time constraint or when the customer cannot accept, the
product becomes invalid.
RAD (Rapid Application Development)
Model:-
• It is a linear sequential software development
model that focuses on an extremely short
development.
• It also focuses on the reuse of code,
processes, and tools.
• In RAD model, a separate team performs
functions and then these functions are
integrated to develop whole.
• RAD model is used for developing the
“information system applications”.
• The RAD model encompasses following phases:-
• Business Modeling (BM) :-
• The information flow is modeled which answers the
following questions:
• What information is required?
• What information is generated?
• Who generate the information?
• Where does the information go?
• Who process it?
• Data Modeling (DM):-
• The information flow defined by business modeling is
refined into set of data objects that are needed by
application.
• The attributes of each object are identified and the
relationship between the objects is defined.
• Process Modeling(PM) :-
• The functions are defined to process the data objects
defined in the data modeling phase.
• Processing descriptions are created for adding, deleting,
modifying or retrieving a data object.
• Application Generation (AG):-
• Applications are generated by using fourth generation
programming languages and tools like VB, VC++ rather
than using third generation programming language.
• The RAD makes the reuse of existing program components.
• Testing & Turnover (TT):-
• The RAD process emphasizes reuse, many of the program
components have already been tested.
• This minimizes the testing and development time.
• Advantages of RAD Model:-
• Flexible and helps to make the changes.
• It has short development cycles so user can see the product quickly.
• It involves user participation .so user can accept the final product easily.
• Project risks are reduced.
• Manual coding is reduced due to code generators and code reuse.
• Encourages user involvement.
• Less defects.
• Disadvantages of RAD model:-
• Useful only for large projects.
• RAD projects will fail if there is no commitment by developers to perform
activities rapidly.
• If software is not properly modularized, building application becomes
problematic.
• RAD is not appropriate when technical risks are high.e.g.this occurs when
new applications make the use of new technology.
• RAD projects will fail if there is no commitment by developers or users to
get software completed on time.
• Not appropriate when technical risks are high.
Specialized process model

There are 4 types of Specialized process model :

• COMPONENT-BASED DEVELOPMENT.
• Commercial off-the-shelf (COST) software components, developed by
vendors who offer them as products, can be used when software is to be
built.
• These components provide targeted functionality with well-defined
interfaces that enable the component to be integrated into the software.
• The component-based development model incorporates many of the
characteristics of the spiral model.
• It is evolutionary in nature, demanding an iterative approach to the
creation of software.
• However, the model composes applications from prepackaged software
components. Modeling and construction activities begin with the
identification of candidate components.
• These components can be designed as either conventional software
modules or object-oriented classes or packages of classes.
• Regardless of the technology that is used to create the components, the
component-based development model incorporates the following steps
(implemented using an evolutionary approach):
• 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 a software engineer to specify, develop, and verify a computer-based
system by applying , mathematical notation.

• A variation on this approach is called clean-room software engineering.


• 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,
not through ad hoc review, but through the application of mathematical analysis.
• When formal methods are used during design, they serve as a basis for program verification
and therefore enable the software engineer to discover and correct errors that might otherwise
go undetected.

• Although not a mainstream approach, the formal methods model offers the promise of defect-
free software.
• • Because few software developers have the necessary background to apply formal methods,
extensive training is required.
• 3 ASPECT-ORIENTED SOFTWARE DEVELOPMENT.
Regardless of the software process that is chosen, the builders of
complex software invariably implement a set of localized features,
functions and information content.
• These localized software characteristics are modeled as components
and then constructed within the context of a system architecture.
• 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; others affect functions or are
systemic.
• 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
impact across the software architecture.
• Aspects are mechanisms beyond subroutines and inheritance for
localizing the expression of a crosscutting concerns.
• Aspect-oriented software development (AOSD), often referred to as
aspect-oriented programming (AOP), is a relatively new software
engineering paradigm that provides a process and methodological
approach for defining, specifying, designing, and constructing
aspects.
• The evolutionary nature of the spiral 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 yet, aspects have a direct impact on these
components.
• THE UNIFIED PROCESS.
In some ways the unified process (UP) is an attempt to
draw on the best features and characteristics of
conventional software process models, but characterize
them in a way that implements many of the best principles
of agile software development.
• The unified process recognizes the importance of customer
communication and streamlined methods for describing
the customer’s view of a system.
• It emphasizes the important role of software architecture
and helps the architect focus on the right goals, such as
understandability, reliance to future changes, and reuse.
• It suggests a process flow that is iterative and incremental,
providing the evolutionary feel that is essential in modern
software development.
Agile software development:-
• Agile software development provides disciplined
project management process that encourages
inspection, adaption, leadership philosophy that
encourages teamwork, self-organization,
accountability , set of engineering practices to
produce high quality software ,Business approach
that helps to achieve goal of customer and company..
• It consist of several methodologies like
• extreme programming(XP),
• Scrum,
• Crystal,
• Dynamic System Development Method(DSDM).
• The phases of generic agile life cycle are as follows:-
• Project Initiation:-
• Determine initial high level requirements.
• Set up and justify the project.
• Project plan:-
• After project initiation plan is developed which includes whether you are going to
have the optional phases.
• Elaborate Requirements(Optional):-
• Very high level requirements are gathered during project initiation.
• These requirements are expanded during this phase to elaborate requirements.
• Architecture(Optional):-
• This phase is optional in XP (extreme Programming).
• In DSDM an architecture phase is compulsory and a “System Architecture
Document” (SAD) is developed.

• Release:-
• A release is a piece of code delivered to the customer.
• Releases can be from 2 weeks to 6 months but usually 3 months long.
• Releases have one or more time boxes.
• In DSDM one release is there.
• Time-Box:-
• A time box is 1 to 6 weeks long but usually 3 to 4 weeks.
• The important thing about time box is that the delivery date is fixed.
Features of the Agile Software
Development Approach:-
• The various features of agile software
development approach is as follows:-
• Iterative: - Development process repeated many
times until the end result is achieved.
• Flexible: - Changes from clients are
accommodated.
• Adaptable: It adjusts in new environment.
• Simple: - Easily adopted by development teams.
• Transparent: - Encourages client or user
involvement.
extreme programming(XP)
adaptive software development
What is Scrum?
• Scrum: It’s about common sense

– Is an agile, lightweight process


– Can manage and control software and product development
– Uses iterative, incremental practices
– Has a simple implementation
– Increases productivity
– Reduces time to benefits
– Embraces adaptive, empirical systems development
– Is not restricted to software development projects

– Embraces the opposite of the waterfall approach…


Scrum at a Glance

24 hours
Daily Scrum
Meeting

Backlog tasks 30 days


expanded
Sprint Backlog by team

Potentially Shippable
Product Backlog Product Increment
As prioritized by Product Owner
Source: Adapted from Agile Software
Development with Scrum by Ken Schwaber and
Mike Beedle.
Dynamic systems development
method (DSDM)
• the DSDM Agile Project Framework was revised and became a
generic approach to project management and solution delivery rather
than being focused specifically on software development and code
creation and could be used for non-IT projects.
• The DSDM Agile Project Framework covers a wide range of
activities across the whole project lifecycle and includes strong
foundations and governance, which set it apart from some other
Agile methods.
• The DSDM Agile Project Framework is an iterative and
incremental approach that embraces principles of Agile
development, including continuous user/customer involvement.
• DSDM fixes cost, quality and time at the outset and uses the of
scope into musts, shoulds, coulds and won't haves to adjust the
project deliverable to meet the stated time constraint.
• DSDM is one of a number of Agile methods for developing software
and non-IT solutions, and it forms a part of the Agile Alliance.
There are eight principles underpinning DSDM Atern.

• These principles direct the team in the attitude they


must take and the mind set they must adopt to deliver
consistently.
• Focus on the business need
• Deliver on time
• Collaborate
• Never compromise quality
• Build incrementally from firm foundations
• Develop iteratively
• Communicate continuously and clearly
• Demonstrate control
Crystal Methods
• Crystal Methods are a family of software development methodologies
developed by Alistair Cockburn from his study and interviews of teams.
• The methods are color-coded to signify the risk to human life. For
example, projects that may involve risk to human life will use Crystal
Sapphire while projects that do not have such risks will use Crystal Clear.
• Crystal focuses on six primary aspects:
• people,
• interaction,
• community,
• communication,
• skills,
• talents.
• Process is considered secondary. There are also seven common properties
in Crystal that indicate higher possibility of success and they include
frequent delivery, reflective improvement, osmotic communication, and
easy access to expert users.

Вам также может понравиться