Unit-1 Software Development Process
Unit-1 Software Development Process
Unit-1
Software Development Process
❖ SOFTWARE
(IEEE Definition of software): Software is a ''Collection of computer programs, procedures, rules, associated
documents and concerned data with the operation of data processing system.''
It also includes representations of pictorial, video, and audio information.
Software is divided into two broad categories:
System software: It is responsible for controlling and integrating the
hardware components of a system.
Hence, the software and users can work with them. It also controls the peripherals of computer like monitors,
printers, storage devices etc.
Example: Operating system
Application software: It is used to accomplish some specific tasks. It should be collection of small programs.
It is a program or group of programs generally designed for end users.
Example: Microsoft word, Excel, Railway reservation system etc.
Computer hardware is built from peripherals, device or components, while computer software is logical rather than
physical.
Software has following distinct characteristics.
▪ Software characteristics:
Different software characteristics decide whether the software is good or bad. These attributes reflect the quality of
a software product. And these are depended on the application of the software also.
For example, a banking system must be secure while a telephone switching system must be reliable.
Following are the characteristics of good software: (Qualities of good software).
Understandability: Software should be easy to understand, even to novice users. It should be efficient to use.
Cost: Software should be cost effective as per its usage.
Maintainability: Software should be easily maintainable and modifiable in future.
Modularity: Software should have modular approach so it can be handled easily for testing.
Functionality: Software should be functionally capable to meet user's requirements.
Reliability: It should have the capability to provide failure-free service.
Portability: Software should have the capability to be adapted for different environments.
Correctness: Software should be correct as per its requirements.
Documentation: Software should be properly documented so that we can re-refer it in future.
Reusability: It should be reusable, or its code or logic should be reusable in future.
2
Software Development Process Software Engineering
Interoperability: Software should be able to communicate with various devices using standard bus structure and
protocol.
Verifiability: Software should be verifiable with its properties and functionalities with its planning and analysis done
in previous phase.
Along with these characteristics, software has some special characteristics which are explained below.
▪ Software doesn't wear out:
This can be well understood with the help of figure given below.
Infant
mortality Wear out
Failure rate
Time
Figure: hardware failure curve
In above figure, the relationship between time and failure called ''bath-tub curve''. It indicates that hardware has
relatively high failure rates early in its life, defects are corrected and the failure rate drops to a steady-state level for
some period of time. As time passes, however, the failure rate rises again as hardware components suffer from the
effects of dust, vibration, abuse, temperature extremes, and many other environmental factors. So simply, we can say
hardware begins to wear out.
Increased failure
rate due to side effects
Failure rate
Change
Actual curve
idealized curve
Time
3
Software Development Process Software Engineering
• Software may be retired due to new requirements, new expectations, new technology new technologies etc.
Hence, software doesn't wear out, but it may get worse.
▪ Software is engineered, not manufactured like hardware:
Once a product is manufactured, it is not easy to modify or change it. While in case of software we can easily change
or modify it for later use. Even making multiple copies of software is a very easy task rather it is much more tuff
in case of hardware.
In hardware, costing is due to assembly of raw material and other processing expenses while in software
development, no assembly needed like hardware. Hence, software is not manufactured as it is developed or it is
engineered.
▪ Reusability of components:
• If we assemble hardware, we will have every part and component from different vendors and then we may
produce a finished product.
• In case of software, every project is a new project and we have to start from scratch and design every unit of
software product. Huge number of efforts required to develop a software system. So, building a standard code
or design is very useful for making many new projects. These codes are reusable.
• We can reuse software codes, modules or any logical components in any other related software projects. (For
example, we prepared a payroll system for any organization. We can reuse some of the logical components
while we are developing the related types of payroll systems for any other company or organizations.)
• Generally, GUI (graphical user interface) software is built using reusable components.
▪ Software is flexible for custom built:
• A software program can be developed to do anything. Any kind of change needed in software can be done
easily.
• A software program or product can be built on user requirements basis or custom built. Even the developed
software product can also be changed as per the user demands.
• We can say software is very much flexible for custom built rather than hardware.
• Hence, now a days industries are moving toward component-based assembly, software continues to be custom
built.
❖ SOFTWARE ENGINEERING
• Definition:
Software Engineering discipline began since 5 decade and provides solution to software crisis.
Software crisis is the difficulty of writing useful and efficient computer program in the required time.
• Software Engineering is an engineering discipline that delivers high quality software at agreed cost
& in planned schedule.
• Three main aspects of Software Engineering are:
o Provide quality product
o Expected cost
o Complete work on agreed schedule
4
Software Development Process Software Engineering
(IEEE Definition) Software Engineering is the application of a systematic, disciplined and quantifiable approach
to the development, operation and maintenance of software.
▪ Software Engineering - A layered approach:
Software engineering can be viewed as a layered technology.
It contains process, methods and tools that enable software product to be built in a timely manner.
Tools
Methods
Process
A Quality Focus
5
Software Development Process Software Engineering
6
Software Development Process Software Engineering
• Shortly, it can be said that software is important to make things easier, faster, more reliable and safer.
Definition Development
Phase Phase
Correction
Adaptation
Support
Phase
Enhancement
Prevention
• It focuses on ''what part''. That is, during definition, the software engineer attempts to identify what information is
to be processed, what function and performance are desired, what system behaviour can be expected, what
interfaces are to be established, what design constraints exist, and what validation criteria are required to define a
successful system.
• The key requirements of the system and the software are identified.
•
Three main activities performed during this phase: system or information engineering, software project planning
and requirement analysis.
2. The development phase:
• It focuses on ''how part'' of the development. During development a software engineer attempts to define how
data are to be structured, how function is to be implemented within a software architecture, how interfaces are to
be characterized, how the design will be translated into a programming language, and how testing will be
performed.
• Main activities are performed under this phase are: software design, code generation and software testing.
3. The support phase:
• The support phase focuses on ''change'' associated with error correction.
• Four types of change are encountered during the support phase:
Correction: corrective maintenance changes the software to correct defects.
Adaption: Adaptive maintenance results in modification to the software to accommodate changes to its
external environment.
Enhancement/Perfection: Perfective maintenance extends the software beyond its original functional
requirements.
7
Software Development Process Software Engineering
Prevention: Preventive maintenance to enable the software to serve the needs of its end users.
Umbrella Activities
• Software project tracking and control
• Formal technical review (FTR)
• Software quality assurance (SQA)
• Software configuration management (SCM)
• Document preparation and production
• Reusability management
• Measurement
• Risk Management
8
Software Development Process Software Engineering
Planning
It consists of complete estimation, scheduling for project development and tracking.
Modeling
Modeling consists of complete requirement analysis and the design of the project like algorithm, flowchart etc.
Construction
• Construction consists of code generation and the testing part.
• Coding part implements the design details using an appropriate programming language.
• Testing is to check whether the flow of coding is correct or not.
• Testing also check that the program provides desired output.
Deployment
• Deployment step consists of delivering the product to the customer and take feedback from them.
• If the customer wants some corrections or demands for the additional capabilities, then the change is required for
improvement in the quality of the software.
▪ Umbrella activities:
• The phases and related steps of the generic view of software engineering are complemented by a number of
umbrella activities.
• Umbrella activities are performed throughout the process.
• These activities are independent of any framework activity.
Typical activities in this category include:
1. Software project tracking and control
When project tracking and controlling done then software engineering tasks will enable to get the job done on
time.
2. Formal technical review (FTR)
This includes reviewing the techniques that has been used in the project.
3. Software quality assurance (SQA)
This is very important to ensure the quality measurement of each part of software being developed.
4. Software configuration management (SCM)
SCM is a set of activities designed to control changes made by identifying the work products that are likely to
change, establishing relationships among them.
5. Document preparation and production
All the project planning and other activities should be hardly copied and the production gets started here.
6. Reusability management
This includes the backing up of each part of the software project they can be corrected or any kind of support can
be given to them later to update or upgrade the software at user/time demand.
7. Measurement (estimation)
This will include all the measurement or estimation of every aspects of the software project like: time estimation,
cost estimation etc.
9
Software Development Process Software Engineering
8. Risk management
• As we know that 'tomorrow's problem is today's risk'. Risk management is very important activity for any type
of software development.
• It identifies potential problems and deal with them when they are easier to handle before they become critical.
• Risk management allows early identification of risks and provide management decisions to the solutions, and
improve quality of the product.
❖ SOFTWARE DEVELOPMENT MODELS / LIFE CYCLE MODELS
• Every system has a life cycle. It begins when a problem is recognized, after then system is developed, grows
until maturity and then maintenance needed due to change in the nature of the system. So it died and new system
or replacement of it taken place. (This can be shown in below figure)
• Software process models describe the sequence of activities needed to develop a software product.
Birth / Death
Maintenance Developed
Maturity
• The goal of the software development process is to produce high quality software product.
• As per IEEE Standards, software life cycle is: ''the period of time that starts when software product is
conceived and ends when the product is no longer available for use.''
• A software life cycle model is also called a Software Development Life Cycle (SDLC). More suitable definition of
SDLC is given below:
Software Development Life Cycle (SDLC) is a process used by
the software industry to design, develop and test high quality
software, which meets exact customer's requirements and completion
within time and cost estimation.
• Software life cycle is the series of identifiable stages that a software product undergoes during its lifetime.
• Software life cycle model (process model) is a descriptive and diagrammatic representation of the software
life cycle.
• A life cycle model represents all the activities required to make a software product transit through its life cycle
phases.
• General stages of software development life cycle are feasibility study, requirement analysis and
specification, design, coding, testing and maintenance.
Need of life cycle models:
• Process models provide generic guidelines for developing a suitable process for a project.
• It provides improvement and guarantee of quality product.
• Without using of a particular life cycle model, the development of a software product would not be in a
systematic and disciplined manner.
• Provide monitoring the progress of the project-to-project managers.
10
Software Development Process Software Engineering
• A software life cycle model defines entry and exit criteria for every phase.
• These criteria used to chart the progress of the project.
• A phase can begin only when the corresponding entry criteria are satisfied.
• If entry and exit criteria for various phases are satisfied, it's easy to monitor the progress of the project.
• The documentation of life cycle models enhances the understanding between developers and client.
Different Software Development Life Cycle (SDLC) models OR Software Development Models:
Many life cycle models have been proposed so far. Each of them has some advantages as well as some
disadvantages. A few important and commonly used life cycle models are as follows:
(1) Classical waterfall model
(2) Iterative waterfall model
(3) Incremental Evolutionary model
(4) RAD model
(5) Prototype model
(6) Spiral model
(1) Classical Waterfall model:
• This model was originally proposed by Royce (1970). It is also called 'linear sequential life cycle model'.
• It is also called 'traditional waterfall model' or 'conventional waterfall model'.
• It's just a theoretical way of developing software All other life cycle models are essentially derived from it.
• This model breaks down the life cycle into set of phases like:
o Feasibility study
o Requirements analysis and specification
o Design
o Coding and unit testing
o Integration and system testing
o Maintenance
Feasibility Study
Requirements Analysis
& Specification
Design
Development Phase
Integration &
System Testing
Maintenance
Now let's discuss the characteristics and working of every phase one by one.
1. Feasibility Study:
• Aim of this phase is to determine whether the system would be financially and technically feasible to develop
the product.
• This is an abstract definition of the system.
• It includes the analysis of the problem definition and collection of relevant information of input, processing and
output data.
• Collected data are analysed for:
abstract definition Formulation of
different solutions Analysis of
alternative solutions
• Feasibility is evaluated from developer and customer's point of view.
• Cost/Benefit analysis is also performed at this stage.
• Three main issues are concerned with feasibility study:
Technical Feasibility contains hardware, software, network capability, reliability and availability.
Economical Feasibility contains cost/benefit analysis.
Operational Feasibility checks the usability. Concerned with technical performance and acceptance
within the organization.
2. Requirement Analysis and Specification:
• Aim of this phase is to understand the exact requirements of the customer and to document them properly.
• It also reduces communication gap between developers and customers.
• Two different activities are performed during this phase:
1. Requirements gathering and analysis
2. Requirements specification
• Requirement gathering: The goal of this activity is to collect all relevant information from the customer
regarding the product to be developed.
• Requirements analysis: Analyse all gathered requirements to determine exact needs of the customers/clients
and hence improve the quality of the product.
• Requirements specification: During this activity, the user requirements are systematically organized into a
Software Requirements Specification (SRS) document.
• The important components of SRS are the functional requirements, the non-functional requirements and the
constraints of the system.
• Output of this phase is SRS document, which is also called Black box specification of the problem.
• This phase concentrates on ''what'' part, not ''how''.
12
Software Development Process Software Engineering
3. Design:
• The goal of the design phase is to transform the requirements specified in the SRS document into a structure
that is suitable for implementation in some programming language.
• This phase affecting the quality of the product.
• Two main approaches are concerned with this phase:
1. Traditional design approach
2. Object oriented design approach
Traditional design approach:
• This approach divided into two parts: structure analysis and structure design.
Structural Analysis:
• Where the detailed structure of the problem is examined.
• Identify the processes and data flow among these processes.
• DFD is used to perform the structure analysis and to produce result.
• In structure analysis functional requirement specified in SRS are decomposed and analysis of data flow is
represented diagrammatically by DFD.
Structure Design:
• During structured design, the results of structured analysis are transformed into the software design.
• Two main activities are associated with it :
Architectural design (High-level design) - decomposing the system into modules and build relationship
among them.
Detailed design (Low-level design) - identified individual modules are design with data structure and
Algorithms.
Object oriented design approach:
• In object-oriented approach, objects available in the system and relationships between them are identified.
• This approach provides lower development time and effort.
• Several tools and techniques are used in designing like:
Flow chart DFD Data Dictionary
Decision Table Decision Tree Structured English
Feasibility Study
Requirements Analysis
& Specification
Design
Integration &
System Testing
Maintenance
15
Software Development Process Software Engineering
B B
Core module Refined further and Each version is
of the system add new functionality developed using iterative
waterfall model concepts
16
Software Development Process Software Engineering
17
Software Development Process Software Engineering
• The information flow among business functions is carried out in this phase. Business functions are modelled.
2. Data modeling
• The characteristics of objects (attributes) and their relationships are defined.
3. Process modeling
• The data objects defined in data modeling are transformed to implement business functions.
4. Application generation
• Automated tools are used to convert process models into code and the actual system. Tools like VB, VC++
and JAVA etc. are used.
• RAD works to reuse existing components or create new ones.
5. Testing and turn over
• As RAD uses the components that already been tested so the time for developing and testing is reduced.
Advantages:
Application can be developed in a quick time.
This model highly makes use of reusable components.
Reduce time for developing and testing.
Due to full customer involvement, customer satisfaction is improved.
Disadvantages:
Requirements must be cleared and well understood for this model.
It is not well suited where technical risk is high.
In it, highly skilled and expert developers are needed.
User involvement is necessary.
Applications:
The RAD model is mostly used when the system is modularized and all the requirements are well defined.
When a system needs to be produced in a short span of time (2-3 months).
RAD SDLC model should be chosen only if resources with high business knowledge are available.
When the technical risk is less.
18
Software Development Process Software Engineering
19
Software Development Process Software Engineering
Requirements
gathering
Quick
Design
Refine Build
Requirements Prototype
Implement
Test
Maintenance
Disadvantages:
The code for prototype model is usually thrown away. So, wasting of time is there.
The construction cost of developing the prototype is very high.
If end user is not satisfied with the initial prototype, he may lose interest in the final product.
This model requires extensive participation and involvement of the customers that is not possible every time.
Applications:
This model used when desired system needs to have a lot of interactions with end users.
This type of model generally used in GUI (Graphical User Interface) type of development.
20
Software Development Process Software Engineering
Identify &
Determine resolve risks
objectives
Develop next
Customer evaluation
level of product
(Review and Planning)
21
Software Development Process Software Engineering
22
Software Development Process Software Engineering
23