Master Software Engineering in one focused session.
A clean, structured walk-through of every topic in your slides — processes, Agile, Scrum, UML, requirements, architecture, evolution, and testing. With mnemonics that actually stick and short scenarios that test the idea.
Intro to Software Engineering
Programming writes code. Software engineering builds reliable systems — systematically, disciplined, quantifiably.
Software Engineering is the systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software.
The four SE process activities
1Specification
2Development
3Validation
4Evolution
Read it as “Some Developers Validate Everything.” Spec must come before dev, and evolution never ends.
Typical SDLC activities
“People Really Do Insist Testing Delivers Maintenance.”
Planning · Requirements · Design · Implementation · Testing · Deployment · Maintenance
SDLC vs Process model
| SDLC | Process Model |
|---|---|
| Universal high-level phases any software project goes through. | A specific recipe for moving through those phases (Waterfall, Agile, Spiral…). |
SDLC = what stages. Process model = how you execute them (sequential vs iterative).
Why SE matters
- Rising software complexity, large teams, long lifecycles
- Cost of failure is enormous — Ariane 5 exploded in 40 seconds from a 64→16-bit bug
- Late delivery, blown budgets, poor quality
ACM/IEEE Code of Ethics — 8 principles
1Public
2Client & Employer
3Product
4Judgment
5Management
6Profession
7Colleagues
8Self
Order = outward → inward: Public → Company → Product → my own Judgment → Management → Profession → Colleagues → Self. The further you go, the more personal it gets.
Your employer is about to ship a safety-critical medical device without finishing test cases. Which ethical principle applies?
Answer: PUBLIC (#1) overrides CLIENT (#2). Public welfare always comes first — refuse to sign off, escalate.
Software Processes — Waterfall to Spiral
Two families: Sequential (locked-in, document-heavy) vs Iterative/Incremental (cyclical, feedback-driven).
The big picture
| Family | Models | Best for |
|---|---|---|
| Sequential | Waterfall, V-Model, Big Bang | Fixed requirements, regulated/critical systems |
| Iterative | Iterative Waterfall, Spiral, Prototype, RAD, RUP | Risky, evolving, large projects |
| Incremental | Agile (XP, Scrum, Kanban, Lean) | Changing requirements, fast delivery |
Waterfall
Linear, sequential — each phase finishes before the next. Requirements → Design → Implementation → Testing → Deployment → Maintenance.
+ Advantages
- Simple, easy to manage
- Clear documentation
- Predictable cost & timeline
- Disciplined structure
− Disadvantages
- No flexibility for change
- Late testing → expensive bugs
- No working software until late
- High risk for complex projects
“Fixed · Small · Regulated” — fixed requirements, small scope, regulation (defense, aviation, medical).
V-Model — Verification & Validation
Waterfall extension — each dev phase has a matching test phase, forming a V. Test plans are written upfront, not at the end.
| Dev side | Test side |
|---|---|
| Requirements | ↔ Acceptance Testing |
| System Design | ↔ System Testing |
| Architecture Design | ↔ Integration Testing |
| Module Design | ↔ Unit Testing |
| ↳ Coding (bottom of the V) ↲ | |
Every level of design has a mirror level of testing. The V is the handshake between requirements and acceptance.
Iterative Waterfall
Adds feedback loops between phases — you can revisit earlier stages. Better for large/complex projects where requirements need refinement.
Spiral Model — risk-driven
Combines Waterfall + Iterative. Each loop has 4 quadrants:
1Planning
2Risk Analysis
3Engineering
4Evaluation
“PREE — Plan, Risk, Engineer, Evaluate.” Always check Risks before you Engineer. That's why Spiral is the go-to for high-risk projects.
You're building an e-commerce platform with payment processing. Requirements are unclear; security is a major risk. Which model?
Answer: Spiral — explicit risk analysis quadrant + iterative refinement. Waterfall would lock in flawed assumptions; pure Agile may not surface security risks early enough.
Big Bang
Minimal planning, mostly coding. Suitable only for tiny or academic projects.
Quick chooser
| Situation | Pick |
|---|---|
| Fixed reqs, regulated industry | Waterfall / V-Model |
| High risk, evolving reqs, big budget | Spiral |
| Small/medium, fast-changing reqs | Agile (Scrum/XP) |
| Tiny prototype, learning | Big Bang |
| Large with some refinement needed | Iterative Waterfall |
Agile & Extreme Programming
Agile = umbrella term. Born from the 2001 Agile Manifesto as a reaction to heavyweight processes like Waterfall.
The Agile Manifesto — 4 values
“While there is value in items on the right, we value the items on the left more.”
| We value | Over |
|---|---|
| Individuals & interactions | processes & tools |
| Working software | comprehensive documentation |
| Customer collaboration | contract negotiation |
| Responding to change | following a plan |
“People · Product · Partner · Pivot.” Individuals (people), working software (product), customer collab (partner), responding to change (pivot).
Agile characteristics
- SDLC activities are interleaved, not sequential
- Requirements = outline only (no formal SRS — though minimal docs do exist)
- Increment duration: 2–3 weeks
- Adaptive — customer feedback shapes the next increment
- Informal customer communication
- Heavy tool support (automated testing, configurable software)
Agile does not mean “no documentation” or “no design.” It means minimal, just-enough documentation and design. Don't fall for this on the exam.
Extreme Programming (XP)
Defined by Kent Beck (1996). Concept: take good practices and push them to the extreme.
XP principles
Rapid Feedback
Assumed Simplicity
Incremental Changes
Embracing Change
Quality Work
The 4 XP practice clusters
1Incremental development
2Customer involvement
3Embracing change
4Maintaining simplicity
Core XP components
- User stories — informal feature descriptions from the user's view
- Refactoring — continuous code improvement
- Test-First Development (TDD) — write tests before code
- Pair Programming — driver + navigator
“URTP” = User stories, Refactoring, TDD, Pair programming. “U(R) Testing and Pairing.”
YAGNI & DRY
YAGNI — You Ain't Gonna Need It
DRY — Don't Repeat Yourself
Test-Driven Development (TDD)
TDD advantages
- Tests define the interface & behavior spec (reduces ambiguity)
- Forces clarification of omissions before implementation
- Avoids “test-lag” — devs can't outpace testers
TDD challenges
- Devs prefer coding to testing — may write incomplete tests
- Hard to test UI display logic / screen workflows incrementally
- Hard to judge test completeness
Pair Programming
Driver writes code · Navigator reviews in real time. Promotes collective code ownership, continuous code inspection, and refactoring.
A client keeps adding features mid-development. The team is small (6 devs) and the product is non-regulated. Best fit?
Answer: Agile (Scrum or XP) — embraces change, small co-located team, no heavy regulation. Pick XP if code quality matters most; Scrum if you need project management structure.
Scrum — Agile Project Management
Scrum manages the process. XP manages the code. They're complementary, not competitors.
The 3-5-3 structure
3 Roles · 5 Events · 3 Artifacts. This is the single most exam-worthy thing in Scrum.
3 Roles
Product Owner
Scrum Master
Developers
5 Events
1The Sprint
2Sprint Planning
3Daily Scrum
4Sprint Review
5Sprint Retrospective
3 Artifacts
Product Backlog
Sprint Backlog
Increment
Roles: Product Owner, Scrum Master, Developers.
Events: Sprint wraps the other 4 → Planning → Daily → Review → Retro. Think of a day at school: bell rings (Planning), morning check-in (Daily), parent show-and-tell (Review), team huddle after class (Retro).
Artifacts: P → S → I Product Backlog narrows to Sprint Backlog narrows to Increment.
The 3 Scrum phases
- Outline Planning — general objectives, software architecture
- Sprint Cycles — each delivers an increment
- Project Closure — wrap up, docs, lessons learned
Sprint cycle workflow
During the sprint, the Scrum Master shields the team — all external comms route through them.
Scrum benefits
- Big product broken into manageable chunks
- Unstable requirements don't stall progress
- Whole-team visibility → better communication
- Customers see on-time delivery, gain real feedback
- Trust and a “we'll succeed” culture
Scaling Agile
| Scaling UP | Scaling OUT |
|---|---|
| Using agile for large systems a small team can't build alone. | Spreading agile across a large organization with legacy practices. |
When scaling, keep the fundamentals: flexible planning, frequent releases, continuous integration, TDD, communication.
Scrum vs XP vs Waterfall
| Waterfall | Scrum | XP | |
|---|---|---|---|
| Focus | Phases & docs | Process & teamwork | Code quality |
| Change handling | Resists change | Embraces change | Embraces change |
| Iteration | None | 2–4 wk sprints | 1–3 wk releases |
| Customer role | Up front only | Reviews each sprint | On-site, writes tests |
| Engineering practices | Heavyweight | Not specified | TDD, pairing, refactoring |
Your team finishes a sprint. The stakeholder demos a feature and says, “Love it — can we add a vegan filter?” You're the PO. What now?
Answer: Add it to the Product Backlog (not the current Sprint Backlog). Sprint scope is fixed during a sprint; only Product Backlog evolves continuously.
User Stories
Informal, end-user perspective descriptions of features. They articulate value delivered.
The standard format
As a [role/persona],
I want [action/goal],
So that [benefit/value].
Example: “As a returning shopper, I want to save my payment details, so that I can check out faster next time.”
INVEST criteria
I — Independent
N — Negotiable
V — Valuable
E — Estimable
S — Small
T — Testable
“Stories you can INVEST in.” Each letter is a quality test — fail any one and the story isn't ready.
Story elaboration process
- Start with Epics — large, high-level features
- Break down into smaller stories
- Refine as a team — remove ambiguity, add subtasks
- Add Acceptance Criteria — 3–5 specific outcomes (happy + error path)
Epic vs User Story
| Epic | User Story |
|---|---|
| Big-picture goal | Specific, actionable step |
| Spans many sprints | Fits in one sprint |
| Vague | Concrete with acceptance criteria |
Acceptance criteria
- Happy path — successful flow (e.g. invite sent)
- Error path — invalid input handled (e.g. malformed email rejected)
- Boundary — limits enforced (e.g. ≤ 5 MB upload)
Sarah is a teacher with 40 students. She doesn't want to add them manually; she wants to invite them all at once.
Story: As a teacher, I want to bulk-invite my students by uploading a list of emails, so that I can save setup time before class.
AC (happy): CSV with up to 50 emails → invites sent within 30s.
AC (error): Invalid row → shown to teacher, valid rows still sent.
AC (boundary): File > 5 MB rejected with a clear message.
The main problem with user stories
Completeness. Experienced users skip “obvious” details when describing their work. Mitigate with ethnography, prototypes, and structured questions.
Requirements Engineering
Requirements describe the services a system provides and the constraints on its operation.
Two big splits
User Requirements
“System must let a customer transfer money between accounts.”
System Requirements
“On Transfer, validate balance via Banking Protocol API, update SQL DB within 2s.”
Functional vs Non-Functional
| Functional | Non-Functional | |
|---|---|---|
| What it defines | What the system does | How well it does it |
| Examples | Login, search, generate report | Speed, security, availability, reliability |
| If it fails | Feature broken | System unstable or unusable |
| Scope | Tied to specific components | System-wide |
Functional requirement quality
Completeness
Consistency
Precision
“CCP” = Complete, Consistent, Precise. “Functional reqs need CCP clearance.”
NFR categories
Product
Organizational
External
“POE” = Product · Organizational · External. “Edgar Allan POE writes non-functional reqs.”
NFRs as vague goals — and how to fix them
Stakeholders often say: “System should be easy to use.” SE must convert this to quantifiable:
“Medical staff shall be able to use all functions after 2 hours of training. Average errors made by experienced users shall not exceed 2 per hour of use.”
Requirements engineering process
1Elicitation & Analysis
2Specification
3Validation
4Management
“ESVM” = Elicit → Specify → Validate → Manage. “Every Sensible Validation Matters.”
Elicitation techniques
Interviews
Open: no agenda, exploratory.
Mix works best.
Ethnography
Stories & Scenarios
Interview do's
- Open-minded — avoid preconceived ideas
- Use springboard questions (“tell me what you want” fails)
- Ask for proposal documents upfront
Ethnography advantages
- Captures actual work practice (air traffic controllers turning off over-sensitive alerts)
- Reveals cooperation patterns — awareness of adjacent sectors
Ethnography disadvantages
- Doesn't support innovation (just describes current practice)
- Doesn't give broader organizational/domain requirements
Stories vs Scenarios
| Story | Scenario |
|---|---|
| Narrative text, big picture | Structured, detailed |
| High-level system use | Inputs, outputs, normal & error flow, end state |
A scenario describes: initial assumption · normal flow · what can go wrong · concurrent activities · system state on completion.
Stakeholder says “The system must be fast.” Rewrite as a proper NFR.
Answer: “95% of search queries shall return results within 1.5 seconds under a load of 500 concurrent users.” — measurable, testable, bounded.
MoSCoW Technique
A simple, powerful prioritization framework — four categories, clear trade-offs, used heavily in agile timeboxed projects.
Why prioritize?
- Limited resources (time, money, people)
- Agile uses fixed-schedule timeboxes — must decide what fits
- Dynamic, ongoing — priorities shift as the project evolves
The 4 categories
M — Must Have
S — Should Have
C — Could Have
W — Won't Have
The lowercase o's are filler (from Moscow the city). Real letters: M · S · C · W.
“Must ship · Should ship · Could ship · Won't ship.”
Test: “Will the project fail without it?” If yes → M. Can wait one release → S. Would miss but survive → C. It's out → W.
Steps to apply MoSCoW
- Gather requirements (no initial filtering)
- Engage cross-functional stakeholders
- Define rules & dispute resolution (voting?)
- Allocate resources — Must Haves ≤ 60% of total effort (predictability)
- Categorize via litmus tests
- Review & adjust continuously
Other named techniques
In/Out
Pairwise
Three-level
MoSCoW
$100 method
QFD spreadsheet
For an MVP of a banking app: login, transfer, dark mode, voice-pay, transaction history. Apply MoSCoW.
Answer: M: login, transfer · S: transaction history · C: dark mode · W: voice-pay. Bank can't launch without login/transfer; history adds trust but can wait; dark mode is cosmetic; voice-pay is a future product line.
UML Diagrams
UML = standard visual modeling language. Models are abstractions — simplifications that show only what matters.
3 UML diagram families
| Family | Shows | Diagrams |
|---|---|---|
| Structural | Static structure (irrespective of time) | Class · Object · Component · Deployment · Package · Composite |
| Behavioral | Dynamic behavior over time | Activity · State Machine · Use Case · Interaction |
| Interaction | Object communication (sub-family of Behavioral) | Sequence · Communication · Interaction Overview · Timing |
Structural = Snapshot (frozen in time).
Behavioral = Behavior over time.
Interaction = who talks to whom, and In what order.
Class Diagram (Structural)
The most-used UML diagram. Shows classes, attributes, methods, and relationships. The “blueprint” of OO systems.
- Box with three compartments: name, attributes, methods
- Relationships: association, aggregation (◇), composition (♦), inheritance (▷), dependency (- - ->)
- Multiplicity:
1,*,0..1,1..*
State Machine Diagram (Behavioral)
Models the states of an entity and transitions triggered by events. Shows movement through finite states.
Purpose
- How to enter a state
- How to leave a state
- What actions happen while in a state
Build two lists first: State list (e.g. Available, Cancelled, Full) and Stimulus list (e.g. enroll, drop, capReached).
If the entity has history (a course is open, then full, then closed) → state diagram. If it's about flow of actions → activity diagram.
Activity Diagram (Behavioral)
The OO equivalent of a flowchart / DFD. Models workflow — control flow, decisions, parallelism.
Elements
Activity
Event/Transition
Decision (◇)
Fork/Join
Branch/Merge
Start/End
Limitation: doesn't show which object performs each activity (unless labeled with swimlanes).
Use Case Diagram (Behavioral)
External view — what the system does for actors. Use case = sequence of actions delivering measurable value to an actor.
- Actor — stick figure (person, org, external system)
- Use case — horizontal ellipse
- Association — solid line between actor & use case
- «include» — required sub-use-case · «extend» — optional extension
Sequence Diagram (Interaction)
Shows objects interacting over time. X-axis = objects, Y-axis = time (top to bottom).
Key elements
- Object box —
[instance]:[Class] - Lifeline — vertical dashed line below object
- Activation box — thin rectangle on lifeline = object busy processing
- Message — solid arrow between lifelines (synchronous = filled, asynchronous = stick arrow)
- Return — dashed arrow (optional; skip if obvious)
- «create», «destroy» — special messages
Control info
[condition]— message only sent if true*[expression]— iteration/loop- Self-call — arrow looping back to same lifeline
Don't use sequence diagrams for detailed algorithm modeling — use activity diagrams, pseudo-code, or state-charts instead. Sequence diagrams only handle simple alternatives.
Picking the right diagram
| I want to show… | Use |
|---|---|
| Static structure / classes | Class Diagram |
| Workflow / business process | Activity Diagram |
| Entity life history | State Machine Diagram |
| External behavior / actor view | Use Case Diagram |
| Object interactions over time | Sequence Diagram |
| Physical deployment of components | Deployment Diagram |
A user approaches a touch-screen coffee machine. Pick diagrams.
Activity Diagram: user selects drink → pays → machine grinds → brews → notifies. (workflow)
State Machine Diagram: states = Waiting · Brewing · Out-of-water. (entity history)
Use both — they capture different perspectives.
Customer selects showtime → System checks availability → Customer pays → System processes payment → System generates e-ticket. → Activity Diagram with two swimlanes: Customer | System.
Software Architecture Patterns
Architectural patterns let you design flexible systems from components that are as independent as possible.
Architectural design drivers
| If priority is… | Architecture should… |
|---|---|
| Performance | Localize critical ops in few components, deploy on one machine |
| Security | Use layered structure; critical assets in innermost layer |
| Safety | Isolate safety-related ops in one (or few) components |
| Availability | Include redundant components for hot-swap |
“PSSA” → Performance · Security · Safety · Availability. “Patterns Serve Specific Aims.”
Trick: Performance localizes, Security layers, Safety isolates, Availability replicates.
Pattern 1 — MVC
- Model — data + business logic
- View — presentation
- Controller — input handling, mediates model ↔ view
Separation of concerns. Same Model can drive multiple Views.
Pattern 2 — Layered
- Each layer talks only to the layer immediately below
- Each layer has a well-defined interface used by the layer above
- Higher layer sees lower layer as services
Typical layers: UI → Application functions (use cases) → Domain → Infrastructure (DB, network).
“Each floor only talks to the floor right below.” That's why it's secure — the deeper you go, the more protected the data.
Pattern 3 — Repository
Sub-systems share data via a central database/repository. Efficient for large data volumes.
Alternative: each sub-system owns its DB and passes data explicitly.
Pattern 4 — Client-Server
Distributed system. Computations on separate programs/hardware that cooperate.
- Server — provides services, listens, accepts connections, responds to messages
- Client — accesses one or more servers to obtain services
- One server, many clients simultaneously
Examples
World Wide Web · Email · Network File System · Transaction Processing · Remote Display · Database System
Pattern 5 — Pipe-and-Filter
- Stream of data flows through a series of processes
- Each process transforms the data
- Components run concurrently
- Very flexible — components can be removed, replaced, reordered
Classic example: Unix shell pipelines (cat | grep | sort), compilers.
Pattern 6 — Transaction-Processing
- Process reads a series of inputs one by one
- Each input describes a transaction (a command to change state)
- Transaction dispatcher routes each one to a handler component
Examples
Payroll · Ticket Reservation · Purchase Order Entry · Airline Reservation
“My Lazy Cat Plays Right Tunes” → MVC · Layered · Client-server · Pipe-filter · Repository · Transaction.
A bank needs a system where every customer action (deposit, withdrawal, transfer) hits a central record. Many user-facing apps share the same data. Which pattern?
Answer: Repository (for shared central data) + Transaction-Processing (for the dispatcher routing each operation). Often combined in real-world bank cores.
How would you divide a video-game system into layers?
UI Layer: input handling, score display.
Game Logic Layer: object positions, collision, rules, scoring.
Graphics/Rendering Layer: draw objects on screen.
Platform Layer: OS, GPU drivers, networking.
Each layer talks only to the one below — UI never touches the GPU directly.
Software Evolution & Maintenance
Software doesn't stop on delivery. It must change to stay useful — and that change is expensive.
What triggers evolution?
- Software defects reported
- Changing business requirements
- Changes in other systems in the environment
Why software evolves forever
- Large systems have 10–30+ year lifetimes (ATC: 30+, business: 10+)
- Companies need ROI on their software investment
- Business environment shifts; the system must too
3 types of maintenance
Corrective (Fault Repair)
Adaptive (Environmental)
Perfective (Functionality / Quality)
“CAP” = Corrective · Adaptive · Perfective.
“Maintenance wears a CAP — fix bugs, adapt to environment, perfect features.”
3 reasons for urgent change
Failure
Ripples
Business
Why post-delivery changes cost more
| Reason | Why it bites |
|---|---|
| Team stability | Original team is gone; new team has to learn the system |
| Poor dev practice | Maintenance contract often separate — no incentive to write maintainable code |
| Staff skills | Maintenance seen as low-prestige → assigned to juniors; languages may be obsolete |
| Program age / structure | Code degrades with each change; docs lost; old systems weren't configuration-managed |
Software re-engineering
When a system is still useful but increasingly hard to maintain. Functionality is preserved; the system is restructured.
Activities
- Re-documenting
- Refactoring architecture
- Translating programs to a modern language
- Modifying/updating data structure & values
Benefits over replacement
Reduced risk
Reduced cost
Refactoring vs Re-engineering
| Refactoring | Re-engineering |
|---|---|
| Continuous, during development | One-off, after system has degraded |
| Prevents degradation | Reverses degradation |
| Manual, small steps | Often uses automated tools |
| Agile / XP practice | Legacy system response |
Legacy system — 4 strategic options
1Scrap completely
2Leave unchanged
3Re-engineer
4Replace (all/part)
“SMRR” = Scrap · Maintain · Re-engineer · Replace.
Ordered by increasing investment (scrap = cheapest, replace = priciest).
Agile ↔ Plan-driven handover pain
| Direction | Problem |
|---|---|
| Agile → Plan-driven team | Evolution team expects heavy docs that agile didn't produce |
| Plan-driven → Agile team | No automated tests, no refactored code — needs re-engineering first |
A 20-year-old payroll system is in COBOL. It still works but only one developer understands it. The business is launching new payroll regulations next year. What strategy?
Answer: Re-engineer — preserve business logic (high risk to lose it), but modernize structure/language so multiple developers can maintain it. Pure replacement is risky (specification has been lost); leaving unchanged is unsustainable (bus-factor of 1).
Software Testing
“Testing can show the presence of bugs, but never their absence.” — Dijkstra, 1972
Testing = the process of executing a software system to determine whether it matches its specification and runs in its intended environment.
Error vs Fault vs Failure
| Term | Meaning |
|---|---|
| Error | A human mistake during development |
| Fault (bug) | The error manifested in code |
| Failure | The fault observed at runtime — wrong output/behavior |
“A dev makes an Error → it becomes a Fault in code → the user sees a Failure.” Cause → artifact → effect.
Verification vs Validation
| Verification | Validation |
|---|---|
| “Are we building the product right?” | “Are we building the right product?” |
| Static, against spec | Dynamic, against user needs |
Verification = matches the spec (Verb-against-spec). Validation = satisfies the user (Vali-user).
7 fundamental testing principles
- Testing shows presence of defects, not absence
- Exhaustive testing is impossible
- Early testing saves money
- Defect clustering — 80% of bugs in 20% of modules
- Pesticide paradox — same tests stop finding bugs; update them
- Testing is context-dependent (medical ≠ e-commerce)
- Absence-of-errors fallacy — bug-free but useless = still useless
“Please Eat Every Donut Past Closing Always” → Presence · Exhaustive impossible · Early · Defect clustering · Pesticide · Context · Absence fallacy.
Testing levels (V-Model)
1Unit
2Integration
3System
4Acceptance (UAT)
“UISA” → Unit → Integration → System → Acceptance. “Units Integrate into a System, which the user Accepts.”
Box approach
Black-Box
White-Box
Gray-Box
Black-box test design
Equivalence Partitioning
Boundary Value Analysis
Decision Table
Static vs Dynamic
| Static | Dynamic |
|---|---|
| No code execution — reviews, inspections, walkthroughs | Code executes — functional & non-functional tests |
Walkthroughs are shorter and informal; inspections are formal and structured. Both record faults (don't fix them).
Non-functional testing
- Performance — Load, Stress, Scalability
- Usability, Security, Reliability
Test-Driven Development (recap from XP)
- Identify a small increment of functionality
- Write an automated test (it will fail)
- Run all tests
- Write code to pass the test, re-run
- Refactor & move on
Even with TDD you still need system testing for performance, reliability, and unwanted-output checks.
Release vs System testing
| Release Testing | System Testing |
|---|---|
| Validation — does it meet customer requirements? | Defect testing — find bugs |
| Done by separate team (not devs) | Done by dev team |
| Black-box / functionality testing | Both black and white box |
Scenario & requirement-based testing
Requirement-based: one requirement → set of test cases. Mentcare: if patient is allergic, prescription must warn. Tests: no allergy → no warning; one allergy → warning; ignored warning → user must give reason.
Scenario testing: test sequences of requirements via a credible user story (nurse on home visits encrypts/decrypts records, etc.).
Performance testing
Operational Profile
Stress Testing
User testing — 3 flavors
Alpha
Beta
Acceptance
Alpha = at home (devs' place). Beta = broader (real customers). Acceptance = approve and pay. Greek alphabet order matches release-readiness order.
Why bugs escape
- User ran untested code paths
- Statements executed in different order than tested
- Untested input combinations
- User's environment wasn't tested
Why exhaustive is impossible: too many paths (5 paths × 20 loops = ~100 trillion), too many inputs, too many environments.
Test automation
Manual test: $X every time. Automated test: 3–30× $X upfront, ~$0 every run after. Worth it for any test that will run repeatedly.
You ship a beta. Bug reports are sparse. Should you assume the product is solid?
Answer: No. Beta testers are usually techies — they tolerate bugs, skip usability issues, ignore the “obvious” ones. Solid release reports require varied user profiles and proactive user research.
A function accepts ages 0–120. Design test inputs.
Answer: Equivalence partitioning: -1, 50, 121. Boundary value analysis: 0, 1, 119, 120, 121, -1. Combine both for thorough coverage of black-box input space.
Writing a Software Project Proposal
A proposal is a contract of understanding. “A well-written proposal is already half the project done.”
What a proposal does
- Defines a problem
- Proposes a software-based solution
- Justifies why and how it should be built
Goal: convince readers that the problem is worth solving, the solution is feasible, and your team can deliver.
Characteristics of a good proposal
Clear
Focused
Feasible
Justified
Professional
Genuine
Standard structure
- Title & Overview — clear title; 3–5 line summary
- Problem Statement — who · what · why · what if not solved
- Background & Literature Review — existing solutions and gaps
- Proposed Solution — features, modules, architecture, key tech
- Scope — what's in AND what's not
- Tools & Technologies — choices justified for the problem
- Expected Outcomes & Deliverables — app, reports, docs, demo
- Timeline / Gantt Chart — big-picture for non-technical readers
- Conclusion — synthesis & commitment
“The Old Professor Brings Solutions, Scope, Tools, Outcomes, Time & Conclusion” → Title · Overview · Problem · Background · Solution · Scope · Tools · Outcomes · Time · Conclusion.
Poor vs good problem statement
| Poor | Good |
|---|---|
| “Manual systems are inefficient.” | “Small clinics rely on manual appointment booking, leading to long waiting times, scheduling conflicts, and poor patient experience.” |
Common mistakes
- Vague problem statements
- Over-ambitious scope
- Copy-paste / plagiarism
- No justification for tool choices
- Poor formatting & grammar
- Treating the proposal as a formality
Samsung (2023) — leaked source code via ChatGPT. Law firm (2024) — $5,000 fine for AI-generated fake legal cases. Air Canada (2024) — held liable for chatbot misinformation. AI-generated proposals can be plagiarism + unmaintainable.
Last-Minute Cheat Sheet
If you only have 10 minutes before the exam, read this.
The mnemonic bundle
| Topic | Mnemonic | Means |
|---|---|---|
| SE process activities | SDVE | Spec · Develop · Validate · Evolve |
| SDLC phases (7) | P-R-D-I-T-D-M | Plan · Req · Design · Implement · Test · Deploy · Maintain |
| Ethics (8) | Outward → Inward | Public → Client → Product → Judgment → Mgmt → Profession → Colleagues → Self |
| Spiral quadrants | PREE | Plan · Risk · Engineer · Evaluate |
| Agile values | People · Product · Partner · Pivot | Individuals · Software · Collab · Change |
| XP components | URTP | User stories · Refactoring · TDD · Pair |
| Scrum structure | 3-5-3 | 3 Roles · 5 Events · 3 Artifacts |
| User story quality | INVEST | Independent · Negotiable · Valuable · Estimable · Small · Testable |
| FR quality | CCP | Complete · Consistent · Precise |
| NFR types | POE | Product · Organizational · External |
| RE process | ESVM | Elicit · Specify · Validate · Manage |
| Prioritization | MoSCoW | Must · Should · Could · Won't |
| UML families | S-B-I | Structural · Behavioral · Interaction |
| Arch drivers | PSSA | Performance · Security · Safety · Availability |
| Arch patterns (6) | My Lazy Cat Plays Right Tunes | MVC · Layered · Client-server · Pipe · Repository · Transaction |
| Maintenance types | CAP | Corrective · Adaptive · Perfective |
| Legacy strategy | SMRR | Scrap · Maintain · Re-engineer · Replace |
| Test levels | UISA | Unit · Integration · System · Acceptance |
| User testing | Alpha · Beta · Acceptance | Internal → Wider → Customer-approves |
One-liners that win marks
- SE = systematic, disciplined, quantifiable approach to development, operation, and maintenance.
- Agile vs Waterfall = embrace change vs lock-in. Working software vs comprehensive docs.
- Scrum Master is a servant leader, not a manager. Shields the team.
- Product Owner owns the backlog. Developers own the increment. Scrum Master owns the process.
- Functional reqs = what; Non-functional = how well.
- Verification = build it right (spec). Validation = build the right thing (user).
- Error → Fault → Failure. Human mistake → code defect → observed wrong behavior.
- Black-box finds omissions; White-box finds commissions.
- Refactoring = continuous during dev. Re-engineering = one-off restructure of legacy.
- Pesticide paradox: same tests stop catching bugs — must evolve test suite.
- Dijkstra: testing shows presence of defects, not absence.
If the question says…
| Clue word | Probably about |
|---|---|
| “fixed / locked / regulated requirements” | Waterfall / V-Model |
| “high-risk, evolving requirements” | Spiral |
| “customer on-site, fast change” | Agile (XP/Scrum) |
| “central shared data, multiple subsystems” | Repository |
| “stream of data transformed step-by-step” | Pipe-and-Filter |
| “entity life history / modes” | State Machine Diagram |
| “workflow / business process” | Activity Diagram |
| “external actor's view of features” | Use Case Diagram |
| “object messages over time” | Sequence Diagram |
| “measurable quality attribute” | Non-Functional Requirement |
| “value / voice of customer” | Product Owner |
| “15-min daily” | Daily Scrum |
| “customer test for free” | Beta testing |
| “tests before code” | TDD |
| “pre-deployment customer approval” | Acceptance testing |
When asked “which model / pattern / test would you use?”, justify with two factors: the constraint (regulation, risk, budget) and the goal (speed, quality, flexibility). Two-factor answers always score higher than one-line ones.