Software Engineering Unit 1 (KCS 601)
Software Engineering Unit 1 (KCS 601)
(KCS-601)
UNIT - 1
B. Tech CSE 6th SEM
By: Prateek Agarwal
Software
The need of software engineering arises because of higher rate of change in user
requirements and environment on which the software is working.
Large software - It is easier to build a wall than to a house or building, likewise, as the size of
software become large engineering has to step to give it a scientific process.
Scalability- If the software process were not based on scientific and engineering
concepts, it would be easier to re-create new software than to scale an existing one.
Cost- As hardware industry has shown its skills and huge manufacturing has lower down the
price of computer and electronic hardware. But the cost of software remains high if proper
process is not adapted.
Dynamic Nature- The always growing and adapting nature of software hugely depends
upon the environment in which the user works. If the nature of software is always changing,
new enhancements need to be done in the existing one. This is where software
engineering plays a good role.
Quality Management- Better process of software development provides better and quality
software product
Advantages of Software Engineering
There are several advantages to using a systematic and disciplined approach to software
development, such as:
Improved Quality: By following established software engineering principles and techniques, the
software can be developed with fewer bugs and higher reliability.
Increased Productivity: Using modern tools and methodologies can streamline the development
process, allowing developers to be more productive and complete projects faster.
Better Maintainability: Software that is designed and developed using sound software
engineering practices is easier to maintain and update over time.
Reduced Costs: By identifying and addressing potential problems early in the development
process, software engineering can help to reduce the cost of fixing bugs and adding new
features later on.
Increased Customer Satisfaction: By involving customers in the development process and
developing software that meets their needs, software engineering can help to increase customer
satisfaction.
Better Team Collaboration: By using Agile methodologies and continuous integration, software
engineering allows for better collaboration among development teams.
Better Scalability: By designing software with scalability in mind, software engineering can help to
ensure that software can handle an increasing number of users and transactions.
Better Security: By following the Software Development Life Cycle (SDLC) and performing security
testing, software engineering can help to prevent security breaches and protect sensitive data.
CHARACTERESTICS OF GOOD SOFTWARE
A software product can be judged by what it offers and how well it can be
used. This software must satisfy on the following grounds:
Operational
Transitional
Maintenance
Operational
This tells us how well software works in operations. It can be measured on:
Budget
Usability
Efficiency
Correctness
Functionality
Dependability
Security
Safety
Transitional
This aspect is important when the software is moved from one platform to
another:
Portability
Interoperability
Reusability
Adaptability
Maintenance
This aspect briefs about how well a software has the capabilities to maintain
itself in the ever-changing environment:
Modularity
Maintainability
Flexibility
Scalability
Software Crisis is a term used in computer science for the difficulty of writing
useful and efficient computer programs in the required time. The software crisis
was due to using the same workforce, same methods, and same tools even
though rapidly increasing software demand, the complexity of software,
and software challenges. With the increase in software complexity, many
software problems arise because existing methods were insufficient.
Causes of Software Crisis
There is no single solution to the crisis. One possible solution to a software crisis
is Software Engineering because software engineering is a systematic,
disciplined, and quantifiable approach. For preventing software crises, there
are some guidelines:
Reduction in software over budget.
The quality of the software must be high.
Less time is needed for a software project.
Experienced and skilled people working on the software project.
Software must be delivered.
Software must meet user requirements.
Software Engineering Process and
Conventional Engineering Process
Conventional Engineering Process
Conventional Engineering Process is an engineering process that is highly
based on empirical knowledge and is about building cars, machines, and
hardware. It is a process that mainly involves science, mathematics, etc.
Software Engineering Process
Software Engineering Process is an engineering process that is mainly
related to computers and programming and developing different kinds of
applications through the use of information technology.
Similarities Between Software Engineering
Process and Conventional Engineering
Process
Both Software Engineering and Conventional Engineering Processes
become automated after some time.
Both these processes are making our day-to-day place better.
Both these processes have a fixed working time.
Both processes must consist of deeper knowledge.
Aspect Software Engineering Process Conventional Engineering Process
Engineers in both fields follow structured
Both involve a systematic approach to problem- methodologies to design, build, and maintain systems
Systematic Approach solving and project execution or products
Initial phase involves gathering and analyzing Detailed requirements analysis is crucial to
Requirement Analysis requirements understanding project goals and constraints
Involves creating detailed plans or blueprints for the Designing components, structures, or systems based
Design Phase final product or system on specifications and requirements
The actual creation of the product or system Physical construction or assembly of components
Implementation/Construction according to design specifications based on engineering drawings and plans
Rigorous testing to ensure the product or system Testing procedures to validate the performance,
Testing and Quality Assurance meets quality standards safety, and reliability of the final product
Both require effective project management for Project managers play a crucial role in planning,
Project Management scheduling, resource allocation, and risk mitigation organizing, and controlling projects in both domains
Emphasis on learning from experiences, feedback, and Continuous improvement through lessons learned,
Continuous Improvement improving processes feedback, and adapting processes for future projects
Engineers in both fields employ problem-solving
A problem-solving mindset is crucial for addressing techniques to address design and construction
Problem-solving Approach challenges and optimizing solutions challenges
Adherence to industry-specific quality standards and Compliance with standards such as ISO, ASME, or
Quality Standards best practices ASTM, depending on the industry
Differences Between Software
Engineering Process and Conventional
Engineering Process
Aspect Software Engineering Process Conventional Engineering Process
Nature of Product Intangible, non-physical product (code) Tangible, physical product (e.g., bridge, car)
Virtual, using integrated development environments Physical, involving materials, prototypes, and physical
Development Environment (IDEs) and simulation tools testing
Highly flexible, iterative development with frequent Typically more rigid, with fewer opportunities for
Flexibility and Iteration updates and releases iteration once construction begins
Emphasis on extensive testing, including unit, Testing involves physical prototypes and validation
Testing and Validation integration, and system testing through real-world experiments and tests
Easier to accommodate changes during the Changes can be costly and time-consuming, often
Change Management development process requiring significant redesign and rework
Shorter lifecycle, with rapid development cycles and Longer lifecycle, especially in construction projects,
Lifecycle Duration continuous updates with more emphasis on planning and execution
Documentation is important but may not be as
Comprehensive documentation is crucial for detailed, with more emphasis on physical plans and
Documentation Emphasis understanding and maintaining code specifications
Collaboration is often distributed, and teams may Collaboration often involves co-located teams, with
Collaboration and Team Dynamics work remotely face-to-face communication more common
Cost is more concentrated on human resources, tools, Cost involves materials, labor, equipment, and physical
Cost Structure and software licenses infrastructure
Compliance may be related to software standards and Compliance often involves industry-specific
Regulatory Compliance regulations regulations and safety standards
Risks may be related to technology, changing Risks involve uncertainties in material properties,
Risks and Uncertainties requirements, or market dynamics environmental conditions, and unforeseen challenges
Continuous customer involvement, feedback, and Customer involvement may be periodic, with more
Customer Involvement adaptation to changing needs focus on initial requirements and periodic updates
“The process of developing software for
simulating a bridge design and physically
building a bridge”
Similarities:
Both involve a structured process: Both software development and bridge construction follow a
step-by-step process to achieve their goals.
Testing is important: Whether it's testing the stability of a physical bridge or ensuring the
accuracy of a software simulation, testing plays a crucial role in both cases.
Documentation is necessary: Both projects require documentation to keep track of plans,
designs, and any changes made during the process.
Differences:
Materials and tools: In bridge construction, we use physical materials like steel and concrete,
while in software development, we use programming languages and computer software.
Testing methods: While both projects involve testing, the methods used are different. For a
physical bridge, we might conduct stress tests and inspections, while for software, we use
techniques like unit testing and code reviews.
Lifecycle phases: The phases of development differ. Building a bridge involves planning,
construction, and maintenance, while software development includes requirements analysis,
coding, testing, and deployment.
Regulatory compliance: Bridge construction must adhere to building codes and safety
regulations, whereas software development may need to comply with data privacy laws and
industry standards.
Software Engineering Process
Layer 2 —Method
The second layer establishes the methods of developing the software. This includes any
technical knowledge and resources required for development. Some tasks include choosing
methods for:
Communication
Analysis
Modeling
Program construction
Testing and support
Example: Test-Driven Development (TDD), Writing unit tests for a login functionality
Layer 3 — Process
Layer three focuses on the framework that needs to be established to deliver software
effectively. This layer can be broken down into five sub layers:
The requirement collection step of the SDLC is the most important and basic one.
Senior team members oversee it, with feedback coming from the
client or customer,
the sales division,
market research,
and industry experts.
The fundamental project strategy is then planned using this data, and product feasibility studies are
carried out on a range of topics covered in the following stage of the SDLC methodology.
Understanding the business use case of the software product requires having completed the
requirement collection process.
To gather all the information, including what the customer wants to build, who the end user will
be, and what function the product will serve, the business analyst schedules a meeting with the
client.
Before creating the product, one must have a basic understanding of it. Identifying project risks
and getting ready for quality assurance requirements are also part of the planning process.
Phase 2: Defining requirements and Feasibility Study
Following the completion of the requirement collection, the next stage is to explicitly describe and
record the product needs and obtain approval from the client or market analysts. This is accomplished
through the SRS (Software Requirement Specification) document, which includes all the product
requirements to be defined and developed throughout the project life cycle. Once the SRS document is
prepared, the requirements are evaluated for feasibility checks over these parameters:
In this phase, the SRS document is used as input to prepare the DDS - Design Document
Specification.
Software architects use the requirements defined in SRS as a reference to come up with the best
architecture for the product being developed. Ideally, multiple design approaches are proposed and
documented in the DDS.
All essential stakeholders review this DDS, and the optimal design strategy for the product is
chosen based on many characteristics such as
risk assessment,
product robustness,
design modularity,
budget, and
time restrictions.
A design approach explicitly outlines all of the product's architectural components, as well as its
communication and data flow representation with external and third-party modules.
The internal design of all components of the proposed architecture should be explicitly
documented in DDS down to the smallest detail.
Phase 4: Coding
In this phase, the developer receives the design document, and the software design is converted into
source code in the most appropriate high-level programming language. It can be called the most
prolonged phase of SDLC.
Phase 5: Testing
Once the coding phase is over and the modules are ready for testing, they are deployed in the
testing environment and tested against the requirements to ensure that the products address the
needs identified and obtained during the requirements stage.
Unit testing, integration testing, system testing, and acceptability testing are all performed during
this stage.
The QA (Quality Assurance) and testing teams may discover faults or defects, which they report to
developers.
The development team fixes the bug and sends it back to QA for another round of testing.
This procedure is repeated retesting and regression testing) until the program is bug-free, stable,
and meets the system's business requirements.
Testers refer to the SRS document to ensure that the software meets the customer's standard.
Phase 6: Installation/Deployment
Once the testing phase is over and no bugs or errors are left in the system, the deployment process
starts. Following testing, the overall design of the software will be completed.
Through developer efforts, various modules or designs will be integrated into the core source code,
typically by employing training environments to find further faults or defects.
Finally, the information system will be integrated into its environment. After clearing this stage, the
program is theoretically market-ready and can be distributed to any end user.
Phase 7: Maintenance
Once the built software is deployed, issues might arise while the code runs in the production
environment and need to be solved on the go. In SDLC models, this is called the maintenance phase of
a software project, and it consists of mainly three activities-
Bug fixing - bugs or errors arising due to unforeseen circumstances which were not taken care of
during testing.
Upgrading to newer versions
Enhancement - adding new features
The focus of this phase is to ensure that needs continue to be met and that the system continues to
perform as per the requirements collected in the first phase.
Why use SDLC?
The Waterfall model is the earliest SDLC approach that was used for software
development.
All these phases are cascaded to each other in which progress is seen as flowing
steadily downwards (like a waterfall) through the phases. The next phase is started
only after the defined set of goals are achieved for previous phase and it is signed off,
so the name "Waterfall Model". In this model, phases do not overlap.
Waterfall Model - Application
In summary, the Waterfall Model for software engineering involves following a sequential flow of phases,
where each phase must be completed before moving to the next. Requirements are gathered upfront, and
planning is meticulous to ensure that development proceeds smoothly and according to plan. While the
Waterfall Model provides structure and clarity, it may lack flexibility in accommodating changes or
unexpected challenges that arise during the development process.
Spiral Model
SDLC or Software Development Life Cycle in software engineering
consists of several models. The Spiral model is one of the most
important ones. The model or approach is known to manage risks
better. It mixes the iterative process model with specific elements of
the waterfall model. The spiral model is a diagram that looks like a coil
with loops. The number of loops in this model depends on the project
and is chosen by the project manager. Each loop dedicates a phase in
software development.
Spiral Model
The Spiral Model was introduced by Dr. Barry Boehm in 1986. Dr.
Boehm, a prominent figure in the field of software engineering,
proposed the Spiral Model as an iterative approach to software
development that emphasizes risk management and evolutionary
prototyping. His work on the Spiral Model was published in his
seminal paper titled "A Spiral Model of Software Development and
Enhancement." Since then, the Spiral Model has become one of the
well-known and widely used models in the field of software
engineering.
The Spiral Model is a flexible and iterative approach to software development that emphasizes risk
management and allows for incremental development.
Here's a step-by-step explanation of the Spiral Model:
Planning:
The project begins with the identification of objectives, constraints, and alternatives. This phase involves
defining the scope of the project, establishing goals, and determining the resources needed.
Key activities include defining project requirements, identifying stakeholders, and establishing project
milestones.
Risk Analysis:
In this phase, potential risks are identified and assessed. Risks may include technical challenges, changing
requirements, resource constraints, or external factors such as market conditions.
Risk analysis involves evaluating the probability and impact of each risk and developing strategies to mitigate or
manage them.
Development:
Once risks are identified and mitigated, development begins. This phase involves designing, coding, and testing
the software according to the project requirements.
Incremental development occurs, with each iteration adding new features or enhancements to the software.
Evaluation:
After each iteration of development, the software is evaluated to assess its functionality, quality, and compliance
with requirements.
Evaluation may involve testing the software, gathering feedback from stakeholders, and reviewing project
progress against established criteria.
Iteration:
The Spiral Model follows an iterative approach, with multiple cycles or iterations of planning, risk analysis,
development, and evaluation.
Each iteration builds upon the previous one, incorporating feedback, addressing issues, and refining the software
based on lessons learned.
Closure:
The project concludes with a final evaluation and review of the software. Any remaining issues or concerns are
addressed, and the software is prepared for deployment or delivery to the client.
Lessons learned from the project are documented, and recommendations for future projects may be made.
Key Features of the Spiral Model
Flexibility: The Spiral Model allows for flexibility in accommodating changes and uncertainties
throughout the development process.
Risk Management: The model emphasizes risk management and mitigation, with a focus on
identifying and addressing potential risks early in the project lifecycle.
Iterative Development: Development occurs in iterative cycles, with each iteration resulting in
an improved version of the software.
Customer Feedback: Stakeholder involvement and feedback are integral to the Spiral Model,
ensuring that the software meets user needs and expectations.
In summary, the Spiral Model is a cyclical approach to software development that balances risk
management with iterative development. It provides a structured framework for managing complex
projects while allowing for flexibility and adaptation to changing requirements and circumstances.
Example: Developing a Mobile Application Using the Spiral Model
Planning:
Objective: Develop a mobile application for a ride-sharing service.
Scope: The application will allow users to request rides, track driver locations, and make payments.
Constraints: Limited development time and budget.
Risk Analysis:
Identified Risks:
Technical: Integration with third-party mapping APIs may be complex.
Requirements: Client may request changes to features during development.
Market: Competitors may release similar applications with advanced features.
Mitigation Strategies:
Technical: Conduct thorough research and testing of mapping APIs before integration.
Requirements: Maintain open communication with the client and document all change requests.
Market: Monitor competitor activity and differentiate the application with unique features.
Development:
First Iteration:
Develop basic user interface (UI) for the mobile application.
Implement core features such as user registration, ride request, and driver tracking.
Second Iteration:
Continue adding features and refining the application based on user feedback and
stakeholder input.
Address any technical issues or bugs that arise during development.
Evaluation:
User Testing: Conduct usability testing with a group of beta users to gather feedback on the application's
functionality and usability.
Stakeholder Review: Present the application to stakeholders for review and feedback on the overall progress
and alignment with project objectives.
Iterative Improvements: Incorporate feedback and make necessary adjustments to the application's design and
functionality based on evaluation results.
Iteration:
Iterative Cycle: Repeat the development, evaluation, and iteration process for each cycle of the Spiral Model.
Continuous Improvement: Each iteration builds upon the previous one, with new features and enhancements
added based on user feedback and changing requirements.
Closure:
Final Review: Conduct a final review of the application to ensure that all requirements have been met and that it
meets quality standards.
Deployment: Release the application to app stores for public use, making it available to users for download and
installation on their mobile devices.
Post-Deployment Support: Provide ongoing support and maintenance for the application, addressing any issues
or bugs that may arise after deployment.
Real-life examples where the Spiral Model can be applied:
Space Exploration Projects:
When developing spacecraft or satellites for space exploration missions, the Spiral Model can be applied to manage the
complexity and uncertainty inherent in such projects. Each phase of the Spiral Model can correspond to different stages of
spacecraft development, including design, prototyping, testing, and deployment. The iterative nature of the model allows for
continuous refinement and adaptation as new challenges and requirements arise during the development process.
Medical Device Development:
In the development of medical devices such as implantable devices or diagnostic equipment, the Spiral Model can be used to
address regulatory requirements, safety concerns, and evolving user needs. The model's iterative approach enables developers to
iteratively design, test, and refine prototypes while incorporating feedback from medical professionals, regulatory bodies, and
end-users. This iterative and risk-driven approach helps ensure that the final product meets stringent safety and performance
standards.
Infrastructure Projects:
Large-scale infrastructure projects, such as the construction of bridges, highways, or power plants, can benefit from the Spiral
Model's risk management and iterative development approach. Each phase of the Spiral Model can correspond to different stages
of project planning, design, construction, and maintenance. By identifying and mitigating risks early in the project lifecycle,
stakeholders can make informed decisions and adapt plans as needed to ensure project success.
Defense Systems Development:
The development of defense systems, including military vehicles, aircraft, or missile systems, often involves complex
requirements, evolving threats, and strict performance criteria. The Spiral Model can be employed to manage the development of
such systems by iteratively designing, testing, and refining prototypes while addressing technical challenges and regulatory
requirements. This iterative and risk-driven approach enables defense contractors to deliver high-quality and reliable systems that
meet the needs of military stakeholders.
Environmental Conservation Projects:
Environmental conservation projects, such as ecosystem restoration initiatives or climate change mitigation efforts, require
adaptive management strategies to address changing environmental conditions and stakeholder priorities. The Spiral Model can
be applied to these projects by iteratively planning, implementing, and evaluating conservation actions while considering
ecological, social, and economic factors. This iterative and collaborative approach helps conservation practitioners learn from
past experiences and adjust strategies to achieve long-term environmental goals.
Advantages of Spiral Model
Risk Management: The Spiral Model emphasizes risk management by identifying
potential risks early in the development process and incorporating risk mitigation strategies
into each iteration. This helps minimize project risks and uncertainties.
Flexibility: The model allows for flexibility in accommodating changes and evolving
requirements throughout the development lifecycle. It can adapt to changing market
conditions, technology advancements, and stakeholder feedback.
Iterative Development: Iterative development allows for continuous improvement and
refinement of the software through multiple cycles or iterations. Each iteration builds upon
the previous one, resulting in a more robust and feature-rich product.
Stakeholder Involvement: Stakeholder involvement is integral to the Spiral Model,
ensuring that user needs and expectations are considered throughout the development
process. This leads to greater satisfaction and acceptance of the final product.
Early Prototyping: The model encourages early prototyping and user feedback, allowing
stakeholders to visualize and interact with the software early in the development process.
This helps identify and address usability issues and requirements gaps.
Disadvantages of Spiral Model
Complexity: The Spiral Model can be more complex and resource-intensive compared to other
software development models. It requires thorough risk analysis, planning, and coordination,
which may increase project overhead.
Cost and Time: The iterative nature of the model may result in increased development costs and
timeframes, especially if iterations require significant rework or changes to the software
architecture.
Documentation Overhead: Managing documentation and project artifacts throughout multiple
iterations can be challenging and may lead to documentation overhead. Maintaining alignment
between project documentation and evolving requirements is essential but can be time-
consuming.
Dependency on Risk Analysis: The success of the Spiral Model relies heavily on the
effectiveness of risk analysis and mitigation strategies. Inaccurate or inadequate risk assessment
may lead to project delays, budget overruns, or quality issues.
Not Suitable for Small Projects: The Spiral Model may not be suitable for small-scale or
straightforward projects where the overhead of risk management and iterative development
outweighs the benefits.
Limitations of Spiral Model
Not Ideal for Fixed Requirements: The Spiral Model may not be suitable for projects with fixed
or well-defined requirements, as its iterative nature is better suited to projects with evolving or
uncertain requirements.
Dependency on Experienced Teams: Successful implementation of the Spiral Model requires
experienced and skilled development teams capable of conducting thorough risk analysis, planning,
and coordination.
Limited Scalability: The model may face scalability challenges when applied to large-scale or
complex projects, as managing multiple iterations and dependencies can become more difficult to
coordinate.
Management Oversight: Effective project management and oversight are crucial for the success of
the Spiral Model. Without proper governance and control, projects may veer off track or fail to meet
objectives.
Potential for Scope Creep: The iterative nature of the model may lead to scope creep if changes
and enhancements are continually introduced without proper evaluation or prioritization.
In summary, while the Spiral Model offers several advantages, including effective risk management,
flexibility, and stakeholder involvement, it also has inherent disadvantages and limitations, such as
complexity, cost, and dependency on risk analysis. Understanding these factors is essential for
determining whether the Spiral Model is the right fit for a particular software development project.
Why Spiral Model is called Meta Model?
The Spiral model is called a Meta-Model because it subsumes all the other
SDLC models.
For example, a single loop spiral actually represents the Iterative Waterfall
Model.
The spiral model incorporates the stepwise approach of the Classical Waterfall
Model.
The spiral model uses the approach of the Prototyping Model by building a
prototype at the start of each phase as a risk-handling technique.
Also, the spiral model can be considered as supporting the Evolutionary model
–the iterations along the spiral can be considered as evolutionary levels through
which the complete system is built.
Prototype Model
Prototyping is a generic way of creating a functional replica of
any idea, software, or system requiring more engineering to produce
the final result.
The prototype model will provide a miniature replica of your desired
end product, requiring accurate consumer feedback to be crafted
accordingly.
A prototype of an application often demonstrates the usability of any
product in the development phase, although it may not contain the
exact requirements of the desired outcome.
Steps of Prototyping Model
2. Evolutionary Prototyping
In this method, the prototype developed initially is incrementally refined based on
customer feedback till it finally gets accepted.
In comparison to Rapid Throwaway Prototyping, it offers a better approach that 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.
3. Incremental Prototyping
In this type of incremental prototyping, the final expected product is broken into different
small pieces of prototypes and developed individually.
In the end, when all individual pieces are properly developed, then the different prototypes
are collectively merged into a single final product in their predefined order.
It’s a very efficient approach that reduces the complexity of the development process,
where the goal is divided into sub-parts and each sub-part is developed individually.
The time interval between the project’s beginning and final delivery is substantially
reduced because all parts of the system are prototyped and tested simultaneously.
Of course, there might be the possibility that the pieces just do not fit together due to some
lack of fineness in the development phase – this can only be fixed by careful and complete
plotting of the entire system before prototyping starts.
4. Extreme Prototyping
This method is mainly used for web development. It consists of three sequential independent
phases:
In this phase, a basic prototype with all the existing static pages is presented in HTML
format.
In the 2nd phase, Functional screens are made with a simulated data process using a
prototype services layer.
This is the final step where all the services are implemented and associated with the final
prototype.
This Extreme Prototyping method makes the project cycling and delivery robust and fast
and keeps the entire developer team focused and centralized on product deliveries rather
than discovering all possible needs and specifications and adding necessitated features.
Advantages of Prototype Model
Early Feedback: The Prototype Model allows stakeholders to visualize and interact with a basic version of
the software early in the development process. This facilitates early feedback from users, clients, and other
stakeholders, which can help identify requirements, validate design decisions, and refine the software's
functionality.
Requirement Validation: Prototypes serve as tangible representations of the software's features and
functionalities. By demonstrating the prototype to stakeholders, developers can validate requirements,
clarify expectations, and ensure that the final product meets user needs and expectations.
Risk Reduction: Prototyping helps mitigate project risks by uncovering potential issues, technical
challenges, and usability concerns early in the development lifecycle. By addressing these issues during the
prototyping phase, developers can minimize the likelihood of costly rework and delays later in the project.
Iterative Refinement: The Prototype Model supports iterative development, allowing developers to refine
the software incrementally based on feedback and changing requirements. This iterative approach enables
continuous improvement and ensures that the final product aligns with stakeholder expectations.
Enhanced Communication: Prototypes facilitate communication and collaboration among project
stakeholders by providing a common reference point for discussions. By visualizing the software's
functionality and design, stakeholders can better understand project goals, make informed decisions, and
align their expectations.
Disadvantages of Prototype Model
An unstable/badly implemented prototype often becomes the final product.
Require extensive customer collaboration
Costs customer money
Needs committed customer
Difficult to finish if customer withdraw
May be too customer specific, no broad market
Difficult to know how long the project will last.
Easy to fall back into the code and fix without proper requirement analysis, design, customer
evaluation, and feedback.
Prototyping tools are expensive.
Special tools & techniques are required to build a prototype.
It is a time-consuming process.
Applications of Prototype Model
User Interface Design: Prototyping is commonly used in user interface (UI) and user experience (UX) design
to create mock-ups and wireframes of software interfaces. This helps designers visualize layout, navigation, and
interaction patterns before final implementation.
Software Requirements Elicitation: Prototyping facilitates requirements elicitation by providing stakeholders
with concrete examples of proposed features and functionalities. By interacting with prototypes, stakeholders
can provide feedback and refine requirements based on their needs and preferences.
Proof of Concept: Prototyping is used to validate the feasibility and technical viability of proposed solutions.
By building prototypes, developers can test hypotheses, evaluate technical approaches, and identify potential
challenges before committing to full-scale development.
Iterative Development: Prototyping supports iterative development approaches, such as Agile and Lean
methodologies, by enabling continuous feedback and refinement of the software. Developers can build and test
prototypes in short cycles, incorporating feedback and making adjustments based on user input.
Training and Demonstrations: Prototypes can be used for training purposes, allowing users to familiarize
themselves with software features and workflows before the final product is deployed. Additionally, prototypes
can be used to demonstrate software capabilities to potential clients, investors, or stakeholders.
Iterative Enhancement Model
Software development uses a dynamic and adaptable method called the iterative
enhancement Model.
The iterative enhancement model encourages a software product’s ongoing evolution and
improvement.
This methodology is noticeable due to its concentration on adaptability, flexibility and
change responsiveness.
It makes it easier for a product to evolve because it gives developers the freedom to
progressively enhance the software, making sure that it complies with evolving
specifications, user demands, and market demands.
This helps products evolve more easily.
Iterative Enhancement Model
Iterative Enhancement Model stands out due to its incremental and iterative nature, it is
also known as an incremental model.
This approach focuses on incremental development and improvement rather than trying to
complete a software product in a single phase.
This model is based on segmenting the project into smaller units, or iterations, with a set of
tasks completed
Iterative Enhancement Model
Iterative Enhancement Model
The Iterative Enhancement Model creates an environment where
development teams can more effectively adjust to changing requirements
by segmenting the software development process into smaller, more
manageable parts.
Every iteration improves on the one before it, adding new features and
fixing problems found in earlier stages.
Members of the team, stakeholders and end users are encouraged to
collaborate and communicate continuously to make sure the software
meets changing needs and expectations.
Until the software is finished being built, the iteration process is carried
out, which involves giving the user the increments.
Advantages of Iterative Enhancement
Model
Mobile app development: Updates and improvements are often needed for mobile apps to stay
current with new devices, operating system versions and user preferences. By using an iterative
process developers can release the beta versions of their apps, get user feedback and then improve
functionality of those iterations in future release.
Web Application Development: The requirements for developing web applications frequently
change as a result of shifting user demand and advancements in technology. The Iterative
Enhancement Model makes it possible to developed features incrementally and guaranteeing that
the application can be modified to satisfy changing user and market demands. In later iterations it
also makes it easier to incorporate new features based on input from users.
E-commerce Platforms: Development in e-commerce field often involves constant updates.
Implementing an iterative approach enables the introduction of new functionality.
Conclusion
In the conclusion, the Iterative enhanced model has advantages
such as delivery, reducing risk, checking quality, and flexibility.
But it also has drawbacks like complexity, conflict deadlines,
increased expenses, documentation problems. Determing
whether to use this model in light of the particular requirements
and properties of the software developement project requires an
understanding of both of its benefits and drawbacks.
Evolutionary Development Model
It is used in large projects where you can easily find modules for incremental
implementation. Evolutionary model is commonly used when the customer wants to start
using the core features instead of waiting for the full software.
Evolutionary model is also used in object oriented software development because the
system can be easily portioned into units in terms of objects.
Necessary Conditions for Implementing this
Model
Customer needs are clear and been explained in deep to the developer team.
There might be small changes required in separate parts but not a major change.
As it requires time, so there must be some time left for the market constraints.
Risk is high and continuous targets to achieve and report to customer repeatedly.
It is used when working on a technology is new and requires time to learn.
Advantages Evolutionary Model
The evolutionary model is a helpful framework in the quickly evolving field of software
development, where requirements are frequently modified and user expectations change.
As with any development process, optimizing the advantages and minimizing the possible
negatives of evolutionary models in software engineering requires careful evaluation of
project-specific considerations.