Lec 2
Lec 2
Mukund Thakare
Software Processes/Methodologies
● Software processes in software engineering refer to the methods and techniques
used to develop and maintain software. Some examples of software processes
include
● Waterfall: a linear, sequential approach to software development, with distinct
phases such as requirements gathering, design, implementation, testing, and
maintenance.
● Agile: a flexible, iterative approach to software development, with an emphasis on
rapid prototyping and continuous delivery.
● Scrum: a popular Agile methodology that emphasizes teamwork, iterative
development, and a flexible, adaptive approach to planning and management.
● DevOps: a set of practices that aims to improve collaboration and communication
between development and operations teams, with an emphasis on automating the
software delivery process.
● Each process has its own set of advantages and disadvantages, and the choice of which one to use
depends on the specific project and organization.
● Software is the set of instructions in the form of programs to govern the computer system and to process
the hardware components. To produce a software product the set of activities is used. This set is called a
software process.
● Software Development : In this process, designing, programming, documenting, testing, and bug fixing is
done.
Software Development Life Cycle (SDLC)
● Proper planning and execution are the key components of a successful
software development process. The entire software development process
includes 6 stages.
● Software Development Life Cycle (SDLC) is the common term to summarize
these 6 stages.
Stage-1: Planning And Requirement Analysis
● Planning is the crucial step in everything and so as in software development.
● In this same stage, requirement analysis is also performed by the developers
of the organization.
● This is obtained from the inputs from the customers, sales department/market
surveys.
● The information from this analysis forms the building block of a basic project.
The quality proof of the project is a result of planning.
● Thus, in this stage, the basic project is designed with all the available
information.
Stage-2: Defining Requirements
● In this stage, all the requirements for the target software are specified.
● These requirements get approval from the customers, market analysts, and
stakeholders.
● This is fulfilled by utilizing SRS (Software Requirement Specification).
● This is a sort of document that specifies all those things that need to be
defined and created during the entire project cycle.
Stage-3: Designing Architecture
● SRS is a reference for software designers to come out with the best
architecture for the software.
● Hence, with the requirements defined in SRS, multiple designs for the product
architecture are present in the Design Document Specification (DDS).
● This DDS is assessed by market analysts and stakeholders.
● After evaluating all the possible factors, the most practical and logical design
is chosen for the development.
Stage-4: Developing Product
● At this stage, the fundamental development of the product starts.
● For this, developers use a specific programming code as per the design in the
DDS.
● Hence, it is important for the coders to follow the protocols set by the
association.
● Conventional programming tools like compilers, interpreters, debuggers, etc.
are also put into use at this stage.
● Some popular languages like C/C++, Python, Java, etc. are put into use as
per the software regulations.
Stage-5: Product Testing and Integration
● After the development of the product, testing of the software is necessary to
ensure its smooth execution.
● Although, minimal testing is conducted at every stage of SDLC.
● Therefore, at this stage, all the probable flaws are tracked, fixed, and
retested.
● This ensures that the product confronts the quality requirements of SRS.
Stage 6: Deployment and Maintenance Of Product
● After detailed testing, the conclusive product is released in phases as per the
organization’s strategy.
● Then it is tested in a real industrial environment. Because it is important to
ensure its smooth performance.
● If it performs well, the organization sends out the product as a whole. After
retrieving beneficial feedback, the company releases it as it is or with auxiliary
improvements to make it further helpful for the customers.
● However, this alone is not enough. Therefore, along with the deployment, the
product’s supervision.
The Waterfall Model
● It is a sequential design process in which progress is seen as flowing steadily
downwards. Phases in waterfall model:
(iii) Implementation
(iv) Testing
Advantages
● It is simple and easy to understand and use.
● It is easy to manage.
● It works well for smaller and low budget projects where requirements are very well
understood.
● Clearly defined stages and well understood.
● It is easy to arrange tasks.
● Process and results are well documented.
Disadvantages
● Changes made to the requirements during the development phase can be
costly and time-consuming.
● It can be difficult to know how long each phase will take, making it difficult to
estimate the overall time and cost of the project.
● It does not have much room for iteration and feedback throughout the
development process.
When should we use waterfall model ?
● Requirements are clear and fixed that may not change.
● There are no ambiguous requirements (no confusion).
● It is good to use this model when the technology is well understood.
● The project is short and cast is low.
● Risk is zero or minimum.
Variation of waterfall model
● There are a number of different variations of the Waterfall/V-model, however
they typically follow the same sequence of steps from planning (initial high
level requirements definition) through development (of each component)
through to the eventual testing, integration, and release phase.
● In a practical software development project, the classical waterfall model is
hard to use.
● So, the Iterative waterfall model can be thought of as incorporating the
necessary changes to the classical waterfall model to make it usable in
practical software development projects.
● The iterative waterfall model provides feedback paths from every phase to its
preceding phases, which is the main difference from the classical waterfall
model.
Iterative Waterfall Model
Advantages of Iterative Waterfall Model
● Feedback Path : In the classical waterfall model, there are no feedback
paths, so there is no mechanism for error correction. But in the iterative
waterfall model feedback path from one phase to its preceding phase allows
correcting the errors that are committed and these changes are reflected in
the later phases.
● Simple : Iterative waterfall model is very simple to understand and use.
That’s why it is one of the most widely used software development models.
● Cost-Effective : It is highly cost-effective to change the plan or requirements
in the model. Moreover, it is best suited for agile organizations.
● Well-organized : In this model, less time is consumed on documenting and
the team can spend more time on development and designing.
Drawbacks of Iterative Waterfall Model
● Difficult to incorporate change requests : The major drawback of the iterative waterfall
model is that all the requirements must be clearly stated before starting the development
phase. Customers may change requirements after some time but the iterative waterfall
model does not leave any scope to incorporate change requests that are made after the
development phase starts.
● Incremental delivery not supported : In the iterative waterfall model, the full software is
completely developed and tested before delivery to the customer. There is no scope for any
intermediate delivery. So, customers have to wait a long for getting the software.
● Overlapping of phases not supported : Iterative waterfall model assumes that one phase
can start after completion of the previous phase, But in real projects, phases may overlap to
reduce the effort and time needed to complete the project.
● Risk handling not supported : Projects may suffer from various types of risks. But, the
Iterative waterfall model has no mechanism for risk handling.
● Limited customer interactions :Customer interaction occurs at the start of the project at
the time of requirement gathering and at project completion at the time of software delivery.
These fewer interactions with the customers may lead to many problems as the finally
developed software may differ from the customers’ actual requirements.
Prototyping Approaches in Software Process
● There are two types of approaches that are followed in prototyping
approaches.
○ Evolutionary Prototyping
○ Throw-away Prototyping
● Prototyping is defined as the process of developing a working replication of a
product or system that has to be engineered. It offers a small scale prototype
of the end product and is used for obtaining customer feedback as described
in image.
● The Prototyping Model is one of the most popularly used Software
Development Life Cycle Models (SDLC models).
● This model is used when the customers do not know the exact project
requirements beforehand.
● In this model, a prototype of the end product is first developed, tested and
refined as per customer feedback repeatedly till a final acceptable prototype is
achieved which forms the basis for developing the final product.
● There are four types of models available :
Rapid Throwaway Prototyping
● This technique offers a useful method of exploring ideas and getting customer
feedback for each of them.
● In this method, a developed prototype need not necessarily be a part of the
ultimately accepted prototype.
● Customer feedback helps in preventing unnecessary design faults and hence,
the final prototype developed is of better quality.
Evolutionary Prototyping
● In this method, the prototype developed initially is incrementally refined on the
basis of customer feedback till it finally gets accepted.
● In comparison to Rapid Throwaway Prototyping, it offers a better approach
which saves time as well as effort.
● This is because developing a prototype from scratch for every iteration of the
process can sometimes be very frustrating for the developers.
Advantages
● The customers get to see the partial product early in the life cycle. This
ensures a greater level of customer satisfaction and comfort.
● New requirements can be easily accommodated as there is scope for
refinement.
● Missing functionalities can be easily figured out.
● Errors can be detected much earlier thereby saving a lot of effort and cost,
besides enhancing the quality of the software.
● The developed prototype can be reused by the developer for more
complicated projects in the future.
● Flexibility in design.
Disadvantages
● Costly w.r.t time as well as money.
● There may be too much variation in requirements each time the prototype is evaluated by the
customer.
● Poor Documentation due to continuously changing customer requirements.
● It is very difficult for developers to accommodate all the changes demanded by the customer.
● There is uncertainty in determining the number of iterations that would be required before the
prototype is finally accepted by the customer.
● After seeing an early prototype, the customers sometimes demand the actual product to be delivered
soon.
● Developers in a hurry to build prototypes may end up with sub-optimal solutions.
● The customer might lose interest in the product if he/she is not satisfied with the initial prototype.
Thank you !!