0% found this document useful (0 votes)
4 views49 pages

Software Engineering Module 1

Uploaded by

Disha Deshmukh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views49 pages

Software Engineering Module 1

Uploaded by

Disha Deshmukh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

What is Software?

Think of a computer as a really smart robot. The robot is the hardware—the physical stuff
you can touch, like the screen, keyboard, and the chips inside.

Software is simply the set of instructions (the 'brain' or 'recipe') that tell the hardware robot
what to do and how to do it.

The Different Parts of Software

Software isn't just the programs you run; it includes a few things:

 Computer Programs: These are the actual apps you use, like a web browser, a video
game, or a word processor.

 Libraries: These are collections of ready-made code that programmers use, like a
toolbox of useful functions.

 Non-executable Data: This is stuff that comes with the software but isn't a program
itself, like instruction manuals, images, or help files (online documentation or digital
media).

How Software and Hardware Work Together

Software and hardware are completely dependent on each other.

 The hardware is what actually performs the work (the physical action).

 The software is the instructions that tell the hardware what work to perform.

You can't have a useful computer with just one. It's like having a car (hardware) with no
driver or map (software), or a perfect map (software) with no car to drive (hardware).

The Computer's "Language"

Computers only understand a very specific, simple language called machine language. It's all
just groups of binary numbers (zeros and ones) that represent instructions for the CPU (the
Central Processing Unit, or the computer's main brain).

 When you click a button, the software translates that action into a chain of these
binary instructions.

 The processor follows those instructions, like "change the value in this memory
location" or "make the red light turn on."

Writing the Instructions

Since writing programs directly in zeros and ones would be impossible for humans,
programmers use different languages:
1. High-Level Languages (like Python, Java, or C++): These are easier for humans to read
and write because they use words and grammar closer to natural human language.

o To turn this into machine language, we use a special translator program called
a compiler or interpreter.

2. Low-Level Languages (like Assembly Language): These are still more human-readable
than machine language, but they have a very close, direct link to the computer's
hardware instructions.

o These are translated using a tool called an assembler.

The Layers of Interaction

When you use an app, there's a chain of command that goes all the way down to the
hardware:

1. User: You interact with the app.

2. Application Software: The app (like Microsoft Word or Chrome) receives your
command (e.g., "save file").

3. Operating System (OS): The app talks to the OS (like Windows, macOS, or Android),
which manages all the computer's resources. The OS is the "traffic cop."

4. Hardware: The OS tells the physical hardware (like the hard drive) what to do to save
your file.

Basically, the software is the boss, and the hardware is the worker, but the Operating System
is the manager that makes sure everyone is communicating properly.

The Changing Nature and Role of Software


Imagine software is not just an item you buy (like a DVD) but a living, evolving service that is
everywhere. This is the core of how software has changed.

1. Software as an Information Transformer

Software's main job is handling information.

 It's a Transformer: It takes raw data and makes it useful in a specific situation. For
example, it takes raw numbers from sales records and turns them into a colorful,
easy-to-read "Profit Report." This helps businesses make better decisions.

 It's a Gateway: Software is the key that opens the door to the entire internet. It helps
us gather all sorts of information from all over the world (text, videos, images, etc.).

2. Software is More Than Just a Product


Software used to be just a product—you bought a box, installed it, and that was it. Now, it
has a dual role:

 It's a Product: It still delivers computing power. It gives you access to the capabilities
of your hardware (or a network of computers). For example, your phone's calculator
app is the product that lets you use the phone's chip to calculate.

 It's an Interface for Delivering a Product: Think of a company like Netflix. The
streaming app is the interface that delivers the product (the movies and shows). The
software is a platform, a pathway, or a tool used to constantly access and use
something else.

3. Software as the Core Controller

The power of software lies in its ability to control things, no matter where it lives:

 A Universal Engine: Whether it's a tiny app on your smartphone or a massive


program on a corporate mainframe computer, software acts as an information
producer or transformer.

 The Foundation: Just like an engine controls a transport vehicle, software acts as the
basis for controlling:

o The computer itself (the Operating System, the boss).

o The flow of information (networks like Wi-Fi and the Internet).

o The creation and management of other programs (like development tools).

4. The Reasons for Increased Complexity (The Last 50 Years)

Software has become incredibly powerful and complicated, mainly because the physical
computers it runs on have improved so much:

 Better Hardware: Computers are thousands of times faster, have massive amounts of
memory, and better storage. This allows software developers to create much more
complex and capable programs.

 More Options: There are endless varieties of input and output options (touch
screens, voice commands, advanced sensors, etc.), which means the software needs
to be smart enough to manage all of them.

5. How Software is Developed Now

Because modern applications are so complex (like building a skyscraper instead of a small
house), the development process has changed entirely:

 From Individual to Team: In the past, one or two people might have written an entire
application.
 Today, Teamwork is Key: An entire team now works on a single complex application.
Each person is a specialist, responsible for a specific part of the technology (like the
database, the user interface, or the security), all working together to deliver the final
product.

In short, software went from being a simple tool to an all-powerful, complex, and
collaborative system that runs the modern world.

Characteristics of Software
Software is different from physical products, and these differences define its key features:

1. Software is Developed or Engineered, Not Manufactured

Think of building a house versus writing a novel.

 Manufacturing (like building a house): You stamp out millions of identical physical
copies (CDs, chips). The quality control happens after the product is made, by testing
it. The focus is on the process of assembly.

 Engineering/Development (like writing a novel): You are creating the blueprint, the
design, and the code from scratch. The focus is on the design and quality of the
blueprint itself. When software has "bugs" (quality problems), it's usually because
the original design or code had a mistake, not because of a manufacturing flaw.

2. Software Doesn't "Wear Out" (But It Does Deteriorate)

Physical products (like a car or a hard drive) wear out over time due to friction, dust, or age.
Software is different:

 No Wear and Tear: Since software is code, it doesn't suffer from environmental
damage, rust, heat, or vibration. It won't degrade like hardware does.

 Initial Failures: In the beginning, failures are high because of undiscovered design
flaws or bugs. These are usually fixed quickly, and the failure rate drops to a stable,
low level.

 The "Deterioration" Problem: Over time, people keep asking for changes, adding
new features, or fixing old issues. Every time a change is introduced, there is a risk of
adding new errors (bugs). These repeated changes and modifications cause the
failure rate to creep up again. The software doesn't wear out; it deteriorates due to
change.

3. Custom Built Software (Reusability)

Modern software engineering focuses on making new things faster by reusing old things.
 Component Reusability: Programmers design parts of a program (called
"components") so they can be easily used in many different projects, much like using
a standard light switch or door in different houses.

 Example: If a programmer builds a perfect, reusable piece of code that displays a


drop-down menu, they can plug that same piece of code into a hundred different
applications without rewriting it. This saves time and makes new software more
reliable.

4. Efficiency

A good piece of software is efficient if it does its job quickly and uses as few computer
resources as possible.

 Simply Put: The software should get the required result done in a timely manner (it's
fast) and use the available resources (like the CPU and memory) in the smartest way
possible.

5. Maintainability

This is about how easy it is to keep the software working and updated.

 Flexibility for Change: When a customer's needs change, or the government


introduces a new tax law, the software must be modified to fulfill the new
requirements.

 Software Engineering's Role: Good software engineering practices make the code
clean and well-structured, allowing programmers to go in and change a specific part
of the code without having to rebuild the entire product from scratch (unlike trying
to fix a hardware component, which often requires replacing the whole thing).

6. Dependability

This is the most critical characteristic. It means the user can trust the software.

 Trustworthiness: Software is dependable if it is reliable, secure, and always works as


expected to fulfill the customer's needs. If users can trust the system to consistently
provide the services they need, it helps the business achieve customer loyalty and
confidence.

Software Engineering Explained


Software Engineering is essentially the discipline that takes the chaotic world of writing code
and turns it into a structured, professional, and reliable process.

What is Software Engineering? (The Definitions)

Think of it like building a bridge instead of just playing with LEGOs.


 It's Applied Science: It's the method of applying scientific and technical knowledge,
specific procedures, and defined rules to design, develop, test, and maintain
software products.

 It's a Business Approach: It uses technical, scientific, and management approaches


to create the best quality software product that meets the customer's needs.

In short: Software Engineering is a structured, professional way to build reliable software.

The Layered Approach to Software Engineering

Building good software is like building a house—you need a strong foundation before you
put up the roof. Software engineering follows four layered steps:

1. A Quality Focus (The Foundation):

o Everything rests on quality. The most important thing is that the final
software product is reliable, correct, and professional. This is the base layer.

2. Process (The Glue):

o The process is the "glue" that holds everything together. It defines the
sequence of steps, timelines, and milestones for developing the software. It
ensures that the project moves forward in an organized, controlled manner,
not just randomly.

3. Methods (The Technical Skills):

o These are the "how-to" guides and technical skills needed to actually build
the software. They cover things like:

 Understanding what the customer wants (requirements analysis).

 Creating the blueprint (design modeling).

 Writing the code (program construction).

 Testing and support.

4. Tools (The Automation):

o These are the software programs that help the engineer do their job better
and faster. They automate tasks within the "Process" and "Methods" layers
(like code editors, bug trackers, and testing platforms).

Activities of Software Engineering (What Engineers Do)

When an engineer starts a project, they follow a sequence of key activities:

1. Understanding Requirements: The most critical first step is figuring out exactly what
the user or customer needs the software to do.
2. Designing and Decision-Making: Based on the requirements, the team designs the
system and makes decisions about how it will work internally.

3. Constructing the Product: This is where the actual code is written, based on the
designs.

4. Testing and Verification: After the software is built, it must be thoroughly tested to
make sure it performs correctly and meets all the quality and performance
standards.

5. Maintenance: Once the software is in the customer's hands (deployed), engineers


provide ongoing support and fix any new problems that come up.

The Need for Software Engineering (Why Bother?)

Why can't people just write code randomly? Because of these four critical reasons:

1. Dealing with Constant Change: Technology, user needs, and the environment (like
new operating systems) are always changing. Software Engineering provides
structured principles to handle these changes without breaking the whole system.

2. Managing Large, Complex Projects: When software gets massive, a programmer


needs a specific, organized way to build it (like using "modules" or separate,
manageable pieces). Engineering provides the methodology to build huge, complex,
high-quality systems.

3. Catching Bugs Early: If you don't follow a standard method, defects often pop up late
in the project when they are expensive and difficult to fix. Engineering provides
structure and controls to detect and correct problems as early as possible.

4. Scalability and Future Growth: Extending existing software or developing new


features can be very hard and costly. Engineering principles ensure the software is
built in a way that allows it to easily scale (grow bigger) and add new functionality in
the future without costing a fortune.

The Software Process Explained


The Software Process is like a detailed, step-by-step plan or recipe used by a team to create
and manage a software application from beginning to end. It ensures the work is organized,
reliable, and meets the customer's needs.

It follows a sequential flow with six main phases:

(i) Requirement Gathering and Analysis (The Idea Stage) 💡

 What happens: The team talks extensively with the stakeholders (the people who
need and will use the software) to figure out exactly what the system should do.
 Key Questions: Who will use it? How will they interact with it? What are the goals?
What inputs and outputs are needed?

 Output: A detailed Requirement Specification Document (SRS). This document is


essentially the formal contract and wish list for the software.

(ii) Design (The Blueprint Stage) 📐

 What happens: Using the SRS (the "wish list") as input, the engineers create a
blueprint for the system. This describes how the software will work internally.

 Key Details: They plan the structure, the database, the user interface, and all the
connections. Tools like Data Flow Diagrams (charts showing how data moves) are
used.

 Output: The Design Specification. This document specifies the technical details,
including any necessary hardware and internal software structure. This blueprint is
essential for the next phase.

(iii) Implementation Phase (The Construction Stage) 🔨

 What happens: This is the phase where the actual coding begins. The system is
broken down into smaller, manageable pieces called modules, and programmers
write the code for these modules using a specific programming language.

 Note: This is usually the longest phase of the entire development process.

 Output: The actual source code that makes up the final program.

(iv) Testing (The Quality Check Stage) ✅

 What happens: The newly written code is rigorously checked against the original
user requirements to ensure it works correctly and satisfies everyone's needs.

 Testing Types: This includes unit testing (checking small pieces of code), integration
testing (checking if the pieces work together), and system testing (checking the
whole program).

 Output: Corrected and modified software code that is now deemed ready for
release.

(v) Deployment (The Launch Stage) 🚀

 What happens: The finished, tested software is installed and made available for the
customers to start using at their site.

 Key Activity: The customer begins using the software in a real-world setting and
provides initial feedback to the development team about any minor issues or
necessary changes.
(vi) Maintenance (The Upkeep Stage) 🛠️

 What happens: After deployment, users will inevitably discover issues the testing
missed or realize they need new features. The development team is responsible for
solving these problems over time.

 Activities: Fixing bugs, improving performance, making changes based on user


feedback, and adding new functionality to the application as requirements evolve.
This is the ongoing support of the system.

Software Engineering Practice: The Four Steps of


Problem Solving
Software Engineering is essentially a highly structured way to solve problems using a
computer. It follows four main steps, based on how smart people solve any complex puzzle:

1. Understand the Problem (Communication and Analysis)

You can't solve a problem until you know what it is. This is the Discovery Phase.

 Who cares? (Stakeholders): Who are the people who will benefit from the solution
or are paying for it? You must talk to them to understand their needs.

 What is missing? (Unknowns): What data, functions, and specific features are
absolutely necessary to fix the problem?

 Can we break it down? (Compartmentalized): Is the problem too big? Can we split it
into smaller, simpler pieces that are easier to understand and manage?

 Can we draw it? (Graphical Representation): Can we create a simple chart or model
to visualize the problem and its moving parts?

2. Plan the Solution (Modeling and Software Design)

Once you understand the problem, you need a plan before you start building. This is the
Blueprint Phase.

 Have we done this before? (Similar Problems): Have we seen a problem like this?
Can we recognize patterns from previous projects? Is there any existing software or
code we can use?

 Can we recycle? (Reusable Elements): If a similar problem was solved, can we reuse
any of the components or methods from that old solution? (Why build a new door
when you have a good design already?)

 How do the sub-problems fit? (Subproblems): Now that we've broken the main
problem into smaller ones, do we have obvious solutions for those small pieces?
 Can we sketch it? (Design Model): Can we create a detailed design or model that
shows the best way to build the solution? This plan guides the actual coding.

3. Carry Out the Plan (Code Generation)

Now you stop planning and start building, strictly following the blueprint. This is the
Construction Phase.

 Did we follow the plan? (Conform to the plan): Does the code we are writing
directly match the technical design model created in Step 2? We need to make sure
we didn't wander off track.

 Is every piece perfect? (Provably Correct): Is each small part of the solution
(component) working exactly as it should? Has the code and design been carefully
checked and verified by other team members?

4. Examine the Result for Accuracy (Testing and Quality Assurance)

The solution is built, but is it correct? This is the Verification Phase.

 Can we test it all? (Testing Strategy): Do we have a smart plan to test every
important piece of the solution to catch all the bugs?

 Does it meet the needs? (Stakeholder Requirements): Does the final solution
actually produce the results, data, functions, and features that the original
stakeholders asked for in Step 1? Did we deliver the promised solution?

This four-step cycle ensures that software is built logically, professionally, and correctly,
leading to a high-quality product.

Software Development Life Cycle (SDLC)


The Software Development Life Cycle (SDLC) is the organized, structured process that a
software engineering team follows to plan, design, build, test, and maintain a high-quality
software application.

Think of the SDLC as the recipe or roadmap for creating software. It ensures that the project
stays on budget, meets deadlines, and most importantly, satisfies the user's requirements.

The Core Phases of the SDLC

While different models exist, most SDLC processes involve these 5-7 core phases in
sequence:

1. Planning and Requirement Analysis 💡

 Goal: To understand exactly what the software needs to do.


 What Happens: Engineers and stakeholders (users, clients, managers) discuss the
project. They define the goals, scope, and feasibility (is it possible, is it worth the
cost?). All requirements are documented in detail (e.g., in a Software Requirement
Specification or SRS).

2. Design 📐

 Goal: To create a blueprint for the software's architecture.

 What Happens: The team figures out how the software will be built internally. This
includes choosing technology, defining the system's structure, database design, and
user interface (UI). The output is a Design Specification that guides the
programmers.

3. Implementation (Coding) 💻

 Goal: To write the actual source code.

 What Happens: Developers write the code based on the design specifications,
following coding standards. This is often the longest phase. The system is broken
down into small, testable modules.

4. Testing 🔍

 Goal: To find defects and verify the software meets requirements.

 What Happens: Quality Assurance (QA) engineers test the code. They check if the
application works as intended, is secure, and performs well. If bugs are found, the
software goes back to the coding phase for fixes.

5. Deployment 🚀

 Goal: To make the software available to end-users.

 What Happens: The stable, tested software is released into the production
environment. This can be a phased rollout, a simple launch to the public, or
installation on a client's server.

6. Maintenance 🛠️

 Goal: To ensure the software continues to function and evolve.

 What Happens: This is the longest phase, often lasting years. Activities include:

o Corrective: Fixing bugs found by users.

o Adaptive: Updating the software to work with new operating systems or


hardware.
o Perfective: Adding new features or improving performance based on user
feedback.

The Waterfall Model Explained


Imagine you are building a custom house. The Waterfall Model is like the traditional way of
building it: you complete all the plans and blueprints before pouring the foundation, and you
pour the foundation before starting the walls. You move straight down, step-by-step, like
water cascading over a waterfall.

It is the original, most straightforward, and strictly sequential process model in software
development.

The Steps in the Waterfall

The development process moves strictly from one phase to the next. You cannot start a new
phase until the previous one is 100% finished.

0. Feasibility Study (The "Should We Do It?" Check) (Added)

 What happens: Before starting any detailed work, the team checks if the project is
actually worth doing.

 Key Questions: Is it technically possible? Do we have the money (financial


feasibility)? Will it actually solve the business problem (operational feasibility)?

1. Requirement Analysis (The Wish List)

 What happens: You sit down with the client/user and write down every single
feature, function, and detail the final software must have.

 Output: The Software Requirement Specification (SRS)—the complete, locked-down


list of demands.
2. Design (The Blueprint)

 What happens: Based on the locked-down requirement list, engineers create a


blueprint for the software's internal structure and architecture. This is how the
system will work.

 Output: The Design Specification, detailing the software architecture.

3. Implementation (The Coding)

 What happens: Programmers take the blueprint and start writing the actual code.

4. Verification/Testing (The Quality Check)

 What happens: The finished code is tested rigorously against the original
requirements to verify that the software does exactly what the client asked for. Once
testing is successful, the software is delivered.

5. Maintenance (The Upkeep)

 What happens: After delivery, the team fixes any remaining bugs users find and adds
new features as the business needs evolve over time.

Practical Situations When the Waterfall Model Works

The Waterfall Model is rigid, so it is only a good choice when certain conditions are met:

 Requirements are Perfectly Clear: You must know exactly what the final product
should look like from Day One. There are "no ambiguous requirements."

 Product is Stable: The product definition is established, and the client will not ask for
major changes once development starts.

 Technology is Understood: The team is using familiar, well-known technology. There


are no technical unknowns.

 The Project is Short: It works best for smaller, straightforward projects where the
timeline is relatively quick.

 Resources are Available: You have all the necessary people and expertise available
right from the start.

Simply put: Use Waterfall only when you can't imagine anything changing.

Advantages and Disadvantages

👍 Advantages

 Simple to Use: The sequential structure is very easy for non-technical people (like
clients) to understand.
 Easy to Manage: Because every phase has clear starting and end points, it's simple to
track progress.

 Clear Deliverables: You get clear, detailed documents (SRS, Design Spec) at the end
of each stage.

👎 Disadvantages

 Very Difficult to Handle Change: The biggest flaw. If the client asks for a major
change after the design phase, you have to go all the way back up the waterfall,
which is very costly and time-consuming.

 No Working Product Until the End: The customer does not see the actual, functional
software until the Implementation and Testing phases are complete. If a major
misunderstanding occurred in the Requirement phase, it is discovered too late.

 Not Good for Large Projects: For big, multi-year projects, requirements are
guaranteed to change, making Waterfall a risky choice.

The V-Model Explained


 The V-Model is an extension of the basic Waterfall Model, but it's smarter because it
links testing directly to the planning phase. Instead of development going straight
down (like a waterfall), it goes down on the left side and then straight back up on the
right side, forming a "V" shape.

 The central idea is: For every step of planning (Verification), there is a
corresponding step of checking (Validation). You design the test plan for a phase at
the same time you design the actual feature.

1. The Left Side: Verification Phases (Building the Plan)


 The left side is the planning or design side. Verification means "Are we building the
product correctly?"

Test Developed (Validation


Phase What Happens (In Simple Terms)
Partner)
1. Requirements User Acceptance Test (UAT)
You gather all the user needs and
Analysis (The Wish Plan is designed. (What will the
write the final document.
List) user check at the end?)
You analyze the business
2. System Design System Test Plan is designed.
requirements and plan the overall
(High-Level (How will we test the entire
structure (menus, data flows) of the
Blueprint) application as a whole?)
entire system.
Integration Test Design is
3. Architecture You break the system into major
carried out. (How will we test
Design (Mid-Level components or modules and define
that the modules communicate
Blueprint) how they will talk to each other.
correctly?)
You write the detailed, step-by-step
4. Module Design Unit Test Plan is designed.
logic for the smallest pieces of code
(Low-Level (How will we check that the tiny
(modules) that a programmer can
Blueprint) code pieces work?)
start coding.
Coding (The Bottom Programmers write the actual code

of the V) based on all the designs above.

2. The Right Side: Validation Phases (Building the Product and Checking it)

The right side is the testing or checking side. Validation means "Are we building the correct
product (the one the user actually wanted)?"

Verification
Phase What Happens (In Simple Terms)
Partner

Tests are run on the smallest pieces of code (modules)


1. Unit Testing Module Design
to eliminate bugs at the individual level.

Tests are run to ensure that the individual modules


2. Integration Architecture
can correctly connect and communicate with each
Testing Design
other.

Tests are run on the entire application to ensure that


3. System Testing all functional and non-functional requirements (like System Design
speed and security) have been met.

4. User The client/end-user runs tests in a realistic


Requirements
Acceptance environment with actual data to verify the delivered
Analysis
Testing (UAT) system meets their final business needs.
Advantages and Disadvantages of the V-Model

👍 Advantages

 Proactive Defect Tracking: Since you design the test plan alongside the design, you
catch problems and diagnose defects much earlier than in the Waterfall Model. This
saves time and money.

 Simple and Easy: It's still simple to understand and manage because the flow is clear.

 Better Time Management: The explicit planning of tests avoids wasting time during
the later, dedicated testing phase.

👎 Disadvantages

 Very Rigid: Just like Waterfall, it is not flexible. If requirements change mid-way, you
have to go back and update not only the requirement documents but also all the test
documents, which is a big hassle.

 No Early Prototypes: Since coding only starts at the very bottom of the V, you don't
get any early, working versions of the software for the user to try out.

The Incremental Model Explained


Imagine you want to build a new car. In the Waterfall Model, you deliver the complete,
finished car three years later. In the Incremental Model, you deliver a series of working
versions, each better than the last.

The Incremental Model is a way of building software by breaking the huge project into many
smaller, manageable mini-projects or "increments." Each increment delivers a small, usable
chunk of the final product to the customer.

How it Works (Build-by-Build)

1. Initial Requirements: You gather all the requirements upfront (like planning the
entire car).
2. Prioritization: You decide which features are the absolute highest priority (e.g., the
engine, wheels, and steering).

3. Increment 1 (The Core Product):

o The team focuses only on those highest-priority features.

o They go through the Waterfall steps (Design, Develop, Test) for only those
features.

o They deliver a Core Product (a basic, usable car chassis that can drive, but
maybe has no doors or fancy electronics).

4. Customer Feedback & Increment 2:

o The customer starts using the Core Product and gives feedback.

o The team plans the next set of features (e.g., doors and seats).

o They design, develop, and test these new features, and integrate them into
the existing core product.

5. Repeat: This process continues until all the required functionality is delivered, and
the customer has the complete, final product.

Characteristics

 The total system is divided into many small mini-projects.

 The first features tackled are the highest priority requirements.

 After an increment is delivered, the requirements for that specific portion are
"frozen" (locked down).

 The series of releases are called "increments," and each one adds more functionality
to the customer.

Merits (Advantages)

Advantage Explanation
The customer gets a basic, working version of the software much faster
Faster Initial
than in the Waterfall Model. They can start using the core functionality
Delivery
right away.
Since the customer is using the product early, they can give feedback on
Early Customer
real working features. This ensures the final product is what they actually
Feedback
want.
The team only has to test a small chunk of new code in each increment.
Easier to Test
This makes testing more focused, quicker, and finding errors
and Debug
(debugging) is easier.
Advantage Explanation
When you do testing (specifically regression testing—checking that the
Easier to Identify
new changes didn't break the old code), it's easier to isolate problems
Faulty Elements
because only a few changes were made in that small iteration.

Demerits (Disadvantages)

Disadvantage Explanation

The core design might seem fine for a basic product, but as you add
Architecture
more and more features, you might discover late in the process that
Problems May
the original overall system design (architecture) can't handle the
Emerge Late
complexity.

While the initial delivery is fast and cheap, the total overall project
cost can sometimes exceed the initial budget, especially if the original
Cost Overruns
planning wasn't detailed enough or if integrating the new increments
is complicated.

Although the system is built in pieces, the development team still


Requires Clear
needs a clear, global vision of the final complete system to ensure all
Planning
the small pieces will fit together perfectly in the end.

Waterfall Model vs. Incremental Model


Parameter Waterfall Model (The Statue) Incremental Model (The LEGO Castle)

Simplicity Simple Intermediate

The process is a simple, straight The process involves repeating small


line, making it easy to cycles, which is a bit more complex to
understand. manage.

Flexibility to
Difficult Easy
Change

If a requirement changes Changes are incorporated naturally


midway, it's very expensive and between increments, making the model
hard to go "up" the waterfall. more adaptable.

Flexibility Rigid Less Flexible


Parameter Waterfall Model (The Statue) Incremental Model (The LEGO Castle)

It’s more adaptive, but still requires a fair


It's totally locked down; you must
amount of upfront planning for each
stick to the initial plan exactly.
increment.

User
Only at beginning Intermediate
Involvement

The user gives input once at the The user gives input initially and then
start (Requirements), and then provides feedback after each working
waits for the final delivery. increment is delivered.

Risk
High Easily Manageable
Involvement

If you discover a major flaw late Risks are broken down and dealt with in
in the process, the failure is small increments, so issues are spotted
massive. and fixed earlier.

Maintenance Least (Focus) Promotes Maintainability

Since you're continuously adding features


Less emphasis is placed on ease
in a structured way, the model
of maintenance during the initial,
encourages cleaner code and easier
rigid structure.
upkeep later on.

Duration
Long Shorter Initial Delivery
(Initial)

You get a basic, working product fast,


You have to wait a long time for
even though the final complete product
the single, finished product.
might still take a while.

In short:

 Waterfall is best when you are 100% certain of what you need.

 Incremental is best when you want to deliver value quickly and refine the product
based on feedback.

The Iterative Model Explained


Imagine you're trying to draw a portrait. Instead of drawing every detail perfectly the first
time (Waterfall), you sketch a rough outline (Iteration 1), refine the features (Iteration 2),
add shading (Iteration 3), and so on, until the portrait is finished.
The Iterative Model builds software through repeated, fixed cycles called iterations. Each
iteration produces a new, improved version of the software. You start with a basic idea,
build a basic version, get feedback, and then use that feedback to plan the next, more
detailed version.

The Process (Iterations)

1. Start Simple: Begin with some known requirements.

2. Cycle (Iteration): The team goes through the basic development steps (Design, Code,
Test, Implement) to create a working version of the software.

3. Review: The user or client reviews this version and provides feedback and suggests
changes.

4. Loop: If changes are needed, the team starts the next iteration, adding more features
or refining existing ones based on the review.

5. Finalize: After the final iteration, the complete product is deployed and enters the
maintenance phase.

Phases within Each Iteration

Each cycle repeats a series of steps:

1. Requirement Gathering & Analysis:

o The team checks if the customer's needs can be met within the budget and
plan.

o They focus on the requirements for this specific iteration.

2. Design Phase:

o Engineers design the software's overall structure and detailed internal plan
(algorithms, database, etc.) for the features in this iteration.

3. Coding Phase:
o Programmers write the actual code using appropriate languages and tools to
implement the design.

4. Testing Phase:

o Testers rigorously check the newly added code and features to ensure they
meet requirements and haven't broken any old features.

5. Review Phase:

o The working software is shown to the stakeholders. They check it against


current requirements and discuss the plan for the next iteration.

6. Implementation, Deployment & Maintenance:

o The product is implemented (put into the working environment) at the end of
many successful iterations, and maintenance starts thereafter.

When to Use the Iterative Model

The Iterative Model is best when:

 Changes are Expected: When you know the requirements might change in the future
or the project involves high-risk features.

 The Project is Large: It helps break down a massive project into smaller, manageable
chunks.

 New Technology: When the team is using new or unfamiliar technology that they are
learning as they go.

 Requirements are Clearly Defined: Even though changes are expected, the core
requirements must be well-understood at the start.

Advantages and Disadvantages

👍 Advantages (Merits)

 Handles Change Easily: It is very flexible and can easily accept the changing needs of
a project.

 Early Risk Management: Risks are identified and solved early in the process, during
the first iterations.

 Easier Testing: Since the team is only testing smaller chunks of new code in each
cycle, testing and debugging are easier and more focused.

 Parallel Development: Different teams can work on different parts of the system at
the same time, speeding things up.

👎 Disadvantages (Demerits)
 Not for Small Projects: The overhead (planning the cycles, managing changes) is too
much for simple, small projects.

 Budget/Schedule Risk: Because requirements can change repeatedly, the project can
go over budget and the final completion date is not confirmed at the start.

 More Resources Needed: Because of the repeated cycles of design and review, the
project may require more people and time overall.

 Design Instability: Constant changes can sometimes lead to the overall system design
being changed repeatedly, which can create hidden problems.

The Spiral Model Explained


Imagine you are building a new spaceship. You don't build the whole thing in one go, and
you certainly don't use a fixed blueprint. Instead, you build a small prototype, test it heavily
for dangers (risk), learn from it, and then build a bigger, better version, constantly repeating
this cycle.

The Spiral Model is a combination of the Waterfall Model (step-by-step) and the Iterative
Model (repeated cycles), with a massive focus on Risk Analysis at every turn. The process
circles outward, like a spiral, with each loop being a full development cycle that delivers an
increasingly complete version of the software.

The Four Phases of Each Loop (Spiral)

Every time the team goes around the spiral, they complete these four activities:

1. Identification (Figure it Out) 💡

 Goal: Define the objectives for the current section of the product and identify the
constraints (like budget or time).

 What Happens: The team talks to the customer to figure out a small set of high-
priority requirements for this spiral.

2. Design (Plan it) 📐


 Goal: Create the blueprint for the features identified in Step 1.

 What Happens: Initially, this is a conceptual design (a rough sketch). In later spirals,
it becomes more detailed, covering the logical design, physical structure, and
architecture of the system.

3. Construct (Build it) 🔨

 Goal: Build a working version of the software for the features designed in Step 2.

 What Happens: Developers write the code. In the first spiral, this might just be a
prototype (a mock-up for feedback). In later spirals, it’s a detailed, working
increment of the final software.

4. Evaluation and Risk Analysis (Check for Danger) ⚠️

 Goal: Examine the result, plan the next spiral, and minimize potential problems. This
is the most critical phase.

 What Happens:

o The customer evaluates the software/prototype built in the previous step.

o The team identifies and monitors risks (Will we run out of money? Is the
technology too hard? Are the requirements changing too much?).

o Based on the evaluation and risk assessment, the decision is made on


whether to proceed with the next spiral, modify the plan, or stop the project.

Advantages and Disadvantages

👍 Advantages (Merits)

 Highly Flexible: It's very flexible to changing requirements because you can adjust
the plan at the start of every new spiral.

 Excellent Risk Management: Risks (like budget overruns or technical difficulties) are
actively identified, tracked, and resolved in every cycle, making the whole project
safer.

 Customer Visibility: The user gets to see and interact with the system from the first
prototype (Iteration 1) onwards, ensuring the final product is what they wanted.

 Accurate Requirements: Requirements become clearer and more accurate with each
spiral as the user sees working software.

👎 Disadvantages (Demerits)

 Hard to Manage: It's difficult to manage the process because the number of spirals
and the budget are often not fixed upfront.
 Not for Small Projects: The entire process is too complex and costly to implement for
simple, small software applications.

 Can Run Indefinitely: Without strict control, the project could potentially keep
spiraling, with the customer always wanting one more feature, leading to delays.

 Excessive Documentation: Because every spiral is a full cycle, a lot of documentation


(plans, risk reports, designs) must be prepared for each iteration.

Agile Model
Agile means "the ability to respond to changes". It is the most used method today because
it is flexible, fast, and constantly involves the customer.

Instead of building a product all at once (like Waterfall), Agile works in short, repeating
cycles called iterations (usually 2–3 weeks long). Each iteration delivers a working, refined
piece of the software.

The Core Idea (Agile Values)

Agile is based on four core values that prioritize:

1. Individuals and Interactions over Processes and Tools. (People talking is more
important than paperwork.)

2. Working Software over Comprehensive Documentation. (A functional app is better


than a huge instruction manual.)

3. Customer Collaboration over Contract Negotiation. (Working with the client daily is
better than arguing over legal documents.)

4. Responding to Change over Following a Plan. (Being flexible is better than rigidly
sticking to an outdated plan.)

Traditional (Waterfall) vs. Agile Model

Imagine you are building an app like Instagram with many features (Follow, Search, Post
photos, etc.):
Feature Traditional (Waterfall) Model Agile Model

Long. All phases are done sequentially


Short Cycles. The team does all phases
(Requirements → Design → Code →
Time (Requirements → Design → Code →
Test). The whole team focuses on
Span Test) in short, repeated cycles (e.g., 2–3
requirements for 3 months, then design
weeks).
for 3 months, etc.

Multiple deliveries of functional


One delivery at the very end (e.g., in
software (e.g., every month). In Iteration
Delivery October). The customer doesn't see a
1, you deliver "Follow/Unfollow." In
working product until then.
Iteration 2, you deliver "Post Photos."

Easy. Changes are expected and


Difficult. If the customer changes their
Change incorporated into the next iteration's
mind in July, it creates massive delays.
plan.

Agile Principles (The Rules for the Team)

Agile teams follow these rules to ensure flexibility and value:

1. Satisfy the Customer: The main goal is to deliver working software to the customer
early and continuously.

2. Welcome Change: Be flexible about changing requirements at any point; it's


considered normal.

3. Frequent Delivery: Deliver functional software in short, predictable cycles (like every
few weeks).

4. Transparency & Collaboration: Business people and developers must work together
closely and honestly.

5. Motivated Team: Give the team a good environment, support, and motivation for
better results.

6. Face-to-Face Communication: Talking directly is the most effective way to


communicate with the customer and team.

7. Technical Excellence: Always focus on good design and following high code
standards.

8. Sustainable Pace: Work at a steady speed that the team can maintain indefinitely.

9. Simplicity: Get the maximum result with the least amount of effort by avoiding
unnecessary tasks.
10. Self-Organizing Teams: The best solutions come from experienced teams that
manage their own work.

11. Regular Reflection: The team regularly analyzes and adjusts its own work process to
improve continuously.

When to Use the Agile Model

The Agile Model is the best choice when:

1. Project Size is Large: It breaks down huge, complex projects into manageable pieces.

2. Frequent Changes are Required: If the market is volatile or the customer is still
unsure about the final product.

3. Customer is Highly Available: The customer must be ready to meet and provide
feedback all the time.

4. Team is Highly Qualified: The team needs to be experienced and disciplined because
they have more freedom (less strict documentation).

5. Flexible Timelines/Budget: The project has some flexibility because constant


changes can sometimes extend the schedule or budget.

Advantages and Disadvantages

👍 Advantages

 Customer Satisfaction: High involvement and early delivery lead to happier


customers.

 Strong Communication: Promotes constant and clear talk between the team and the
customer.

 Realistic Approach: It adapts to how software is developed in the real world (where
things always change).

 Reduces Total Development Time: By delivering value quickly, it feels faster overall.

 Accepts Changes: Changes can be incorporated at any time with minimal disruption.

👎 Disadvantages

 Lack of Proper Documentation: Agile often prioritizes working code over detailed
documents. If the original developers leave, maintaining the system can become
difficult.

 Heavy Customer Dependence: The process depends heavily on the customer giving
clear, consistent feedback. If the customer is unclear or unavailable, the team can
waste time going in the wrong direction.
Scrum Model
What is Scrum?

Scrum is a specific set of rules and practices that teams use to manage complex projects,
especially software development. It is an Agile Framework—meaning it is flexible, iterative,
and focused on quickly delivering value.

The core idea of Scrum is to break down large projects into small, fixed periods of work
called sprints.

Key Concepts

 Sprint: A short, fixed period of time (usually two weeks, never more than one month)
during which the team works to complete a set of tasks and produce a working piece
of software.

 Product Backlog: A single, prioritized list of all the desired features or requirements
for the final product, maintained by the Product Owner. Think of it as the ultimate
"wish list."

 Sprint Backlog: A short list of high-priority tasks pulled from the Product Backlog that
the team commits to finishing during the current sprint.

The Three Core Roles

Scrum defines three specific roles to organize the team:

1. Product Owner (The Voice of the Customer/Boss):

o Job: Decides what to build next by maintaining and prioritizing the Product
Backlog (the wish list) based on market value.

o Responsibility: Accepts or rejects the work done by the team at the end of
the sprint.
2. Scrum Master (The Coach/Protector):

o Job: Ensures the team follows Scrum rules and helps the team be as
productive as possible.

o Responsibility: Conducts the daily meetings, removes any obstacles


(impediments) facing the team, and shields the team from outside
distractions.

3. Scrum Team (The Builders):

o Job: They are cross-functional (have all the skills needed) and self-organizing.
They do the actual work of design, coding, and testing.

o Responsibility: Determines how to execute the tasks and which tasks they can
commit to finishing in the sprint. (Teams are usually 3 to 9 members).

Key Meetings (The Process)

 Daily Scrum (Stand-up): A short, 15-minute meeting held every day. Each team
member answers three questions:

1. What did you do since the last meeting?

2. What obstacles are you facing?

3. What do you plan to accomplish by the next meeting?

 Sprint Review (Demo): Held at the end of the sprint. The team shows the working
software increment to the customer and Product Owner for evaluation.

 Sprint Retrospective: Held after the Review. The team discusses how they worked
during the sprint and identifies ways to improve their process for the next one.

Advantages and Disadvantages of Scrum

👍 Advantages

 Breaks Down Large Projects: Complex projects are easily managed by splitting them
into small sprints.

 Customer Involvement: Customers are actively involved through reviews and


feedback, ensuring the results are what they truly need.

 Clear Visibility: Daily meetings and reviews ensure everyone (team, managers,
customer) knows the status of the project and what is being worked on.

 Budget and Time Friendly: By focusing on short cycles, it's easier to track budget
spent and ensures quick, time-boxed delivery.

👎 Disadvantages
 Sprint Lock-Down: Once the tasks for a sprint are chosen (the Sprint Backlog), they
cannot be changed until the sprint is finished.

 Requires High Commitment: The entire team must be strongly committed to the
daily meetings and the sprint goals for the process to work.

 Key Member Risk: If a crucial team member leaves mid-sprint, the project can be
severely impacted due to the intense collaboration required.

 Quality Dependence: Because development is so fast, achieving high quality relies


heavily on implementing an aggressive and rigorous testing process within every
sprint.

Extreme Programming (XP)


Extreme Programming (XP) is an Agile software development approach that takes the most
beneficial parts of traditional software engineering and applies them at "extreme levels" to
improve software quality and quickly adapt to changing customer needs.

It's all about short cycles, constant testing, and tight collaboration.

How XP Works (The Planning/Feedback Loops)

The XP process is a series of nested loops that range from long-term planning down to
second-by-second coding:

 Release Plan (Months): The long-term plan that sets the scope for the next few
months.

 Iteration Plan (Weeks): A short plan (usually a week or two) that details the specific
features to be delivered in that cycle.

 Acceptance Test (Days): The customer defines how the features will be tested to
prove they work.
 Stand-up Meeting (One Day): A quick daily meeting for the team to coordinate and
solve immediate problems.

 Pair Negotiation (Hours): Developers and customers discuss specific implementation


details.

 Unit Test (Minutes): Writing small, automated tests that check if tiny pieces of code
work correctly.

 Pair Programming (Seconds): The act of writing the code itself, done by two
programmers at one computer.

The process is characterized by frequent small releases and continuous feedback at every
level.

The Five Core Values of XP

XP is built around five fundamental values that guide the team's behavior:

1. Communication

 Simple Idea: Software development is a team effort, so everyone must share the
same understanding.

 How it's Achieved: XP favors frequent, informal talk (face-to-face) over writing long
formal documents. The goal is to give all developers and users a shared view of the
system.

2. Simplicity

 Simple Idea: Always start with the simplest solution that works. Don't add features
or complexity until they are actually needed.

 The Motto (YAGNI): "You Aren't Gonna Need It." The team avoids coding for future
requirements, which saves time and resources now.

3. Feedback

 Simple Idea: Getting quick, direct information about the system's status is the best
way to correct course.

 Three Types of Feedback:

1. From the System: Developers get instant feedback when their unit tests or
integration tests fail.

2. From the Customer: The customer regularly reviews the working software
(Acceptance Tests) and directs the development.
3. From the Team: The team gets feedback on time estimates and feasibility
when the customer presents new requirements.

4. Courage

 Simple Idea: The bravery to make difficult decisions that benefit the project long-
term.

 What it Means:

o Designing for Today: Having the courage to design and code only for the
present, not investing heavily in features that might be needed tomorrow.

o Refactoring: Having the courage to constantly review the code and modify it
(refactor) to improve quality, even if it takes effort.

o Persistence: The courage to stick with a complex problem until it's solved.

5. Respect

 Simple Idea: Showing mutual respect for colleagues and maintaining self-respect
through quality work.

 How it's Shown:

o Respect for Others: Programmers do not commit code changes that break
the system or delay their peers' work.

o Self-Respect: Always striving for the highest quality and seeking the best
design solutions.

o This value ensures high team motivation and loyalty.

Comparison of Software Development Models


This table compares the fundamental nature, structure, and risk profile of each model.

Waterfall Incrementa Iterative Agile / Scrum /


Feature V-Model Spiral Model
Model l Model Model XP

Repeated
Risk-driven
V-shaped Waterfall Repeated
Strictly cycles Short, fixed
(testing is cycles cycles
linear (repeating cycles (sprints)
done in (build A, refining the
Structure (one step planning, risk with
parallel then build entire
after analysis, continuous
with A+B, then system each
another). engineering, collaboration.
design). build time.
evaluation).
A+B+C).
Waterfall Incrementa Iterative Agile / Scrum /
Feature V-Model Spiral Model
Model l Model Model XP

Medium High
Low (can change (change is High (designed Very High
Flexibility Very Low (rigid, but requiremen expected to manage (change is
to Change (rigid). better ts for future and change and welcomed at
testing). increments) incorporate risk). any point).
. d).

Low
(mostly at
Low
the Medium High (after High (after
Customer (mostly Very High
beginning (after each each each
Involvemen at the (continuous/da
and increment iteration spiral/prototyp
t beginning ily interaction).
acceptan delivery). review). e).
).
ce
testing).

Early
Early Very Early
(delivers a Early (delivers
Working Late (only Late (only (delivers a (delivers
basic prototypes or
Software at the at the basic core working
version, working
Delivery end). end). product features every
then increments).
first). few weeks).
improves it).

Good
(risks Good (risks Good (risks Excellent
Poor Excellent
Risk found isolated to addressed (primary focus
(risks (constant
Manageme earlier small with each is on
found too review and
nt due to increments) refinement identifying and
late). adaptation).
paired . cycle). mitigating risk).
testing).

When to Use Each Model and Examples


This table helps determine the best model based on the project's characteristics and goals.
Model When to Use It When Not to Use It Example

Requirements are 100%


Project is large,
fixed, clear, and Simple, well-defined
complex, or
Waterfall understood upfront. software for hardware
requirements are likely
Project is short, simple, and drivers.
to change.
has no ambiguities.

Requirements are fixed and


Medical device software
the project demands Projects with vague or
V-Model or aerospace control
extremely high reliability changing requirements.
systems.
(zero defects are critical).

Building a basic e-
You need to deliver core
commerce site with just
features to the market A clear vision for the
Incremental purchasing, then later
quickly, then add more final system is missing.
adding user profiles and
features over time.
reviews.

Requirements are complex Developing complex


For small, simple
or likely to evolve, but a business intelligence (BI)
projects where
Iterative single overall vision is systems where data
repeated cycles are
needed. You want to refine reporting is continuously
unnecessary overhead.
a single product repeatedly. refined.

Simple, low-risk
The project is very large, Large-scale defense or
projects where the
high-risk, and the client is government projects
Spiral complexity of the
unsure about the final with significant technical
model adds
requirements. and budget uncertainty.
unnecessary cost.

Requirements are
Customer is Building a mobile app
expected to change
unavailable, or the final (like Instagram or Uber)
frequently, customer
Agile product requires or a complex website,
collaboration is possible
(Scrum/XP) extensive, fixed where features are
daily, and fast delivery of
documentation released and refined
working features is a
upfront. every few weeks.
priority.

PYQS
Scrum: The Agile SDLC Model

Scrum is a highly popular framework within the Agile methodology, used for managing
complex software development. It is an iterative and incremental process designed to
deliver value quickly by allowing teams to adapt to changing requirements. The work is
broken down into fixed, short time periods called Sprints.

Illustration of the Scrum Framework

The Scrum process is cyclical and involves specific roles, artifacts, and ceremonies.

Explanation of Key Scrum Terms

Scrum Framework

The Scrum Framework is the complete structure of roles, artifacts, and events (ceremonies)
that guide the development team. It is a lightweight framework that provides a minimum set
of rules to achieve maximum flexibility and control.

Roles

1. Product Owner (PO)

o The sole voice of the customer and the business.

o Prioritizes the Product Backlog based on market value.

o Decides what is built.

2. Scrum Master (SM)

o The servant-leader and coach for the Scrum Team.

o Ensures the team adheres to Scrum principles and practices.

o Removes obstacles (impediments) that block the team's progress.

3. Scrum Team

o A small group of 3-9 developers, designers, and testers who are self-
organizing and cross-functional (they have all the skills needed to deliver the
increment).
o Decides how to turn the Sprint Backlog items into a working product
increment.

Artifacts (The Documents/Lists)

1. Product Backlog

o The single, dynamic, prioritized list of all features, requirements,


enhancements, and fixes (often called User Stories) for the product.

o It represents the complete "wish list" for the final product.

2. Sprint Backlog

o A subset of items taken from the Product Backlog that the Scrum Team
commits to completing during the current Sprint.

o It represents the team's plan for the Sprint.

Time-Boxes (The Events/Ceremonies)

1. Sprint

o The fixed time-box (usually 2 to 4 weeks) during which a usable, potentially


releasable product increment is created.

o Its duration and goal are fixed and cannot be changed once the sprint starts.

2. Ceremonies

o The mandatory formal events used in Scrum to promote transparency and


inspect and adapt the process. These include Sprint Planning, Daily Scrum,
Sprint Review, and Sprint Retrospective.

3. Sprint Planning

o A meeting at the start of the Sprint where the Product Owner and Scrum
Team discuss the high-priority items.

o The team selects items for the Sprint Backlog and defines the Sprint Goal
(what the team plans to achieve).

Tracking Tool

Burn-down Charts

 A publicly displayed graphical tool that tracks the remaining work (typically hours or
story points) against the time remaining in the Sprint.

 It allows the team and the Scrum Master to visually monitor progress and identify
potential problems or delays early.
Advantages and Disadvantages

👍 Advantages (Merits)

 Highly Flexible: It's very flexible to changing requirements because you can adjust
the plan at the start of every new spiral.

 Excellent Risk Management: Risks (like budget overruns or technical difficulties) are
actively identified, tracked, and resolved in every cycle, making the whole project
safer.

 Customer Visibility: The user gets to see and interact with the system from the first
prototype (Iteration 1) onwards, ensuring the final product is what they wanted.

 Accurate Requirements: Requirements become clearer and more accurate with each
spiral as the user sees working software.

👎 Disadvantages (Demerits)

 Hard to Manage: It's difficult to manage the process because the number of spirals
and the budget are often not fixed upfront.

 Not for Small Projects: The entire process is too complex and costly to implement for
simple, small software applications.

 Can Run Indefinitely: Without strict control, the project could potentially keep
spiraling, with the customer always wanting one more feature, leading to delays.

 Excessive Documentation: Because every spiral is a full cycle, a lot of documentation


(plans, risk reports, designs) must be prepared for each iteration.
i. Software for an Academic Institution (Automation System)

The suitable model for this scenario is the Incremental Model.

Reasons:

1. High Reuse and Predictability: The project involves significant reuse (70%) and
modification (20%) of existing, similar software. This suggests that the core system
architecture and requirements are well-understood and relatively stable, which
aligns well with the planned nature of Incremental development.

2. Modular Functionality: The system's functions (registration, grading, fees, inventory,


salary) are naturally separate modules. The Incremental Model allows the institution
to prioritize and deploy these functions one by one (e.g., release Course Registration
first, then Fee Collection), delivering early value.

3. Controlled Integration: By building and integrating the 10% new code and 20%
modifications in stages, the team can control the risk associated with customizing
the existing system, testing each part thoroughly before moving to the next.

ii. New Mobile Operating System (OS Upgrade)

The most suitable model for this scenario is the Spiral Model.

Reasons:

1. High Technical Risk: Developing a new operating system or major upgrade involves
significant technical challenges and high-risk features (e.g., power usage
minimization, efficient 4G integration). The Spiral Model is specifically designed to
manage and mitigate such high risks through continuous analysis and prototyping.

2. Complex Requirements & Optimization: Requirements like efficient power usage


and direct cloud backup often require research, experimentation, and optimization.
The Spiral Model mandates a Risk Analysis phase in every loop, making it ideal for
testing feasibility and technical options before committing to a full design.

3. Need for Prototypes and Evolution: The project will benefit from building and
evaluating prototypes (small, working versions) to confirm technical feasibility for
specific features (like 4G efficiency) before moving on. The iterative nature of the
Spiral Model ensures the OS evolves logically, reducing the chance of costly design
flaws in the final product.

Part 1: Relating Properties to Process Models

The goal is to relate one or more properties (E-J) to the given process models (A-D).

Process
Suggested Property/ies Justification
Model

Waterfall breaks the entire project into distinct,


non-overlapping phases (Requirements,
J) Uses "divide and conquer"
A) Waterfall Design, Coding, etc.) to manage complexity,
breakdown of task
which is a classic "divide and conquer"
approach.

G) Need to get basic


Incremental delivers a core, usable product
B) functionality early in market,
quickly (G) by dividing the system into
Incremental J) Uses "divide and conquer"
functional increments (J).
breakdown of task

Rapid Application Development (RAD) heavily


H) Increases reusability, G)
C) RAD relies on reusability (H) through component
Need to get basic
Model assembly and aims for quick delivery of
functionality early in market
working prototypes (G).

Spiral's primary focus is on risk analysis (e.g.,


F) Porting an existing product
D) Spiral technical risk of porting to a new platform) at
to a new platform
every stage before committing to a full design.
(Note: The properties listed in the image are highly debatable in the context of only these
four models. For instance, the property "Porting an existing product to a new platform" is
better suited to the Spiral model due to the high technical risk involved, rather than the
Waterfall model, as suggested in the provided answer key.)

Part 2: List 3 Reasons Why a System Should Be Analyzed Before It Is Implemented

System analysis is crucial for managing risk, costs, and scope before any implementation
begins.

1. To Determine Feasibility (Technical, Economic, Operational):

o Analysis ensures the project is not just technically possible, but also
financially viable (will the benefits outweigh the costs?) and operationally
effective (will the users actually be able and willing to use the new system?).

2. To Define the Scope and Boundaries:

o Analysis establishes the clear system boundaries—what the system will and
will not do. This prevents scope creep later on, which can derail budget and
schedule.

3. To Validate User Requirements (Building the Right Product):

o Analysis ensures that the gathered requirements accurately reflect the


customer's true needs and business goals. This is the last chance to fix
misunderstandings before committing to the costly phases of design and
coding.

1. User Story Identification and Justification

A good user story focuses on what the user wants to achieve and why (the business value),
rather than specifying how the system works (the implementation detail). A good format is:
"As a [Role], I want [Goal/Feature] so that [Business Value]."

a) As a user I want the system to use log4j to log all the messages so as to detect errors.

This is a Bad User Story.


Justification: The story specifies a technical solution (log4j) which is an internal
implementation detail, not a user requirement. The user shouldn't care how messages are
logged, only that errors are detected.

Better Version: "As a system administrator, I want the system to log all error messages so
that I can quickly detect and troubleshoot system failures." (This focuses on the "what" and
"why").

b) As a user I want to export data to XML so as to use data in XML format.

This is a Good User Story.

Justification: While it mentions a technical format (XML), the format itself is the required
feature and value for the user. The user needs the data in that specific format to interface
with another external system or tool. The story clearly identifies the user's goal (export
data) and the value (use the data in the required format).

2. Discussion of SCRUM Process, Artifacts, Roles, and Ceremonies

Scrum is a lightweight, iterative, and incremental framework for managing complex work,
often used for software development. The core of Scrum is the Sprint (a fixed-length
iteration), where a small, cross-functional team works to deliver a potentially shippable
product increment.

The SCRUM Process (The Cycle)

The Scrum process is driven by the Sprint cycle:

1. Preparation: The Product Owner maintains the Product Backlog (the prioritized
"wish list").

2. Sprint Planning: The team selects high-priority items from the Product Backlog to
create the Sprint Backlog.

3. Execution: The team works on the Sprint Backlog items during the Sprint (typically 2-
4 weeks).

4. Daily Coordination: The team meets daily for the Daily Scrum to coordinate and
identify impediments.

5. Review: The Sprint Review is held to demonstrate the working increment to


stakeholders.

6. Improve: The Sprint Retrospective is held for the team to inspect and adapt its
process for the next Sprint.

Roles (Who does What)


Role Description

Product Owner The voice of the customer. Responsible for maximizing the value of the
(PO) product and managing the Product Backlog.

Scrum Master The servant-leader. Responsible for promoting and supporting Scrum,
(SM) removing impediments (obstacles) for the team, and facilitating meetings.

Development A self-organizing, cross-functional team that builds the product


Team increment. They own the how of the work.

Export to Sheets

Artifacts (What is Created)

Artifact Description

Product A dynamic, prioritized list of all work needed for the product (features,
Backlog bugs, etc.).

A list of Product Backlog items the team commits to completing in the


Sprint Backlog
current Sprint, plus the plan for doing the work.

Product The usable, potentially releasable result of the Sprint, plus the sum of all
Increment previous Increments.

Ceremonies (The Meetings)

Ceremony Purpose Frequency/Duration

Define the Sprint Goal and select items Start of the Sprint (e.g., 8 hours
Sprint Planning
for the Sprint Backlog. for a 4-week Sprint).

Team coordination: what was done, what


Daily Scrum Daily (15 minutes, standing up).
will be done, and what obstacles exist.

Demonstrate the Product Increment to End of the Sprint (e.g., 4 hours


Sprint Review
stakeholders and gather feedback. for a 4-week Sprint).

Team inspects its own process (people,


Sprint End of the Sprint (e.g., 3 hours
relationships, tools) and plans
Retrospective for a 4-week Sprint).
improvements.
uitable Software Process Models and Justification

1. Unknown/very few known requirements.

Suitable Model: Spiral Model or Prototyping Model.

Justification: When requirements are largely unknown, a process model must emphasize
discovery and risk reduction. The Spiral Model is ideal because its first phases are dedicated
to identifying requirements and building prototypes to clarify customer needs before
committing to large-scale development. Prototyping allows the customer to interact with a
working model to refine the requirements.

2. Requirements are completely known but do not have enough team members to
develop.

Suitable Model: Waterfall Model or V-Model.

Justification: Since the requirements are completely known, there's little risk of future
change, which fits the sequential nature of Waterfall. Furthermore, since the team is
constrained (not enough members), using a highly documented and disciplined model like
Waterfall or V-Model is essential. This ensures that the few team members can follow a
clear, predictable plan and that documentation is sufficient to onboard new members later
without disrupting the process.

3. Risk involved in the system is medium to high.

Suitable Model: Spiral Model.

Justification: The Spiral Model is the only process model where Risk Analysis is a
mandatory, core activity in every development loop. For projects with medium to high risk,
the spiral approach ensures that technical or management risks are identified, monitored,
and proactively mitigated through planning and prototyping before they lead to project
failure.

4. Requirements are known but delivery is time-boxed.


Suitable Model: Agile (Scrum).

Justification: Agile (specifically Scrum) uses fixed-duration iterations called Sprints (time-
boxes). Even though requirements are known, using an iterative approach allows the team
to deliver the highest-priority functional components first within the strict time limits,
maximizing business value at fixed intervals and providing a working product as soon as
possible.

5. Applications to be developed for added functionality using reusable components in


short duration.

Suitable Model: Rapid Application Development (RAD) or Incremental Model.

Justification: RAD is specifically designed for quick development using reusable components
and rapid prototyping. Its focus on short time-boxes and component assembly makes it
highly efficient for delivering added functionality quickly. The Incremental Model is also
suitable as it breaks down the added functionality into successive releases built in short
durations.

Extreme Programming (XP) Model and Core Practices

Extreme Programming (XP) is a disciplined Agile software development methodology


designed to produce higher-quality software and be highly responsive to changing customer
requirements. It emphasizes short development cycles, continuous feedback, and relies on
five core values: Communication, Simplicity, Feedback, Courage, and Respect.

XP Illustration (Planning/Feedback Loops)

The XP process is characterized by a series of nested loops, showing continuous planning,


development, and checking across different time scales:

The loops progress from long-term planning (Months) down to second-by-second coding
(Seconds), illustrating continuous feedback at every level of the project.

Core XP Terms Explained

1. Pair Programming

Pair Programming is an engineering practice where two programmers work together at one
workstation on the same code.

 Driver: One programmer writes the code and controls the keyboard.
 Navigator: The second programmer continuously reviews the code being typed,
looks for errors, and thinks about the strategic direction of the task.

Benefit: This practice leads to fewer defects and better-designed code because the code is
constantly being reviewed, and knowledge is shared immediately between two people.

2. Test-Driven Development (TDD)

Test-Driven Development (TDD) is an essential development practice where the


programmer writes an automated test before writing the actual functional code.

The process follows a "Red-Green-Refactor" cycle:

1. Red: Write a small test that fails (because the code doesn't exist yet).

2. Green: Write the minimum amount of code required to make the test pass.

3. Refactor: Clean up the code while ensuring all tests still pass.

Benefit: TDD ensures that every piece of code is verifiable, leads to a comprehensive set of
tests, and results in simple, well-structured code.

3. Refactoring

Refactoring is the process of restructuring existing computer code—changing its internal


structure without altering its external behavior (functionality).

 It involves practices like simplifying method names, breaking large methods into
smaller ones, and eliminating duplicate code.

 It is performed continuously throughout the project, often after a feature has been
implemented or after TDD's "Green" phase.

Benefit: Refactoring keeps the code clean, readable, and well-designed, which reduces the
cost and effort of adding future features or fixing bugs (improving maintainability).

Agile Principles (The Rules for the Team)

Agile teams follow these rules to ensure flexibility and value:

1. Satisfy the Customer: The main goal is to deliver working software to the customer
early and continuously.

2. Welcome Change: Be flexible about changing requirements at any point; it's


considered normal.
3. Frequent Delivery: Deliver functional software in short, predictable cycles (like every
few weeks).

4. Transparency & Collaboration: Business people and developers must work together
closely and honestly.

5. Motivated Team: Give the team a good environment, support, and motivation for
better results.

6. Face-to-Face Communication: Talking directly is the most effective way to


communicate with the customer and team.

7. Technical Excellence: Always focus on good design and following high code
standards.

8. Sustainable Pace: Work at a steady speed that the team can maintain indefinitely.

9. Simplicity: Get the maximum result with the least amount of effort by avoiding
unnecessary tasks.

10. Self-Organizing Teams: The best solutions come from experienced teams that
manage their own work.

11. Regular Reflection: The team regularly analyzes and adjusts its own work process to
improve continuously.

Q1. A) Fundamental Activities Common to All Process Models

Regardless of the specific software development life cycle (SDLC) model used (Waterfall,
Agile, Spiral, etc.), there are four fundamental activities that must be performed in any
successful software project:

1. Software Specification (What):

o Defining what the system should do. This involves capturing, analyzing, and
documenting the customer's requirements and constraints. It establishes the
services, functions, and operational constraints of the system.
2. Software Design and Implementation (How):

o Designing how the system will be structured and building it. This involves
creating a blueprint (architecture) and then translating that design into
executable code using a specific programming language.

3. Software Validation (Check):

o Checking that the system meets its specifications and customer


expectations. This involves testing (unit, integration, system, user acceptance)
to find and correct defects.

4. Software Evolution (Change):

o Changing the software in response to evolving customer needs. This involves


maintaining the system after deployment by fixing bugs, adapting it to new
environments, and adding new features.

Q1. B) Choosing and Applying a Process Model for Aruna's Mowing Service System

Best Process Model Choice

The best process model for Aruna's system, minimizing cost and maximizing flexibility, is the
Agile Model (specifically Scrum or an Iterative approach).

Justification for Agile/Scrum

The choice is based on the following factors:

 Maximum Flexibility: The system needs to support multiple, diverse functions


(quotes, payments, scheduling, maps). A flexible model allows Aruna (the customer)
to try out basic versions and change priorities quickly, especially since the team size
is small.

 Minimum Cost: Agile delivers the highest-value features first. By breaking the system
into short, time-boxed Sprints, the team avoids over-developing unnecessary
features, thus controlling cost and delivering a usable system sooner.

 Small Team Size: Agile methods thrive on strong, continuous communication within
a small, dedicated team, which is necessary when few members are available.

Application of the Model (Agile/Scrum)

The system would be developed in the following iterative cycles (Sprints):

1. Prioritization (Product Backlog): Aruna and the team would prioritize all required
features. Since the goal is to save time and reduce customer dissatisfaction, the first
priority should be core administration:

o High Priority: Quotes/Invoicing, Payment Collection, and Basic Scheduling.


o Medium Priority: Reminders, Staff Salary.

o Lower Priority: Maps/Directions, Inventory.

2. Sprint 1 (Basic Core System): The team designs, codes, and tests just the Quote and
Payment Collection functionality.

3. Sprint Review & Feedback: Aruna uses the basic system and confirms it saves her the
two hours a week. She might realize she needs a simpler way to mark a job
"complete."

4. Sprint 2 (Scheduling & Reminders): The team integrates scheduling and automated
reminders (to fix the 5% customer dissatisfaction). They also incorporate the
feedback from Sprint 1.

5. Iteration Continues: Subsequent Sprints add more complex features like Map
integration (for efficiency) and Inventory (for cost tracking), until the full system is
deployed.

Why it is Better than Other Models

Model Why Agile is Better

These models are too rigid. Aruna would have to wait months to see the
Waterfall / V-
system, and if the initial design was wrong, changing it would be
Model
disastrously expensive, directly contradicting the goal of minimum cost.

While better than Waterfall, it still requires more upfront design for all
Incremental future increments. Agile allows for complete changes in direction (e.g.,
Model swapping a scheduling feature for a new payment method) with much
greater ease.

This model is overkill. It is too complex and costly due to the mandatory,
Spiral Model heavy risk analysis in every phase. Aruna's relatively small service system
does not justify such extensive administrative overhead.

Q1. A) Differentiate Between Incremental and Iterative Model


The Incremental and Iterative models are both based on repetition, but they differ
fundamentally in what is delivered during each cycle.

Parameter Incremental Model Iterative Model

Functional Growth. The model Refinement. The model focuses on


Focus of
focuses on dividing the system into refining the entire system's features with
Repetition
functional slices (A,B,C). each cycle.

Successive Releases. Each cycle Successive Versions. Each cycle results in


What is Built adds new, separate functionality to a better, more complete version of the
the previous release. same feature set.

Delivers a core usable product


Delivers a prototype early, with a focus
Delivery early, then layers on more features
on resolving architectural uncertainty.
over time.

To reduce technical risk and resolve


To deliver the highest business
Goal requirements ambiguity through
value features as fast as possible.
repeated design/refinement.

Deliver a working login module, Build a rough search feature, then refine
Example then a working search module, its speed, then refine its interface, then
then a working payment module. refine its accuracy.

Q1. B) Choosing and Applying a Process Model for the ATC Assistant System

Best Process Model Choice

The best process model for the Air Traffic Control (ATC) Assistant system is the Spiral Model.

Justification

This project exhibits high complexity and extremely high risk, which are the defining factors
for choosing the Spiral Model.

1. High Risk: The system manages 20 million aircraft and provides a decision support
system for altering aircraft states. A failure could be catastrophic, demanding a
model that prioritizes risk mitigation.

2. Complexity and Scale: The project requires integrating diverse modules (tracking,
decision support, simulation, weather sensors) at an enormous scale.

3. Ambiguity: Developing high-stakes systems often reveals technical uncertainties


(e.g., system response time under peak load) during early stages.
Application of the Spiral Model to the Project

The project would proceed in a series of loops (spirals), moving from conceptual definition
to full operational capability:

1. Initial Spiral (Risk Reduction):

o Identification: Define core requirements (e.g., tracking an aircraft's location).

o Risk Analysis: Identify the highest risks: Can the system scale to 20M aircraft?
Can the decision support logic be accurate?

o Construct: Build a small prototype focused only on the tracking module using
simulated data to test scalability and response time.

2. Second Spiral (Architecture):

o Design: Based on the successful prototype, design the full system


architecture, focusing on how the tracking, weather, and simulation modules
will integrate.

o Risk Analysis: Assess new integration risks.

o Construct: Build a working simulation module and integrate the weather


sensor display to gain early controller feedback on the interface.

3. Subsequent Spirals (Incremental Development): The project gradually moves


outward, building the full system (e.g., adding the decision support module) and
subjecting each increment to rigorous testing before final deployment.

Why it is Better Than Other Models

Model Why Spiral is Superior

These models are too rigid and do not allow for proactive risk analysis.
Waterfall / V-
Discovering a major scalability issue in the final testing phase of Waterfall
Model
would lead to complete project failure.

While they handle change and delivery well, they lack the mandatory,
Incremental / upfront, and continuous focus on risk management that a high-stakes, life-
Iterative critical system like ATC absolutely requires. They treat risk as a secondary
concern, which is unacceptable here.

Agile is excellent for business systems but lacks the heavyweight


Agile
documentation and long-term planning required for safety-critical systems
(Scrum/XP)
with such high regulatory standards and immense complexity.

You might also like