Software Engineering
What is software design
Software design is the process of defining software methods, functions, objects, and the
overall structure and interaction of your code so that the resulting functionality will satisfy
your users requirements.
What is Software Development Life Cycle?
SDLC, or software development life cycle is a methodology that defines the entire
procedure of software development step-by-step
It’s guide the development process of software applications from initiation to deployment
step by step. The goal of the SDLC life cycle model is to deliver high-quality, maintainable
software that meets the user’s requirements
What Are Software Models
These are model that monitor and analysis the entire software design including interfaces,
interactions with other software that grantee the successful development
Types of Software Models
Waterfall
Iterative Model
V Model
Spiral Model
Prototype Model
Incremental Model
RAD Model
Agile Model
Waterfall Model
The Waterfall models follows a linear and sequential approach to software development.
Each phase in the development process must be completed before moving on to the next
one, resembling the downward flow of a waterfall. which means that a development
phase cannot begin until the previous phase is completed. We cannot overlap phases in
waterfall model.
Phase in Waterfall Model
Feasibility study
Requirement Analysis and Specification
Design
Coding and Unit Testing
Integration and system testing
Maintenance
Requirement analysis: In this phase, Client’s requirements are collected and
documented. Requirements of both the system and software are documented and
reviewed with the customer.
Software design: Planning and defining the system architecture with consideration of
requirement specification document. This phase includes translation of requirements
into a representation of a software that can be assessed for quality before coding
begins.
Implementation: The design must be translated into machine readable form in this
phase. It includes the actual coding part and developing the software based on
specifications.
Testing: Verification of the developed software is done in this phase to ensure it meets
the specified requirements and functions correctly.
Deployment: After the verification and testing, this developed software is deployed to
the customer. Also it provides ongoing support, updates, and addressing issues post-
deployment to ensure the software functions smoothly.
Maintenance: The final phase of the Waterfall models is maintenance, which involves
fixing any issues that arise after the software has been deployed and ensuring that it
continues to meet the requirements over time.
Advantages of Waterfall Model
This model is simple and easy to understand.
This is very useful for small projects.
This model is easy to manage.
The end goal is determined early.
Each phase of this model is well explained.
It provides a structured way to do things
the Waterfall models allows for better predictability in terms of timelines and
deliverables
Disadvantages of Waterfall Model
Testing is performed after the implementation phase, which means that defects
might not be discovered until late in the process.
This is not a good model for large and complex projects.
Iterative Model
In software development, choosing the right SDLC models is crucial for success. Among the
various approaches, the Iterative SDLC models stands out as a flexible and efficient models
that promotes continuous improvement and adaptability
Principle of iterative.
Flexibility and Adaptability : One of the model’s strengths is its adaptability to
changing requirements. Developers can easily incorporate new features or
modifications during any iteration without disrupting the entire development
process.
Design: In this phase the design of software is prepared. For this, various diagrams
like Data Flow diagram, class diagram, activity diagram, state transition diagram,
etc. are used
Continuous Evaluation: Regular assessment and evaluation occur after each
iteration, enabling developers to identify and rectify issues early in the
development cycle. This continuous feedback loop ensures that the final product
aligns with user expectations.
Automated Testing: Implement automated testing to streamline the testing
process in each iteration. This ensures that the software remains stable and
functional as new features are added
Prototype Model
Prototype model is an activity in which prototypes of software applications are
created. First a prototype is created and then the final product is manufactured
based on that prototype.
Principle or Phase of Prototype
Requirement gathering
Build the initial prototype
Revise and improve the prototype
Requirement gathering: The first step of prototype model is to collect the
requirements, although the customer does not know much about the requirements
but the major requirements are defined in detail.
Build the initial prototype: In this phase the initial prototype is built. In this some basic
requirements are displayed and user interface is made available.
Review the prototype: When the construction of the prototype is completed, it is
presented to the end users or customer and feedback is taken from them about this
prototype. This feedback is used to further improve the system and possible changes
are made to the prototype.
Revise and improve the prototype: When feedback is taken from end users and
customers, the prototype is improved on the basis of feedback. If the customer is not
satisfied with the prototype, a new prototype is created and this process continues
until the customer gets the prototype as per his desire.
Advantages of Prototype Model
Prototype Model is suggested to create applications whose prototype is very easy
and which always includes human machine interaction within it.
When we know only the general objective of creating software, but we do not
know anything in detail about input, processing and output. Then in such a
situation we make it a Prototype Model.
When a software developer is not very sure about the capability of an algorithm or
its adaptability to an operating system, then in this situation, using a prototype
model can be a better option.
Disadvantages of Prototype model
When the first version of the prototype model is ready, the customer himself often
wants small fixes and changes in it rather than rebuilding the system. Whereas if
the system is redesigned then more quality will be maintained in it.
Many compromises can be seen in the first version of the Prototype Model.
Sometimes a software developer may make compromises in his implementation,
just to get the prototype model up and running quickly, and after some time he
may become comfortable with making such compromises and may forget that it is
completely inappropriate to do so.
Spiral Model
This model has characteristics of both iterative and waterfall models It is based on the
concept of a spiral, with each loop representing a phase in the software development
process
The number of loops in the spiral is not decided in advance but it depends on the size of
the project and the changing requirements of the user
Principle or Phase of Spiral Model
Iterative Development
Risk Management
Flexibility
Continuous Evaluation
Iterative Development: The Spiral models embraces iterative development, allowing
for the incremental release of the product. Each iteration, or spiral, includes planning,
risk analysis, engineering, testing, and evaluation phases.
Risk Management: Risk analysis is a fundamental component of the Spiral Models.
Each iteration begins with a risk assessment, and the project progresses based on
addressing high-priority risks. This approach allows for proactive risk management and
mitigation.
Flexibility: The models is highly adaptable to changes in requirements. As each
iteration involves planning and assessment, modifications and adjustments can be
made to accommodate evolving project needs.
Continuous Evaluation: Evaluation is integrated into every phase of the Spiral Models.
After each iteration, the project is reviewed to assess progress, identify potential risks,
and determine the next steps.
Advantages of the Spiral SDLC Models:
Risk Mitigation: The focus on risk analysis and management allows for early
identification and mitigation of potential issues, reducing the likelihood of project
failure.
Flexibility in Requirements : Changes to requirements can be accommodated at any
stage of the development process. The iterative nature of the Spiral models facilitates
flexibility and adaptation.
High-Quality Products : Continuous evaluation and testing contribute to the
production of high-quality software. Defects are identified and addressed early in the
development life cycle.
Client Involvement: Clients and stakeholders are involved throughout the
development process. Their input is sought during the planning and evaluation phases,
ensuring the final product aligns with their expectations.
Best Practices for Spiral SDLC Models:
Thorough Risk Assessment: Conduct a comprehensive risk assessment at the
beginning of each iteration. Prioritize and address high-risk elements to minimize
potential challenges.
Regular Review Meetings: Hold regular review meetings after each iteration to assess
progress, evaluate the product, and plan the next steps. This continuous feedback loop
is crucial for success.
Collaborative Team Communication : Foster open communication among team
members. Collaboration is key to successfully navigating the iterative and dynamic
nature of the Spiral Models.
Documentation: Maintain detailed documentation throughout the development
process. This includes documentation of risks, decisions, and changes made at each
iteration.
Incremental Models
The Incremental models is an iterative software development process where the product
is designed, implemented, and tested incrementally (a little more is added each time) until
the product is finished. Each iteration represents a small part of the overall system and
includes both new features and enhancements to existing ones in simple language, under
this model a complex project is developed in many modules or builds.
Principle of Incremental Model
Incremental Development
Partial System Functionality
Integration of Increments
Parallel Development
Incremental Development : The development process is divided into increments, with
each increment delivering a portion of the complete functionality. This allows for the
gradual building of the system.
Partial System Functionality : Each increment provides partial system functionality,
allowing stakeholders to see tangible progress early in the development process. This
helps in gathering feedback and making adjustments.
Integration of Increments: Increments are integrated with the existing system or
increments from previous iterations. This integration ensures that the complete
system evolves gradually with each increment.
Parallel Development: Different teams or development groups can work on different
increments simultaneously. This parallel development approach contributes to faster
development cycles.
Advantages of the Incremental SDLC Models
Early and Tangible Results: Stakeholders get to see tangible results early in the
development process as each increment delivers a part of the functionality. This
helps in managing expectations and gathering early feedback.
Flexibility and Adaptability: The models allow for changes to be incorporated easily
at each increment. This flexibility is particularly beneficial when dealing with
evolving requirements or feedback from users.
Risk Management: Risk is mitigated as the development process is divided into
smaller, manageable increments. This allows for early detection and resolution of
issues, minimizing the impact on the overall project.
Faster Time-to-Market: The incremental and parallel development approach often
results in a faster time-to-market compared to traditional sequential models. This
is especially valuable in dynamic and competitive environments.
The customer can respond to each module and provide feedback if any changes are
needed.
Project progress can be measured.
It is easier to test and debug during a short iteration.
Errors are easy to identify
Disadvantages of Incremental Model
Management is a continuous activity that must be handled.
Before the project can be dismantled and built incrementally,
The complete requirements of the software should be clear.
This requires good planning and designing.
The total cost of this model is higher.
Best Practices for Incremental SDLC Models:
Clear Requirements Definition : Ensure that the requirements for each increment are well-
defined. Clear requirements facilitate smooth development and integration processes.
Thorough Testing at Each Increment : Rigorous testing should be conducted at each
increment to ensure that the integrated system functions correctly. This includes testing
the new features and ensuring compatibility with existing ones.
Effective Communication: Maintain open and effective communication among teams
working on different increments. Regular updates and coordination are essential for
successful parallel development.
Iterative Feedback: Encourage iterative feedback from stakeholders after each increment.
This feedback loop helps in refining the system and addressing any issues early in the
development process