Software Development Lifecycle, Waterfall, and Agile
Software Development Lifecycle, Waterfall, and Agile
This session lays the foundation for DevOps. We walk through the software development lifecycle (SDLC) phase by phase, watch what DevOps changes in each phase, and then compare the waterfall model with agile methodology. The session ends with the roles that make up an agile team and the difference between a methodology and a method. Almost every idea here reappears later in the course when we build continuous integration and continuous delivery pipelines with tools like Git, Jenkins, and Selenium.
1.1 The Software Development Lifecycle (SDLC)
1.1.1 What SDLC Is
Hook — one question opens the whole course: how does a raw idea — "our customers need an app for this" — turn into software that runs reliably in production every single day? Every company that builds software answers that question with the same underlying process, and that process has a name: the SDLC.
SDLC stands for the Software Development Lifecycle. Think of it as the day-to-day diagram of activity of a software engineer. It is the engineering process we apply to convert an idea into working software. Anyone who works in the software industry — or in any industry that builds software — is expected to be familiar with these phases and to apply this engineering process consistently. The lifecycle is not a management afterthought; it is the routine rhythm of how software gets built, from the first conversation with the customer to the software running in production.
Formalize — what the SDLC actually is. The SDLC is a structured engineering process, a fixed set of phases that turn an idea (input) into working, running software (output). The word "lifecycle" matters: unlike a one-shot production line, the software continues to live after delivery, so the process is a circle that returns to maintenance and then loops back into new requirements — not a straight line that stops at release. Every role in the industry — analyst, designer, developer, tester, release engineer, operations engineer — works inside one of these phases, and DevOps is best understood as the set of changes this process underwent, which is exactly the question this session keeps asking.
1.1.2 The Phases in Sequence
The lifecycle runs through six phases:
- Requirement analysis — understand what the customer is asking for.
- Design — turn the requirements into something the development team can build.
- Development — write the code.
- Testing — verify the software behaves as intended.
- Release — deliver the software to the end customer.
- Maintenance — keep it working and improve it after release.
The phases are presented in this order in most discussions of the SDLC, and we will use this same sequence as the spine of this session.
Intuition — the phases as a construction story. Think of building a house. You first ask the family what they need and write it down (requirement analysis), then draw the blueprints the masons can read (design), then lay the bricks (development), then check that doors and windows open and the roof does not leak (testing), then hand over the keys (release) — and after that, you keep repairing, repainting, and adding rooms as the family grows (maintenance). The analogy holds for the ordering: you cannot sensibly lay bricks before you know how many rooms the family wants. It breaks, however, on one point: a house is rarely changed while it is being built, whereas software — as we will see with agile — is expected to keep changing throughout, which is why the phases later in this session become iterative rather than strictly sequential.
Each phase consumes the output document of the previous phase as its input — the design phase starts from the specification document, development starts from the design, and so on. That chain of documents is why "clear output per phase" becomes one of the selling points of the waterfall model in section 1.9.
1.1.3 Reliability after Release
Once the software is deployed and released to the end customer, the job is not finished. The product has to remain available 24 x 7. That is where reliability and stability come in: you must keep the product available for the customer, which is exactly the responsibility of the maintenance phase. Many engineers think the lifecycle ends at deployment; in practice, the longest part of the lifecycle begins there.
Scope — what "done" really means. "Done" in software does not mean "handed over"; it means "kept working". A banking app that crashes at 2 a.m. is a failed product even if the code that was handed over was perfect. This is the boundary many new engineers get wrong: the release event is a moment, but the availability commitment is continuous — 24 hours a day, 7 days a week — and that commitment belongs to the maintenance phase. The reference book on the DevOps lifecycle makes the same point from the other direction: the goal is not merely to deploy a change, but to keep the deployed system of high quality throughout its life, which is why monitoring stays part of DevOps even after deployment.
1.1.4 Why We Study SDLC in a DevOps Course
We will not spend much time on requirement analysis as general background knowledge, because most IT professionals already know these phases. The interesting question for this course is different: what changes did DevOps introduce into each SDLC phase? Every phase section that follows asks the same question — what did DevOps add here, and why? Keeping that question in mind turns a familiar diagram into the roadmap for the rest of the course.
The repeating question of this session: for every phase — requirement analysis, design, development, testing, release, maintenance — ask "what did DevOps change here, and why?" The answers form a pattern: iterate instead of front-load, automate instead of hand-perform, and keep feedback loops short. Later in the course this pattern becomes concrete tooling — continuous integration servers, deployment pipelines built with Git, Jenkins, and Selenium.
1.1.5 Student Question: What Does "DevOps" Stand For?
Q: Can I say DevOps is development operation? A: That is an interesting misconception, and we will cover it properly in the upcoming sessions. If we answered everything today, there would be nothing left to discuss as the course goes on.
The question is worth keeping because the word itself invites the wrong reading: "DevOps" sounds like "development + operations", and many newcomers so reduce it to a pair of departments working together. As the course will develop, DevOps is better understood as a set of practices aimed at a concrete goal — reducing the time between committing a change and that change working reliably in production — which changes teams, architecture, and culture, not just two job titles. The professor deliberately postpones the full answer: this session builds the foundation (the SDLC, waterfall, agile) on which that answer rests.
Recap + bridge. The SDLC is the six-phase engineering process (requirement analysis, design, development, testing, release, maintenance) that converts an idea into software that keeps running 24 x 7. The course now walks the phases one by one, asking the same question at each step — what did DevOps change here? — starting with the very first and most failure-prone phase: requirement analysis.
Real-world connection. The SDLC is not an academic exercise: job descriptions in the industry routinely name these phases. Requirements analysts and business analysts live in phase 1, architects and UI/UX designers in phase 2, developers and testers in phases 3 and 4, release engineers in phase 5, and site reliability and operations teams in phase 6. A software engineer's career is largely the story of moving between these phases — which is precisely why "familiarity with the SDLC phases" is a baseline expectation for anyone working in the field.
1.2 Requirement Analysis Phase
1.2.1 The Specification Document
Requirement analysis is the very first phase of the SDLC, and most of the problems in a software project are encountered right here. The output of this phase is the specification document: the place where you understand what exactly your customer is asking for, and where the requirements of the software get jotted down. Because this is the first phase, it sets the skeleton for the entire software. If that skeleton is wrong, everything built on top of it is wrong too — which is why this phase deserves the highest attention.
Hook. Most software projects do not fail at the keyboard — they fail at the conversation that happens before any keyboard is touched. The professor's warning is blunt: most problems in a software project are encountered in this first phase, because everything downstream is built on what gets written down here.
Formalize — what the phase produces. The phase takes as input the customer's request (often vague, spoken in business language) and produces one concrete artifact: the specification document — the written, agreed-upon list of what the software must do. Every later phase reads this document: design turns it into diagrams, development turns the diagrams into code, testing checks the code against it. That chain is why the phase is called the "skeleton": a wrong specification means wrong diagrams, wrong code, wrong tests — a whole skeleton shaped incorrectly.
1.2.2 Challenge One: Finding a Common Language
The very first challenge is finding a common language between the people outside of IT and the people in IT. Take a normal scenario: an IT person needs to collect requirements from people in the manufacturing department who want software for their music system. Those non-IT people do not understand terminology like modular, object oriented, or microservices. Those words are simply not suitable for the non-IT audience.
A second layer of the same challenge appears when the people you are collecting requirements from are not good at English. The best strategy in that situation is to collect the requirement face to face rather than through online workshops or meetups. When you talk face to face, you understand much more — expressions carry meaning that words alone lose in a workshop format.
Pitfall — translating, not listening. The trap is to gather requirements in IT vocabulary and hand them back in IT vocabulary. The customer nods politely at "object oriented" without understanding it, and both sides walk away believing the requirement is agreed. The professor's counter-strategy is concrete: meet face to face. Tone, hesitation, facial expression, and hand gestures carry meaning that a text chat or a meetup loses — the face-to-face meeting is itself a communication channel, not just a scheduling preference. This is a reminder that requirement gathering is a human process first and a technical one second.
1.2.3 Challenge Two: Terminology That Differs between Groups
Different people use different terms for the same concept, and that creates confusion. For example, a few people call a partner a supplier, while others call the same kind of partner a third party vendor. There are many such pairs. Even within this course, delivery, deployment, and release are three terms that carry misconceptions for many people (we untangle them in section 1.6). When every group uses its own vocabulary, the requirement discussion itself becomes a translation problem.
Intuition — the same thing, different names. "Supplier" and "third party vendor" describe the same business partner; one manufacturing team uses one word, another team uses the other, and nobody notices they are arguing about the same concept. The moment two groups use different words for the same thing, every requirement conversation carries a hidden translation step — and translations are where meaning gets lost. Watch for these pairs throughout the course: the three terms delivery, deployment, and release are exactly such a triple, and section 1.6 is devoted to untangling them.
1.2.4 The Cost of Getting Requirements Wrong
The biggest problem with the requirement analysis phase is this: if you capture the requirement incorrectly, your overall business flow becomes a mess, and the end product is not the one your customer expected. You come up with a chaotic product instead. There is a funny example that used to circulate widely — the picture comparing what the customer asked for with what we delivered. IT engineers feel like heroes after such a delivery: the team believes it did very well, and a smart business team even added extra features on top. But those extra features were never required by the customer. They are bulky, dead features — they consume capacity in your infrastructure, but nobody uses them. Then everything goes to zero: no customer satisfaction, no revenue out of the product.
That is why requirement analysis is so critical: it is the very first phase, where the skeleton of the software is created. If the customer asked for an elephant and we deliver a buffalo, the whole project has failed before a single line of code exists.
Worked example — the elephant and the buffalo. The picture circulates everywhere in the industry: the customer asks for an elephant, and the team delivers a buffalo.
- The customer's request: a swing (or a house, in other versions) — clear in the customer's head, but captured imperfectly on paper.
- The delivered product: something that is close — it has legs and a body, it is even bigger than requested — but it is not what was asked for.
- Why the team feels like heroes: the team worked hard, hit the deadline, and a clever business team even added extra features on top of the buffalo — a horn here, a tail there — to "improve" it.
- Why it fails anyway: those extra features were never asked for. They are dead features: they consume infrastructure capacity (memory, disk, processing power, maintenance effort) but no user ever touches them. The customer cannot use the product as intended, so there is no customer satisfaction; without satisfaction, there is no revenue.
The punchline is the timing: this failure happens before a single line of code exists. The buffalo is fully "built", fully "tested", fully "released" — and completely wrong. Sense-check: if the skeleton (the specification) is wrong, no amount of careful construction can fix the final shape — the failure is designed in from the first step.
1.2.5 What DevOps Adds: Iterative Requirements
According to DevOps, requirement analysis should be handled with an iterative approach rather than by creating a bulky document in one go. You go step by step and furnish the requirements from your customer by taking frequent feedback. Small, repeated rounds of feedback replace the big upfront specification, so a wrong interpretation gets caught early instead of surfacing after months of work.
Recap + bridge. Requirement analysis captures what the customer wants in a specification document; it is where most project problems are born, because of language gaps, terminology gaps, and the elephant-versus-buffalo cost of getting it wrong. DevOps's answer is to stop writing one bulky document and instead iterate: gather a small slice, get feedback, correct, repeat — so a wrong interpretation is caught in weeks, not months. This iterative, feedback-driven idea is the same engine that drives the MVP approach in the next phase: the design phase.
Real-world connection. The elephant-versus-buffalo failure is not folklore — it is measured. Industry research on project failure consistently ranks "requirements-related" causes (missing, misunderstood, or changing requirements) among the top reasons projects fail or blow their budgets, which is why business analyst and requirements engineer roles exist as dedicated careers. Modern approaches — like involving operations people in requirements so that logging and monitoring needs are captured at the start — are direct descendants of the same lesson: get the requirement right early, or pay for it forever.
1.3 Design Phase and the Minimal Viable Product
1.3.1 From Document to Design
The design phase starts after the requirement analysis document exists; this phase depends on it. Here you convert the written requirement document into a flowchart or design diagrams that your IT people will understand — the people who will work on this software must understand what exactly they are being asked to build. A familiar example is the CRC diagram — Class, Responsibility, Collaboration cards — which describe each class's responsibility and its collaborations. The design diagram is the bridge that turns a business-oriented document into a technical blueprint.
Hook. The specification document tells you what to build, but it is written for the customer. Someone still has to turn it into something the developers and testers can actually build — and the design phase is where that translation happens.
Formalize — the bridge between business and technology. The phase's input is the specification document (business language); its output is one or more design diagrams (technical language). The CRC card is a classic example: each Class (the unit of code design), its Responsibility (what that class is in charge of doing), and its Collaboration (which other classes it works with) are written on a physical index card, giving a quick, discussable map of the software's structure. The rule of thumb: if the people who will build the software cannot read the design, the design has failed its purpose.
1.3.2 What Is an MVP?
With respect to DevOps, the design phase focuses on minimal viable products, or MVP. Before defining it formally, the room was asked what the term means to people who already knew it. The answers that came back give a good sense of the idea: a proof of concept, a pilot, a draft with the basic workable features, a prototype. The goal of an MVP varies by team — for some it is just to attract investors, for others it is to start generating revenue. All of these are valid strategies.
1.3.3 Student Discussion: Defining MVP
Q: What does MVP mean? Some of us think of a proof of concept, a pilot, or a prototype — a first draft with only the basic workable features. A: Those are all good strategies. For some teams the MVP only needs to attract investors; for others the aim is to start generating revenue out of it. A pilot draft with basic workable features, or a prototype, is exactly the idea.
Formalize — the definition. MVP stands for Minimal Viable Product: the smallest set of features that still delivers a workable product to the customer. Two words carry the definition:
- Minimal — the smallest set. Anything that can be left out is left out.
- Viable — still usable. The product must actually work for its stated purpose; "minimal" is not an excuse for "broken".
What "viable" means is decided by the team's business goal, and the class's answers capture the range of legitimate goals: a proof of concept (prove the idea can work at all), a pilot (a small, real deployment), a prototype (a working draft), attracting investors, or generating revenue. The MVP is a strategy, not a single fixed shape — the same product idea may have different MVPs for different teams.
1.3.4 Worked Example: The Morning Routine
The clearest way to feel what "minimal viable" means is a layman example. Suppose you must reach the office by 10 a.m. — that is your timeline. If you start your day at 7 a.m., you have three hours in hand. The commute takes 15 minutes, so you actually have about 2 hours 30 minutes for your basic morning tasks: 15 to 20 minutes of exercise, your bath, preparing and eating breakfast, and getting the lunch box ready. You can do all of this comfortably and still start for the office by 9:30. The workable product here is one thing: reaching the office by 10 a.m. Everything else — brush, exercise, bath, breakfast, lunch box — is just tasks that help you produce that output.
Now change the start time to 8 a.m. You no longer have the time to complete everything. So you hunt for the minimal viable set of tasks that still delivers the product: you skip the exercise, take a brush and bath, eat a quick breakfast, and skip the lunch box — you will order something at the office.
Push the start to 8:30 a.m. and even the breakfast disappears; you skip preparing it and eating at home. In every scenario you cut down to the smallest set of tasks that still lets you reach the office by 10 a.m. — the minimal viable thing needed to deliver the workable product to the customer.
Worked example — three scenarios with the numbers laid out. The product in this example is a single outcome: be at the office by 10:00 a.m. The commute is 15 minutes, so you must leave home by 9:45 a.m.
Scenario A — start at 7:00 a.m. (plenty of time):
- Time available before leaving: 9:45 a.m. − 7:00 a.m. = 2 hours 45 minutes.
- Task list: exercise (15–20 min), bath, breakfast, lunch box — comfortably fits, with time to spare. You even leave at 9:30 a.m.
- Result: full task set is viable.
Scenario B — start at 8:00 a.m. (time is tight):
- Time available: 9:45 a.m. − 8:00 a.m. = 1 hour 45 minutes.
- The full list no longer fits, so you find the minimal viable list: skip exercise, keep brush + bath + quick breakfast, and skip the lunch box (you will buy food at the office).
- Result: the minimal task set still delivers the product — you reach the office by 10 a.m.
Scenario C — start at 8:30 a.m. (barely enough time):
- Time available: 9:45 a.m. − 8:30 a.m. = 1 hour 15 minutes.
- Even breakfast disappears: you skip preparing and eating at home.
- Result: the barest viable task set — still reaches the office by 10 a.m.
The pattern: in every scenario you cut down to the smallest set of tasks that still delivers the product. That set — not the comfortable full list — is the morning-routine MVP. Sense-check: the "customer" (you) receives the product (arriving on time) in all three scenarios; what changes is only how many of the nice-to-have tasks survive.
1.3.5 Worked Example: An E-Grocery App
In IT language, the same logic applies. Say you want to create an e-grocery app, and you want to start with registration first. What is the minimal viable thing you need for registration? You need a login page, and the login page must have a registration tab so people can start registering. You would not spend time on the best filtering approach, nor on a great search engine, nor on rich payment options like credit card, PayPal, Paytm, or Google Pay — you would probably start with cash on delivery and not build many features at all. Your workable product is that the customer can register. So the minimal requirement is a login page with a registration form that allows a user to register. Real-world: this is how real e-commerce and consumer apps approach their first release — one working slice instead of the whole catalog of features.
Worked example — the registration slice. Suppose the target app is an e-grocery store. The team picks "customers can register" as the first workable product. The MVP:
- Included: a login page with a registration tab and a registration form the user can actually complete.
- Deliberately postponed: the best search and filtering experience, the full product catalog, rich payment options (credit card, PayPal, Paytm, Google Pay), and even a full payment system — you would start with cash on delivery, which needs no online payment integration at all.
The product is "the customer can register." Everything on the postponed list is a nice-to-have task in the morning-routine sense: valuable eventually, but not needed to deliver this first slice. Real companies follow exactly this path — a first release with one working slice (login and registration, or a single marketplace feature) instead of the whole catalog — which is why you can often register on an app months before its search or payments work properly.
1.3.6 What MVP Means for Design
Rather than taking a bulky requirement and converting it into a bulky design document, DevOps gives more focus to the MVP: you design only what is required — the minimum that has to be delivered to achieve revenue, to attract people, to win a business case, or to give a demo to your customer. Which of those goals drives you depends on your own business requirement; the point is to decide deliberately what to build now and what to postpone.
Recap + bridge. The design phase turns the requirement document into diagrams (flowcharts, CRC cards), and DevOps directs that design effort at the MVP: the smallest set of features that still delivers a workable product, chosen deliberately against a business goal. The morning routine (reach the office by 10 a.m.) and the e-grocery app (customers can register) are the same decision made at two scales. This "design only what is required" discipline flows straight into the next phase, where the small scope pays off: because you build only the minimal thing, you code less, and you can deliver — early and often.
Real-world connection. The MVP is the standard opening move of modern product companies. Startups pitch investors with a prototype, product teams ship a login-and-register slice before building search or payments, and marketplaces launch in one city before expanding. The discipline behind it — decide deliberately what to build now and what to postpone — is exactly what product managers practice every sprint, and it is the same logic that keeps the development cycle short enough for the "deliver early, deliver often" mantra of section 1.4 to work.
1.4 Development Phase
1.4.1 Building the Artifacts
The development phase is where you build the software. The coding happens here. Whatever you wrote in the specification document gets converted into code, and you generate your workable artifacts in this phase. The development work should follow a small delivery cycle so that the feedback loop stays short — which is the mantra deliver early, deliver often.
Hook. Why does the professor say "artifacts" instead of "software"? Because development does not produce one thing — it produces a family of things: source code, compiled binaries, tests, configuration files, documentation. Everything the team creates and hands forward is an artifact, and the phase that follows (testing) is entirely about verifying those artifacts.
Formalize — the phase's inputs, work, and outputs. Input: the design diagrams (the technical blueprint). Work: writing the code that implements the design. Output: workable artifacts — the code and everything needed to run it. The phase's one structural rule comes from DevOps: work in small delivery cycles so the feedback loop stays short. A small cycle means you show something usable soon, get a reaction, and adjust — the same iterative rhythm introduced in requirement analysis, now applied to code.
1.4.2 Deliver Early, Deliver Often
Everything in development works hand in hand with the MVP. Since you build only the minimal thing, you code less, and the coding takes no more than two to three weeks. Within three weeks you give this prototype to your customer and collect feedback. That is the mantra: deliver early and deliver often.
The same principle says to involve the stakeholders when you do your testing — give them an alpha and beta testing round so they can test it. The issues that stakeholders raise get resolved at low scale, because the code base is small. Involving stakeholders early is a good strategy for converting that idea into working software.
Intuition — why three weeks is the magic number. The MVP keeps the code base small, and a small code base can be coded in two to three weeks. That number matters because it is the feedback interval: within three weeks the customer sees something real, and the team learns whether the direction is right. The math of feedback works in the team's favor: a wrong direction discovered at three weeks costs three weeks; discovered at three months, it costs twelve. Early alpha and beta rounds with stakeholders multiply the effect — issues are raised while the code base is still small, so each issue is cheap to fix.
1.4.3 Worked Example: 500 Lines versus 10,000 Lines
Why is a small code base easier to fix? Take the example of a bug hiding somewhere in your code. If you have 500 lines of code with a bug in it, identifying that bug and fixing it is easy. If you have 10,000 lines of code, finding the same kind of bug is far harder. With the minimum scope, you identify and solve problems easily. This is what DevOps suggests: deliver often and early, and involve your stakeholders, so that issues surface while the code base is still small enough to navigate.
Worked example — searching for the same bug at two sizes. Suppose a payment feature computes the wrong total, and the bug is one wrong formula hidden inside the code.
- 500-line code base: a developer can read the entire code in one sitting. There are only a handful of functions to inspect; the search space is small, so the wrong formula is found and fixed in minutes to hours. Fixing one line in 500 changes a small, understandable unit of behavior — and a quick regression check confirms nothing else broke.
- 10,000-line code base: no one reads all 10,000 lines. The developer must guess which module, which function, which file the bug lives in — search within search. The same fix now takes days, and a one-line change in a large code base has a real chance of breaking something adjacent that no one remembered.
Sense-check: the bug is identical in both cases — only the size of the haystack changed. A 20× bigger code base makes the same problem disproportionately harder to find, which is why the small-scope discipline (MVP, short cycles) is not just a philosophy: it keeps every bug hunt inside a small haystack.
1.4.4 Modular Code for Ongoing Change
Whatever we build, the software has to be modular. Software is something that undergoes ongoing change — that is exactly why agile came into being, to invite changes. No matter what you do, there will be changes in your software, and to accommodate those changes your code should be modular. A monolithic lump of code resists change; modular code lets one change land without breaking everything around it.
Pitfall — the monolithic lump. The natural failure mode of development is to write everything as one tightly connected lump: one change anywhere risks breaking everything around it, so the team becomes afraid to touch the code — and fear of change is precisely the disease agile was created to cure. Modular code means the software is divided into well-separated pieces (functions, classes, services) with clear responsibilities and controlled connections between them, so a change lands in one piece without shaking the others. If software is guaranteed to change (and it is — that is why agile exists), then modularity is the way to make change cheap instead of scary.
Recap + bridge. Development builds the workable artifacts, and DevOps shapes how: keep the scope minimal, code in two-to-three-week cycles, deliver early and often, involve stakeholders in alpha and beta rounds, and keep the code modular so ongoing change stays affordable. The 500-versus-10,000-line example shows why small is easier to maintain. The next phase asks the same "what does DevOps change?" question for testing — and the answer, continuous testing, will be the first place the course meets an actual tool: the continuous integration server.
Real-world connection. The two-to-three-week cycle and the small-module discipline are the same principles behind the service structure described in the reference material: small teams working on small, well-encapsulated, loosely-coupled pieces, so that changes are small and failures are contained. Modern version control practice (commit small, commit often) is the direct coding-level translation of deliver-early-deliver-often — and both are what later sessions will automate with Git and Jenkins.
1.5 Testing Phase: Continuous Testing
1.5.1 The Continuous Integration Server
What does DevOps suggest for the testing phase? Have a continuous integration server. Whenever you make a single-line change in your code base, that continuous integration server should trigger, pull the source code, and follow the testing cycle. The result is continuous testing — testing runs constantly, on every small change, rather than once before a big release.
Hook. In the traditional way, testing is an event: you finish the build, and then you test it. DevOps flips this: testing becomes a condition — the code is tested every time anything changes, even a single line.
Formalize — what a continuous integration server does. A continuous integration (CI) server is a machine that watches the code base and reacts automatically to every change. The cycle it runs on each change:
- Trigger — a change lands in the code base (for example, a developer commits a single-line fix).
- Pull — the server fetches the latest source code.
- Test — the server runs the testing cycle (build, unit tests, and whatever else the pipeline defines).
- Report — the team sees immediately whether the change passed or broke something.
The result is continuous testing: testing runs constantly, on every small change, instead of once before a big release. The word "continuous" is the point — the test cycle is attached to the change event, not to the release event.
1.5.2 Why Continuous Testing Builds Confidence
Why go through this effort? Continuous testing boosts confidence in your team members: they know the software is going to work well in the production environment, because every change has been verified continuously. The software that comes out of a continuously tested pipeline is more qualitative than software tested once at the end.
Intuition — confidence from many small checks. Think of a bridge built in sections and tested after every section, versus a bridge built in silence and tested only when the last plank is laid. In the second case, you have one scary final moment and no idea where a failure started. In the first case, every section was proven sound as it was placed, so by the time the last plank lands you already know the bridge works. That is what continuous testing does for a team's confidence: every change has been verified in small steps, so "it works in production" stops being a hope and becomes an expectation built from evidence. The reference material makes the same point from the release side: each test that a release candidate passes adds confidence that this particular combination of code, configuration, environment, and data will work — and catches problems as early as possible.
1.5.3 Automation with Flexibility
The continuous integration and continuous testing server performs all the testing with automation. Wherever you feel manual intervention is still needed, you should be in a position to accommodate the same — that is, keep the flexibility at the same time as doing the automation. Automation is the goal, but the pipeline should not force full automation where a human check still matters.
Pitfall — automation as a religion. The trap is to assume that automated is always better and that every human check must be eliminated. The professor's rule keeps both: automation is the goal, but the pipeline must keep room for manual intervention where a human check still matters — exploratory testing, subjective UX judgment, or a release decision that needs a person's responsibility. The modern name for this balance is a gate: automation does what machines do well (repeatable checks), and a human gatekeeper does what judgment does well (deciding whether this release may pass). Forcing full automation onto a step that still needs human judgment makes the pipeline brittle rather than fast.
Recap + bridge. DevOps's answer for the testing phase is the continuous integration server: every single-line change triggers a pull of the source and a full test cycle, producing continuous testing that builds real confidence before production, with automation as the goal and human flexibility preserved where it matters. This is the first phase where the course's answer is a tool — and CI servers will reappear throughout the course (Jenkins in particular). The next section moves to the release side of the lifecycle, where the course untangles three words that everyone confuses: delivery, deployment, and release.
Real-world connection. CI servers are standard industrial equipment today — Jenkins, GitLab CI, GitHub Actions, and others run exactly this trigger-pull-test-report cycle on every commit, and "did CI pass?" is the first question a developer hears before a merge. The automation-with-flexibility balance is institutionalized in the deployment pipeline: automated stages (commit stage, acceptance tests) feed manual gates (showcases, exploratory testing) before a release candidate is approved — a structure the course textbook describes as making every part of build, deploy, test, and release visible to everyone involved.
1.6 Delivery, Deployment, and Release
1.6.1 Student Debate: Are the Three Terms the Same?
Before the definitions, the room was asked whether delivery, deployment, and release all mean the same thing. The answers came back in several directions, and it is worth keeping all of them in mind because they show exactly where the confusion sits.
Q: Are delivery, deployment, and release all the same? One of us says delivery is production and deploy is a lower environment involving a few stages of the lifecycle; another says deploy can be anywhere and release is when the customer uses it; another says create, test, and deploy on production, then release to the end user. A: You are close. Delivery happens when the code base is ready and you push it to your internal environments to test. Deployment is when you push that code to the production environment. Release is when the feature becomes available for your end user to access.
1.6.2 The Definitions
Every organization runs multiple environments. You have a capacity testing environment, a staging or pre-production environment that closely mirrors production, an acceptance testing environment, and white box testing and integration testing environments, among others. The rule:
- Delivery — your code base is ready, and you push the code to your internal environments to run your testing. Pushing code into any of those test environments is delivery.
- Deployment — after testing shows the code is fit to use, you push it to the production environment. The moment the code lands in production, it is a deployment.
- Release — once the code is in production, if you make the feature it implements visible to your end user and the end user starts using it, that is a release.
Formalize — three distinct verbs along one journey. The three terms are three different points on the road that a code change travels:
| Term | Where the code goes | What has happened |
|---|---|---|
| Delivery | Any internal test environment (capacity, integration, acceptance, staging/pre-production) | Code is ready and being verified |
| Deployment | The production environment | Code is live in production, but not necessarily visible to users |
| Release | The end user | The feature is switched on and users start using it |
The decisive boundary is the production environment: before production is delivery, inside production is deployment, and visible to users is release. Since an organization runs many environments (capacity testing, staging or pre-production, acceptance testing, white box testing, integration testing), pushing code into any of them is delivery — there are many delivery events but only one deployment event per change.
Q: Just to confirm, deployment means pushing the code onto production? A: Yes. Pushing the code onto the production environment is deployment. If you push it to a set environment, your UAT environment, or your pre-production environment, you call it a delivery.
Exam note: delivery versus deployment versus release is exactly the kind of comparison question you can expect — comparing what one term does against what the other does, rather than being asked to write a command.
1.6.3 Why We Never Test Where the Developer Worked
One point deserves repetition: we never do testing on the same environment where the developer wrote the code. The person who wrote the code already did a first level of testing on their own side in that environment, so testing it there again adds little. In industry, testing runs on the different environments described above — capacity, integration, acceptance, pre-production — and your tester engineers follow the testing process there. This is why delivery, the act of pushing code into those environments, is a stage in its own right and not the same as deployment.
Pitfall — re-testing in the developer's own environment. The developer's machine is where the code was born, and the developer already ran a first level of testing there. Testing the same code in the same environment again adds almost nothing: the environment itself is part of what is being tested, and the developer's environment has already shaped the code. Real testing happens in the delivery environments — capacity, integration, acceptance, pre-production — where the code meets environments it did not grow up in. This is exactly why "delivery" exists as its own term: pushing the code into those test environments is a meaningful act that must be planned, executed, and (in modern pipelines) automated.
1.6.4 Real-world: Facebook Live and the Six Months in Production
Real-world: consider Uber or Ola cabs — everyone has used ride-hailing apps. When these companies launch, not all of their features are accessible to the end users. Take Facebook's live video feature: the code base for live video sat in the production environment for six months before it was launched for the end user. The feature was accessible only to third-party vendors who were doing their testing, and whether users would adopt it was analyzed over those six months. After six months the feature was launched for the end users — that launch is the release. And the six months the feature spent in production, live but not user-visible, is deployment. Real-world: this pattern — code in production before the feature is switched on for users — is common in large consumer platforms, where the production environment doubles as the final validation ground.
Worked example — Facebook live video, six months in production. The timeline of one feature makes the three terms concrete:
- Delivery: the live video code base is pushed into internal test environments; testing runs there.
- Deployment: the code is pushed into the production environment — it runs on real production infrastructure. But it is not visible to normal users; only third-party vendors doing their testing can reach it.
- The six months: the feature stays in this state — deployed, live, but not user-visible — while adoption is analyzed and vendor testing completes.
- Release: after six months the feature is switched on for end users. That launch is the release; the preceding six months in production are the deployment period.
Sense-check: the code was "in production" long before users could see it, which sounds contradictory until the three terms are in place — deployment answers where the code runs, release answers who can use it. Ride-hailing apps like Uber and Ola use the same pattern: at launch, not every feature is accessible to end users. Some organizations further automate this with feature toggles or switches, so a team can deploy any time and release when ready.
1.6.5 Terminology Variants across Organizations
Q: Some of us call the pre-production place an alpha, beta, or virgin environment. Is that the same as a staging environment? A: Yes, it is only terminology. People call it a staging environment, some call it a pre-production environment, and some call it an alpha, beta, or virgin environment where you do the pre-production testing. And for that, a few organizations call pushing the code to alpha or beta a deployment as well.
The takeaway: the environment names differ from company to company, but the process — test before production, then go live — stays the same.
1.6.6 Continuous Delivery with Manual Production Intervention
There are organizations that believe in continuous delivery: the code is pushed through the pipeline with automation into the subsequent delivery environments, like the subsequent testing environments. But when it comes to pushing the code to the production environment, they want manual intervention. So even in a continuous delivery setup, pushing the code into production is called a deployment.
Intuition — continuous delivery still ends in a deployment. The professor's point closes a loop with section 1.5: even the most automated pipeline — code flowing automatically through every delivery environment — keeps the production push as a deliberate act, often with manual intervention. That act is still called a deployment. So "continuous delivery" describes the automated path up to production; it does not erase the delivery/deployment/release distinction, it sharpens it: automation handles the many delivery steps, and the production push keeps its own name and its own moment.
Recap + bridge. Delivery pushes ready code into internal test environments; deployment pushes it into production; release makes the feature visible to the end user — and the Facebook example shows the three can be separated by months, not minutes. Environment names (staging, pre-production, alpha, beta, virgin) vary by organization; the process does not. This vocabulary is the exact vocabulary the next section's case study and the entire course's pipeline work will use — including the two kinds of work that begin after release: evolutive and corrective maintenance.
Real-world connection. These three words are used daily in release engineering: release trains, feature toggles, canary releases, and dark launches all rely on the deployment-versus-release distinction — code runs in production for many users' infrastructure long before it is released to users. The textbook on the DevOps lifecycle uses the same split: code is deployed into production for live testing and close monitoring, and only after passing is it promoted to be equivalent to previously deployed code.
1.7 Maintenance Phase
1.7.1 Evolutive Maintenance
Maintenance comes after the software is deployed and released, and it happens in two forms. The first is evolutive maintenance — the name appears in some books as "evolve with you" maintenance. Say you launched one feature, and now you see you can make your product or software more fantastic or more useful by launching another feature. You are improving the functionality or adding new business features — evolving the existing software and releasing new upgraded versions. That is evolutive maintenance.
Hook. The phase the professor calls the longest part of the lifecycle is also the most misunderstood: maintenance is not "fixing things that broke" — a large share of it is adding new capability to software that works perfectly well.
1.7.2 Corrective Maintenance
The second form is corrective maintenance. If bugs, errors, or defects are raised by your customer, you have to resolve them to make your software fit to use. You make those changes in your code base to solve those bugs, defects, or issues, and that is corrective maintenance.
Formalize — two kinds of maintenance.
| Type | Trigger | Work done |
|---|---|---|
| Evolutive maintenance | A business opportunity ("we could make this more useful") | Adding new business features, improving functionality, releasing upgraded versions — the software evolves with you |
| Corrective maintenance | A defect raised by the customer (bug, error, issue) | Changing the code base to fix the defect so the software is fit to use again |
The two forms answer different questions: evolutive maintenance asks "what more can this software do?"; corrective maintenance asks "what is this software doing wrong?" Both are part of the same maintenance phase, and both are normal — not signs of failure. Books sometimes call evolutive maintenance "evolve with you" maintenance, which captures the idea directly: the software keeps evolving alongside the business it serves.
1.7.3 Minimizing, Not Eliminating, Maintenance
You can minimize maintenance, but you can never totally avoid it. Following a good strategy or good process — like DevOps or agile — minimizes the number of defects. Continuous monitoring minimizes the tickets raised by your customer. But the maintenance phase itself never disappears. The DevOps view is to achieve a more proactive way of maintenance by having continuous monitoring, instead of reacting to failures after the customer reports them.
Pitfall — believing maintenance can be engineered away. The professor's boundary is blunt: you can minimize maintenance, you can never eliminate it. Good process (DevOps, agile) prevents many defects before they exist; continuous monitoring catches problems before customers do; but the phase itself never disappears, because software keeps changing and environments keep changing with it. The bigger shift DevOps makes is proactive versus reactive: instead of waiting for the customer's ticket and then repairing (reactive), monitoring watches the running system continuously and flags problems early (proactive). The repair still happens — it just happens before the customer feels it.
1.7.4 Student Questions: Handshakes and Enhancements
Q: What timeline should we define for the handshake? A: Handshake refers to people dependency between teams — the handoff from one team to another. We will spend more time on it in the upcoming sessions, and the timeline question will become clear then.
Q: Is enhancement the same as evolutive maintenance? A: Yes. Enhancing means improvising or evolving — adding new business features and releasing upgraded versions. Enhancing is the same thing as evolving.
The second exchange ties a vocabulary pair together: "enhancement" and "evolutive maintenance" are two names for the same activity — improving the software with new features and upgraded releases. The handshake question, by contrast, is left deliberately open: handshake is the professor's word for the people dependency between teams (the handoff from one team to another), and its timing question belongs to later sessions on team structure and release coordination — a signpost, not a loose end.
Recap + bridge. Maintenance runs in two forms after release — evolutive (new features, upgraded versions) and corrective (fixing customer-raised defects) — and although good process and continuous monitoring minimize it, maintenance can never be eliminated, only made proactive. From here the session shifts from the lifecycle's phases to a complete case: one team's journey from manual releases to seven-second automated deployments, which puts delivery, deployment, testing, and maintenance together in a single story.
Real-world connection. The evolutive/corrective split is standard industry vocabulary in software maintenance practice, and the proactive shift is exactly what monitoring platforms, alerting systems, and incident-response processes exist for. When a product releases monthly feature updates, that is evolutive maintenance at scale; when a hotfix ships within hours of a customer report, that is corrective maintenance — and observability (logs, metrics, traces) is the tool that lets teams catch the defect before the ticket arrives.
1.8 Case Study: From Manual Releases to Seven-Second Deployments
This case study comes from the course textbook on automated deployment and continuous delivery. It shows a team that moved from fully manual releases to a fully automated pipeline, and the numbers are worth remembering.
1.8.1 The Manual Release Checklist
The team used to do manual delivery and manual deployment. A manual release meant following a proper checklist: a document with multiple checklists where you verify whether this command was executed or not, whether the Tomcat server was turned on or not — all of that was done manually. The process had very high intervention and dependency among the development team, the tester team, and the operational team. Because of the lack of handshakes — the checks between teams — and the heavy dependencies, releases used to take a long time. Real-world: the Tomcat server check is a concrete example of the manual operations that release engineers used to walk through by hand.
Hook. The professor's story is a before-and-after: the same team shipping the same product, transformed not by writing better application code but by changing how the code moves to production — from human checklists to a machine-run pipeline.
Pitfall — the manual checklist trap. The manual release was "proper" — it had documents, checklists, verification steps — and still failed in the ways the industry knows all too well. Each checklist item (was this command executed? was the Tomcat server turned on?) depended on a human remembering, noticing, and executing at the right moment. The process carried very high intervention and dependency between the development, tester, and operations teams, and handshakes — the checks between teams — were weak. The result is a documented pattern: manual deployments treat every step as separate and atomic, performed by an individual; small differences in ordering or timing produce different outcomes, and judgment calls inside the steps are prone to human error. When a release goes wrong and nothing is automated, nobody can say which step failed. The reference material calls this the "deploying software manually" antipattern — extensive documentation that tries to compensate, reliance on manual testing, and frequent calls to the development team on release day.
1.8.2 The Automated Pipeline
That team moved to an automated build, deploy, test, and release system: continuous integration, continuous build, continuous delivery, and continuous deployment. Instead of people executing checklists, the pipeline itself built the code, deployed it, tested it, and released it.
Formalize — what the pipeline is. The automated system is a pipeline: a sequence of stages (build, deploy, test, release) where each stage is executed by machines, in order, on every change. Its inputs are the code changes; its outputs are deployed, tested, releasable software. The four "continuous" labels describe the four stages the pipeline runs on an ongoing basis:
- Continuous integration — every change is merged and built with the rest of the code base continuously (the CI server of section 1.5).
- Continuous build — binaries and artifacts are produced automatically from every change.
- Continuous delivery — tested artifacts are pushed automatically through the delivery environments, ready for production.
- Continuous deployment — the production push itself is automated, so code reaches production without human steps.
The key difference from before: the pipeline encodes the release process as a repeatable program — the same steps, the same order, the same checks, every single time — instead of a checklist that each human performs slightly differently. This is the deployment pipeline pattern: an automated implementation of the application's build, deploy, test, and release process.
1.8.3 Seven Seconds to Production
With the pipeline in place, the team could deploy the code base into the production environment within seven seconds. If any major bug or major defect was identified during that deployment, rolling back to the previous version and recalling the code base that had been pushed took a similar amount of time. This is how the continuous integration pipeline helped that team push code faster and be available to the market faster. Real-world: seven-second deploys with equally fast rollbacks are the speed target that modern release pipelines aim at — the cost of a bad release collapses when pushing and rolling back are both automatic and measured in seconds.
Worked example — the before-and-after numbers. The same team, two ways of working:
| Step | Manual era | Automated pipeline era |
|---|---|---|
| Build the code | Human runs build commands, verifies output | Pipeline builds automatically on every change |
| Test | Manual test rounds on release day | Automated tests run on every change |
| Deploy to production | Human walks the checklist (commands, Tomcat server status) with teams coordinating | Pipeline deploys to production in ~7 seconds |
| Fix a bad release | Days of coordination to identify and redo steps | Rollback to the previous version in ~7 seconds |
The headline number is the seven-second production deployment, and its companion is just as important: a bad deployment can be rolled back in a similar time. When pushing and rolling back are both automatic and measured in seconds, the cost of a bad release collapses — trying something new stops being a risk and becomes a routine experiment. Sense-check: the team did not write better features to ship faster — they removed the human wait between "code is done" and "code is live", which is exactly the definition of DevOps given in the reference: reduce the time between committing a change and the change working in production, while keeping quality high.
Recap + bridge. The case study turns every idea of the session into one story: iterative small changes (sections 1.2–1.4), continuous testing (section 1.5), and the delivery/deployment vocabulary (section 1.6) come together in a pipeline that replaces manual release checklists and cuts a release from days to seven seconds. That pipeline is the target every model this course compares next — waterfall and agile — was designed around: one fits the pipeline age, the other was born before it.
Real-world connection. Seven-second deploys are at the extreme end of a spectrum the industry measures directly: the reference material describes deployment lead times of months in traditional organizations (tightly-coupled applications, scarce test environments, manual testing, multiple approvals) versus minutes in the DevOps ideal. Today's platforms — Jenkins pipelines, GitHub Actions, GitLab CI/CD — are the direct descendants of the automated system in this case study, and "can we roll back?" is a standard checklist question in every release review.
1.9 The Waterfall Model
1.9.1 A Sequential Classic Lifecycle
The waterfall model is a sequential model — a classic lifecycle. When we say sequential, we mean that all the SDLC phases are arranged in a sequence, and we complete each and every phase once, fully, before jumping to the next phase. Once the requirement phase is completed, you move to the design phase; after design, you move on to the subsequent phases. Because it is systematic and sequential, it reflects the SDLC phases in order, and it is easy to understand and easy to follow: you complete one phase at a time, completely, and then move to the next phase. That is how the waterfall model was designed.
Hook. The waterfall is the "classic" lifecycle — the model against which everything newer is measured. Its defining promise is simple: do each phase completely, once, in order. Its defining weakness is the bill for that promise, which arrives at the end.
Formalize — the sequence and its meaning. The waterfall arranges the SDLC phases in a strict sequence, and the rule of the sequence is: each phase completes fully before the next begins. Requirements are completely specified first; only then does design start; only when design is complete does development start; then testing; then deployment; then maintenance. The name comes from the picture: each completed phase pours its output down into the phase below, like water falling from one ledge to the next. The model was adapted from hardware engineering, where the cost of changing a decision late (for example, re-manufacturing and redistributing a CD-ROM to fix a bug) was so high that spending extra effort up front on requirements and design was genuinely the cheaper path. Its appeal follows directly: everything is systematic, ordered, and — in principle — predictable.
1.9.2 The Amendment: Feedback Loops
An amendment happened to the waterfall model: a feedback cycle, or feedback loop, was added among the flow. Once the requirement phase is done, you jump to the design phase and do the complete design. During that design work, if any concerns are raised, you can go back to the requirement phase, furnish it more, and then start the subsequent phase — implementation, then testing. So the feedback loop lets a later phase pull information back to an earlier phase instead of locking everything into one strict one-way pass.
Intuition — one-way street with a footpath back. The pure waterfall is a one-way street: each phase pours into the next and nothing comes back. The amendment keeps the overall one-way structure but adds a feedback loop: while working in a later phase, if you discover a concern (a gap in the requirements, an ambiguity in the design), you may go back to the earlier phase, furnish it, and move forward again. The loop does not make the model iterative in the agile sense — phases still happen once and in order — it just stops the model from pretending that later phases never learn anything. The amended version is what most textbooks draw: the classic cascade with backward arrows between adjacent phases.
1.9.3 Advantages
The advantages of the waterfall model follow directly from its sequential nature:
- Easy to use and follow — it is just your SDLC turned into a sequential workflow.
- Cost effective when your requirements are very clear.
- Clear understanding and clear outputs — because each phase is completely developed before the next starts, the output of every phase is a complete document or working software.
- Very little chance of rework when the requirements are clear, since the process runs in a sequential manner.
- Easy to manage the code and the project throughout.
- Documentation is well structured and well managed, because every phase finishes with a document as its output.
Formalize — why the advantages follow from sequence. Every advantage is a consequence of the one-complete-output-per-phase rule. Because each phase finishes fully, every phase leaves a complete artifact behind: a complete specification, a complete design, a complete test plan. That gives clear outputs, well-structured documentation, easy management (you always know which phase you are in), and little rework when the requirements were clear to begin with — the process simply runs down the sequence as planned. And because the model adds no new roles or organizational structures (section 1.9.7), it is cheap to adopt. The reference book adds the project-level benefits: documentation protects the project from knowledge lost when individuals leave or new people join, and the discrete phases give project members clean milestones to hand work across.
1.9.4 Problems and the End-Stage Risk
The problems of the waterfall model are the flip side of its discipline. It is really difficult to accommodate changes once you have started the process. Say you have completed requirement analysis and design, and the team is now in the development phase: it is really hard to bring in new changes during development, because the model is sequential. You have to wait until the product is completely developed and delivered to the customer. Only then does the customer give feedback — either corrective feedback, fixing the product, or enhancement feedback, adding to the product.
If there are any flaws or bugs in the product, or if the requirements were collected incorrectly and the delivered product behaves incorrectly, all of that is addressed only at the end, after deployment. That is where the huge risk of the waterfall model sits. In the early traditional way of working, the customer used to get access to the product, or at least see it, only at the very end stage of development. Customers visualize the product only once development is done — that is the biggest challenge with the waterfall model.
Pitfall — the end-stage risk. The flip side of "phases complete fully" is "feedback arrives only at the end". Once requirement analysis and design are complete and the team is inside development, changes are very hard to accommodate — the sequence has already moved on. The customer sees the product for the first time only when development is done, and any flaw, any bug, any wrongly captured requirement is discovered and addressed only after deployment. In the early traditional way of working, the customer could wait a year or more between describing the need and seeing anything — a waiting period that turns every assumption into a bet. If the requirements were collected incorrectly, the customer discovers it after the money has been spent. This end-stage risk is the biggest challenge of the model and the exact pain the agile movement was built to cure.
1.9.5 Worked Example: Project Timelines Then and Now
In the traditional way of working, project lifecycles used to run one year, two years, or three years of timeline to complete a project. Today the projects are very small scale, and the lifecycle of a project is two months, three months, or six months — not more than that. Shrinking timelines made the wait-until-the-end model of waterfall much more painful, because a year of waiting for feedback is no longer affordable when the whole project is meant to finish in six months.
Worked example — the same model, two eras of timeline.
- The traditional era: a project lifecycle ran one year, two years, or three years. A customer could wait a full year between the requirements meeting and seeing the product. In that world, the waterfall's up-front discipline was affordable — there was time to make the requirements as complete as possible, because the cost of late feedback was a year of rework.
- The modern era: projects are very small scale; a lifecycle runs two months, three months, or six months — not more. The whole project may now be shorter than the traditional feedback wait was.
Why the shrinking timeline breaks the model: if the project must finish in six months, waiting a year for customer feedback is not a problem to manage — it is impossible by definition. The feedback arrives after the project has already ended. Sense-check: the waterfall was tolerable when wait-until-the-end was a fraction of the project; it becomes unbearable when the wait is longer than the whole project. That arithmetic is precisely what pushed teams toward iterative delivery — the same feedback discipline introduced in sections 1.2 through 1.4.
1.9.6 When to Choose Waterfall (and When Not To)
If your requirements are unclear, or your budget is unclear, waterfall is not a good choice — no matter how easy it is to adopt, you will not get output from it. If your requirements are stable, the schedule is fixed, and you have a clear budget, it is always good to go ahead and opt for waterfall. The same logic applies when you have delivered the same kind of project many times before — for example, web development in the same domain. You already know the shape of the work, so the sequential pass is cheap.
Formalize — the decision rule. The model's fitness is decided by clarity in advance:
| Condition | Waterfall verdict |
|---|---|
| Requirements unclear, budget unclear | Not a good choice — the model cannot fix what the front of the sequence got wrong |
| Requirements stable, schedule fixed, budget clear | Good choice — the sequential pass runs straight through |
| Same kind of project delivered many times before (for example, web development in the same domain) | Good choice — you already know the shape of the work, so surprises are unlikely |
The rule is a two-sided coin: waterfall's cheapness is only worth something when the work is predictable. When requirements are unstable, the "very little chance of rework" advantage inverts — rework becomes certain because the assumptions baked into phase one will be invalidated later.
1.9.7 Why Waterfall Is Cost Effective
When we say waterfall is cost effective, the reason is concrete: you do not have many roles and responsibilities to add, and you do not have to change your organization structure. With agile methodology, you have to create a Scrum master role, you have to have a product owner, and you have to give training to your development team to follow the agile process — all of that is cost. With waterfall, no such cost is involved; it is a kind of converting your SDLC into a sequential workflow, and that is it.
Intuition — the cost is in the roles, not the process. Waterfall's cost-effectiveness is not abstract: adopting it costs nothing extra because it adds no roles and no organizational change — it is your SDLC converted into a sequential workflow, and that is it. Agile, by contrast, arrives with a bill: a Scrum master role to create, a product owner to appoint, and training for the whole team to follow the agile process. That is real money. The professor's point is that cost-effectiveness is contextual: waterfall is cheap per unit of process — but if the requirements are unclear, cheap process with the wrong requirements buys you nothing, which is the exact tension the students' question below exposes.
1.9.8 Student Question: Which Is More Cost Effective?
Q: Some of us raised the concern: which is more cost effective — should we go with waterfall or follow agile? A: By the end of the waterfall discussion you can answer this yourself. Waterfall is cost effective when requirements are clear because it needs no new roles and no organization changes; agile introduces roles like the Scrum master and the product owner, plus training for the team, which costs money. When the requirements are not clear, though, waterfall's cheapness buys you nothing — you will not get the output you want.
Recap + bridge. The waterfall is the sequential classic: every phase completed fully before the next, with feedback loops added as an amendment; it is easy, documented, and cheap to adopt, but changes are hard to accommodate and the customer sees the product only at the very end — the end-stage risk that shrinking project timelines made unbearable. The professor's verdict: waterfall for stable requirements and clear budgets, never for unclear ones. And that unclarity is precisely the condition the next section's subject was born from: the fears of developers working on exactly such projects drove the storm called agile.
Real-world connection. Waterfall never disappeared — it is still the right tool in regulated and hardware-adjacent domains where requirements genuinely are fixed in advance (safety-critical systems, government contracts with legally binding specifications), and it survives inside modern processes as phase-gate thinking: a stage must complete and pass review before the next begins. The reference book makes the same assessment: waterfall makes sense where the cost of delivering software is high or requirements are unlikely to change — and it remains a legitimate option even inside DevOps, which evaluates methodologies by their fit rather than their age.
1.10 Agile Methodology
1.10.1 The Fears That Drove Agile
If waterfall was fine, why did agile come up? The common thinking of any developer or development team was a list of fears. The project will produce the wrong product first. The product will come out with losing quality — quality will not be very good. The project will be late, so you have to break the other commitments you made, whether that was a planned holiday or a week off. There will be more escalation from your customer, and everybody will raise fingers at you. You end up stressed out, and you do not have fun working in the team. To minimize — or rather, to mitigate — this set of fears in any development team, the storm called agile boomed in the market.
Hook. The professor frames agile not as a management idea but as an answer to a developer's nightmare list: wrong product, weak quality, late delivery, broken personal commitments, customer escalation, stress, no fun. Agile is the storm that arrived to mitigate exactly that list — which is why it is best understood as the cure for the waterfall's end-stage risk.
Pitfall — the fear list is the diagnosis. Read the list as a diagnosis of the traditional way of working: every fear is a symptom of feedback arriving too late. The wrong product (the elephant-versus-buffalo failure of section 1.2) surfaces only at the end; quality is discovered at the end; lateness is discovered at the end; and the escalation, the pointing fingers, and the stress all arrive at the end. No team discipline fixes that — the process must change so feedback arrives early and often. Agile is that process change: iterative, incremental delivery with customer involvement throughout, so each fear is confronted in small doses while there is still time to act.
1.10.2 The Adoption Numbers: VersionOne State of Agile Report
According to the VersionOne State of Agile Report, in 2007, 94 percent of organizations started practicing agile. In 2008, it reported 97 percent. That is a growth of about 3 to 4 percent every year in terms of practicing agile. And with DevOps, it boomed again, even more. The report also shows a concrete survey — organizations from marketing, finance, medical, manufacturing, and IT domains were asked whether DevOps will improve ways of working. Both the VersionOne report and the Puppet reports are worth studying to understand where the industry stands with DevOps and agile.
Worked example — the adoption numbers.
| Year | Organizations practicing agile |
|---|---|
| 2007 | 94 percent |
| 2008 | 97 percent |
- The numbers: in one year, adoption rose from 94% to 97% — growth of about 3 to 4 percent per year — and agile was already near-saturated among the surveyed organizations by 2008.
- The trajectory: the report's own readers expected this to keep climbing; the professor's point is that with DevOps the movement boomed again, even more — the practices built on agile rather than replacing it.
- The scope: the survey spanned marketing, finance, medical, manufacturing, and IT domains — agile was not a software-startup fashion but a cross-industry standard.
Sense-check: the numbers are plausible as reported (94% → 97% ≈ 3% growth), and the takeaway is the direction: adoption was already overwhelming by 2008 and kept growing through the DevOps era. The VersionOne State of Agile Report and the Puppet reports are the industry's own evidence on both movements, and both are worth studying in this course.
1.10.3 Why Organizations Adopt Agile
When the survey asked why organizations adopt agile, the reasons came back with numbers:
- Accelerating the software delivery — 71 percent of organizations chose this option.
- Enhanced ability to manage changing priorities — 63 percent.
- Increasing productivity — 51 percent.
So the top reason is speed of delivery, followed by handling changing priorities, then productivity.
Worked example — the reasons with numbers.
| Rank | Reason | Share of organizations |
|---|---|---|
| 1 | Accelerating software delivery | 71 percent |
| 2 | Enhanced ability to manage changing priorities | 63 percent |
| 3 | Increasing productivity | 51 percent |
The ranking tells a story: speed of delivery is the top reason (71%), managing changing priorities follows (63%), and productivity is third (51%). Notice how the top two match the session's themes exactly — delivery speed is the mantra of sections 1.4–1.5, and changing priorities are the reason requirement analysis went iterative in section 1.2. The reasons are not abstract ideals; they are the same pains this lecture has been naming, now quantified by organizations themselves.
1.10.4 The 12 Principles
The agile methodology rests on 12 principles. The first one is achieving early and continuous delivery — following the iterative way of delivering software very early, often, and taking the feedback. Since we are not following a sequential approach but an incremental and iterative one, we can welcome changing requirements — that is the second principle: there is room, or scope, to welcome changing requirements. And likewise there are 12 such principles in total.
Formalize — the first principles of agile delivery. The 12 principles are the practical translation of the four values into working rules. The first two, which the professor highlights, are the direct heirs of everything earlier in this session:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software — deliver early and often (section 1.4), take feedback, keep the loop short.
- Welcome changing requirements, even late in development — the incremental, iterative structure creates the room that the sequential waterfall lacked: scope to welcome change.
The remaining principles extend the same logic — deliver working software frequently (weeks, not months); work together daily; build projects around motivated people; prefer face-to-face conversation; measure progress by working software; maintain a sustainable pace; attend continuously to technical excellence; keep it simple; have self-organizing teams; and reflect regularly on how to improve. All twelve are in service of one stance: software projects live in changing conditions, and the process should make change cheap rather than make change forbidden.
1.10.5 The Four Pillars
Agile focuses on four values, each of which is a priority statement:
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
Formalize — the priority statements. Each pillar is a comparison, not an either-or. The structure is deliberately "over": the item on the left has more weight than the item on the right — while the item on the right still has value. The manifesto's own words are the clearest version: "while there is value in the items on the right, we value the items on the left more." So the pillars are four decision rules for moments of tension: when processes and people both need attention, the people come first; when documentation and working software compete for the same time, the working software wins; and so on.
1.10.6 Student Question: Do We Skip Processes and Tools?
Q: If agile focuses more on individuals and interactions over processes and tools, does that mean we do not follow any process or use any tools in agile? A: No. We do have processes and we do have tools. More weightage goes to the individual and the interaction. If there is a change in requirement, you change your process to accommodate that change rather than keeping the process rigid. The process exists, but you have the flexibility to change it over time. The same goes for tools: if your team is comfortable working with Git and GitHub, you do not force Bitbucket just because a plan said so. The tools and technology change based on the individuals in the team who are gelled together and would like to work with a certain technology.
Intuition — processes and tools as clothing, not armor. The professor's correction is the canonical agile misunderstanding: "over" does not mean "instead of". Agile teams use processes and tools every day — what changes is their authority. A process is not a contract to obey; it is a working agreement the team adjusts when the requirement changes, instead of keeping the process rigid. A tool is not an order from a plan; it follows the team's comfort — if the team is gelled around Git and GitHub, you do not force Bitbucket just because a document said so. The same principle that let the morning-routine MVP cut tasks lets an agile team change its process: both are decisions in service of the work, not the other way round.
1.10.7 Working Software over Comprehensive Documentation
This pillar does not mean there is no documentation. You do have to have documentation — like a document explaining how to use your product, or the steps of the process. That is a document. But the priority goes to working software. In one iteration or one incremental cycle, you do not have a timeline to do both; you have two ways — you can complete your testing, or you can write a document. Agile says: complete the testing and be ready with the working software. The document you can do later.
Intuition — the two-ways dilemma. The pillar is best read as a time-management rule. In one iteration, you cannot always do both: finish the testing or write the documentation. Agile's answer is to complete the testing and be ready with working software — the document can be done later. This is not anti-documentation: the professor is explicit that documents exist (how-to-use guides, process steps). It is anti-documentation-as-substitute — a comprehensive document that describes software is never a substitute for software that works. The comparison is a ranking under scarcity, exactly as the pillars define it.
1.10.8 Customer Collaboration and Responding to Change
On customer collaboration: you do not try to negotiate; your focus is on collaborating with your customer. Invite your customer to your review meetups. On responding to change: you do have a plan, but that plan changes according to the changes that come up from your customer. A plan is a starting point, not a contract.
Intuition — two small but sharp corrections. "Customer collaboration over contract negotiation" does not mean "drop the contract"; it means the meeting format changes: instead of negotiating terms at arm's length, you invite the customer to review meetups and work through issues together. "Responding to change over following a plan" does not mean "have no plan"; it means the plan is a starting point, not a contract — when the customer's changes arrive, the plan bends. Both pillars replace the waterfall's front-loaded agreement (specify everything, then execute) with an ongoing relationship (specify, build, show, adjust).
1.10.9 The Agile Manifesto
By combining the principles and the pillars, you get the agile manifesto. The agile manifesto is your principles and your pillars of agile — the single document that both lists the 12 principles and states the four values. Waterfall was fine as a starting point, but agile is the more customer-friendly and developer-friendly methodology, and that is why we follow it.
Formalize — one document, two layers. The agile manifesto is the single founding document of the agile movement (written at the 2001 Snowbird meeting by 17 software practitioners). It has two layers: the four values (the pillars, 1.10.5) — priority statements about people, software, collaboration, and change — and the 12 principles (1.10.4), the concrete working rules that implement those priorities in day-to-day practice. The professor's summary keeps the whole structure in one sentence: the manifesto is your principles and your pillars combined. Its role in this course is comparative: waterfall was fine as a starting point, but agile is the more customer-friendly and developer-friendly methodology — and that is why we follow it, and why DevOps (as later sessions show) builds on the same iterative, feedback-driven foundation.
Recap + bridge. Agile arrived to mitigate the developer's fear list — wrong product, weak quality, lateness, broken commitments, stress — and the surveys show it worked: 94% of organizations practiced agile by 2007, 97% by 2008, with speed of delivery (71%), changing priorities (63%), and productivity (51%) as the stated reasons. Its engine is the 12 principles and four pillars combined into the agile manifesto — iterative delivery, welcomed change, and priorities that rank working software and people above documents and plans. The next section leaves the manifesto and looks at what this actually does to a team's everyday life — starting with the disappearance of the traditional question chain.
Real-world connection. The VersionOne State of Agile Report (now the State of Agile survey) and the Puppet reports (State of DevOps) are the industry's own longitudinal evidence that this lecture cites — and the survey's top reason, accelerating software delivery, is the same goal DevOps formalizes as deployment lead time. The manifesto's four values are quoted verbatim in countless job postings and team charters, and the 12 principles still frame agile coaching practice today — which is why the professor treats the report numbers and the manifesto text as material worth studying directly.
1.11 What Agile Brings to a Team
1.11.1 Worked Example: The Traditional Question Chain
To see what agile changes, compare how a doubt used to travel in the traditional way. A project comes in, and you have a project manager, a team lead, and a development team working on the project. If any team member has a concern or doubt about developing the requirement, it used to go to the team lead in the everyday meetup. If the team lead does not know the answer, the concern goes to the project manager. The project manager talks to the customer's project manager — a counterpart who sits at the customer place. That customer manager then raises the concern to the team that raised the requirement in the first place — the team that wanted to improve their working or grab more customers. The answer then travels all the way back down the same chain to the team members.
Look at the dependencies: the whole chain is nothing but waste in your process. It increases the timeline instead of increasing productivity. Agile says: why can't team members interact directly with the customer? The customer people give the answer directly, and the chain of handoffs disappears.
Hook. The professor's example is a single question — a developer's doubt about a requirement — and its journey through the traditional organization: up five steps to the requester, then all the way back down again. One doubt, five handoffs, days of waiting, zero new information.
Worked example — tracing one doubt through the chain. The cast: the development team member with a doubt, the team lead, the project manager, the customer's project manager, and the customer's requirement team.
- Step 1 — team member → team lead. The doubt is raised at the everyday meetup. If the team lead knows the answer, the journey ends here.
- Step 2 — team lead → project manager. The lead does not know, so the concern climbs.
- Step 3 — project manager → customer's project manager. The counterpart at the customer's site takes the concern.
- Step 4 — customer project manager → requirement team. The concern reaches the team that raised the requirement in the first place (the team that wanted to improve their working or win more customers).
- Step 5 — the answer travels back down the same chain to the original team member.
The verdict: the whole chain is nothing but waste in the process. It adds five handoffs and increases the timeline instead of increasing productivity; no knowledge is added by any of the intermediate links. Sense-check: the doubt was answered at step 4 — every other step existed only to ferry the question, which is the definition of process waste (and it is also a people-dependency chain: every step waits on another person, exactly the "handshake" dependency of section 1.7). Agile's answer is blunt: why can't team members interact directly with the customer? The customer people give the answer directly, and the chain of handoffs disappears.
1.11.2 Breaking the Wall between Business and Development
This is what agile gives your organization: it breaks the wall between your business people and your development team. Business people give the product requirement idea, and the development team converts that idea into working software. Whenever the team feels it needs feedback from the customer, the business, or the stakeholders, agile gives you the room to bring them in — to involve your customer and your stakeholders as part of the development team.
Formalize — what breaks, and what replaces it. Agile replaces the handoff chain with a shared wall-free team. The wall in question is the organizational boundary between the business people (who own the product requirement idea) and the development team (who convert that idea into working software). On the traditional side of the wall, communication must travel through managers; on the agile side, the team can reach the customer, the business, and the stakeholders directly — they are invited in as part of the development team whenever feedback is needed. This is pillar three (customer collaboration) applied to team structure: the customer is no longer an outside party to negotiate with, but a partner inside the working loop.
1.11.3 Review Meetings and Stakeholder Demos
In scrum language, you have review meetings where you involve stakeholders and your customer: you give a demo to your customer, discuss the feedback in more detail, get the feedback, and then act on it in your next increment cycle. The loop of demo, feedback, and adjustment is the engine of agile delivery.
Intuition — the demo-feedback-adjustment engine. The wall-free team needs a regular rhythm, and scrum gives it one: review meetings where stakeholders and the customer are brought in, shown a demo of the working increment, and asked for feedback; the team discusses the feedback in detail, then acts on it in the next increment cycle. The loop — demo, feedback, adjustment — is the engine of agile delivery, and it is the same loop that has driven every phase of this session: iterative requirements (1.2), MVP design (1.3), deliver-early-deliver-often development (1.4), and continuous testing (1.5). The review meeting is simply where all those loops become a scheduled event with the customer in the room.
Recap + bridge. Agile's gift to the team is direct access: the question chain of five handoffs is pure waste, and agile breaks the wall between business and development so the customer, the business, and the stakeholders join the team's own loop — demo, feedback, adjustment — as the engine of delivery. But "agile" is a family name, not one concrete process: the session now zooms in on the two levels of the family — methodologies like Scrum and extreme programming, and methods like TDD and FDD that live inside them.
Real-world connection. The question chain is not a straw man — it is the standard complaint behind every "too many meetings" and "why is this ticket in my queue" frustration in large organizations, and the wall-break is the reason agile teams sit with business representatives, product owners, and customers in the same sprint reviews. The same idea reappears in DevOps at the operations boundary: just as agile brought the customer into the development loop, DevOps brings operations into the same loop — a preview of the sessions ahead.
1.12 Agile Methodologies and Methods
1.12.1 Methodologies: Scrum and Extreme Programming
As part of the syllabus, we discuss a few methodologies. Scrum is one of them. Extreme programming (XP) is not part of the syllabus, but we will discuss a little of it because it helps you understand TDD. There are other methodologies too, but they are not part of the scope of this course.
Hook. "Agile" is a family name. Inside the family there are methodologies — complete frameworks like Scrum and extreme programming — and inside those there are methods — specific working approaches like TDD. Getting the two levels straight is a favorite source of exam confusion, and the professor's example below makes it concrete.
Formalize — the two levels. The agile family has two levels, and they nest:
- Methodology — a complete framework of how to do things: ceremonies, roles, artifacts, and guidelines for running a project. Scrum (with its sprints, review meetings, and roles) is one; extreme programming (XP) is another.
- Method — a set of principles, steps, or a process followed inside a methodology. Test-driven development (TDD), feature-driven development (FDD), and behavior-driven development (BDD) are methods.
The nesting is free: a methodology is not married to one method. A Scrum team can work with TDD, an XP team can work with TDD, and a team can even practice TDD with no formal methodology at all — its own set of meetups, no framework on top. What the syllabus covers: Scrum among methodologies; TDD, FDD, and DDD among methods. Extreme programming is outside the syllabus but is discussed a little because it is the clearest home of TDD. BDD will be explained together with TDD and FDD in an upcoming session.
1.12.2 Methods: TDD, FDD, and DDD
TDD, FDD, and DDD are the methods. TDD is test-driven development, FDD is feature-driven development, and there is also a data-driven method, DDD — but that is not in the scope of our syllabus. BDD, behavior-driven development, will be explained together with TDD and FDD in an upcoming session. A method sits inside a methodology; the two are different levels, as the discussion below makes concrete.
Formalize — the three methods named. The methods in the syllabus:
- TDD — Test-Driven Development: write the test first, watch it fail, then write the minimum code to make it pass. Testing drives the development, not the other way around.
- FDD — Feature-Driven Development: development organized around delivering features in short, client-valued iterations, each feature going through design, build, and review.
- DDD — Data-Driven Development (or domain-driven design in other usage): in this course's list it is a data-driven method that is not in the scope of the syllabus — name it correctly if asked, but it is not examinable.
BDD — Behavior-Driven Development is the sibling that will be explained together with TDD and FDD in an upcoming session. The point for this session is the level: TDD, FDD, and DDD are methods — sets of principles and steps — that sit inside methodologies like Scrum or XP.
1.12.3 Student Question: Methodology versus Method
Q: What is the difference between methodology and method? Is it like a framework and a process, or guidelines? A: A methodology is a framework and guidelines — how to do things. A method is the set of principles, steps, or the process you follow inside it. In layman terms: Scrum is a methodology. With Scrum, you can follow TDD as your method — you will do all the scrum ceremonies, but you work with the TDD approach, testing first. You can combine them freely: extreme programming is a methodology and you follow TDD inside it; Scrum is a methodology and you follow FDD inside it; or a team can do TDD with its own set of meetups, no formal methodology at all. The method is the subset of how you work; the methodology is the whole framework.
Intuition — the building and its plumbing. Think of a methodology as a whole building: the layout, the rooms, the rules of how people move through it — a framework and guidelines for how to do things. A method is one specific installation inside it — say, how the water flows through the pipes — a set of principles, steps, or a process you follow. You can re-plumb the same building many different ways: Scrum with TDD, Scrum with FDD, XP with TDD — and a team can even install good plumbing in an empty lot, doing TDD with its own set of meetups and no formal methodology at all. The analogy breaks where real buildings do not allow free re-plumbing — agile deliberately does — but the relationship holds exactly: the method is the subset of how you work; the methodology is the whole framework.
Recap + bridge. The agile family has two levels: methodologies — whole frameworks like Scrum and extreme programming — and methods — the steps and processes inside them, like TDD, FDD, and DDD (BDD arriving in a later session). The combination is free: Scrum with TDD, XP with TDD, Scrum with FDD, or TDD with no framework at all. With the levels clear, the session closes where it should: with the people — the roles an agile team is actually made of.
Real-world connection. This methodology-versus-method distinction is used daily in hiring and certification: "Scrum master certification" is a methodology-level qualification, while job ads for "TDD practice" or "BDD with Cucumber" name method-level skills. Teams in industry combine them exactly as the professor describes — the reference material likewise treats Scrum, extreme programming, and feature-driven development as agile methodologies, and DevOps as the broader movement that extends agile's collaboration ideas beyond development into the whole organization.
1.13 Roles in Agile
1.13.1 The Three Roles
Agile has only three roles, basically. The first is the user — meaning your stakeholders, your customer, your end user, everybody. The second is the product owner — the person who owns the product. The third is the software development team — the team working to accomplish that product, which includes developers, testers, everyone.
Formalize — the three roles and their boundaries.
| Role | Who it is | What it stands for |
|---|---|---|
| User | Your stakeholders, your customer, your end user — everybody | The people whose needs the product serves; their requirements and feedback drive the work |
| Product owner | The person who owns the product | The single voice of the product's value: what gets built, in what priority, and what counts as done |
| Software development team | Developers, testers, everyone working to accomplish the product | The people who turn requirements into working software |
The definition of "user" is deliberately wide: stakeholders, customer, and end user all count. And the development team is deliberately wide in the other direction: developers and testers — everyone doing the work — not just programmers. Three roles, no more: that is the whole agile role structure.
1.13.2 The Scrum Master Is Not an Agile Role
One correction worth noting: the software development team does not include the Scrum master as a separate agile role. The Scrum master is with respect to Scrum. If you talk about agile as such, agile has three roles: user, product owner, and the software development team. Keep the two levels separate — Scrum is one methodology inside agile thinking, and its Scrum master role does not generalize to all of agile.
Pitfall — the Scrum master is Scrum, not agile. Because Scrum is the most popular agile methodology, its cast of characters leaks into the general picture — and one leak is wrong: the Scrum master is not an agile role. The Scrum master exists with respect to Scrum, the methodology from section 1.12, not with respect to agile as a whole. Agile proper has exactly three roles — user, product owner, and software development team — and the software development team does not include the Scrum master as a separate role. Keep the two levels separate: Scrum is one methodology inside agile thinking, and its roles do not generalize to all of agile. (For contrast, the Scrum master's function — helping the team, obtaining resources, protecting it from problems — is real work; it just belongs to the Scrum methodology's role set, not to agile's.)
Recap + bridge. Agile has three roles — user (stakeholders, customer, end user), product owner, and the software development team (developers, testers, everyone) — and the Scrum master stays with Scrum, not with agile in general. That closes the session's arc: the SDLC phases, what DevOps changes in each, the waterfall-versus-agile comparison, and the team that works inside agile. The exam guidance that follows gives the practical rules for how this course runs and how the exam will test it.
Real-world connection. These three roles are the skeleton of nearly every agile team in industry: business stakeholders as users, a product owner managing the backlog and priorities, and a cross-functional development team that owns delivery. When companies adopt DevOps on top of agile, the same three-role team grows extra DevOps-oriented functions (service owner, reliability engineer, gatekeeper, DevOps engineer) — but the agile core remains the three roles, which is why the professor insists on keeping the levels clean.
Exam Guidance Summary
This course runs as practice, process, and tools rather than coding. You will learn the tools — Jenkins, GitHub, Git — and there is no coding that you have to follow for the course; you can refer to the open code available on GitHub for the labs.
Q: Will the course be entirely on a coding platform — will we be doing coding? A: No. This course is about practice, process, and tools. You will learn tools like Jenkins, GitHub, and Git. There is no coding you need to follow for this course; you can refer to the open code available on GitHub for the labs.
Exam note: the exam is online, and both the midterm and the comprehensive are open book. Quizzes run on the course portal, and assignments are uploaded there as well — the quiz must be completed in one go, and live knowledge checks will be held during the contact sessions.
Q: Does the quiz need to be attempted in one go? A: Yes, it needs to be attempted in one go; otherwise it does not make sense with the quiz marking scheme. During our contact sessions we will also run small knowledge checks where I ask a question and you answer live.
Q: Will the exams be open book? A: Yes. Since your exam would be online, both the midterm and the comprehensive will be open book.
Exam note: the questions are scenario based. Do not expect a question like "give me the git command" or "write a Jenkins pipeline to do so and so" — that is all available on Google and you do not have to memorize it. You can expect comparison questions, such as what git commit does versus what git fetch does. The old question papers, once uploaded, show the pattern of the exam.
Q: Should we expect questions asking us to write a git command or a Jenkins pipeline? A: No. You should not expect a question asking you to write a git command or a Jenkins pipeline, because all of that is available on Google and you do not have to mug it up. Your questions will be scenario based. There will be no questions on the technology side asking you to write a script; there can be comparison questions, like what git commit does versus what git fetch does. Access the old question papers and you will understand the pattern.
Exam note: any book is allowed in the exam. Whatever is referred in the course handout is fine; apart from that, if you found a book really good and you want to answer from it, you can carry that too — there is no restriction. E-books are allowed as a printout or Xerox, and the copy should be spiral bounded. You can carry handwritten notes from your notebook, and the course PPTs are accessible as well.
Q: Which books can we carry into the open-book exam? A: Any book referred in the course handout is allowed. Apart from that, if you found another book really good and you want to answer the question from that book, you can carry that too — there is no restriction. E-books are allowed: you have to take a printout or Xerox, and it should be spiral bounded. You can carry your handwritten notebook notes and the course PPTs as well.
Exam note: Google is not allowed during the exam. A few cases have happened, and very strict actions were taken against those. The exam wants to see your own understanding — Google answers everything, but the exam wants to see what answer you give.
Q: Is Google allowed during the exam? A: No, Google is not allowed. There have been a few cases, and very strict actions were taken against those. We want to see what your understanding is — Google answers everything, but we want to see what answer you give.
Exam note: handwritten notes taken during sessions can be carried into the exam.
Q: Can we carry our own handwritten notes? A: Yes. Whatever notes you take during our contact sessions, written in your notebook, you can carry that notebook into the exam.
The hands-on labs run on a virtual lab platform: you book a slot, and within 24 hours you get remote desktop access to a machine where the DevOps toolchain is already installed — Git, GitHub, creating a source code folder, running Git commands, creating a Jenkins job — and you just start and perform your labs. There is no limit on booking; you can book multiple times as per availability.
Q: How many times can we book virtual lab slots? A: There is no limit — you can book multiple times as per availability under the book slot. Within 24 hours of booking, you get remote desktop virtual access to a machine where every tool is already installed; you use your institute login ID and password, and you just start and perform your labs.
Exam note: the assignment follows the same flexible philosophy. There are five problem statements, and you can opt for anyone as per your choice. Three of them are based on your experimental learning — one on Git, one on Selenium, one on Jenkins — for those who are sound in technology. Two of them are purely case study based, for those less comfortable with the technology stack: you propose the best use case, create a tutorial, or architect and design a flow chart with the expertise to follow.
Q: How does the assignment work? Will there be flexibility? A: You get five problem statements and can opt for anyone as per your choice. Three are based on experimental learning: one on Git, one on Selenium, one on Jenkins. Two are case study based, where you propose the best use case for the problem statement, create your tutorial, or architect or design some flow chart. Pick anyone as per your choice.
For Selenium specifically, the expectation is a small script, not huge coding: a demo will be held and a reference script shared — the reference is in Python, but you can write yours in Java or any language you prefer, for example automating a login page.
Q: In Selenium, do we need to write a lot of code? Which language should we use? A: It is a small script, not huge coding. There will be a demo on Selenium and one small script will be shared with you as a reference — the reference script is in Python, because that is what I am comfortable with, but you can write your script in Java or any language you prefer. The expectation is a small script, like automating your login page.
Exam note: DevSecOps, MLOps, and SRE are out of the scope of the course. There will be no questions on DevSecOps, no questions on MLOps, no questions on SRE. Slides may be shared on these trendy terminologies to increase your knowledge base, but they are not part of the syllabus or the examination perspective. A small Docker demo will also be arranged in the tutorial session.
Q: Will we touch the security part — DevSecOps, MLOps, SRE — in this course? A: We will not be able to touch them in the course, but I will clarify what DevSecOps, MLOps, and all of these fancy terminologies mean. They are out of the scope of your course — there will be no questions on DevSecOps, no questions on MLOps, no questions on SRE. I believe in increasing your knowledge base, so I may share some slides on these trendy terminologies, but they will not be part of your syllabus or your examination perspective.
Exam note: the course integrates quality into the pipeline — Jenkins with SonarQube for code inspection and Selenium for testing — and you will learn how to create a pipeline, plus the continuous integration, continuous deployment, and delivery cycle.
Study advice: do not worry about the examinations — if you attend the sessions and go through the recorded sessions, you can crack them easily. Give more attention to clearing your doubts and increasing your knowledge base. For certification-style material like agile and DevOps, go through the tutorials and documentation very thoroughly before the examination, because in industry people mold the processes to their business requirements, and that is how misconceptions get absorbed.
Key Industry Applications
The toolchain maps directly to industry practice. Git and GitHub for source control, Jenkins for continuous integration jobs, SonarQube for code inspection, Selenium for automated testing, and Docker for containerized environments. Jenkins and SonarQube integrate for code inspection, and Jenkins and Selenium integrate for testing, which is how quality gates are wired into real pipelines — the same pipeline pattern seen in the seven-second deployment case study.
The reference books are the industry's own materials. The course textbook on continuous delivery is written in line with industry experts, and you can correlate its concepts with real release engineering; the book DevOps: A Software Architecture Perspective is the better one for clearing your conceptual thoughts about DevOps.
Seven-second deployments are the speed target. The seven-second deployment case study shows a team that replaced manual release checklists — like verifying commands and checking whether the Tomcat server was turned on — with an automated build, deploy, test, and release pipeline, achieving production deployment in seven seconds and equally fast rollbacks. This is the same "deployment lead time" the industry measures to evaluate its pipelines.
Staged feature rollouts are standard in large consumer platforms. Facebook's live video feature lived in the production environment for six months, accessible only to third-party testing vendors, before it was launched to end users; ride-hailing apps like Uber and Ola also ship features that are not all accessible to end users at launch. Deployment (code in production) and release (users can use it) are separated by design.
MVPs are how consumer apps open. E-commerce and consumer apps start their first release with a minimal viable product — a login page and registration form — before building search engines, filtering, or payment integrations like credit card, PayPal, Paytm, and Google Pay; many start with cash on delivery. The registration-first slice of section 1.3 is the actual opening move of real products.
The survey reports are the industry's own evidence. The VersionOne State of Agile Report and the Puppet reports are the industry's own survey data on agile and DevOps adoption — 94 percent of organizations in 2007 and 97 percent in 2008 practicing agile, with reasons like accelerating software delivery (71 percent), managing changing priorities (63 percent), and increasing productivity (51 percent) — surveyed across marketing, finance, medical, manufacturing, and IT domains.
Certifications keep practitioners current. Certified Scrum master and the DevOps Leader certification from the DevOps Institute are two recognized paths, and the Effective DevOps book, about building a culture of collaboration, was written for that certification track. Certification-style material like agile and DevOps is exactly the content the exam guidance says to study thoroughly — in industry, people mold processes to their business requirements, which is how misconceptions get absorbed.
The teaching background is industry-grounded. This course's teaching background comes from industry experience in the PLM domain — product lifecycle management — at Tata Technologies, working with Tata Motors, and at Dassault Systèmes working with CATIA, before moving into teaching software engineering, software project management, software product management, data mining, and machine learning; the research thread is embedding ML and data mining into SDLC phases to bring more automation into software engineering.
ITD Lecture 1 notes · Software Development Lifecycle, Waterfall, and Agile
Sections Breakdown
The SDLC is the six-phase engineering process that converts an idea into software that keeps running 24x7; this course walks each phase asking what DevOps changed in it.
Requirement analysis produces the specification document that forms the skeleton of the software; challenges of common language and differing terminology can produce elephant-versus-buffalo failures, so DevOps replaces the bulky upfront document with iterative, feedback-driven requirement gathering.
The design phase converts the requirement document into technical diagrams (flowcharts, CRC cards), and DevOps focuses design on the MVP — the smallest set of features that still delivers a workable product, as shown by the morning-routine and e-grocery-app examples.
The development phase converts the design into workable code artifacts using small delivery cycles — code the MVP in two to three weeks, deliver early and often, involve stakeholders in alpha and beta rounds, and keep the code modular so ongoing change stays affordable.
DevOps adds a continuous integration server to the testing phase: every single-line change triggers a pull of the source and the full testing cycle, giving continuous testing that builds confidence in production behavior, with automation as the goal and manual flexibility preserved.
Delivery pushes ready code into internal test environments, deployment pushes it into production, and release makes the feature visible to end users; the Facebook live video example shows code can sit deployed in production for months before release.
Maintenance after release comes in two forms — evolutive (adding new features and upgraded versions) and corrective (fixing customer-raised defects); it can be minimized through good process and continuous monitoring but never eliminated.
A team replaced manual release checklists and heavy cross-team dependencies with an automated build, deploy, test, and release pipeline, cutting production deployment to seven seconds with equally fast rollbacks.
Waterfall is the sequential classic lifecycle: each phase completes fully before the next, with feedback loops as an amendment; advantages (easy, documented, little rework when requirements are clear) are offset by the end-stage risk that the customer sees the product only when development is done.
Agile arose to mitigate developers' fears — wrong product, weak quality, lateness, broken commitments; the VersionOne report shows 94 percent adoption in 2007 and 97 percent in 2008, and the 12 principles and four pillars combine into the agile manifesto.
Agile breaks the wall between business people and the development team: a developer's doubt that once travelled through team lead, project manager, and customer project manager is now answered by direct interaction with the customer, driven by the demo-feedback-adjustment loop.
Agile has two nested levels: methodologies (whole frameworks like Scrum and extreme programming) and methods (sets of principles and steps inside them, like TDD, FDD, and DDD); combinations are free — Scrum with TDD, XP with TDD, or TDD with no formal methodology at all.
Agile has exactly three roles — user (stakeholders, customer, end user), product owner, and the software development team (developers, testers, everyone) — and the Scrum master is a Scrum-specific role, not an agile role.
The course runs as practice, process, and tools (Jenkins, GitHub, Git) with no coding; the online exam is open book for both midterm and comprehensive, questions are scenario based, Google is not allowed, and assignments offer five problem statements with flexible choice.
The course toolchain (Git/GitHub, Jenkins, SonarQube, Selenium, Docker) maps directly to industry pipelines; seven-second deployments, staged feature rollouts, registration-first MVPs, and the VersionOne and Puppet surveys connect the lecture's concepts to real practice.
Exam Revision Notes
Below is the distilled, exam-ready core. Every entry comes from the full explanation above. Use this section for rapid review; return to the main notes when a point needs more context.
The Software Development Lifecycle (SDLC)
Must-know: SDLC converts an idea into working software through six phases: requirement analysis, design, development, testing, release, maintenance; maintenance continues 24x7 after release.
⚠️ Top pitfall: Thinking the lifecycle ends at deployment; in practice the longest part (availability 24x7, maintenance) begins there.
Self-check: List the six SDLC phases in order and state what output each phase hands to the next.
Connects to: Section 1.2, Section 1.5, Section 1.6, Section 1.9
Requirement Analysis Phase
Must-know: Requirement analysis is the first SDLC phase, produces the specification document, and is where most project problems start; wrong requirements mean the delivered product is not what the customer expected (elephant versus buffalo), and dead features consume capacity without revenue.
⚠️ Top pitfall: Collecting requirements in IT vocabulary (modular, object oriented, microservices) with non-IT people, or assuming everyone means the same thing when terms like supplier and third party vendor differ.
Self-check: What does DevOps replace the bulky upfront specification document with, and why?
Connects to: Section 1.1, Section 1.3, Section 1.6
Design Phase and the Minimal Viable Product
Must-know: MVP (Minimal Viable Product) is the smallest set of features that still delivers a workable product, chosen against a business goal (attract investors, generate revenue, win a demo); DevOps designs only what is required instead of a bulky design document.
⚠️ Top pitfall: Confusing MVP with a full first release — the MVP is deliberately incomplete (e.g., a login page with registration only, cash on delivery instead of payment integrations).
Self-check: In the morning-routine example, what changes between a 7 a.m. and an 8:30 a.m. start, and what never changes?
Connects to: Section 1.2, Section 1.4
Development Phase
Must-know: Development follows the MVP: coding takes no more than two to three weeks, feedback is collected via early alpha and beta rounds with stakeholders, and code must be modular because software undergoes ongoing change.
⚠️ Top pitfall: Building a monolithic lump of code that resists change — the exact disease agile was created to cure.
Self-check: Why is the same bug much easier to fix in 500 lines of code than in 10,000 lines?
Connects to: Section 1.3, Section 1.5, Section 1.9
Testing Phase: Continuous Testing
Must-know: A continuous integration server triggers on every change, pulls the source code, and runs the testing cycle, so testing is continuous; this boosts confidence that software will work well in production.
⚠️ Top pitfall: Forcing full automation where a human check still matters — automation is the goal, but flexibility for manual intervention must be preserved.
Self-check: What happens on the CI server when a developer makes a single-line change?
Connects to: Section 1.4, Section 1.6, Section 1.8
Delivery, Deployment, and Release
Must-know: Delivery = push code to internal test environments; deployment = push code to production; release = feature becomes visible to the end user. Comparison questions on these three terms are expected in the exam.
⚠️ Top pitfall: Calling every push a 'deployment' — pushing to UAT, set, or pre-production environments is delivery, not deployment; only the production push is deployment.
Self-check: A feature ran in production for six months before users could access it — which terms describe the six months and the switch-on moment?
Connects to: Section 1.1, Section 1.5, Section 1.7, Section 1.8
Maintenance Phase
Must-know: Maintenance has two forms: evolutive (improve functionality, add new business features, release upgraded versions) and corrective (fix bugs, errors, and defects raised by customers); maintenance can be minimized but never totally avoided.
⚠️ Top pitfall: Thinking maintenance is only about fixing bugs — a large share is evolutive: adding new features to software that works fine.
Self-check: Is enhancement the same as evolutive maintenance?
Connects to: Section 1.6, Section 1.8
Case Study: From Manual Releases to Seven-Second Deployments
Must-know: The pipeline (continuous integration, build, delivery, deployment) replaced manual release checklists so the team deployed to production in seven seconds and rolled back in a similar time — the cost of a bad release collapses when push and rollback are automatic.
⚠️ Top pitfall: Manual release checklists with high human intervention and dependency between dev, tester, and ops teams — even a 'proper' documented checklist cannot match an automated pipeline.
Self-check: What did the team replace, and what two numbers measure the result?
Connects to: Section 1.5, Section 1.6, Section 1.9
The Waterfall Model
Must-know: Waterfall completes each phase once and fully before the next; it is cost effective when requirements are clear (no new roles, no organization change) but the customer sees the product only at the end, so changes are hard to accommodate and wrong requirements surface only after deployment.
⚠️ Top pitfall: Choosing waterfall when requirements or budget are unclear — its cheapness buys nothing because the output is wrong.
Self-check: Why did shrinking project timelines (from 1-3 years to 2-6 months) make the waterfall model much more painful?
Connects to: Section 1.1, Section 1.10
Agile Methodology
Must-know: Agile rests on 12 principles and four pillars (individuals and interactions, working software, customer collaboration, responding to change) combined in the agile manifesto; 'over' means more weight, not 'instead of' — processes and tools still exist but are flexible.
⚠️ Top pitfall: Reading the pillars as either-or — believing agile means no processes, no tools, no documentation; the right reading is a priority ranking under scarcity.
Self-check: Which three reasons for adopting agile came back with the highest percentages, and in what order?
Connects to: Section 1.9, Section 1.11, Section 1.12
What Agile Brings to a Team
Must-know: Agile breaks the wall between business and development: team members interact directly with the customer instead of routing doubts through team lead → project manager → customer project manager, and review meetings with stakeholder demos run the demo-feedback-adjustment loop.
⚠️ Top pitfall: Keeping the traditional question chain — every handoff increases the timeline without adding productivity; the chain is pure waste.
Self-check: Trace the path of a developer doubt in the traditional setup and state what agile replaces it with.
Connects to: Section 1.10, Section 1.12
Agile Methodologies and Methods
Must-know: A methodology is the framework and guidelines (how to do things); a method is the set of principles, steps, or process you follow inside it — e.g., Scrum is a methodology, TDD is a method you can follow inside Scrum or XP.
⚠️ Top pitfall: Using methodology and method as synonyms — they are two levels: the method is the subset of how you work, the methodology is the whole framework.
Self-check: Give one valid combination of a methodology and a method, and one combination with no methodology at all.
Connects to: Section 1.10, Section 1.13
Roles in Agile
Must-know: Agile has three roles: user, product owner, and software development team; the Scrum master belongs to Scrum and is not a separate agile role.
⚠️ Top pitfall: Treating the Scrum master as a general agile role — it is Scrum-specific; agile as such has only three roles.
Self-check: What are the three roles of agile, and where does the Scrum master belong instead?
Connects to: Section 1.12
Exam Guidance Summary
Must-know: Exam is online and open book (midterm and comprehensive); questions are scenario based with comparison questions (e.g., git commit versus git fetch); no questions ask you to write git commands or Jenkins pipelines; Google is not allowed; DevSecOps, MLOps, and SRE are out of scope.
⚠️ Top pitfall: Expecting technology-side questions that ask you to write a script or command — the exam tests scenario understanding and comparisons.
Self-check: What can you carry into the open-book exam, and what is explicitly not allowed?
Connects to: Section 1.1, Section 1.6
Key Industry Applications
Must-know: Jenkins + SonarQube wire code inspection into pipelines and Jenkins + Selenium wire automated testing in — the same quality-gate pattern the course labs build.
Self-check: Which book does the professor recommend for clearing conceptual thoughts about DevOps?
Connects to: Section 1.6, Section 1.8, Section 1.10
Was this lecture useful?
BitsNotes AI Assistant
Subject Notes AssistantConfigure AI Chat
Choose how to access the chatbotSigned in as
Powered by BitsNotes — 20 messages per day. No API key needed. Want unlimited access? Use "Bring Your Own Key" mode.
Sign in to use AI Chat
Get 20 free AI messages per day to ask questions about your lecture notes. Sign in with Google or GitHub — it takes 5 seconds.
Sign In to BitsNotesSwitch to "Bring Your Own Key" tab above for unlimited access with any OpenAI-compatible provider.