0% found this document useful (0 votes)
6 views30 pages

Web Apps and Software Engineering Essentials

The document outlines the unique characteristics of web applications (WebApps) and the structured software engineering process. It highlights the importance of high performance, security, and continuous evolution in WebApps, while also detailing the software process framework, which includes communication, planning, modeling, construction, and deployment. Additionally, it discusses software engineering practices, principles, and common myths that can lead to misunderstandings in software development.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views30 pages

Web Apps and Software Engineering Essentials

The document outlines the unique characteristics of web applications (WebApps) and the structured software engineering process. It highlights the importance of high performance, security, and continuous evolution in WebApps, while also detailing the software process framework, which includes communication, planning, modeling, construction, and deployment. Additionally, it discusses software engineering practices, principles, and common myths that can lead to misunderstandings in software development.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

1)Unique Nature of Web Apps

● Web applications (WebApps) are different from traditional software because they run on the web and
serve users across the world.
● In the early days, websites only showed text and simple images.
● But with new technologies like XML and Java, WebApps became powerful tools that can perform many
tasks and connect with databases and business systems.

WebApps have several unique features:

1. Network Intensiveness

● A WebApp operates on a network and serves a diverse set of users.


● It may function over the global Internet or within limited environments such as an Intranet or Extranet.

2. Concurrency

● Multiple users can simultaneously access a WebApp.


● Their usage patterns vary widely, making concurrency control and efficient request handling essential.

3. Unpredictable Load

● WebApps face large fluctuations in user load.


● For example, only 100 users may log in on one day, while 10,000 may use the same service another
day.
● The system must handle such variability.

4. Performance Requirements

● High performance is crucial.


● Users expect fast access, quick server-side processing, and efficient client-side display.
● Delays may cause users to abandon the website.

5. High Availability

● Users demand access 24/7/365.


● Since WebApps serve a global audience, downtime during one region’s night may affect another
region’s daytime usage.

6. Data Driven Nature

● Many WebApps deliver rich hypermedia content—text, graphics, audio, and video.
● They also connect to external databases for e-commerce, financial transactions, and information
retrieval.

7. Content Sensitivity
The quality, organization, and aesthetic appeal of content significantly determine a WebApp’s usability and
success.

8. Continuous Evolution

● Unlike traditional software that updates periodically, WebApps change continuously.


● Content and features may be updated hourly, daily, or even dynamically for each user request.

9. Immediacy

● WebApps often require extremely short development and deployment cycles.


● Modern tools allow creation and release of sophisticated Web pages within days or even hours.

10. Security

Since WebApps are accessible to a wide audience, securing data, controlling access, and ensuring safe
communication are major challenges.

11. Aesthetics

Visual appeal—layout, design, colors, and overall "look and feel"—plays a vital role, especially in marketing-
oriented applications.

‐-----------------------------------------------------‐-----------------------------------------------------‐---------------------------------------
--------------‐--------------2)Explain Software Process/ Define Software Engineering. and Software
Engineering Practices

1. Software Process

A software process is a structured set of activities, actions, and tasks required to produce a software
product.
It acts as a roadmap that guides software engineers in planning, developing, testing, and maintaining a
software system.

(a) Process Components

1. Activities – Broad objectives such as communication or modeling.


2. Actions – Steps within activities that produce major work products (e.g., creating a design model).
3. Tasks – Small, focused objectives like conducting unit testing or writing a class.

(b) Generic Software Process Framework

The software process framework defines five major framework activities applicable to all projects:

1. Communication
● Involves interacting with stakeholders to understand project goals.
● Requirements for features, functions, constraints are gathered.
● Ensures clarity before starting technical work.

2. Planning

● Preparation of the software project plan.


● Defines:
○ Work tasks
○ Resources
○ Risks
○ Schedule
○ Work products
● Helps in tracking and controlling progress during project execution.

3. Modeling

● Creation of analysis and design models.


● Helps both developers and customers visualize the system.
● Includes data models, architectural models, interface designs, etc.

4. Construction

● Involves:
○ Code generation
○ Testing to detect and remove errors
● Ensures the system is built according to design and is error-free.

5. Deployment

● Software is delivered to the customer.


● Customer evaluates the product and provides feedback.
● Successful deployment may lead to new requirements or enhancements.

(c) Umbrella Activities

These activities occur throughout the entire process:

● Project tracking and control – Monitors progress and takes corrective actions.
● Risk management – Identifies and manages project risks.
● Software Quality Assurance (SQA) – Ensures that quality standards are met.
● Technical reviews – Detect and correct errors early.
● Measurement – Collects metrics to improve process and product quality.
● Configuration management – Controls changes to software.
● Reusability management – Encourages creation and use of reusable components.
● Work product preparation – Documentation, model creation, logs, forms, reports.
(d) Adaptability of the Process

The software process is not rigid; it must be agile and flexible.


It varies depending on:

● Project size and complexity


● Level of stakeholder involvement
● Quality requirements
● Team structure and autonomy
● Degree of documentation and rigor required

Or
1Software Engineering
● Software Engineering is the process of applying engineering principles to the development,
operation, and maintenance of software.
● It helps to build software that is reliable, efficient, and cost-effective.

● Software Engineering is a disciplined approach to developing high-quality software that meets the
complex and evolving needs of individuals, businesses, and governments.
● As software has become deeply embedded in every aspect of modern life, it must be engineered
carefully to ensure quality, reliability, maintainability, and efficiency.

According to Fritz Bauer,

Software Engineering is the establishment and use of sound engineering principles to obtain software that is
reliable and works efficiently on real machines in an economical manner.

According to IEEE,

Software Engineering is the application of a systematic, disciplined, and measurable approach to the
development, operation, and maintenance of software.

Need for Software Engineering

● Software has become a major part of our daily life.


● Problems should be understood before building a solution.
● Software should be well-designed, of high quality, and easy to maintain.
● It helps large teams work together on complex software systems.

Software Engineering as a Layered Technology


Software Engineering is a layered technology made up of four layers:

1. Quality Focus (Base Layer):


Every software engineering activity must focus on producing high-quality software.
2. Process Layer:
The process gives structure to all software activities and helps manage the project properly.
3. Methods Layer:
Methods tell how to build software — including analysis, design, coding, testing, and maintenance.
4. Tools Layer:
Tools provide support for processes and methods (like CASE tools that automate parts of software
development).

2. Software Engineering Practices

Software engineering practice defines how software is actually built.


It rests on common-sense problem-solving steps and general principles that ensure high-quality software.

(a) Essence of Software Engineering Practice (Based on Polya)

1. Understand the Problem

● Identify stakeholders.
● Determine unknowns, required functions, and constraints.
● Break down the problem into smaller subproblems.
● Create graphical analysis models if possible.

2. Plan a Solution

● Use knowledge of similar problems or reusable software.


● Define subsolutions for subproblems.
● Develop a design model that enables effective implementation.

3. Carry Out the Plan

● Implement the design in code.


● Ensure code matches the design (traceability).
● Review design and code for correctness.

4. Examine the Result


● Test every component of the system.
● Validate that the output meets requirements.
● Ensure functionality, performance, and reliability.

(b) General Principles of Software Engineering Practice (David Hooker)

1. The Reason It All Exists

● Software must deliver value to users.


● Every feature must justify its existence.

2. KISS (Keep It Simple, Stupid!)

● Designs should be as simple as possible.


● Simplicity increases maintainability and reduces errors.

3. Maintain the Vision

● Maintain a clear architectural vision.


● Avoid patchwork designs or conflicting ideas.

4. What You Produce, Others Will Consume

● Code and design must be understandable for others.


● Documentation and clarity are essential.

5. Be Open to the Future

● Software must be designed to handle change.


● Avoid rigid designs that cannot evolve.

6. Plan Ahead for Reuse

● Reuse reduces effort and cost.


● Components should be designed to be reusable.

7. Think!

● Apply clear thought before action.


● Thinking leads to better decisions, fewer errors, and more robust systems.

‐-----------------------------------------------------‐-----------------------------------------------------‐---------------------------------------
--------------‐--------------
3)David Hooker’s Seven Principles of Software Engineering
David Hooker proposed seven basic principles that guide good software engineering. These principles help us
build software that is useful, simple, easy to maintain, and prepared for the future.

1. The First Principle: The Reason It All Exists

● Software should be created only if it provides real value to users.


● Before adding any feature or requirement, we should ask:
● “Does this help the user?”
● If it does not add value, it should not be included. This keeps the project focused on useful and
meaningful work.

2. The Second Principle: KISS (Keep It Simple, Stupid!)

Software design should be simple and easy to understand.

Simple designs:

● are easier to build


● have fewer errors
● are easier to maintain

Simple does NOT mean “poor quality.” It means making the design clear and not adding unnecessary
complexity.

3. The Third Principle: Maintain the Vision

● A software project should have one clear vision or direction.


● If the vision is unclear, the system becomes confusing and inconsistent.
● An architect or leader should ensure everyone follows the same design ideas so the system remains
clean and well-structured.

4. The Fourth Principle: What You Produce, Others Will Consume

Whatever we create—documents, design, or code—others will use or maintain it later.

So we should always:

● write clear requirements


● design clean structures
● write readable and well-organized code

This makes it easier for future developers or maintainers to understand the system.

5. The Fifth Principle: Be Open to the Future

● Software should be designed so it can handle future changes.


● Technology changes quickly, so software must be flexible.
● We should never design something that cannot be improved or modified later.
● Thinking ahead helps create software that lasts longer and continues to be useful.

6. The Sixth Principle: Plan Ahead for Reuse

● Reusing existing code or design saves time and effort.


● To make reuse possible, we must plan the system in a way that its parts can be used again in future
projects.
● Good reusable components increase the value of both the current and future software.

7. The Seventh Principle: Think!

● This is the most important principle.


● Before doing any task, think carefully.
● Thinking helps us do things correctly, learn from mistakes, and understand when we need more
information.
● Good thinking supports all the other principles.

‐-----------------------------------------------------‐-----------------------------------------------------‐---------------------------------------
--------------‐--------------

4)Explain Software Myths with Examples


● Software myths are false beliefs or misconceptions about software development and the processes
used to build software.
● These myths have existed since the early days of computing and continue to cause misunderstandings
between managers, customers, and developers.
● Myths appear logical and intuitive, and they are often believed because they are promoted by
experienced practitioners or outdated organizational culture.
● However, believing in these myths leads to poor decision-making, unrealistic expectations, lower quality,
and project failures.

Software myths can be classified into three categories:

1. Management Myths
2. Customer Myths
3. Practitioner (Developer) Myths

1. Management Myths

Managers often face pressure related to deadlines, budgets, and product quality. As a result, they may rely on
myths to simplify problems, even when these beliefs are harmful.

Myth 1: “We already have a book of standards and procedures. That is enough to guide the project.”
Reality:
Although an organization may have a standards manual, it may be outdated, incomplete, not followed, or
irrelevant to modern software engineering practices. Many employees may not even be aware that such
documents exist.

Example:
A manager relies on a 10-year-old standards manual while the team practices agile development. This
mismatch causes confusion and inconsistent quality.

Myth 2: “If we get behind schedule, we can add more programmers to catch up.”

Reality:
Brooks’ Law states: “Adding people to a late software project makes it later.”
New developers need time to understand the project, which forces existing team members to train them,
reducing overall productivity.

Example:
A project that is already delayed hires five new programmers. Senior developers now spend more time
explaining the system than writing code, causing further delay.

Myth 3: “If we outsource the project, we can relax because the third party will handle everything.”

Reality:
Outsourcing requires strong internal project management. If an organization cannot manage software projects
internally, it will struggle even more while controlling an external vendor.

Example:
A company outsources an app without providing proper requirements. The vendor builds the wrong features,
leading to rework, delays, and extra cost.

2. Customer Myths

Customers also hold incorrect assumptions because they are not familiar with the software development
process. These myths often create unrealistic expectations.

Myth 1: “A general statement of objectives is enough to start programming.”

Reality:
Unclear or vague objectives lead to misunderstandings, rework, and project failure. Detailed, unambiguous
requirements must be developed through continuous communication.

Example:
A customer says, “I want a user-friendly billing system.” Without specific details, developers may build
something completely different from what the customer intended.

Myth 2: “Requirements will change constantly, but that’s okay because software is flexible.”
Reality:
Although software can be modified, the cost and impact of changes increase dramatically as the project
progresses. Early changes are cheap; late changes require redesigning, recoding, and retesting.

Example:
If a customer adds a new feature after coding is completed, developers may have to rewrite major modules,
increasing cost and causing schedule overruns.

3. Practitioner (Developer) Myths

These myths arise from old programming culture, where software was viewed as an “art” rather than an
engineering discipline.

Myth 1: “Once the program works, our job is done.”

Reality:
Most effort (60–80%) is spent after delivery on maintenance, bug fixes, and updates.

Example:
A developer completes the program but later spends months fixing errors and adding enhancements requested
by the customer.

Myth 2: “I cannot assess quality until the program is running.”

Reality:
Quality can be assessed early through technical reviews, inspections, and design evaluations, which catch
errors long before testing.

Example:
A design review identifies a major logic flaw before coding begins, saving significant time and effort.

Myth 3: “The only important deliverable is the working program.”

Reality:
A working program is just one part of a complete software configuration, which also includes documentation,
models, design diagrams, test plans, and maintenance guides.

Example:
Without proper documentation, future developers cannot maintain or upgrade the software efficiently.

Myth 4: “Software engineering creates unnecessary documentation and slows us down.”

Reality:
Software engineering focuses on quality, not paperwork. Good engineering practices reduce rework, leading to
faster and more reliable delivery.
Example:
Following proper design and testing processes early avoids massive rework later, reducing total development
time.

‐-----------------------------------------------------‐-----------------------------------------------------‐---------------------------------------
--------------‐--------------

5)Define Process and Explain the Five Activities of a Generic Process Framework for Software
Engineering

Definition of Process

● A process is defined as a collection of work activities, actions, and tasks that are performed when some
work product is to be created.
● These activities and tasks exist within a framework or model that specifies how they relate to each other
and how they contribute to producing the final software product.
● In the context of software engineering, a software process provides a structured way of developing
software, ensuring that every phase—such as understanding requirements, planning, designing, coding,
and delivering—happens in a disciplined and organized manner.

Each software engineering action within the process is supported by a task set, which includes:

● The work tasks to be completed


● The work products to be produced
● Quality assurance points
● Milestones for tracking progress

Five Activities of a Generic Process Framework

The generic process framework consists of the following five important framework activities:

1. Communication

Communication is the first and one of the most important activities.


It involves:

● Understanding the requirements of the stakeholders


● Interacting with customers, end users, or managers
● Clarifying objectives and constraints

The nature of communication depends on the project complexity:

For simple projects:

Communication may involve just a few actions such as:

1. Making contact with stakeholders


2. Discussing requirements and taking notes
3. Organizing notes into a written requirement statement
4. Sending the draft to stakeholders for approval

For complex projects:

It may include several actions:

● Inception
● Elicitation
● Elaboration
● Negotiation
● Specification
● Validation

These help gather detailed, consistent, and conflict-free requirements.

2. Planning

Planning involves setting a roadmap for the project.


It includes:

● Estimating resources and time


● Scheduling tasks
● Identifying risks
● Setting project milestones

Planning ensures the team knows what to do, when to do it, and how to track progress.

3. Modeling

Modeling focuses on analysis and design of the system.


This activity helps the development team understand:

● What the system must do (analysis models)


● How the system will implement those requirements (design models)

Models provide a blueprint for construction and help minimize development errors by visualizing the system
before coding.

4. Construction

This activity includes:

● Coding (actual software development)


● Testing (unit, integration, and system testing)
During construction:

● Software engineering actions turn design into working code


● Testing ensures the product meets quality standards and follows requirements
● Errors are identified and corrected

Construction transforms the conceptual model into a fully functional software product.

5. Deployment

Deployment involves delivering the software to the customer.


It includes:

● Installation of the system


● Customer evaluation and feedback
● Handling issues raised during use
● Creating enhancements in later releases

Deployment ensures that the software reaches its intended users and evolves according to their feedback.

Process Flow (Additional Important Aspect)

The process flow defines how these five activities are organized with respect to sequence and time. It can
take different forms such as:

● Linear flow – activities performed in strict sequence


● Iterative flow – repeating activities before moving to the next
● Evolutionary flow – circular cycles delivering increments
● Parallel flow – performing multiple activities simultaneously

Process flow helps adapt the development approach based on project size, complexity, and team
characteristics.

Conclusion

The generic process framework—consisting of communication, planning, modeling, construction, and


deployment—provides a structured foundation for all software engineering tasks. Together with umbrella
activities like risk management, quality assurance, and project tracking, it ensures that software is produced
systematically, efficiently, and with high quality.

‐-----------------------------------------------------‐-----------------------------------------------------‐---------------------------------------
--------------‐--------------

6)Waterfall Model – Explanation with Diagram, Advantages and Disadvantages Waterfall Model
● The Waterfall Model, also known as the classic life cycle, is one of the earliest and most traditional
software development process models.
● It follows a systematic and sequential approach in which the project progresses in a linear downward
flow, similar to a waterfall.
● It begins with the communication of requirements and moves through planning, modeling,
construction, and finally deployment of the software.
● The model works best when requirements are well understood, stable, and clearly defined at the
beginning.
● It is often used in projects involving well-defined enhancements or adaptations to existing systems.

Diagram of the Waterfall Model

Explanation of Phases

1. Communication

This phase involves interacting with the customer to gather and document requirements.
Activities include:

● Project initiation
● Requirements analysis
This stage is crucial because the model assumes requirements are clearly known upfront.

2. Planning

In this phase, the project manager focuses on:

● Cost and effort estimation


● Scheduling tasks
● Tracking and resource planning
A detailed plan is created to guide the remaining phases.

3. Modeling

This includes analysis and design of the system.


The development team creates:
● Analysis models
● Architectural and component design
These models serve as blueprints for the construction phase.

4. Construction

This phase converts design into working software.


It includes:

● Code generation
● Testing activities to discover and fix errors
Testing verifies that the software conforms to the requirements gathered earlier.

5. Deployment

In the final phase, the completed software is:

● Delivered to the customer


● Installed and configured
● Supported through feedback and maintenance
The system enters operational use.

Advantages of the Waterfall Model

1. Simple and easy to understand


2. Well-documented
3. Easy to manage
4. Suitable for stable requirements

Disadvantages of the Waterfall Model

1. Real projects rarely follow a linear sequence


2. Customer may not know all requirements upfront
3. Late testing and late discovery of errors
4. Not suitable for fast-changing environments
5. Blocking and waiting issues

‐-----------------------------------------------------‐-----------------------------------------------------‐---------------------------------------
--------------‐--------------

7)V-Model – Explanation, Diagram, Advantages & Disadvantages


● The V-Model is a variation of the classic Waterfall Model.
● It represents how verification and validation activities are related to the various phases of software
development.
● The model visually forms a “V” shape, where the left side focuses on requirement refinement and
design, and the right side focuses on corresponding testing activities.
● As the software team proceeds down the left side of the V, the system requirements are transformed
into progressively more detailed and technical models such as architectural design and component
design.
● After code generation, the team moves up the right side of the V, performing different levels of testing
to validate earlier development phases.
● Thus, the V-Model clearly illustrates how each testing activity is mapped to a specific development
stage, ensuring high-quality software.

Neat, Labelled Diagram of V-Model

Detailed Explanation of Each Process in the V-Model

The V-Model consists of two major sides:

● Left Side → Verification (planning, analysis, and design)


● Right Side → Validation (testing and quality assurance)
● Bottom → Coding phase

Below is a detailed explanation of each process in the same sequence as the V-Model.

LEFT SIDE OF THE V (VERIFICATION PHASES)

These phases focus on analyzing requirements and designing the solution.


1. Requirements Modeling (User Requirement Analysis)

This is the first phase of the V-Model.

What happens here:

● The development team communicates with the customer to understand:


○ What the user needs
○ What functions the system must provide
○ Performance expectations
○ Constraints and limitations
● Requirements are written in a clear, structured document such as the SRS (Software Requirements
Specification).

Purpose:

● To define what the software should do, without describing how.


● This phase directly corresponds to Acceptance Testing on the right side.

2. Architectural Design (High-Level System Design)

This phase focuses on designing the overall structure of the system.

What happens here:

● The system is broken into major modules or subsystems.


● Data flow between modules is defined.
● Technologies, frameworks, databases, and system platforms are selected.
● System architecture diagrams are prepared (e.g., layered architecture, client-server model).

Purpose:

● To create a blueprint for the entire system.


● Forms the basis for System Testing, which validates the complete architecture.

3. Component Design (Detailed / Low-Level Design)

This process describes the internal design of each module.

What happens here:

● Functions, classes, and methods are designed.


● Logic is defined using flowcharts, pseudocode, decision tables, etc.
● Data structures, file formats, and algorithms are finalized.

Purpose:
● To define how each module will work internally.
● Corresponds to Integration Testing, where individual modules are combined and tested.

4. Code Generation (Implementation)

This is the bottom-most phase of the V.

What happens here:

● Programmers write actual source code based on the component design.


● Coding standards, naming conventions, and documentation guidelines are followed.
● The code is compiled, reviewed, and prepared for testing.

Purpose:

● To convert all designs into an executable software product.


● After coding, the model moves upward into validation/testing.

RIGHT SIDE OF THE V (VALIDATION PHASES)

These phases ensure that each earlier verification phase is correct.

5. Unit Testing

Unit testing focuses on individual components or functions.

What happens here:

● Developers test small code units using:


○ Test cases
○ Stubs (temporary code)
○ Drivers
● Each function is executed with sample input to verify expected output.

Purpose:

● To ensure each module works independently.


● Validates the Component Design.

6. Integration Testing

In this phase, modules are tested when combined.

What happens here:

● Modules are integrated according to the architectural design.


● Data flow between modules is checked.
● Interface defects are detected.
● Integration approaches:
○ Top-down
○ Bottom-up
○ Sandwich
○ Big bang

Purpose:

● To ensure that multiple modules work correctly together.


● Validates the Architectural Design.

7. System Testing

This is a complete end-to-end test of the entire system.

What happens here:

● The system is tested against the full set of functional and non-functional requirements.
● Performance testing, recovery testing, security testing, usability testing, etc., are performed.

Purpose:

● To validate the entire system as a whole.


● Ensures that the software works in the target environment.
● Validates the overall system architecture.

8. Acceptance Testing

This is the final testing phase, carried out by the customer or end-users.

What happens here:

● The software is tested in real-world scenarios.


● Customer checks whether the system meets their expectations.
● Alpha testing (in-house) and beta testing (real users) are performed.

Purpose:

● To verify that the final product matches the original requirements.


● Validates the Requirements Modeling phase.

Advantages of V-Model

1. Clear relationship between development and testing


2. Simple and easy to understand
3. Better defect detection
4. Ideal for projects with stable and well-defined requirements
5. Improved project management

Disadvantages of V-Model

1. Rigid and inflexible


2. Customer does not see a working product early
3. Not suitable for complex, change-driven projects
4. High risk if requirements are misunderstood
5. No support for iterative activities

‐-----------------------------------------------------‐-----------------------------------------------------‐---------------------------------------
--------------‐--------------

8)Incremental Process Model

● The Incremental Process Model is a software development approach in which the product is delivered
in a series of incremental releases, each adding more functionality.
● It combines elements of both linear (Waterfall-like) and parallel development.
● As calendar time progresses, multiple linear sequences are executed in a staggered fashion, and each
sequence produces a working software increment.
● When using this model, the first increment is usually a core product that implements the basic, most
essential requirements.
● The customer uses this core product and provides feedback. Based on this evaluation, a plan is
prepared for the next increment, which adds new features or improves existing ones.
● This cycle continues until the full system is built.

For example, a word processor might release:

● 1st increment: basic file handling, editing, and document creation


● 2nd increment: advanced editing and formatting
● 3rd increment: spell and grammar checking
● 4th increment: advanced page layout features

Incremental development is especially useful when requirements are generally understood but full
implementation must be delivered over time, when staffing is limited, or when technical risks need to be
managed by distributing complex modules to later increments.
Process of the Incremental Model

Each increment follows the same sequence of activities:

1. Communication

● Interact with the customer to understand requirements for the current increment.
● Select the subset of features to be delivered in this increment.

2. Planning

● Prepare a project plan for the increment.


● Identify resources, schedule, constraints, and risk-handling strategies.

3. Modeling (Analysis & Design)

● Analyze the selected requirements in detail.


● Design the architecture, modules, interfaces, and data structures needed for the increment.

4. Construction (Coding & Testing)

● Implement the designed modules.


● Perform unit testing, integration testing, and validation for the functionality of this increment.

5. Deployment (Delivery & Feedback)

● Deliver the increment as a working release to the customer.


● Collect user feedback based on real-world usage.
● Use feedback to plan improvements and define the next increment.

This cycle is repeated for increment #1, increment #2, … increment #n, until the complete software product is
delivered.
Advantages

● Delivers a working product early, improving customer satisfaction.


● Customer feedback after each increment improves overall quality.
● Reduces initial delivery time by providing a usable core product quickly.
● Requires fewer initial resources, making it useful for limited staffing.
● Helps manage technical risks by implementing complex components in later increments.

Disadvantages

Requires proper planning to ensure smooth integration of all increments.

● Changes in requirements may affect multiple increments.


● Cost may increase due to repeated planning, testing, and revisions.
● Not suitable when requirements are unclear or constantly changing.

‐-----------------------------------------------------‐-----------------------------------------------------‐---------------------------------------
--------------‐--------------

9)Evolutionary Process Models

Definition

● Evolutionary Process Models are iterative software development models in which the system is
developed through repeated cycles (iterations).
● With each iteration, the software becomes more complete, more refined, and closer to the final
product.
● These models are used when requirements are not clearly understood at the beginning or when the
product must evolve over time.

Types of Evolutionary Models

1. Prototyping Model
2. Spiral Model

1. Prototyping Model

Definition

The Prototyping Model is an evolutionary software process model in which an early working model (prototype)
of the system is created to understand and refine unclear requirements.
Working / How It Works

1. Communication:
Developer meets stakeholders to identify basic, known requirements.

2. Quick Design:
A simple design is created focusing on user-visible elements, like UI layout.

3. Build Prototype:
A small, quick working model is developed.

4. Customer Evaluation:
Stakeholders interact with the prototype and give feedback.

5. Refinement:
Requirements are revised based on feedback. Prototype is modified and improved through several
iterations.

6. Finalization:
Once requirements are clear, the prototype is discarded or refined into the final system.

Diagram: Prototyping Model

Process Involved

● Requirement gathering
● Quick design
● Prototype development
● Customer feedback
● Requirement refinement
● Repeat cycle until clarity is achieved
2. Spiral Model

Definition

● The Spiral Model, proposed by Barry Boehm, is a risk-driven evolutionary model that combines the
iterative nature of prototyping with the structured phases of the waterfall model.
● Each loop of the spiral represents a phase of software evolution, focusing on risk analysis and
reduction.

Working / How It Works

1. Determine Objectives:
Identify goals, alternatives, and constraints for the current iteration.

2. Risk Analysis:
Analyze technical and management risks; create strategies to reduce them.

3. Engineering / Development:
Design, code, and test the system for that iteration.

4. Customer Evaluation:
Deliver the iteration to the customer for feedback and approval.

5. Next Iteration:
Plan the next loop of the spiral with updated objectives.

This continues until the fully developed system is completed.

Diagram: Spiral Model

Process Involved
● Communication with stakeholders
● Planning and objective setting
● Detailed risk analysis
● Prototyping / development
● Verification and validation
● Customer review
● Iterative refinement

Final Crisp Summary

Model Definition Working Process Diagram


Focus Involved

Prototyping Builds a quick Repeated Communicat Prototype


Model working model customer ion → Quick cycle
to refine feedback and Design →
unclear refinement Prototype →
requirements Evaluation →
Refinement

Spiral Model Risk-driven Each loop Objective Spiral loops


evolutionary reduces risks Setting →
model and develops Risk Analysis
combining improved →
prototyping + versions Engineering
waterfall → Customer
Evaluation

‐-----------------------------------------------------‐-----------------------------------------------------‐---------------------------------------
--------------‐--------------
10)Boehm’s Spiral Process Model

● The Spiral Model, proposed by Barry Boehm, is an evolutionary software process model that combines
the iterative nature of prototyping with the systematic and controlled approach of the waterfall
model.
● It is risk-driven, meaning that every phase of development focuses on identifying, analyzing, and
reducing risks.
● The spiral model allows rapid development of increasingly more complete versions of the software
through repeated cycles called evolutionary releases.
● Early cycles may produce prototypes or models, whereas later cycles produce more refined and
complete versions of the system.
Neat Diagram of Spiral Model (Figure 2.7)

Each loop around the spiral starts from the center and moves outward, representing the growth of the
software and a reduction of risk.

Working of Boehm’s Spiral Model

The spiral model develops software in loops (spirals).


Each loop is like one round of development.
As the spiral moves outward, the software becomes bigger, better, and more complete.

Each loop of the spiral follows these four main phases, which match the diagram:

1. Communication (Start of Each Loop)

This is the phase where:

● The development team talks to the customer.


● They collect requirements, understand what the customer wants, and clarify doubts

2. Planning (Estimation, Scheduling, Risk Analysis)

This phase focuses on planning the next steps:

● What tasks will be done?


● How much time will they take?
● What risks or problems might happen?
Risk analysis is the most important part.
The team identifies what may go wrong and prepares solutions.

3. Modeling (Analysis and Design)

After planning, the team works on:

● Understanding the detailed requirements (analysis)


● Designing the system or the new features

Sometimes, a prototype or model is created to show the customer.

4. Construction (Code and Test)

Now the actual development happens:

● Coding the features


● Testing them to make sure everything works correctly

This produces a working version of the software.

5. Deployment (Delivery and Feedback)

In this phase:

● The developed version is delivered to the customer


● The customer gives feedback
● This feedback is used in the next spiral loop

How the Diagram Works

● The process starts at the center.


● Each loop around the spiral represents one version or one stage of the software.
● With every loop, the spiral expands outward, meaning:
✔ More features
✔ More detail
✔ Better design
✔ Less risk

At the end of each loop:


➡ The customer reviews the version
➡ The team decides what to do in the next loop
➡ Risks of the next version are studied

This continues until the software is fully developed.


Key Characteristics

● Each loop represents more detailed definition and implementation of the system.
● Anchor point milestones are used after each cycle to ensure customer/stakeholder approval.
● The spiral continues until the software is retired.
● It can be applied to concept development, new product development, or product enhancement.

Advantages of Spiral Model

1. Excellent for large-scale and complex projects


2. Strong risk management
3. Customer involvement at every stage
4. Flexible and adaptable
5. Combines strengths of waterfall and prototyping
6. Early development of prototypes

Disadvantages of Spiral Model

1. Expensive and time-consuming


2. Requires highly skilled risk-assessment experts
3. Difficult for customers to understand
4. Not suitable for small or low-risk projects
5. Uncontrolled if risks are not correctly identified

‐-----------------------------------------------------‐-----------------------------------------------------‐---------------------------------------
--------------‐--------------
11)Comparison of Waterfall Model and Spiral Model

Aspect Waterfall Model Spiral Model

Basic Nature Step-by-step model. Repeating (loop-based)


model.

Development Flow Moves in one straight line Moves in cycles,


from start to finish. improving the software
each time.

Handling Requirements Works well when Works well when


requirements are clear requirements change or
and fixed. are unclear.

Risk Management Almost no focus on risks. Main focus is on finding


and reducing risks.

Customer Involvement Customer involved mostly Customer gives feedback


at the beginning. in every cycle.

Output of Each Cycle Only one final product at Gives prototypes first,
the end. then better versions each
time.

Flexibility Not flexible; changes are Very flexible; changes


hard to make. can be made in each
loop.

Project Planning Planned once at the start. Plan is updated after each
spiral cycle.

Applicability Good for small and simple Good for large, complex,
projects. and risky projects.
Life-Cycle Coverage Used mainly for Can be used from idea
development only. stage to enhancement
and maintenance.

You might also like