The Software Crisis
Why are we here? Because 62% of IT projects fail. 25% are cancelled before they even finish, and 40% fail to meet business needs.
In 1993, FoxMeyer (a $5 billion company) collapsed because a massive software project failed. Companies with poor analysis have 3x more failures than successes.
The Cost of Mistakes
A mistake in the requirements phase costs almost nothing to fix. But if that same mistake makes it to the final product, it can cost 100x more to repair.
Fix cost: $1 (Just update a document).
Fix cost: $10 (Need to rewrite and retest code).
Fix cost: $100+ (Deployment, patches, lost trust).
What percentage of IT projects are estimated to fail?
The "Wicked" Problem
Why is building software so hard? It's not just the code โ it's the requirements. Software development is what engineers call a wicked problem.
A "wicked problem" isn't just difficult; it's a problem that can't be fully defined until you've already tried to solve it. In software, you often don't know what you need until you see what you built.
Scenario: You are designing a new Social Housing Allocation system. Stakeholders (tenants, government, builders) have conflicting goals, and the technology landscape changes every 6 months. Why is this a 'Wicked Problem'? (Select ALL)
During an interview, a senior nurse says: "I just look at the monitors and I KNOW when a patient is crashing. It's obvious." This represents a failure of elicitation because:
The War on Ambiguity
In the world of requirements, ambiguity is the enemy. If a sentence can be interpreted in two ways, it probably will be โ and both ways will be wrong.
Concept: In 'Subconscious Disambiguation' (SD), which of the following is true?
Which of the following correctly categorize 'Requirements' vs 'Specifications' in an aviation system? (Select ALL)
Mapping the Domain
To build a system, you first have to understand the concepts it deals with. In Object-Oriented (OO) analysis, we map the real world into code-friendly structures.
Modeling: In a medical simulation, a 'HumanBody' contains a 'HumanHeart'. If the system deletes a 'HumanBody', the 'HumanHeart' must also be deleted. This is:
System Scenario: "A Truck is a type of Vehicle. A Truck has many Cargo items. Each Cargo item has a weight." Which mapping is correct? (Select ALL)
Data Flow & Swimlanes
If a Domain Model is the skeleton, a Data Flow Diagram (DFD) is the circulatory system. It shows how information moves.
The Swimlane (Process) View
We use Swimlanes (partitions) to show who is doing what. It's an Activity Diagram that assigns responsibility.
In the diagram above, what is the primary purpose of the 'Lanes'?
The 3 Levels of DFD
Data Flow Diagrams evolve from a broad summary to a surgical blueprint. Toggle the layers to see the progression.
Visual Check: Which level is the FIRST to show 'Data Stores' (the open boxes)?
User Stories & Agility
In modern development, we often skip the 100-page document and use User Stories. This keeps us Agile.
Agile is iterative. Instead of planning everything up front (Waterfall), we build small pieces, get feedback, and adjust. We value working software over exhaustive documentation.
The Magic Formula
Every good user story follows a specific pattern. It answers Who, What, and Why.
As a <role>,
I want <goal>,
so that <benefit>.
As a Pizza Customer,
I want to save my credit card,
so that I can check out faster next time.
In the original quiz, the course project was worth 45% of the grade. That's because Requirements Engineering is a hands-on skill โ you learn it by doing!
Which statement about Agile is correct?
The Actor's Journey
A Sequence Diagram shows exactly how objects talk to each other over time. It's like a script for a play.
Redesign Challenge: A system currently does all checkout logic in the 'CheckoutPage' UI class. You decide to refactor using Expert + Creator + Controller patterns. Which decisions are correct? (Select ALL)
State of Mind
A State Machine shows the life cycle of a single object through various states and transitions.
Notation: In the transition 'submitRequest / [creditOk]', what is the purpose of the bracketed text?
Bug Catching: You are modeling a Pizza Order state machine. Which transition represents a LOGICAL BUG in the system?
Validation: Building the Right Thing
The final step in Requirements Engineering isn't writing code โ it's Validation. This is where we ask: "Are we building the right product?"
"Are we building the right product?" (Does it meet the user's actual needs?)
"Are we building the product right?" (Does it match the specification we wrote?)
The CrowdRE Revolution
How do we validate requirements at scale? We use CrowdRE. Instead of just interviewing 5 people, we listen to 5,000.
App Store Reviews
Mining reviews for complaints or feature requests.
Social Media
Tracking Reddit or Twitter for "I wish this app could...".
Support Tickets
Analyzing patterns in common user problems.
What is the core question of 'Validation'?
The Practice Exam (Challenge Mode)
This is the final gauntlet. Every question requires scenario-based analysis and synthesis of multiple engineering principles. There are no easy definitions here.
Part 1: Analysis Trade-offs
1.1 You are designing a fleet tracking app. Which of these is a VALID classification? (Select ALL)
1.2 A requirement says: "The system shall support many students during peak hours." Which revised statements correctly fix this weak requirement? (Select ALL)
Part 2: Visual Logic
2.1 A DFD shows an arrow directly connecting 'USER_DB' to 'AUTH_LOGS'. Why is this a major modeling error?
2.2 In a Library DCD, you need to create a 'Loan' object. Which design best minimizes coupling?
Architecture Principles
Software Architecture is the "style" of the structure of a system. Good architecture follows Six Core Principles that ensure a system is maintainable and scalable.
Metric Analysis: You are auditing a legacy system. Which findings indicate GOOD software quality? (Select ALL)
Strategic Choice: You are building a High-Frequency Trading platform where components must react instantly to price changes without being tightly coupled. Use:
Design Blueprints
Once we have our architecture, we need a Design Class Diagram (DCD). This is the final blueprint developers use to write code. It's much more detailed than a simple Domain Model.
A Domain Model is about real-world concepts. A DCD is about software implementation. It includes specific methods (like calculateTax()), design classes (like CheckoutController), and technical details.
UML Relationships (The Precise Version)
In a DCD, we use precise symbols to show how classes connect. These are critical for your project!
The "Death" relationship. If the parent dies, the child dies. (e.g., A Car and its Engine โ you can't have a car without an engine in this model).
The "Roommate" relationship. If the parent dies, the child moves out. (e.g., A Library and its Books โ the books exist elsewhere if the library closes).
The "Kind of" relationship. (e.g., A Truck is a type of Vehicle).
Blueprint Challenge: Food Delivery
Imagine you're designing a Food Delivery app. You need to identify the components for your DCD. Based on the quiz logic, classify the following:
Concept: "Order"
Concept: "Delivery Address"
Which of these is a "Design Class" (not in the Domain Model)?
Relationship: 'Controller' to 'PaymentGateway'
The Golden Rule of DCDs
Your DCD should assign methods to the **Information Expert**. For example, if you need to check if a Customer can afford an order, that method belongs in the Customer class (Expert), not the CheckoutGUI!
Visual Blueprint Masterclass
This module is dedicated entirely to interpreting rendered diagrams. Study the models and answer the questions based on their visual structure and formal notation.
Sequence Diagram Audit
Analyze the object interactions below. Look for message flow, timing, and pattern application.