0% found this document useful (0 votes)
22 views

Chapter 1 ISE (1)

The document provides an overview of software, its types, and the software development process, including various models such as the waterfall and incremental models. It emphasizes the importance of software engineering in delivering high-quality software through structured methodologies and outlines the software development life cycle (SDLC) phases. Additionally, it discusses the characteristics of web applications and the need for disciplined approaches in managing complex systems.

Uploaded by

darji9031
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views

Chapter 1 ISE (1)

The document provides an overview of software, its types, and the software development process, including various models such as the waterfall and incremental models. It emphasizes the importance of software engineering in delivering high-quality software through structured methodologies and outlines the software development life cycle (SDLC) phases. Additionally, it discusses the characteristics of web applications and the need for disciplined approaches in managing complex systems.

Uploaded by

darji9031
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 71

Chapter 1

Software Process Model


What is Software?

 Anything that can be stored electronically is called


software.
 Software is a collection of computer programs,
procedures, rules, associated documents and
concerned data with the operation of data processing
system.
 Software is created through the process of software
development, which involves writing, testing, and
maintaining computer programs.
 Software can be developed using different
programming languages such as java, python ,c++
and others.
Software Application
Domain
 A software application domain refers to a specific area of
computer software in which a software program or set of program
is designed to operate.
 The application domain is a key factor in software development.

 System Software:
 System software is a type of computer software that acts as
an interface between the computer hardware and
application software.
 Ex: monitors,printers,storage devices etc..
 Application Software:
 Application software manages and controls the computer
system’s resources,application software is designed to serve
the specific needs and requirements of users. Tasks like
creating documents,browsing the web etc...
 Embedded software:
 Embedded software is a software that is embedded in
hardware or no-Pc devices.
 Ex: cars,telephones,modems,toys,etc…

 Web application:
 A web application is an application program that is stored on
a remote server and delivered over the internet.
 Ex: online banking systems,e-commerce websites,social
networking sites etc..

 Artificial Intelligence(AI) software:


 AI is the ability for a computer to think and learn. With
AI,computers can perform tasks that are typically done by
people, including processing language,learning.
Characteristics of Web
Application
 Availability  Data base access
 User friendly  Data warehouse
 Performance  Transaction oriented
 Responsive  Security
 Download  Usability
Software Engineering

 Software engineering is an engineering discipline that


delivers high quality software at agreed cost and in
planed schedule.
 The main aspects of software engineering are:
 Provide quality product
 Expected cost
 Complete work on schedule
Why is Software Engineering
Important??

 Complex systems need a disciplined


approach for designing, developing
and managing them.
Need of software engineering:

 To help developers to obtain high quality software.


 To develop the product in appropriate manner.
 To obtain skills to develop large programs.
 To provide a software in a timely manner.
 To provide quality software product.
 To develop ability to solve complex programming problems.
Software Engineering A
layered approach
 A quality focus layer:
 Software engineering mainly focuses on quality product.
 Every organization should maintain its total quality management(TQM).
 Process layer:
 Software process is a set of activities together if ordered and performed
properly , the desired result would be produced.
 Main objective of this layer is to develop software in time.
 This layer is the heart of software engineering.
 it holds all the technology layers together like glue.
 Method layer:
 It describes ‘how-to’ build software product.
 It creates software engineering environment to software product using
CASE(Computer Aided Software Engineering) tools.
 This layer includes requirements analysis, design, program construction,
testing and support.
 Tools layer:
 It provides support to below layers using automated or semi-automated
tools.
 Due to this layer, process is executed in proper manner.
Generic Process
Model
 The generic process model is an abstraction of the software
development process. It is used in most software since it provides a
base for them.
 A generic process model is a framework that outlines the activities
and tasks involved in developing software.
 It provides a structured approach to software development that can
be adapted to suit specific projects and organizations. It can be
customized as per needs.;
 The generic process model encompasses the following five steps:
 Communication
 Planning
 Modeling
 Construction
 Deployment
 Maintenance
1.Communication

 In this step, we communicate with the clients and end-


users.
 We discuss the requirements of the project with the
users.
 Communication is essential for ensuring that everyone
involved in the software development process and be
aware of the project’s goals, progress, and issues.
 The users give suggestions on the project. If any
changes are difficult to implement, we work on
alternative ideas.
2.Planning

 Planning involves determining the project’s scope,


defining the tasks that need to be completed, and
estimating time and resources required to complete
each tasks.
 Planning plays a key role in the software development
process.
 We discuss the risks involved in the project.
3.Modeling

 Modeling involves creating models of the software


system, which helps to clarify requirements, design
and architecture.
 Various modeling techniques such as UML, ERD and
data flow diagrams are used.
4.Construction

 In this phase where the actual coding and testing of


the software is done.
 Coding part implements the design details using an
appropriate programming language.
 Testing is to check whether the flow of coding is
correct or not.
 Various types of testing such as unit testing, integration
testing and acceptance test.
5.Deplyoment

 Deployment step consists of delivering the product to


the customer and take feedback from them.
 It includes installation , configuration and setup of the
software.
 If customer wants some corrections then the change
is required for improvement in the quality of the
software.
6. Maintenance:

 Maintenance is the ongoing process of fixing bugs,


making enhancements, and improving the
performance of the software system.
Umbrella activity

Umbrella activities are a set of steps that the software


engineering team follows to maintain the progress, quality,
changes and risks of the overall development tasks.
 Software Project Tracking and control
 Risk Management
 Software quality assurance(SQA)
 Technical review
 Measurement
 Software configuration management
 Reusability management
 Umbrella activities consist of different tasks:
• Software Project Tracking and Control:
• This activity allows the software team to check the progress of software
development.
• Formal Technical Reviews(FTR):
• This includes reviewing the techniques that has been used in project. It is an
effort to uncover and remove errors before they are propagates to the next
activity.
• Software Quality Assurance(SQA):
• This is very important to ensure the quality measurement of each part of
software being developed.
• Software configuration management(SCM):
• It manages the impact of changes throughout the software development
process.
• SCM is a set of activities designed to control changes made in software
development part.
• Documentation:
• All the project planning and other activities should be hard
copied and the production gets started here.
• Re-usability 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.
• Measurement:
• This will include all the measurement or estimation of every
aspect of the software project . Like time estimation , cost
estimation etc…
• Risk management:
• In simple term , tomorrow’s problem is today’s risk.
• It identifies problems and deal with them when they are
easier to handle before they become critical.
Software Development
Life Cycle
(SDLC)
 Software development life cycle (SDLC) is a structured process that is
used to design, develop, and test good-quality software, which meets
exact customer’s requirements and completion within time and cost
estimation.
 SDLC, or software development life cycle, is a methodology that
defines the entire procedure of software development step-by-step.
 As IEEE standards, software life cycle is “the period of time that starts
when software product is arises and ends when the product is no
longer available for use. ”
 The goal of the SDLC life cycle model is to deliver high-quality,
maintainable software that meets the user’s requirements.
 Needs of life cycle models:
 It provides improvement and guarantee of quality product.
 Provide monitoring the progress of the project to project managers.
 It provides a systematic and disciplined manner.
 A software life cycle models defines entry and exit criteria for every phase.
 The documentation of life cycle models enhances the understanding
between developer and client.
Types of software development
life cycle(SDLC)

 Classical waterfall model


 Iterative waterfall model
 Prototyping model
 Evolutionary model
 Spiral model
 RAD(Rapid Application Development) model
 Agil model
1. CLASSICAL WATERFALL MODEL
 This model was originally proposed be Royce in 1970.
 The Waterfall Model is a linear sequential flow.
 In which progress is seen as flowing steadily downwards (like a
waterfall) through the phases of software implementation.
 This means that any phase in the development process begins only
if the previous phase is complete.
 The waterfall approach does not define the process to go back to
the previous phase to handle changes in requirement.
 The waterfall approach is the earliest approach and most widely
known that was used for software development.
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 system.
 It includes the analysis of the problem definition and
collection of relevant information of input , processing and
output data.
 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(hardware, software, network capability)
 Economical feasibility(cost analysis)
 Operational feasibility(usability, technical performance)
2: Requirement Gathering and
Analysis
 Aim of this phase is to understand the exact requirements of the
customer and to document them properly.
 Requirement gathering: The goal of this activity is to collect all
relevant information from the customer regarding the product
to be developed.
 Requirement analysis: Analyze all gathered requirements to
determine exact needs of customer and hence improve the
quality of the product.
 Requirement specification: user requirements are systematically
organized into a software requirements specification(SRS).
 This phase concentrates on “what” part, not “how”.
3: Design
 Once the requirements are understood, the design phase begins.
This involves creating a detailed design document that outlines
the software architecture, user interface, and system components.
 This phase affecting the quality of the product.
 Object oriented design approach:
 In object oriented approach, objects available in the system and
relationships between them are identified.
 Several tools for designing like: flow chart, DFD, Decision tree
 Traditional design approach:
 Structural analysis: where the detailed structure of the problem is
examined.
 DFD is used to perform the structure analysis and to produce result.
 Structure design: during structured design the results of structured
analysis are transformed into the software design.
4: Coding and unit testing

 It also called implementation phase.


 The aim of this phase is to translate the software design into source
code and unit testing is done module wise.
 The implementation phase involves coding the software based
on the design specifications. This phase also includes unit testing
to ensure that each component of the software is working as
expected.
 The system is being in working conditions at this phase.
 This phase affects testing and maintenance.
 Output of this phase is set of program modules that have been
individually tested.
5:Intergration and system testing
 The modules are integrated in a planned manner.
 In the testing phase, the software is tested as a whole to ensure that
it meets the requirements and is free from defects.
 Finally when all the modules have been successfully integrated and
tested, system testing is carried out.
 Goal of this phase is to ensure that the developed system works well
to its requirements described in SRS document.
 Basic function of testing is to detect errors. So it is also called “quality
control measure”.
 It consists of three different kinds of testing activities.
 Alpha testing – performed by development team
 Bita testing – performed by friendly set of customers
 Acceptance testing –performed by the customer himself
6: Maintenance
 It requires maximum efforts among all phases to develop software
product.
 Generally maintenance is needed due to change in the
environment or the requirement of the system.
 Maintenance involves performing following four kinds of activities:
 Corrective maintenance: correcting errors that were not discovered
during the product development phase.
 Perfective maintenance: it deals with implementing new or changed
user requirements and improving system performance.
 Adaptive maintenance: it deals with the software is work in a new
environment .
 Preventive maintenance: it is scheduled routine maintenance to keep
equipment running as well as prevent downtime and expensive repair
cost.
Advantages of waterfall model

 Simple and easy to understand


 Clearly defined stages.
 Well understood milestones.
 Results are well documented.
 Used for smaller projects where requirements are very well
understood.
 Each phase has well defined input and outputs.
Disadvantage of waterfall model

 High amount of risk .


 It is theoretical model , difficult to implement.
 Poor model for long and on-going projects.
 Not good for complex and large projects. Because
requirements are changed frequently.
 Error may be generated at any phase. So it’s not possible to go
back and solve errors.
Application of waterfall
model
 When requirements are well known , clear and fixed.
 When environment is stable.
 When product definition is stable.
 When the project is small
2.ITERATIVE WATERFALL MODEL

 Classical waterfall model assumes that no defect is introduced


during any development activities.
 But in practice: defects do get introduced in almost every phase
of the life cycle.
 The Iterative Waterfall Model is a software development
approach that combines the sequential steps of the traditional
Waterfall Model with the flexibility of iterative design.
 It allows for improvements and changes to be made at each
stage of the development process, instead of waiting until the
end of the project.
 The iterative waterfall model provides feedback paths from every
phase to its preceding phases, which is the main difference from
the classical waterfall model.
3.INCREMENTAL PROCESS MODEL

 It is also referred as the successive version of waterfall model. So


it 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 released.
 The initial product is refined into increasing levels of capability: by
adding new functionalities in successive versions.
 Here, A, B, and C are modules of Software Products that are
incrementally developed and delivered.
Advantages of Incremental
model
 Prepares the software fast.
 Clients have a clear idea of the project.
 Changes are easy to implement.
 Provides risk handling support, because of its iterations.
 Adjusting the criteria and scope is flexible and less costly.
 Comparing this model to others, it is less expensive.
 The identification of errors is simple.
 This model helps finding exact requirements of users.
 Feedback providing at each increment is useful for
determining the better final product.
Disadvantages of
Incremental model
 Sometimes it is difficult to subdivide problems into
functional units.
 It requires more planning and design efforts.
 Model can be used for very large problems.
 Resulting product cost may exceed.
Application of Incremental
model
 When the problem is very large and user requirements
are not well specified at initial stage.
 When Requirements are known up-front.
 When Projects have lengthy development schedules.
4.PROTOTYPE MODEL
 Prototype is a working physical system.
 Prototype is nothing but “toy implementation of a system”.
 In this model, before starting actual development , a working
prototype of the system should be built first.
 Compared to the actual software, a prototype is usually have
 Limited functional capabilities
 Low reliability
 Inefficient performance
 Prototype usually built using several shortcuts, and this shortcuts
might be inefficient, inaccurate or dummy functions.
 Prototype model is very useful in developing GUI part of system.
 there are two types of prototype model:
 Exploratory development prototype model: In which the
development work is done with the users to explore their
requirements and deliver a final system.
 Throw away prototype model: in which a small part of the
system is developed and given to the customer to try out and
evaluate. Then feedback is collected from customer and
according main system is modified. The prototype is then
discarded.

 Step 1: Requirement Gathering and Analysis: This is the initial


step in designing a prototype model. In this phase, users are
asked about what they expect or what they want from the
system.
 Step 2: Quick Design: This is the second step in Prototyping
Model. This model covers the basic design of the requirement
through which a quick overview can be easily described.
 Step 3: Build a Prototype: This step helps in building an actual
prototype from the knowledge gained from prototype design.
 Step 4: Initial User Evaluation: This step describes the
preliminary testing where the investigation of the performance
model occurs, as the customer will tell the strength and
weaknesses of the design, which was sent to the developer.
 Step 5: Refining Prototype: If any feedback is given by the user,
then improving the client’s response to feedback and
suggestions, the final system is approved.
 Step 6: Implement Product and Maintain: This is the final step in
the phase of the Prototyping Model where the final system is
tested and distributed to production, here the program is run
regularly to prevent failures.
Advantages of prototype model

 A partial product is built at initial stage, so customers can get a


chance to have a look of the product.
 New requirements can be added easily.
 Missing functionalities identified easily.
 It provides better flexibility in design and development.
 Quick user feedback is available for better solution.
Disadvantages of prototype
model
 The code of prototype model is usually thrown away.
 Wasting of time is there.
 The construction cost of developing the prototype is very high.
 If end user not satisfied with the initial prototype, he may lose
interest in the final product.
Applications of prototype model:

 This model used when desired system needs to have a lot


of interactions with end users.
 This type of model generally used in GUI type of
development.
5.SPIRAL MODEL
 Spiral model is proposed by Boehm in 1986.
 The Spiral Model is a Software Development Life Cycle
(SDLC) model that provides a systematic and iterative approach
to software development.
 In its diagrammatic representation, looks like a spiral with many
loops.
 The exact number of loops of the spiral is unknown and can vary
from project to project.
 Each loop of the spiral is called a Phase of the software
development process.
 The innermost loop might be concerned with system feasibility.
 The next loop with system requirements to definition.
 The next one with system design, and so on
 Number of phases is not fixed in this model.
 The Spiral Model is a risk-driven model, meaning that the focus is on
managing risk through multiple iterations of the software development
process. It consists of the following phases:
 1. Determine objective(Planning):
The first phase of the Spiral Model is the planning phase, where the
scope of the project is determined and a plan is created for the next
iteration of the spiral.
 2. Risk Analysis:
In the risk analysis phase, the risks associated with the project are
identified and evaluated.
Alternative solutions are evaluated and risks are reduces at this level.
 3. Develop next level product:
in this phase activities like design, code development, code
inspection, testing and packaging are performed.
 4. Customer Evaluation:
In the evaluation phase, the software is evaluated to determine if it
meets the customer’s requirements.
 With each iteration around the spiral : progressively more complete
version of the software gets built.
 At the end all risks are resolved and software is ready to use.
Advantages of spiral model

 It is more flexible ,as we can easily deal with changes.


 Due to user involvement user satisfaction is improved.
 Risks are analyzed and resolved so final product will be more
reliable.
 New idea and additional functionality can be easily added at
later stage.
 It provides cohesion(how modules are related to each other)
between different stages.
Disadvantages of spiral model
 It is applicable for large problem only.
 It is costly to use.
 It is more complex to understand.
 More number of documents are needed as more number of
spirals.
 Risk analysis requires much higher expertise.

Applications of spiral model:


 Used when medium to high risk projects.
 When users are unsure for their needs.
 When requirements are complex.
Spiral model as Meta model

 Spiral model subsumes almost all the life cycle models.


 Single loop of spiral represents waterfall model.
 Spiral model uses a prototyping approach by first building the
prototype before developing actual product.
 The iteration along the spiral model can be considered as
supporting the evolutionary model(combination of iterative and
incremental model).
 The spiral model retains the step-wise approach of the waterfall
model.
6.AGILE DEVELOPMENT MODEL
 Agile methodology is a “step-by-step” dynamic focused on short-
term visibility but never losing the long-term product goal.
 A simple meaning of agile is -> ready to move in quick and easy
way.
 This methodology adopt constant changes via iterative approach to
software design and development.
 Each iteration is considered as a short time “frame” in the agile
process model.
 The agile methodology is the way to divide the project into small
phases and make it easily manageable.
 The division of the entire project into smaller parts helps to minimize
the project risk and to reduce the overall project delivery time
requirements.
 Each iteration involves a team working through a full software
development life cycle including planning, requirement analysis,
design, coding, and testing before a working product is
demonstrated to the client.
 Most popular and common agile methodology examples are:
 Scrum
 Kanban
 XP(eXtreme Programming)
 Dynamic System Development Method
 Feature Driven Development
 Adaptive Software Development
 Adaptive Project Framework
 Lean Software Development

Agile methods can help teams to manage work more efficiently


and do the work more effectively while delivering the highest quality
product within the constraints of the budget.
Agile Principles
 Satisfy customer : through early and continuous delivery of product.
 Adopt changes : welcomes new requirements.
 Frequent delivery : deliver working software frequently.
 Work together : client and developers must work together.
 Work in motivated environment : build projects around motivated
environment.
 Face to face conversion : conveying information to and within a
development team.
 Working software: it is primary measure of progress.
 Promote sustainable development: improves productivity.
 Continuous attention : to technical excellence and good design.
 Simplicity is essential: it is art of maximizing the amount of work not
done is essential.
 Self organization of team: best software emerges from self –organizing
teams.
 Team approach: team approach avoids delays and wait times.
Why we use agile methodology??
What is advantages of agile model over
traditional model?
eXtreme Programming (XP) Model
 This is a typical agile development framework, developed by
Kent Beck.
 This type of methodology is used when customers are constantly
changing demands.
 When customers are not sure about the system’s performance.
 XP model is efficient ,low-risk , flexible, predictable, and fun way
to develop a software.
 It advocates “ frequent releases” of the product in short
development cycles.
 The XP develops software keeping customer in the target.
 It will provide customer satisfaction with quality product.
 Teamwork is extremely important in XP. When there is a problem,
it is solved by the whole team of managers, developers, bringing
them together.
 Planning:
 The first stage , customer meets to the developer team and give
his requirements and desired results. Then the team broken down
the project into smaller iterative tasks and creates a plan.
 Designing::
 Then after designing is conducted to bring logic and structure to
the system and allows to avoid unnecessary complexities and
redundancies.
 Coding:
 In this phase the actual code is built.
 Code factoring (changes can be done without affecting the
actual functionalities ) is used to continuously improve the code.
 Refactoring is about removing redundancy, eliminating
unnecessary functions, increasing code coherency.
 Testing :
 It is the core of extreme programming, In this phase unit testing
and acceptance testing is done.
XP is achieved with:

 Continuous feedback from the customer


 Short iterations
 Design and redesign
 Coding and testing frequently
 Eliminating defects early, thus reducing costs
 Keeping the customer involved throughout the development
 Delivering working product to the customer
 Advantages of XP model:
 Less number of document needed.
 Results can be derived soon.
 Continuous testing and refactoring helps create stable well-programming
system
 Disadvantages of XP model:
 Customer involvement is necessary.
 It requires more self.
 Pair programming takes more time.
 Applications of XP model:
 Mainly used for smaller projects.
 High cost to build projects using this method.
 Used to build projects involving new technology or research projects.
SCRUM MODEL

 It is primarily focus on to manage tasks team-based


development conditions.
 This model based on an iterative and incremental
processes.
 Scrum is characterized by cycles of development ,
know as “sprints”.
 Every day starts with a small 15-minute meeting, called
‘daily scrum’, which takes role of synchronizing
activities and finding the best way to plan out the
working day.
 There are three roles in this,
 Scrum Master: The scrum can set up the master team,arrange the
meeting and remove obstacles for the process.
 Product owner: The product owner makes the product backlog ,
prioritizes the delay and is responsible for the distribution of functionality
on each repetition.
 Scrum Team: The team manages its work and organizes the work to
complete the sprint or cycle.
Advantages of scrum model

 It is adaptable and flexible.


 Focus on quality is a constant with the scrum model.
 Team motivation is good because programmers want
to meet the deadline for every sprint.
 Improved motivation in core team.
 More chance of customer satisfaction.
Disadvantages of scrum
model
 This methodology must require a team environment.
 Development team should be well experience.
 Daily meeting sometimes frustrate team members.
 If any member leaves in the middle of a project,it can
have a huge negative impact on the project.
 This model is not appropriate for large and complex
projects.
Applications of scrum model

 Used in complex projects.


 Used when system have rapidly new changes are
needed to be implementation required.
 Used in wide range of projects and industries like
healthcare, education , marketing, research etc..

You might also like