Understand how software gets built, then prove it on the exam
Written for a complete beginner. Every abbreviation is spelled out, and every idea gets a plain-English explanation, an everyday analogy and a banking example. Read a module, watch its video lesson, then practise the questions until you score 20/20.
6 modules0 exam-style questions6 narrated video lessons0 abbreviations explained
Study Session 1 · Lesson slides 01
What the SDLC is, its 7 phases, and the models teams choose from
In one sentence: the SDLC (Software Development Life Cycle) is the step-by-step route a team follows to turn "we need an app" into working software, and then keep it working for years.
Think of it like
Building a house. You don't start by pouring concrete. First you decide what house you want and whether you can afford it (planning), ask the family what rooms they need (analysis), get an architect's drawing (design), build it (implementation), have an inspector check it (testing), hand over the keys (deployment), and fix leaks and repaint over the years (maintenance). Software works the same way.
Why the SDLC exists
The textbook opens with TechNova Solutions, a company hired to build a delivery-tracking app for a logistics firm. Without a structured process, the project "spirals into chaos": missed deadlines, blown budgets, an unhappy client. It then describes a government social welfare portal for all 36 states. That project involves biometrics, money, health data, many user types and frequent policy changes. Without an SDLC, requirements get misread, security gets forgotten and policy changes force costly rework.
The book defines the SDLC as a systematic, iterative process for building software that prioritises quality, efficiency, correctness and maintainability. Every phase is planned, documented, reviewed and validated.
The SDLC's dual nature (a favourite exam question)
1. A process model
It defines how software is built: a logical sequence of activities from idea to retirement, so work isn't done "ad hoc".
2. A project management tool
It helps managers monitor timelines, allocate resources, control costs and manage risks, and shows whether the project is healthy.
Four big benefits the textbook lists
A blueprint: it keeps technical work aligned with business goals and user needs.
Predictability and control: you can estimate budget, effort and time, and spot risks early.
Accountability and documentation: every phase leaves artefacts (SRS, design docs, test plans, change logs, deployment records) that form an audit trail for audits, regulators or legal disputes.
Knowledge transfer and team scalability: a new developer can read the documents instead of relying on "tribal knowledge", so onboarding is faster and the team survives staff turnover.
The slides add five roles of the SDLC in software engineering: structure, efficient resource and cost management, risk reduction by catching issues early, consistency and quality assurance, and collaboration among stakeholders.
The foundation stage. The team defines the scope (what's in and what's out, which prevents scope creep, the uncontrolled growth of features), sets measurable objectives, and runs a feasibility study with three checks:
Technical feasibility
Do we have the technology, tools and skills?
Economic feasibility
Will the benefits outweigh the costs?
Operational feasibility
Can the organisation actually run it and fit it into existing processes?
Key activities: resource allocation (people and technology), budget estimation, risk identification and mitigation, timeline projection using Gantt charts, PERT diagrams (Program Evaluation and Review Technique) or critical path analysis, and initial stakeholder engagement.
2. Requirement Analysis: "What must the system do?"
The team works with clients, end users and business analysts to gather, clarify, prioritise and document requirements.
Functional requirement
What the system does: "Customer can log in", "System generates a monthly statement".
Non-functional requirement
How well it does it: speed, security, reliability, usability. "Transfer completes in 3 seconds", "99.9% uptime".
Techniques: stakeholder interviews (structured, semi-structured or unstructured), workshops including JAD (Joint Application Development) sessions, feasibility studies, and user stories in the format "As a [user], I want [goal] so that [reason]."
Deliverables: the SRS (Software Requirements Specification, the main deliverable), use case models and diagrams, feasibility reports and a prioritised requirement list. Prioritise with MoSCoW: Must have, Should have, Could have (nice but not essential), Won't have this time. The slides also mention cost-benefit analysis and stakeholder influence.
At a bank
Functional: "A customer can send money to another bank's account from the mobile app." Non-functional: "The transfer screen loads in under 2 seconds on 3G." User story: "As a customer, I want to save beneficiaries so that I don't retype account numbers."
3. Design: turning the "what" into the "how"
Architects choose the architecture (client-server, microservices, or a single monolithic codebase), design the database schema, build UI mockups and prototypes, and draw diagrams: DFD (Data Flow Diagram: how data enters, moves through and leaves the system) and UML (Unified Modelling Language) class, sequence and component diagrams. They also plan security (authentication, encryption, authorisation), performance and scalability (caching, indexing, load balancing) and pick the technology stack. High-level design covers the overall architecture. Low-level design covers algorithms, database schemas and interface layouts. The output is a set of design documents that serve as the technical blueprint.
4. Implementation (Coding): "Let's build it"
Developers turn the design into code, following coding standards (naming, formatting, comments, error handling), using source control like Git (safe, trackable changes, branches and rollback), building modular pieces, and using practices like Agile, TDD and CI/CD. Peer code reviews catch errors and share knowledge. Documentation written alongside the code includes inline comments, API docs, installation guides and user manuals.
5. Testing: "Does it work as intended?"
This phase detects and fixes errors before release, validates the requirements and checks reliability under real-world stress. It covers unit, integration, system, acceptance, performance and security testing. Session 3 covers each type in detail.
6. Deployment: "How do we deliver it to users?"
The software goes live. Traditional deployment is one big, carefully scheduled event, which may involve downtime, major configuration changes and user training. Modern Agile and DevOps teams deploy small pieces often through CI/CD pipelines. Activities: data migration from old systems, installation and configuration, deployment automation (dev → staging → production) and training for users and administrators. The slides name three strategies: phased rollout, parallel deployment (old and new run side by side) and direct cutover (switch off old, switch on new).
7. Maintenance: keeping it alive
This phase is ongoing, and maintenance can account for up to 70% of the total lifetime cost of software. Learn the four types by heart:
Type
What triggers it
Bank example
Corrective
A bug or defect is found
Transfers over ₦1m fail with an error. Fix the bug.
Adaptive
The environment changes: new OS, hardware, database, or a new law or regulation
The Central Bank issues a new rule, or Android releases a new version. Update the app to stay compliant or compatible.
Perfective
Users want new features or better performance or usability
Customers ask for dark mode, or a faster statement download.
Preventive
Nothing is broken yet, but you refactor, update docs and tidy architecture to reduce technical debt
Rewrite messy 400-line functions before they cause problems.
Exam trap
"No bug, just improved usability after user feedback" = Perfective, not corrective. "New government circular or policy" = Adaptive. "Refactoring with no new bugs" = Preventive. Only an actual defect = Corrective.
SDLC models: different routes through the phases
A model is a strategy for moving through the phases. The textbook's LMS story: project manager Zion at TechNova must build a university Learning Management System and weighs each model. In the end she picks a hybrid: a prototype first to clarify unclear requirements, then Agile for full development.
Waterfall: one step at a time, no going back
Water only flows down. Key principle: no phase begins until the previous one is fully completed and signed off. Maintenance follows deployment.
Strengths
Simple, easy to manage, clear milestones, thorough documentation at every phase, good for small or stable projects with fixed requirements.
Weaknesses
Inflexible to change, late testing (bugs found late are costly), minimal customer involvement (users see it only at the end), poor for complex or long projects.
Use it for: government and defence, construction and engineering software, embedded systems and firmware (printers, washing machines), aerospace, and banking systems with strict regulatory compliance. In short, anywhere requirements are fixed and documentation and approvals are mandatory.
V-Model: Waterfall with a matching test for every step
An extension of Waterfall focused on verification and validation. For every development stage there is a corresponding testing phase planned in parallel. For example, while architects design the system, testers write the integration test plans. It catches defects early but is just as inflexible as Waterfall.
Incremental Model: deliver in slices
Split the system into small modules and release the basics first (course registration and login), then add more in later increments (video lectures, then assignments, then grades). This allows partial delivery and user feedback at each stage.
Prototype Model: "I'll know it when I see it"
Quickly build a rough working model with limited features to get feedback when requirements are unclear. The prototype evolves until stakeholders know what they want.
Agile: short cycles, constant feedback
Agile is iterative and incremental. Work is split into sprints (short, fixed-length cycles of 1–4 weeks), each producing working software that users review. The Agile cycle in the textbook: Plan → Design → Develop → Test → Launch → Review → Deploy, then loop back.
The Agile Manifesto (2001) has four values. The item on the left is valued more, though the item on the right still matters:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
And 12 principles, which examiners describe as scenarios:
#
Principle
You'll recognise it when…
1
Customer satisfaction through early and continuous delivery
Customers get working pieces early, not after a year
2
Welcome changing requirements, even late
A late change request is accepted, not resisted
3
Deliver working software frequently (weeks, not months)
Releases every 2 weeks
4
Business people and developers work together daily
The business analyst sits with devs every day
5
Build projects around motivated individuals
Trust the team, give them tools and support
6
Face-to-face conversation is most efficient
Walk over and talk instead of long emails
7
Working software is the primary measure of progress
Progress = features that work, not pages of docs
8
Sustainable pace
No endless overtime or "crunch": fixes burnout
9
Technical excellence and good design
Clean code and refactoring keep you agile
10
Simplicity: maximise the work not done
Don't build features nobody asked for
11
Self-organising teams produce the best designs
The team decides how to do the work
12
Regular reflection and adjustment
Retrospectives at the end of each sprint
Scrum (Agile framework): sprints, a product backlog (prioritised list of everything to build, owned by the Product Owner) and daily stand-ups (15 minutes: what I did yesterday, what I'll do today, any blockers). Kanban: a visual board, limits on work in progress and continuous flow instead of fixed sprints. Session 4 covers both in depth.
Use Agile for: web and mobile apps, startups, dynamic markets, anything where requirements will change. Weakness: may lack formal documentation, is less suitable for fixed contracts or heavy regulation, and needs experienced, collaborative people.
Spiral: loops of risk analysis
Introduced by Barry Boehm in 1986 (the textbook's date). Each loop is one phase of development. As the spiral widens, cumulative cost and product maturity both increase.
Spiral combines Waterfall's structure with prototyping's flexibility and puts risk analysis at every loop. The textbook's quadrant names: Objective Identification → Alternate Evaluation and Risk Analysis → Product Development → Review and Next-Phase Planning. Best for: large, high-budget, high-risk projects, evolving requirements, critical systems (defence, aerospace, banking, healthcare), and research. Weaknesses: expensive, complex, needs risk-analysis experts, and too much overhead for small projects.
Compare the three main models (Table 1.1)
Criteria
Waterfall
Agile
Spiral
Structure
Sequential
Iterative
Iterative and risk-driven
Flexibility
Low
High
Medium
Risk management
Low (risks found late)
Medium (through incremental releases)
High (assessed every cycle)
Best for
Fixed, simple, regulated projects
Rapid, evolving projects
Large, complex, high-risk projects
How to pick in 5 seconds
Requirements fixed by law, heavy documentation, sign-offs → Waterfall
Waterfall but testers plan tests in parallel with each stage → V-Model
Requirements unclear or changing, short deadline, frequent feedback → Agile/Scrum
High technical risk or unknowns, big budget → Spiral
Stakeholders say "we'll know when we see it" → Prototype
"Release basic features first, add more in stages" → Incremental
Summary
The SDLC is both a process model and a project management tool, with 7 phases.
Planning = scope, objectives, feasibility (technical, economic, operational). Analysis = requirements and the SRS. Design = "how". Implementation = code. Testing = verify. Deployment = deliver. Maintenance = corrective, adaptive, perfective, preventive (up to 70% of cost).
Waterfall suits fixed requirements, Agile suits change, Spiral suits risk, the V-Model adds parallel testing, Prototype suits unclear needs, and Incremental delivers in slices.
Study Session 2 · Lesson slides 02
Design and development: architecture patterns, clean code, Git, security, and more methodologies
In one sentence: an architectural pattern is a proven blueprint for arranging the big parts of a system, and coding best practices are the habits that keep the code inside those parts readable, safe and fast.
Think of it like
A restaurant. The dining room (what customers see), the kitchen (where the rules and cooking happen) and the store room (where ingredients are kept) are separate rooms with separate staff. That separation is an architecture. How neatly each cook labels jars and cleans up is "clean code".
Architectural design patterns
Definition: a general, reusable solution to a commonly occurring problem in software architecture. It sits at a high level: it says which major components exist, what each is responsible for, and how they talk. It does not say how to write each line of code.
Why they matter: they give a shared vocabulary, set the system structure, help communication with stakeholders, support design decisions and make change and scaling easier. Benefits: maintainability, scalability, reusability, reliability (fault isolation), flexibility, team collaboration, and faster onboarding. The slides highlight scalability, maintainability, reusability, improved collaboration and performance optimisation.
1. Layered architecture
Each layer talks only to the layer directly below it. This is separation of concerns. The slides use online banking as the example.
Good for enterprise apps (ERP, CRM, payroll, hospital systems). Layers can be built and tested separately. Weakness: coupling between layers is fairly tight and it scales less well (Table 2.1 lists scalability as "limited, monolithic").
2. Client-server
Clients (your phone or browser) request services and serversprovide them. Strengths: centralised control, resource sharing, security. Examples: online banking, email, cloud platforms. Variants: 2-tier (client talks straight to the database) and 3-tier (client → application server with the business logic → database). The middle tier improves security by isolating database access.
3. MVC (Model–View–Controller)
You tap "Transfer" → the Controller processes it → updates the Model (balance) → the View (dashboard) refreshes.
The Model is independent of the View and Controller, so the UI can change without touching business logic. It enables parallel development and unit testing. Frameworks: ASP.NET MVC, Spring MVC, Ruby on Rails, Django. Used in CMS like WordPress and e-commerce.
4. Microservices
The app is a collection of small, loosely coupled, independently deployable services, one per business capability (accounts, fraud detection, loans). Each has its own database and talks through lightweight APIs (usually REST over HTTP). Benefits: independent deployment, technology diversity, fault isolation (if loans crash, transfers still work), and faster time to market. Used by Netflix, Amazon and Spotify. Tools: Spring Boot, Docker, Kubernetes. The opposite is a monolith: one big codebase, simpler for small apps.
5. Event-Driven Architecture (EDA)
Components react to events. Producers publish events ("withdrawal made"), an event channel / message broker (Kafka, RabbitMQ, AWS EventBridge) carries them, and consumers subscribe and react ("send SMS alert", "update fraud score"). It is asynchronous, very loosely coupled and real-time, which makes it ideal for fraud alerts, transaction notifications, IoT and live analytics.
6. SOA (Service-Oriented Architecture)
Applications are built by orchestrating reusable services exposed over a network using standard protocols (SOAP, XML, HTTP), often through an ESB (Enterprise Service Bus). Strengths: reuse, platform independence and interoperability. It is great for integrating legacy systems and third parties in banking, insurance and government. Bank examples from the slides: payment gateways (PayPal, Stripe), credit score checks and KYC identity verification.
Pattern
Modularity
Scalability
Coupling
Best use
Layered
Moderate
Limited
Tight between layers
Enterprise apps
Client-Server
Low–Moderate
Moderate
Moderate
Central systems, basic web and DB apps
MVC
High
Moderate
Loose
Web apps with UI separation
Microservices
Very high
Very high
Very loose
Large cloud-native, CI/CD-heavy systems
Event-Driven
Very high
Extremely high
Very loose
Real-time, streaming, IoT
SOA
High
Moderate
Loose (contract-bound)
Integrating diverse and legacy systems
Exam trap
"Real-time notifications or fraud alerts" → Event-driven. "Presentation, business, data access layers" → Layered. "Reusable third-party services, interoperability" → SOA. "Independent scaling, frequent updates, fault isolation" → Microservices over a monolith.
Coding best practices
Readability = how easy code is to read. Maintainability = how easy it is to change, extend and debug. They go together.
Clean code: simple, no redundant logic. KISS = Keep It Simple, Stupid. DRY = Don't Repeat Yourself. SOLID = five object-oriented design principles. SRP = Single Responsibility Principle (one function does one job).
Comments explain why, not just what. Too many comments add clutter.
Meaningful names: userAge, calculateSum, transactionAmount, not x or doMath. Conventions: camelCase for variables, PascalCase for classes, UPPERCASE for constants. Style guides: PEP 8 (Python), Google Java Style.
Consistent indentation and formatting (IDEs can auto-format).
Version control (VCS)
A version control system tracks every change to code so a team can collaborate and roll back. Centralised: one central repository. Distributed: every developer has the full history locally, and this is how Git works.
Git
The distributed VCS itself. Branching, merging, works offline.
GitHub
Web hosting for Git repos: pull requests, issues, huge community.
GitLab
Git hosting plus built-in CI/CD pipelines and self-hosting.
Bitbucket
Atlassian's Git platform. Integrates with Jira, and historically supported Mercurial.
Git Flow:master = production-ready code. develop = integration of features. feature branches come off develop and merge back. release branches prepare a version and merge into master and develop. hotfix branches come off master for urgent production fixes and merge into master and develop. Feature branching is the simpler alternative: one branch per feature, merged when done.
Commit best practices: make atomic commits (one logical change each); write clear messages with a 50–72 character summary in the imperative ("Fix bug", "Add feature"); commit early and often; don't commit generated files (binaries, build artefacts, logs); use branches for tasks; rebase and squash before merging to keep history clean. Use pull requests for peer review.
Error handling and debugging
Logging frameworks: Log4j (Java), NLog (.NET), Python's logging module. Levels: DEBUG, INFO, WARN, ERROR, FATAL. Include timestamps, error codes and method names. Never log PII (personally identifiable information) or passwords. In production, focus on ERROR and WARN.
Structured exception handling (try–catch) stops crashes. Catch specific exceptions (NullPointerException, IOException), never leave empty catch blocks, and don't use exceptions for normal control flow.
Security best practices
Threat
What it is
Defence
SQL Injection
Attacker types SQL into an input box to trick the database
Attacker injects a script into a web page that runs in other users' browsers
Sanitise and encode output, Content Security Policy (CSP) headers
Buffer overflow
More data written to memory than it can hold, overwriting neighbours
Bounds checking, safer functions (strncpy not strcpy)
Also: validate all user input; hash passwords (never store plain text); encrypt data in transit with TLS/SSL; use secure authentication.
Performance optimisation
Refactoring = restructuring code without changing its external behaviour. Techniques: modularisation (split big code into modules), inlining small frequently-called functions (with care, to avoid bloat), eliminating duplication, and simplifying conditionals (for example with lookup tables).
Big-O describes how time grows with input size: O(1) constant (hash table lookup), O(log n) (binary search on sorted data, balanced BST, heap insert and delete), O(n) linear (linear search), O(n²) gets slow quickly (bubble sort). Divide and conquer: merge sort, quick sort. Greedy: Kruskal's minimum spanning tree. Self-balancing trees (AVL, red-black) prevent slow unbalanced BSTs. Heaps suit priority queues. Dynamic programming avoids repeated calculation. Slides add database indexing, query optimisation and load testing.
More development methodologies
DevOps
A cultural movement joining Development and Operations. Automation, CI/CD, IaC (Jenkins, GitLab CI, Docker, Kubernetes, Ansible, Terraform), monitoring. Session 5 covers it fully.
RAD (Rapid Application Development)
Speed through quick prototypes and heavy user involvement. Four phases: requirement planning, user design, construction, cutover. Uses reusable components and time-boxed phases. Good for small or medium projects, MVPs and UI-heavy apps. Needs skilled developers and committed users.
XP (Extreme Programming)
An Agile method by Kent Beck (late 1990s) that pushes good engineering to the "extreme". Practices: pair programming (driver types, navigator reviews, they swap), TDD, continuous integration, simple design, small frequent releases. Values: simplicity, feedback, courage, respect, communication.
Session 2's version of Agile sprints is 2–4 weeks and produces a "potentially shippable product increment".
Summary
Six patterns: layered, client-server, MVC, microservices, event-driven, SOA. Know each one's best use.
Clean code: KISS, DRY, SOLID, good names, comments that explain why.
Git flow uses master, develop, feature, release and hotfix branches. Commits should be small, atomic and clearly described.
Handle errors with logging and specific try–catch. Secure against SQLi, XSS and buffer overflow. Optimise with refactoring and good algorithms.
RAD = prototypes and speed. XP = pair programming, TDD, small releases.
Study Session 3 · Lesson slides 03
Software testing and quality assurance
In one sentence:testing finds defects in the product, while quality assurance (QA) improves the process so fewer defects get made in the first place.
Think of it like
A bakery. Testing is tasting each loaf before it goes on the shelf. QA is the recipe standards, clean kitchen rules and staff training that make bad loaves rare.
The textbook's opening story: a remote patient-monitoring app skipped proper testing to meet a deadline. It sent false alerts, staff got overwhelmed and real emergencies were missed. Testing makes sure software does what it should (functional correctness) and doesn't do what it shouldn't (security and robustness).
Testing can be manual (a person runs it) or automated (tools and scripts run it).
The four levels of testing
From the smallest piece to the whole business. Bank example: test the "check PIN" function (unit) → login screen passes data to the dashboard (integration) → whole app under real conditions (system) → branch staff and customers approve it (acceptance).
Unit testing
Tests the smallest testable part (a function, method or class) in isolation. Goal: early bug detection, which is cheaper, and a safety net when refactoring. Frameworks: JUnit (Java), pytest (Python), NUnit (.NET). These run automatically in CI pipelines.
Integration testing
Tests how modules work together: data flow, API communication, dependencies, mismatched data types, protocol errors. Tools: Postman (REST APIs) and SoapUI (SOAP and REST web services). Strategies: top-down, bottom-up, sandwich (hybrid).
System testing
Tests the complete integrated system end-to-end, in an environment close to production, from the user's perspective.
Functional testing
"Does it do what it's supposed to do?" Login, transactions, UI features.
Non-functional testing
How well: performance (speed under load), security, usability, reliability, scalability.
Acceptance testing
The final phase before delivery. Checks the software meets business and user requirements and is fit for purpose. It involves stakeholders like clients, business analysts and product owners.
UAT (User Acceptance Testing)
Done by real end users with real business workflows. Focus: usability and day-to-day tasks.
BAT (Business Acceptance Testing)
Done by business stakeholders. Checks alignment with business goals and compliance.
Exam trap
"Individual component in isolation" = Unit. "API between modules" = Integration (Postman). "Whole system against requirements" = System. "Meets business and user needs before deployment" = Acceptance. "Real users validate" = UAT. "Organisational goals" = BAT.
Test automation tools
Tool
Used for
Remember
Selenium
Automating web apps in browsers
WebDriver (scripts in Java, Python, C#), IDE, Grid (many browsers at once)
JMeter (Apache)
Performance and load testing
Simulates many users. Measures response time, throughput, errors
Appium
Mobile testing (Android and iOS)
One script for both platforms. Uses the WebDriver protocol
Jenkins
CI/CD automation server
Runs tests after each commit through plugins
GitHub Actions
CI/CD built into GitHub
Workflows written in YAML files
GitLab CI/CD
CI/CD built into GitLab
YAML, parallel jobs
In a pipeline, unit tests run right after the build, then integration, Selenium, JMeter and Appium tests. If a test fails, the pipeline halts deployment.
Quality assurance
Quality standards
ISO 25010
A product quality model with 8 characteristics: functional suitability, performance efficiency, compatibility, usability, reliability, security, maintainability, portability. Maintainability includes analysability, modifiability and testability.
CMMI (Capability Maturity Model Integration)
A process improvement framework with 5 maturity levels: Initial → Managed → Defined → Quantitatively Managed → Optimising.
IEEE 730
The standard for a SQAP (Software Quality Assurance Plan): roles, evaluation criteria, audits, reporting.
Memory hook for ISO 25010: "Four Pretty Cats Usually Rest Safely, Mostly Purring" = Functional suitability, Performance, Compatibility, Usability, Reliability, Security, Maintainability, Portability. Reliability = works correctly for a set time under set conditions, including fault tolerance and recoverability. It's the answer for "handle failures" in aerospace.
Code reviews and pair programming
Reviews catch bugs early, share knowledge and create accountability. Pair (peer) programming: a driver writes and a navigator reviews live, then they swap. It comes from XP. Tools: SonarQube (automatic static code analysis: code smells, bugs, vulnerabilities, duplication, technical debt) and Crucible (Atlassian's collaborative peer code review tool).
Defect tracking
Record each bug with description, severity, steps to reproduce and screenshots, then track it until it's closed. Tools: JIRA (Atlassian), Bugzilla (open-source, from Mozilla), TestRail (test-case management that links to JIRA).
TDD vs BDD
TDD: test first, then code. BDD writes tests in plain language: Given the user is on the login page, When they enter valid details, Then they see the dashboard.
TDD (Test-Driven Development)
Developer-focused, unit level. Red–Green–Refactor.
BDD (Behaviour-Driven Development)
Business-focused: behaviour from the user's view, in Given–When–Then language anyone can read. Tools: Cucumber (language called Gherkin), JBehave (Java).
Why testing matters in the SDLC
Fixing bugs early is cheaper, users trust reliable software, testing finds security holes (like SQL injection in banking apps) and it builds stakeholder confidence. Moving testing earlier in the cycle is called "shift left".
Summary
Unit (isolation, JUnit) → Integration (modules, Postman) → System (whole, functional + non-functional) → Acceptance (UAT users, BAT business).
TDD = Red–Green–Refactor. BDD = Given–When–Then with Cucumber.
Study Session 4 · Lesson slides 04
Agile frameworks (Scrum and Kanban), iterative and incremental development
In one sentence: Agile teams deliver small working pieces often. Scrum does it in fixed-length sprints with set roles and meetings, while Kanban does it as a continuous flow on a visual board with limits on how much is in progress.
The textbook's story: TechNova builds an e-commerce platform for a startup whose vision keeps changing. Waterfall fails, so they switch to Agile, involve the client throughout and deliver in small increments. Remember: Agile is not one method. It is a set of values and principles (the 2001 Manifesto) that several frameworks follow.
Scrum
A lightweight framework: it doesn't demand heavy documentation. It's built on empirical process control, meaning decisions come from experience and observation, not from predicting everything up front. It has three pillars:
Transparency
Everyone can see the work (backlogs, the increment).
Inspection
Check progress often (daily scrum, review, retro).
Adaptation
Adjust as soon as something is off.
Artefacts are grey and green, events are amber. Review looks at the product. Retrospective looks at the process.
The 3 roles
Role
Job
Recognise it when…
Product Owner
Maximises product value. Owns and prioritises the Product Backlog. Voice of the customer.
"She decides which features come first based on business value."
Scrum Master
Servant leader and coach. Facilitates the events, removes impediments, protects the team. Not a traditional project manager.
"He cleared the blocker so the team could keep working."
Development Team
Builds the increment. Cross-functional (all skills needed) and self-organising (decides how). Usually 3–9 people.
"The team decided among themselves how to split the tasks."
The 4 events (ceremonies)
Sprint Planning
The PO presents the prioritised backlog. The team estimates and picks what fits. Output: the Sprint Backlog and a Sprint Goal.
Daily Scrum / Stand-up
Max 15 minutes, every day. 3 questions: What did I do yesterday? What will I do today? Any impediments? It's for the team, not a status report to a boss.
Sprint Review
End of sprint: demo the working product to stakeholders, collect feedback, update the Product Backlog.
Sprint Retrospective
After the review, the team reflects on its process: what went well, what to improve. Output: action items for the next sprint.
Once a sprint starts, the Sprint Goal doesn't change, so the team can focus.
The 3 artefacts
Product Backlog
An ordered list of everything the product might need: features, fixes, technical work. Owned by the Product Owner. Items are called PBIs, often user stories. It's never complete. Updating it is backlog refinement (or grooming). It is the single source of truth.
Sprint Backlog
The items picked for this sprint plus a plan to deliver them. Owned by the Development Team. Updated daily and tracked on a board and burn-down chart.
Increment
The sum of all items completed this sprint plus all earlier sprints. Must meet the Definition of Done (DoD): coded, tested, documented, integrated. "Done means done."
Tracking a sprint
Velocity: work completed per sprint (usually story points). Used for planning and forecasting. It is not a productivity score and shouldn't be used to compare teams.
Burn-down chart: work remaining (vertical) vs days (horizontal). A steeper line than ideal means ahead of schedule. Flatter means behind.
Burn-up chart: work completed and total scope, so it also shows scope changes.
Story points are relative effort, often on a Fibonacci scale (1, 2, 3, 5, 8).
Kanban
Origin: Toyota, Japan, mid-20th century, developed by Taiichi Ohno. "Kanban" means "signboard" or "visual signal". It is based on Lean thinking (cut waste, deliver value faster).
Cards move left to right. WIP limits stop overload. A full column means "finish before starting more" (the pull system).
Six principles: (1) visualise the workflow, (2) limit Work In Progress (WIP), (3) manage flow, (4) make process policies explicit, (5) feedback loops, (6) improve collaboratively and evolve experimentally.
Pull system: people pull new work only when they have capacity, instead of work being pushed onto them. This supports continuous delivery and shorter cycle time.
Kanban metrics:cycle time (start to finish of a task), lead time (from request to delivery) and the cumulative flow diagram (CFD), which shows bottlenecks. Tools: Trello (simple, small teams), Jira, Azure DevOps (large projects).
Kanban + Continuous Delivery gives faster time to market, transparency and quality. The challenges are cultural resistance, no prescribed roles (which can confuse immature teams), heavy automation needs and harder measurement.
Scrumban is a hybrid that combines Scrum's structure with Kanban's flow.
Iterative vs incremental development (IID)
Incremental = expansion (new features each time). Iterative = refinement (the same features get better each cycle). Scrum uses both.
Iterative
Short time-boxed cycles (1–4 weeks), each with planning, analysis, design, code, test, evaluation. Feedback after every cycle. Bank app: iteration 1 = login and account view, then transfers, then bill payments, refined each time.
Incremental
Split into increments, each designed, built and tested independently, then integrated. Allows early delivery and parallel development. Bank app: login and dashboard → fund transfer → loan application.
Phases of an iterative cycle (slides)
Requirement gathering → Design (HLD, detailed, UI, database, component design) → Implementation → Testing → Feedback and evaluation → Iteration planning → Release and deployment → Review and refinement. The textbook version: Initial planning → Planning → Requirements → Analysis and design → Implementation → Testing → Evaluation.
Steps in incremental development
Requirement analysis → Design and planning → Develop the initial increment → Testing and evaluation → Review and feedback → Develop later increments → Integration and deployment → Iterative improvement.
Benefits
Early issue detection, higher quality through continuous testing, fast feedback and course correction, better risk management, early value delivery, flexibility.
Keep a product backlog that's regularly reprioritised (using MoSCoW), hold feedback and review sessions at the end of each iteration, and put changes through a change control process. Mitigations: a flexible backlog (break epics into stories, leave buffer capacity), enforced coding standards (linters, reviews, pair programming), automated testing and CI/CD, retrospectives, and a clear Definition of Done.
Summary
Scrum has 3 pillars (transparency, inspection, adaptation), 3 roles, 4 events and 3 artefacts.
PO owns the product backlog, the Dev Team owns the sprint backlog, and the Scrum Master removes impediments.
Kanban comes from Toyota and Taiichi Ohno ("signboard"). Visualise, limit WIP, pull system, measure cycle and lead time.
Iterative = refine. Incremental = add. Together = Agile.
Study Session 5 · Lesson slides 05
CI/CD, DevOps, and release management
In one sentence:DevOps gets developers and operations staff working as one team, CI/CD automates building, testing and shipping code, and release management plans each release so it goes out safely, with a way back if it breaks.
The textbook story: 3Bells Solutions in Lagos is building a mobile banking app. Manual testing, ad hoc deployments, Dev-vs-Ops blame and a security hole in a release lead to a failed demo. They adopt DevOps, CI/CD (Jenkins, GitHub Actions), Docker and Kubernetes, canary deployments, security scanning (SonarQube, OWASP ZAP) and Infrastructure as Code (Terraform).
CI, Continuous Delivery, Continuous Deployment
The four pipeline stages are Source → Build → Test → Deploy (the summary adds Monitor). A failing build stops the pipeline: "fail fast".
CI (Continuous Integration)
Developers merge small changes into a shared repo many times a day. Each merge triggers an automatic build and tests. Benefits: fewer integration problems, early bug detection, always a stable build.
Continuous Delivery
After CI, code is automatically prepared and tested so it's always ready to release, but a human approves the push to production. "Ready at any time."
Continuous Deployment
Every change that passes all tests goes to production automatically, with no human step. "Release every change."
Exam trap
The only difference between Continuous Delivery and Continuous Deployment is the manual approval before production. Regulated industries like banking often keep that approval gate.
Build stage details: compiles code (for example, Java into a JAR or WAR file, or builds a Docker image), resolves dependencies and produces artefacts. Deploy stage: should be fully automated, followed by smoke tests in production.
9 best practices: single source repository, automate everything, consistent builds (Docker), parallelise, store build artefacts centrally, comprehensive testing, monitor the pipeline (build time, failure rate), a collaboration culture, and security in the pipeline (DevSecOps).
DevOps
The problem: developers change code often, while Operations must keep systems up (often aiming for 99.999% uptime). Working in silos leads to "it worked on my machine" and a blame game. DevOps is a cultural and technical movement that bridges them with shared responsibility, automation and feedback.
DevOps principles (slides)
Automation of the software lifecycle (testing, builds, releases, environments)
Collaboration and communication: people make a great team, tools only help
Continuous improvement and minimisation of waste (for example, reducing mean-time-to-recovery)
Hyperfocus on user needs with short feedback loops
"Increased manual processes" is never a DevOps principle. Benefits: higher quality and security, faster time to market, collaboration, efficiency, continuous improvement.
Core DevOps practices and tools
Practice
What it means
Tools
Version control
Track and revert every change
Git, GitHub, GitLab, Bitbucket
CI/CD pipelines
Automatic build, test, deploy
Jenkins, GitHub Actions, GitLab CI, CircleCI
Containerisation
Package the app and all its dependencies into a container so it runs the same everywhere
Docker (containers), Kubernetes (orchestrates and scales them)
IaC (Infrastructure as Code)
Define servers, networks and databases in code files (YAML, JSON, HCL), not by hand. Consistent and repeatable
Terraform, Ansible, AWS CloudFormation
Continuous monitoring
Watch metrics and logs in real time
Prometheus + Grafana, ELK Stack, Datadog
Communication
Shared channels and tasks
Slack, Teams, Jira, Confluence
DevSecOps
Dev + Sec + Ops: security is built in from the start, not bolted on at the end. "Shift left" means moving security checks earlier. Automated scanning in the pipeline uses SonarQube, Snyk, Checkmarx, OWASP ZAP. Train developers on the OWASP Top Ten. Use policy-as-code and compliance-as-code for GDPR, HIPAA and PCI DSS.
The textbook also shows a GitHub Actions workflow file (.github/workflows/nodejs.yml). It triggers on a push or pull request to main, runs on ubuntu-latest, tests Node versions 14, 16 and 18 (matrix), then checks out the code, runs npm install, npm test and npm run build, uploads artefacts and copies files to a server over SSH using secrets.
Software release management (SRM)
SRM plans, schedules, tests, deploys and controls a software release so it's delivered predictably without breaking the live system. Release decisions affect three things: time (time-to-market, scope creep, coordination delays), budget (resources, tooling and infrastructure, rework) and customer satisfaction (reliability, feature expectations, communication). Governance frameworks: COBIT, ITIL, ISO/IEC 20000. KPIs: deployment frequency, change failure rate, customer satisfaction score.
Release planning
Maps the timeline so software ships predictably and on time. Slide elements: release scope, resource allocation, timeline, communication. Why it matters: strategic alignment (map release objectives to organisational priorities and customer value), resource allocation, time management, risk mitigation. Textbook activities: set objectives, define scope, prioritise (MoSCoW), map critical paths and dependencies, set code and feature freeze dates, schedule milestones, coordinate teams.
Exam trap
The slides say automated testing is NOT a release-management activity. It belongs to development and QA. Release planning, resource allocation and stakeholder communication are release-management activities.
Dependencies
Anything outside your code that your app needs. Types: internal components (microservices, shared libraries, authentication), external libraries (npm, PyPI, SDKs), third-party services (payment gateways, cloud, social login, analytics) and system-level tools (databases, file storage, message brokers). Steps: identify → map → version control (semantic versioning, lock versions) → automation tools (npm, yarn, pip, Poetry, Maven, Gradle, Composer, NuGet; Dependabot, Renovate, Snyk for updates) → test (smoke tests, contract tests, mocks) → coordinate with stakeholders. Unmanaged dependencies can break the build or introduce vulnerabilities.
Risks
Types: compatibility, performance, security, regulatory and compliance, user experience, operational. Lifecycle: identify → analyse (impact × likelihood, risk matrix or heat map) → mitigate → communicate (risk register). Mitigation: automated testing, staging environments, continuous integration, release gates and checklists, monitoring and rollback plans.
Deployment strategies
Blue-green
Two identical production environments. Switch traffic from blue (old) to green (new), and switch back instantly if there's a problem. Costs more infrastructure.
Canary release
Release to a small group of users first, watch, then expand. Named after canaries in coal mines.
Controlled introduction → GA
Deploy to a small controlled group, then General Availability to everyone. Always have a back-out plan.
Rollback and recovery
Rollback = revert to the previous working version after a bad release. Triggers: system failures, broken critical functions (measured by SLOs and SLIs), user-impact thresholds, security issues. Tools: IaC templates, database migration reversal (Liquibase, Flyway), artefact reversion, Git (commit hashes, tags), GitOps. Always back up before releasing. Measure MTTR (Mean Time To Recovery) and plan RPO (how much data you can afford to lose) and RTO (how fast you must be back).
Recovery = restore working order after a failure. Techniques: failover (active-passive: backup waits idle; active-active: both run and share load), rollback procedures, hotfixes (urgent critical fixes) and patches (broader bug and security fixes), monitoring and alerts (Prometheus, Datadog, ELK, OpenTelemetry, PagerDuty) and an incident response plan.
Disaster Recovery (DR) for catastrophes (data centre outage, ransomware): full, incremental and differential backups across regions, plus "fire drills". Afterwards, run blameless post-mortems with RCA (root cause analysis) and runbooks.
PMBOK® Guide in release management
PMBOK = Project Management Body of Knowledge. Knowledge areas used: scope, time, cost, risk, contract, human resource, communication and quality management. Process groups:Initiating → Planning → Executing → Monitoring and Controlling → Closing.
Major release tasks, in order
Needs identification and feasibility → Business case approval (ROI) → Requirement definition → Documentation and design → Development → Testing (lab and field) → Beta testing with customers → Change control → Training and customer notification → Controlled deployment → General Availability (GA) → Debrief and transition to lifecycle management.
Release management process
FPR (Functional Product Request, raised by Sales, Marketing, R&D or customers) → Release packaging → Documentation → Development process (lab testing, field testing, quality gates) → Change control (manages scope creep and last-minute requests) → Customer notification → Training (influences the GO/NO-GO decision) → Deployment (controlled introduction, GA, back-out plan).
The Release Manager
A project manager specialised in software deployment, like the conductor of an orchestra. They coordinate Dev, QA, Ops and Support; manage schedules, risks and stakeholder communication; mediate with Finance, Legal and Sales; and lead the release team (planning meetings, release notes, GO/NO-GO decisions, retrospectives). Table 5.1: Sales raises the FPR, Finance approves budgets, Legal gives regulatory guidance, Operations deploys and monitors, Test Engineering validates quality.
Slides extras: the monitoring and controlling phase tracks progress (maintenance logs, risk documents, performance reports). The closure phase hands over user manuals, troubleshooting guides and final reports.
Summary
CI = frequent merge and auto test. Delivery = always releasable, with a human approving. Deployment = fully automatic.
Release management: plan (scope, resources, timeline, communication), manage dependencies and risks, deploy safely (blue-green, canary), roll back, recover.
PMBOK process groups: Initiating, Planning, Executing, Monitoring and Controlling, Closing.
Study Session 6 · Lesson slides 06
Project documentation and team collaboration
In one sentence: good documentation means anyone can understand, use and maintain the software, and good collaboration (clear communication plus tools like Jira, Confluence and Slack) keeps a spread-out team working as one.
The textbook story: a developer on a team split across time zones is blocked by a bug, and the colleague who can help only replies the next day. Clear documentation and communication are what separate a successful launch from a failed one.
The 7 types of software documentation
Document
What's in it
Who reads it
User manual
Installation and setup, feature guides with screenshots, troubleshooting, FAQs
End users (often non-technical)
Operation manual
Day-to-day operating procedures, module dependencies, services and interfaces
Functional and non-functional requirements, use cases, feasibility and constraints
Product managers, stakeholders, business analysts, developers
Technical documentation
Code comments, algorithms and performance, snippets and flowcharts, class and function definitions
Developers, code reviewers
Testing documentation
Test plans, test cases, validation criteria, results, V&V activities
QA engineers, testers
List of known bugs
Bugs not yet fixed, workarounds, plan for future fixes
Dev, test and maintenance teams
At a bank
The mobile app's help pages are the user manual. The runbook the IT support team uses to restart the transfer service at 2am is the operation manual. The architecture diagram with the ERD of the accounts database is the design document.
When each is written:Pre-development: requirements and design documents. During development: technical and testing documentation. Post-development: user and operation manuals, and the known-bugs list.
Documents across the project life cycle
The project charter authorises the project. The WBS (Work Breakdown Structure) breaks scope into smaller pieces. EVM = Earned Value Management.
The SRS (Software Requirements Specification)
A formal document of all functional and non-functional requirements, prepared in the requirements analysis phase and validated by both the developers and the client. Objectives: clarity, agreement, a basis for estimation, a baseline for testing, and communication.
Structure per IEEE 830-1998:
Introduction: purpose, scope, intended audience, definitions and acronyms, references
Overall description: product perspective, product functions, user characteristics, constraints (hardware, software, regulatory), assumptions and dependencies
Specific requirements: functional ("The system shall send a confirmation email…"), non-functional (performance, reliability, usability, security, maintainability, portability), external interfaces (user, hardware, software, communication)
Appendices: tables, mockups, glossary, revision history
A good SRS is: Correct, Unambiguous (one meaning only), Complete, Consistent (no conflicts), Verifiable (testable), Modifiable, Traceable. Memory hook: "CUCC-VMT: Can U Catch Critical Vague Missing Things?"
Guidelines, advantages, problems
6 guidelines
Reader-centric, unambiguous and clear, avoid redundancy, follow industry standards, keep up to date, phase out obsolete documents.
6 advantages
Tracks components, easier maintenance, knowledge transfer, better quality, user training, lower cost and effort when staff leave.
5 documentation issues
Outdated, inadequate, poor quality or inaccessible, lack of traceability, inconsistency.
4 management challenges
Time and resource constraints, engineers' lack of motivation, quality and completeness problems, complexity in large or distributed teams.
Documentation tool features: Markdown and HTML support, feedback mechanism, access control and permissions, click-button APIs, table of contents, publishing control.
Team collaboration and communication
Team collaboration is a coordinated effort among developers, testers and stakeholders. It speeds delivery, improves quality through peer reviews and reduces risk by catching miscommunication early. In Agile it supports sprints, stand-ups and retros. In DevOps it supports shared CI/CD responsibility.
Challenges (slides):distributed teams (time zones), tool overload (too many platforms), knowledge silos (poor documentation keeps knowledge with a few people), miscommunication (vague requirements). Poor communication causes ambiguous requirements, duplicate effort, missed deadlines and quality issues.
A distributed team across time zones should lean on asynchronous tools (like GitHub pull requests) and save real-time meetings for decisions that need discussion. Phone calls are synchronous.
Four communication principles:Clarity (simple language, diagrams), Transparency (share progress, blockers, decisions openly), Consistency (routine updates, standard templates), Empathy (active listening, cultural awareness, constructive feedback).
Six effective strategies (slides): clear and concise documentation; regular meetings and check-ins; real-time communication tools; active stakeholder engagement; code and peer reviews (pull requests, pair programming); conflict resolution and feedback.
Communication charter: drawn up at project start. It sets the preferred tool for each purpose (Slack for chat, Confluence for docs), response-time expectations, meeting frequency, decision-making authority and etiquette.
Collaboration tools
Jira (Atlassian)
Task and issue tracking, backlogs, sprints, Scrum and Kanban boards, burn-down charts, custom workflows, dependency mapping, release planning. JQL = Jira Query Language for custom filters and dashboards.
Confluence (Atlassian)
Team knowledge base and documentation: requirements, specs, meeting notes, retrospectives, architecture diagrams, onboarding guides, SOPs. Page versioning and permissions.
Real-time communication → Slack and Microsoft Teams. Documentation → Confluence and Google Docs. Task tracking → Jira and Asana (and Trello). Video meetings → Zoom and Webex.
Jira task management process
Create a task (Create button → project → issue type: task, story or bug → summary, description, assignee) → assign it by skill and availability → set a due date → track it through the workflow using the Activity panel → mark it Done. Tracking templates include a board (Kanban: To Do → In Progress → Done), a list, a calendar and a form. Best practices: break big projects into small tasks, create a structured workflow, write clear descriptions, use labels, set realistic due dates, assign to the best-qualified person.
Task workflow and tracking
Create tasks (from user stories, technical requirements, bugs) → prioritise (MoSCoW, story points on a Fibonacci scale, business impact) → assign → move across boards → sprint review and retrospective. Track with burn-down charts, cumulative flow diagrams, velocity and task dependencies. Report with daily stand-ups, weekly summaries and stakeholder demos. Tailor reports to the audience: executives want high-level KPIs, developers want detailed boards.
Jira Cloud + Slack integration
A two-way link: create Jira issues from Slack and get Jira notifications in Slack. Key commands: /jira connect (link a project to a channel), /jira notify (personal notifications), /jira create (new work item), /jira manage, /jira [WORK-123] (show an item). Issue keys like PROJ-123 automatically expand into previews. It respects Jira permissions and a Jira admin must enable it.
Summary
7 documentation types, each with its own audience: user manual → end users, operation manual → sysadmins, design → developers.
SRS follows IEEE 830 (Introduction, Overall description, Specific requirements, Appendices) and should be correct, unambiguous, complete, consistent, verifiable, modifiable, traceable.
Synchronous vs asynchronous communication. Principles: clarity, transparency, consistency, empathy.
Each lesson plays like a short narrated video: diagrams animate in while a voice reads the explanation, with captions underneath. Press Play. If your device has no voice, the captions still advance on their own.
Module practice
Each module has its own set of exam-style questions. Finish reading a module, do its practice set, and move on once you score 80% or more. If you pick a wrong answer you'll see WRONG, and the right answer blinks with a red cursor, followed by an explanation.
Your answers are saved in this browser. Finished all six? Test yourself across everything in Exam mode.
Correct 0Wrong 0Answered 0/0
Exam mode: 20 questions, 20 minutes
Like the real exam: no feedback until you submit. Then every answer is marked, wrong picks show WRONG and the correct option blinks. Aim for 20/20.