Software Engineering Module 1
Software Engineering Module 1
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.
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).
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).
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."
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.
When you use an app, there's a chain of command that goes all the way down to the
hardware:
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.
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.).
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.
The power of software lies in its ability to control things, no matter where it lives:
The Foundation: Just like an engine controls a transport vehicle, software acts as the
basis for controlling:
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.
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:
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.
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.
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.
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.
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.
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:
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.
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.
o These are the "how-to" guides and technical skills needed to actually build
the software. They cover things like:
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).
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.
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.
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.
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?
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.
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.
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.
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.
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?
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.
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?
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.
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.
While different models exist, most SDLC processes involve these 5-7 core phases in
sequence:
2. Design 📐
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) 💻
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 🔍
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 🚀
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 🛠️
What Happens: This is the longest phase, often lasting years. Activities include:
It is the original, most straightforward, and strictly sequential process model in software
development.
The development process moves strictly from one phase to the next. You cannot start a new
phase until the previous one is 100% finished.
What happens: Before starting any detailed work, the team checks if the project is
actually worth doing.
What happens: You sit down with the client/user and write down every single
feature, function, and detail the final software must have.
What happens: Programmers take the blueprint and start writing the actual code.
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.
What happens: After delivery, the team fixes any remaining bugs users find and adds
new features as the business needs evolve over time.
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.
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
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 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.
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
👍 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 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.
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).
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).
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
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.
Flexibility to
Difficult Easy
Change
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.
Duration
Long Shorter Initial Delivery
(Initial)
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.
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.
o The team checks if the customer's needs can be met within the budget and
plan.
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 product is implemented (put into the working environment) at the end of
many successful iterations, and maintenance starts thereafter.
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 (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 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.
Every time the team goes around the spiral, they complete these four activities:
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.
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.
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.
Goal: Examine the result, plan the next spiral, and minimize potential problems. This
is the most critical phase.
What Happens:
o The team identifies and monitors risks (Will we run out of money? Is the
technology too hard? Are the requirements changing too much?).
👍 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.
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.
1. Individuals and Interactions over Processes and Tools. (People talking is more
important than paperwork.)
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.)
Imagine you are building an app like Instagram with many features (Follow, Search, Post
photos, etc.):
Feature Traditional (Waterfall) Model Agile Model
1. Satisfy the Customer: The main goal is to deliver working software to the customer
early and continuously.
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.
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.
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).
👍 Advantages
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.
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 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).
Daily Scrum (Stand-up): A short, 15-minute meeting held every day. Each team
member answers three questions:
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
Breaks Down Large Projects: Complex projects are easily managed by splitting them
into small sprints.
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.
It's all about short cycles, constant testing, and tight collaboration.
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.
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.
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.
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.
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.
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).
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.
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.
The Scrum process is cyclical and involves specific roles, artifacts, and ceremonies.
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
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.
1. Product Backlog
2. Sprint Backlog
o A subset of items taken from the Product Backlog that the Scrum Team
commits to completing during the current Sprint.
1. Sprint
o Its duration and goal are fixed and cannot be changed once the sprint starts.
2. Ceremonies
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.
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.
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.
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.
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.
The goal is to relate one or more properties (E-J) to the given process models (A-D).
Process
Suggested Property/ies Justification
Model
System analysis is crucial for managing risk, costs, and scope before any implementation
begins.
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?).
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.
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.
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").
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).
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.
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.
6. Improve: The Sprint Retrospective is held for the team to inspect and adapt its
process for the next Sprint.
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.
Export to Sheets
Artifact Description
Product A dynamic, prioritized list of all work needed for the product (features,
Backlog bugs, etc.).
Product The usable, potentially releasable result of the Sprint, plus the sum of all
Increment previous Increments.
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).
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.
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.
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.
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.
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.
The loops progress from long-term planning (Months) down to second-by-second coding
(Seconds), illustrating continuous feedback at every level of the project.
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.
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
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).
1. Satisfy the Customer: The main goal is to deliver working software to the customer
early and continuously.
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.
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.
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:
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.
Q1. B) Choosing and Applying a Process Model for Aruna's Mowing Service System
The best process model for Aruna's system, minimizing cost and maximizing flexibility, is the
Agile Model (specifically Scrum or an Iterative approach).
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.
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:
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.
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.
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
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.
The project would proceed in a series of loops (spirals), moving from conceptual definition
to full operational capability:
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.
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.