Unified Process Model and UML
Prerequisite Knowledge
This lecture builds on concepts covered in earlier lectures of this subject.
Previously Covered in This Subject
- Unified Development Process — covered in Lecture 3
- Software process models — covered in Lecture 3
- Use case analysis — covered in Lecture 2
- UML as a standard notation; static versus dynamic models — covered in Lecture 3
- Objects, interfaces, and the black-box view — covered in Lecture 2
- Polymorphism — covered in Lecture 2
4.1 Why Object-Oriented Development Needs Iteration
4.1.1 The Core Problem: Requirements That Refuse to Stay Still
Hook — Why can't we just plan everything up front? If requirements were stable, we could write them down once, design once, build once, and be done. The problem: requirements do not stay still. Research shows a typical project experiences about a 25% change in requirements over its lifetime (Boehm & Papaccio), and on large projects the change rate reaches 35–50% (Jones). On average, roughly 45% of the features built on traditional waterfall projects are never used. Any process that assumes requirements are fixed is fighting the evidence.
For small projects, planning lives in your head and the requirements are clear. The main challenge starts when requirements are not clear — and, worse, when they keep changing. That is the central reason we need an iterative software development process — a process that builds the system as a series of mini projects, each cycle a small repeat of the whole journey instead of one straight sequence — and it is the reason this style of development is so popular for object-oriented systems.
Iterative development is built on ideas you already associate with agile practice: continuous integration (merging and testing everyone's work together, frequently), incremental delivery (delivering value in small usable pieces), a lightweight process where nothing is fixed, and small, time-boxed iterations (cycles with a fixed calendar end date), often called sprints. The product itself matters more than documentation; heavy, detailed documentation is deliberately absent. You still produce some documentation, but only the part that genuinely matters — the essential middle slice — and you focus on that. The contrast is with the waterfall model, a sequential process in which the whole design must be finished before implementation can begin. Iterative development rejects that "everything first, then build" stance: you build a little, learn a little, and build again.
| Aspect | Waterfall | Iterative |
|---|---|---|
| Requirements | all defined up front, then frozen | discovered and refined as you go |
| Design | finished before implementation starts | grows with each iteration |
| User feedback | only after delivery — far too late | after every iteration — cheap to act on |
| Deliverables | one big final delivery | a stable executable at the end of every iteration |
| Risk handling | integration surprises at the end | continuous, from iteration 1 |
| Documentation | heavy, detailed | only what actually matters |
4.1.2 What Iterative Development Looks Like
Key Concept — Iteration. An iteration is one complete pass through the core development activities — requirement analysis → design → implementation → testing — repeated over and over, with the results of each pass feeding the next. Each iteration is effectively a mini project: in industry, iterations usually last two to four weeks, and for smaller projects they can be even shorter. Critically, iterations are time-boxed: the calendar end date is fixed, and if the scope cannot fit, you shrink the scope — you do not slip the date. Each iteration ends with a stable outcome (an executable), though it may not be ready to deliver to the end user or to production. Only after several iterations does the work become incremental development, where every round genuinely adds deliverable value.
Visual intuition — the loop, not the line:
┌──────────────────────────────────────────────┐
▼ │
Requirements ──► Design ──► Implementation ──► Testing│
(re-checked) (re-checked) (small chunks) (this │
▲ │
└──────────────────────────────────────────────┘
each cycle feeds the next, and the user
reacts to a running demo at the end of each pass
Iterations exist partly because feedback from the user is essential, and the earlier sequential models had no mechanism for it. With a sequential model you get feedback far too late, when changing course is expensive.
The professor then opened the floor to check prior knowledge and motivation:
Q: Why do you think iterative development is good for object-oriented software development? Have you heard of iterative development? What is it, and why is it more popular or better suited to object-oriented systems?
A: In this iterative process we do requirement analysis and design multiple times. Whatever changes come in, we go through the whole thing again — so going through requirement analysis and design repeatedly leaves less chance of error. Small iterations are like mini projects. Iterations in industry are usually two to four weeks, smaller for smaller projects, and importantly we get feedback from the user — feedback that was not there in the earlier sequential model.
The answer connects two ideas: re-validating the requirements repeatedly catches errors that a single pass would miss, and short cycles let the user steer the product before mistakes harden.
Worked Example — One Two-Week Iteration on a Student Project. Suppose your team builds a mailing-system project over roughly nine iterations of two weeks each. Inside iteration 2:
- Days 1–2 — Requirements. A short workshop selects three use cases (out of ~30) that are highest-risk and highest-value, for example UC2 Send a Letter, UC11 Batch Mailing, and UC14 Billing Report. Only these three are worked on now; the rest wait for later iterations.
- Days 3–5 — Design and implementation. A rough class sketch, then code for just those three use cases; the new classes integrate with whatever iteration 1 already produced.
- Days 6–9 — Testing and integration. Build the whole system daily and fix breaks immediately. Ask the user (a classmate playing the client) to react to the running demo.
- Day 10 — Code freeze. Whatever is done is the stable outcome. Features that do not fit are cut — scope shrinks, the date does not move.
Result: an executable that does three things well, plus a written list of corrections that becomes the input to iteration 3. Notice that requirements, design, code, and tests all grew together — none of them was "finished" at the start. That is what time-boxed iteration feels like in practice.
Assumptions & Scope — Where Iteration Works, and Where It Breaks. Iterative development assumes (1) requirements will change and (2) user feedback is available at the end of every cycle. The textbook recommends iterations of two to six weeks — short is good — and if an iteration stretches much beyond six weeks you have lost the feedback advantage and are effectively sequential again. Iteration is not a license for endless change: the timebox keeps the pressure on, and scope is what gives way. And iteration is not unplanned hacking: analysis and design are not skipped — they are repeated, every cycle.
4.1.3 Why Iteration Suits Object-Oriented Systems
There is a deeper reason this pairing works: object-oriented development is a bottom-up approach, not a top-down one. You focus on the individual objects or the classes you create, and on the basis of those you build the overall system. When you grow a system out of small, self-contained building blocks, it is natural to develop, test, and replace those blocks in short cycles — exactly what iterations give you. This also means the process itself must be adaptive and flexible. Software development cannot be rigid the way civil engineering or mechanical engineering can be — those are hardcore engineering disciplines where physical rigidity is possible and expected. Software requirements grow and shift, so the process must bend without breaking.
A different analogy, to make the same point stick: building a city from LEGO bricks. You assemble one small building, check it against the picture, then add the next; if a brick is wrong, you swap it out cheaply. The class is the brick, the iteration is one building round, and the check against the picture is user feedback. Nobody assembles the entire city blind and checks the result once at the end.
The evidence from industry history agrees. Iterative development has been used with great success since the 1970s and 1980s — NASA's Project Mercury ran on it, and the Space Shuttle's on-board software went through 17 iterations with a remarkable defect record. Today's Scrum sprints (typically 30 days) are the same idea under a new name. The waterfall, by contrast, is the approach associated with the highest failure rates, lower productivity, and higher defect rates — and its early estimates commonly differ from final actuals by as much as 400%.
4.1.4 The "Code a Bit, Test a Bit" Danger
Professor's Warning — "Code a bit, test a bit" is drift, not iteration. Never let your work degrade into "code a bit and test a bit." That pattern looks like iteration but is really drift — a little coding, a little testing, with no plan, no architecture, and no organized feedback loop. Iteration is disciplined: each cycle runs the full set of activities (requirements, analysis, design, testing) and produces a stable outcome. "Code a bit and test a bit" skips that discipline and quietly produces chaos. Keep the discipline of the full activity set inside every iteration.
The warning is about discipline, not about pace. The professor does not object to coding early — he objects to coding with no plan, no architecture, and no feedback loop. The difference between iteration and drift is exactly the full activity set: every cycle must touch requirements, design, implementation, and testing, and must end in something runnable.
Pitfalls — How Iterative Projects Go Wrong.
- Waterfall thinking sneaks back in. "We must define 100% of the requirements first" kills the method — requirements are refined during the iterations, not before them.
- Three-month iterations. Feedback arrives far too late; you have quietly become sequential, with all its risks.
- Treating an iteration as "just coding time." Skipping requirements or design inside an iteration is the code-a-bit trap in disguise.
- Refusing to shrink scope. The date is fixed; if you keep adding scope instead of cutting, the timebox breaks and the whole rhythm collapses.
- Skipping the stable outcome. If an iteration does not end in a running executable, there is nothing to demo — and user feedback dies with it.
Recap & Bridge. Requirements change (about 25% typical, 35–50% on large projects; ~45% of waterfall features are never used), so we need iterative development: repeated full cycles of requirements, design, implementation, and testing in time-boxed mini projects of two to four weeks, a stable executable every cycle, and user feedback at every loop. Object-oriented systems are built bottom-up from small, replaceable building blocks, which fit short cycles naturally — but keep the discipline: never degrade into "code a bit, test a bit." Next, we examine the best practices behind the Unified Process — the proven habits (handling risk early, engaging users, building core architecture first, verifying quality continuously) that make iteration actually work in practice.
4.2 The Best Practices Behind the Unified Process
4.2.1 Where the Best Practices Came From
Hook — The best method is not a new invention. The Unified Process (in its well-known commercial form, the Rational Unified Process, or RUP) crystallized around the year 2000 out of roughly twenty to twenty-five years of accumulated industry experience. Nobody invented it from scratch: it packages the best practices that software teams had already learned the hard way — which is exactly why it became influential.
The Unified Process did not appear out of nowhere — it is a curated set of proven practices. Its intellectual parents are visible in everything it does:
- Iterative life cycle for object-oriented systems. Almost every modern model is iterative in some sense. The spiral model — an iterative, risk-driven process in which each loop adds one refinement of the product while explicitly retiring the biggest remaining risk — is iterative, and so is evolutionary development, where the system grows through successive versions. From the spiral model specifically we inherited the risk-driven approach: the idea that risk gets mitigated in a careful, ordered manner. From agile we inherited the biggest outcome of all: change management, the discipline of accepting changes rather than fighting them.
- Adaptive, lightweight processes. Nothing is fixed; requirements keep on enhancing and growing, so the system — and the process around it — must stay flexible.
- A quality product with continuous verification. Quality is very, very important, and verification comes from continuous testing woven into every iteration, not from one final test pass.
- Documentation only as needed. We saw in the earlier material why documentation matters, but you produce only what is really required, so you do not waste time. The competition will not wait while you write paperwork.
One more lineage fact worth knowing: RUP was commercialized by Rational Software (later acquired by IBM), which is why "Unified Process" and "Rational Unified Process" are often used interchangeably in industry.
4.2.2 Time-Boxed Iterations and Mini Projects
Iterations are time boxed — the calendar length is fixed and cannot move. The class was asked to define the term, and the exchange went like this:
Q: What do you mean by a time-boxed iteration?
A: Iteration time boxing means that the time is fixed. Within these two weeks, whatever you are able to do, you have to show it. You cannot ask for deadline extensions. You implement a small feature set and you get enhanced, early feedback.
The professor confirmed these were "very good answers" — the two key halves being (1) the fixed calendar that cannot be extended and (2) the small feature set that forces early feedback.
Key Concept — Time Boxing. A time-boxed iteration is a mini project with a fixed end date. Scope is what flexes; the date does not. At the deadline you demonstrate whatever you have achieved — you never ask for an extension. For a particular kind of project you typically plan 8 to 10 iterations. Each iteration is treated as a mini project: you perform all the activities and you must come out with a working, executable product — or at least some artifact — which may not yet be ready for the customer.
Visual intuition — the rhythm of a time-boxed project:
Iteration 1 Iteration 2 Iteration 3 ... Iteration 8-10
[2-4 weeks] [2-4 weeks] [2-4 weeks] [2-4 weeks]
mini project mini project mini project mini project
demo demo demo demo
stable stable stable stable
outcome outcome outcome outcome
The demo at the end of each box is the mechanism that forces "whatever you are able to do, you have to show it."
Worked Example — Planning 8–10 Iterations for a Course Project. A small team has ~20 weeks and plans 10 iterations of two weeks each for a mailing-system project:
- Iteration 1 — Environment + proof of concept. Set up the tools; build a throwaway slice (e.g., a single end-to-end "send a letter" screen) to prove the risky technology works.
- Iteration 2 — One core use case, properly. Requirements, design, implementation, and tests for UC2 Send a Letter; demo to the "client" (another student).
- Iterations 3–7 — The remaining high-value use cases (UC11 Batch Mailing, UC14 Billing Report, …), one or two per iteration, each ending in a runnable build.
- Iterations 8–9 — Non-functional polish. Performance, security, and robustness pass driven by the notes collected in earlier demos.
- Iteration 10 — Packaging. Final hardening, user guide, and submission — with the calendar date fixed, so anything unfinished is deliberately de-scoped.
Each of the 10 boxes runs the full activity set, and the product is always executable by the end of the box. That is the whole of time boxing in practice.
4.2.3 Artifacts: Pick What Matters
The term artifact in the Unified Development Process means everything you produce during development: the documents, the diagrams, the code, the database design, any models you create. You will create many diagrams and many documents, but you do not need all of them. You choose a few artifacts, focus on them, enhance them, and do them in a quality manner.
The professor's analogy for choosing artifacts is a pharmacy:
Real-world: Facing an ailment — sneezing, fever — you find ten or twenty medicines for that ailment on the shelf. The doctor does not prescribe all of them. He chooses according to your symptom, your situation, your environment, your daily routine, and gives you a particular set of doses. Choosing artifacts works the same way: you select the few artifacts with the highest potential value for this particular problem, this particular need. It cannot be generic — the same set cannot serve all projects and all process models.
Assumptions & Scope — Artifacts Are Optional, Not Mandatory. The professor's pharmacy analogy maps precisely: symptom → project need; situation/environment → project context; the chosen set of medicines → the small set of artifacts. This connects to a defining trait of the Unified Development Process: it does not mandate anything. Nothing is forced on you — no fixed artifact list, no fixed ceremony. It only promotes best practices and asks you to do what is really required, in an agile way. The companion textbook states the same rule sharply: create only the artifacts that really add value, and drop them if their worth is not proved. A long, generic artifact list is the first sign the process has stopped being agile.
4.2.4 Analysis Paralysis and Endless Design
The professor flags two failure modes that iterative, time-boxed thinking exists to prevent.
Pitfalls — The Two Ways to Stall a Project.
- Analysis paralysis. "I am analyzing" can be said forever — one person takes five days to understand something, another takes ten. How long you spend depends on how much time you have, not on how much understanding is available. Analysis cannot be given infinite time.
- Endless design. People designing say "I am not getting the solution, I am just working on it," and keep working and working. That is also not allowed — time constraints forbid a long-drawn-out design process with everyone else waiting on the designer.
The whole philosophy is a balance: do not rush to code (the analysis and design must happen), but do not wait for everything to be perfect either (the process must not be delayed). The system sits between "rush to code" and "wait forever":
rush to code ←—————— the balance point ——————→ wait forever
(lazy) (analysis paralysis /
underspecified endless design)
The timebox is the referee: it pushes the "wait forever" side toward action, while the full activity set inside every iteration pulls the "rush to code" side back toward proper analysis and design.
4.2.5 UML as a Best Practice
Another best practice of the Unified Process is UML, the Unified Modeling Language — a standard set of diagramming notations for describing software. The course will use UML throughout, and the professor recommends self-learning the diagrams before the next session; lab sheets will be provided, and you can take any free tool and start building diagrams with it.
Learning UML itself is not a big deal — UML is only notations. But it is good for you because it broadens your thinking. The real skill this course is after is object-oriented thinking; UML is an aid to that thinking and a way to put your ideas in visual form. A lot of visual modeling aids let you represent your ideas to clients and to teammates — showing them, on a diagram, "this is what you are doing, this is what I am thinking." Think back to analysis paralysis: how do you show someone what you are doing? Visual aids are how. Through them you interact, you brainstorm, you get new ideas and new inputs. That is why UML has become a de facto standard for analysis and design across the industry: it is mainly a collection of notations, but those notations give you a shared visual language.
4.2.6 People over Process, and Risk-First Iterations
Two more best practices round out the philosophy. First, the people matter more than the process. In agile thinking, people are the most important component of the system, and the users are the most important people of all. Good people plus a good process gives you better quality than either alone.
Second, sequence your iterations by risk and value. The professor put the question to the class directly:
Q: Do you handle high-risk items in the early iterations or in the later iterations?
A: Early iterations — you should target the early iterations, because that is where the more critical and higher-risk values are. Get early feedback on those. Lower-risk items can be handled later on and are easy to manage.
The same logic applies to change. A change identified in an early iteration is cheap to absorb; a change that surfaces late is very difficult and expensive. Research has proved that identifying changes early saves a lot of time. So you engage your customers continuously — getting feedback, getting their evaluations, collecting new requirements or the changes they want — and you verify what you are building against them at every step.
Recap & Bridge. The Unified Process is packaged industry wisdom (spiral's risk-driven thinking + agile's change management), not a new invention. Its operating rules: time-boxed iterations as mini projects (8–10 per project, fixed dates, show what you did), artifacts chosen like a doctor prescribes medicines (nothing is mandated), analysis paralysis and endless design banned by the timebox, UML as a shared visual language for OO thinking, people over process, and high-risk items handled in the early iterations. Next, we ask what software architecture actually is — the skeleton of components that the four phases of the UP are built to grow.
4.3 Software Architecture
4.3.1 What Software Architecture Is
Hook — Architecture is everywhere, even in a song. A TV, an air conditioner, a song — any music has structure. Buildings have architecture: different rooms (living room, bedroom, bathroom) and how they connect to each other. Architecture is not an abstraction that exists only in software; it is the shape of any organized system. So when we ask "what is software architecture?", we are really asking what shape a software system takes.
The professor opened this topic with a direct question to the class, which doubles as the definition:
Q: What do you mean by software architecture? How do you visualize it, and why does it need to be built in the early iterations?
A: Design comes first as a high-level architecture. Take the human body: the whole skeleton is the architecture — the body, the skin, and everything else hang off it. In the analogy, the basic architecture was created first and then the different phases were built on it. Similarly, a carpenter who receives an order for 100 desks first builds the architecture of one desk, and after that he can replicate it. So architecture is the set of components that need to be there, and the high-level design — the major components and how they are connected to each other. If that high-level design is with you, you can add on: someone wants a new requirement, you build your basic architecture, show it to people, and then build on top of it.
Key Concept — Software Architecture = Components + Connections. Formally, software architecture is the collection of your components and their connections — how the different components are connected to each other. In the body, hands connect to shoulders, legs to thighs, the head to the neck; those connections are as much a part of the architecture as the parts themselves. "If you do not know anything about it," the professor says, "at least you can see the blocks — the boxes — and how these are connected. That is your architecture."
Visual intuition — architecture is the "box-and-line" picture:
┌──────────┐ ┌──────────────┐ ┌──────────────┐
│ UI │ ──────► │ Domain Logic │ ──────► │ Data Storage │
│ (view) │ │ (business) │ │ (persistence)│
└──────────┘ └──────────────┘ └──────────────┘
▲ │
└──── [Security] ─────┘
components = the boxes connections = the arrows
Both the boxes and the arrows together are the architecture. Change an arrow and you have changed the architecture, even if every box stays the same.
4.3.2 Architecture First, Then Build
Architecture has to be built in the early iterations, because it plays an important role in your increments and your iterations. You can deliver your product incrementally only if you have a good architecture — increments need a stable skeleton to attach themselves to. The early architecture also becomes the anchor for future growth: a flexible, open architecture lets you add anything you want later, which is how the system evolves from its initial development through future requirements. The design has to stay flexible precisely so it can absorb that growth.
The professor returns to this later in the session with a house analogy: you build the architecture the way you build a house — you show different aspects through different views. For a building there is a top view, a front view, a side view — the same building seen from different angles — and there is the structure itself, plus the electrical connections and all the different things that need to be there. For software, your architecture also shows the hardware and the technical things you need.
Form Meets Function — Architecture Realizes Your Use Cases. Anything in this world has both a form and a function. A car — four wheels, a chassis-type structure in the middle, an engine side — and note that an SUV and a sports car have different architectures. A glass has an architecture whose purpose is that water can be held in it. Your software components need the same: an architecture that serves the functionality the user asked for. This is why the architecture is chosen to realize the use cases — the structure exists to deliver the functions, not the other way around.
4.3.3 Common Architecture Styles
The course assumes you have met some classic software architecture styles before:
| Style | The big idea | Where you see it |
|---|---|---|
| Client-server | A client requests services from a central server | essentially every website you visit |
| Three-tier | Presentation, business logic, and data live in three separate tiers | routine in enterprise systems |
| Pipes and filters | Data flows through a chain of processing stages | compilers and shell pipelines |
| Layered | Higher layers call down on lower layers (UI → domain → technical services) | enterprise systems and desktop apps |
The professor explicitly recommends reading about client-server architecture, because all websites follow it. You do not need to memorize diagram conventions for these now — the point is that the system is described as components plus connections, and that description is the architecture.
4.3.4 The Relative-Effort Picture and What It Teaches
The session returns to a figure shown earlier — the classic unified-process picture of relative effort across disciplines and phases — and the class is pressed to extract the lesson from it. Visual intuition for that figure:
Effort per discipline (height of each band) shifts across the phases
Inception Elaboration Construction Transition
▁▂▄ ▅▅▂ ▂▅▅ ▂▂▅
requirements requirements design+code deployment
+ scope + architecture + test hump + final test
hump hump hump hump
The professor's own summary is worth keeping whole:
- The classes of activity are not one-way; they have to be interactive.
- Work on different disciplines — requirements, analysis, coding, business modeling, testing, implementation — runs in parallel, but at the same time we focus on different stages at different moments. The relative effort in each discipline shifts across the phases.
- An iteration is a mini project, and as you move from iteration to iteration the focus shifts: you get more experience and more learning. Iterative learning development is good for the team.
- The main learning of the picture is that the relative effort changes over time. In every iteration you do everything — requirements, design, business modeling, testing, implementation — but the relative effort shifts across the phases as the project matures.
- Nothing about it is rigid: it varies from organization to organization and project to project.
Recap & Bridge. Software architecture is the collection of components and their connections — the box-and-line skeleton that everything else hangs off. It must be built in the early iterations because increments need a stable skeleton to attach to, and it must stay open so future requirements can be added. Classic styles (client-server, three-tier, pipes and filters, layered) are just different arrangements of that same components-plus-connections idea. And in every iteration you do everything — requirements, analysis, design, testing — with the relative effort shifting across the phases. Next, we zoom in on the components themselves: component-based software engineering and the interfaces that let components be plugged together.
4.4 Component-Based Software Engineering
4.4.1 Components, Interfaces, and Black Boxes
Hook — The hardware dream. Imagine snapping software parts together the way you snap a keyboard into a PC: buy the pieces off the shelf, plug them in, and they work together. That is the goal of component-based software engineering (CBSE) — and hardware has already done it. Software has not, yet.
The goal of CBSE is to build software by connecting various software components, where the components can be connected easily through their interfaces. You want to build your system the way a desktop computer is assembled: buy some off-the-shelf components and integrate them — APIs (application programming interfaces, the defined entry points a component exposes) are one example of such integration points.
The professor's running analogy is hardware, because hardware already achieves what software still cannot:
Real-world — Why Hardware Leads. A desktop system can be assembled from parts of different companies — a Samsung monitor, a Dell monitor, an HP machine — and it works. That is only possible because there are standard interfaces: a keyboard from any company connects to any machine; it does not need to be from Dell. With software, this is still not happening — and that is precisely the aim of component-based software engineering: to make software parts as interchangeable as hardware parts.
The professor offers a second hardware analogy — a fan, to which you can add different components — and reminds the class that a computer itself is the best example. The fan's blades, motor, and switch connect through a fixed socket; swap any part and the fan still works, because the socket (the interface) stays the same.
4.4.2 Interface vs Implementation: Polymorphism
Key Concept — Separate the Interface from the Implementation. A component provides a realization of a set of interfaces. The core discipline is to keep the interface and the implementation apart:
- An interface is a collection of operations used to serve a service — or a class of services — of a component. Through interfaces, people learn what you are capable of, and they can use you as a black box: they do not need to know how you work inside; once they know what you do, they can integrate.
- Because the interface is fixed while implementations can vary, polymorphism works: one interface, multiple implementations. As long as you have proper, well-developed standard interfaces, you can swap one implementation for another whenever you want.
Visual intuition — the black-box idea:
You (caller) Die (component)
"give me the showing face" ────► ▒▒▒▒▒▒▒▒▒▒
▒ black box ▒ six faces,
(interface: getFace()) ◄──── ▒▒▒▒▒▒▒▒▒▒ each has a value
internal works
hidden from you
A component is also a physical, replaceable part of the system — borrow the term from any physical engineering discipline. The professor points to knee-replacement surgery: the knee is a part of the body's architecture that can be physically replaced, and people do fine. A component conforms to the system the same way: if your interfaces are correct, following the same protocol, you can connect a mouse or a keyboard from any company.
4.4.3 Worked Example: The Die
Worked Example — The Six-Sided Die. The professor sketches the canonical black-box example by hand — a die:
- A die can be made by any company, but the interface must say the same thing: it has six faces, and each face has some value (1 through 6).
- Anybody should be able to get the value of it — the face currently showing — by calling an operation such as
getFace(). - As a physical device it is a physical element. To use it in software, you need to create a computer interface for it — an interface box you wrap around the die — so that anything interacting with the die can see which face is showing.
The point: the contract (six faces, each with a value, a way to read the showing face) is independent of who manufactured the die, and the face values are fixed by the interface and never change at runtime. The software equivalent of that contract is the interface. In the course's running example, the die, the player, and the dice game become the software components — the classes become components.
4.4.4 The Desktop-Computer Example: Why Hardware Leads
The desktop-computer assembly example is the best demonstration that standard interfaces work. Because every keyboard manufacturer builds to the same connector standard, any keyboard works with any machine. Software has not reached that state yet — you cannot yet snap an arbitrary third-party component into an arbitrary system just by matching an interface — and narrowing that gap is what CBSE is about.
| Hardware today | Software today | |
|---|---|---|
| Interchangeable parts | yes (any keyboard, any monitor) | not yet (third-party components rarely snap in) |
| Standard interfaces | physical connectors and protocols | emerging — APIs, components, frameworks |
| Replaceability | buy a new part, plug it in | swap implementations only if interfaces are fixed |
Components should be usable or replaceable as black boxes, exactly like the die: you read the showing face without needing to know how the die is made.
4.4.5 Component Diagrams and Packages
In UML there is a component diagram: you show the various components and how they are connected, so that you will be able to deploy your system. There is also a package diagram (a way to group related classes and components into packages). Components are shown in terms of design and implementation — the component diagram lives in the implementation view of the system, next to the class diagrams you draw during design.
Recap & Bridge. Component-based software engineering builds systems by connecting components through standard interfaces — the way a desktop PC snaps together parts from Samsung, Dell, and HP. The core discipline is separating the interface (a collection of operations, the black-box contract) from the implementation, which is what makes polymorphism — one interface, many implementations — and component replaceability possible. The die is the canonical example: six faces, a value per face, a way to read the showing face — the contract independent of the manufacturer. UML captures this in component and package diagrams. Next, we turn from how components are assembled to what the system should do: use-case-driven development.
4.5 Use-Case-Driven Development
4.5.1 What a Use Case Is
Hook — Every requirement must earn its place. A requirement that delivers no value to a user is not a requirement at all — it is noise. That single idea is why use cases became the de facto standard of requirement analysis, and why the Unified Process is said to be use-case driven.
The Unified Process is use-case driven: the use cases are the thread that runs through every phase. A use case is a functionality that has real value to the end user. The definition of a valid use case is strict: it must result in some valuable outcome for the end user. If it does not give any outcome, it is of no use.
The professor explains why use cases became so popular: for a lot of requirements, people say "this is what we know" — or "this is what we don't require" — and you need to connect all the requirements to the users. That is where use case analysis wins. Requirements are not only functional things; a requirement earns its place only if it has a result of value. That "value to the user" test is the main source of the popularity of use case analysis.
4.5.2 Functional vs Non-Functional Requirements
Use cases capture the functional requirements — what the system must do. But the professor asks the class what kinds of requirements exist beyond functional ones. The exchange is a classic misconception-and-correction sequence:
Q: Use cases capture the functional requirements. What other kinds of requirements are there? Take a mailing system — the client gives you functional requirements. What else do you need?
A: Various answers come up: technical requirements for a particular technical team, process requirements for your own process, hardware requirements, infrastructure requirements, user requirements. The better answer that emerges is non-functional requirements: you need to list your non-functional requirements as well — usability, reliability, security, safety, all the "ilities." These must also be identified, because a lot of projects have failed because the non-functional requirements were not fulfilled. You need the functionalities, yes — but the non-functional requirements are what give your software its "wow factor" and make your project interesting.
Q: Wait — was that the "war factor" or the "wow factor"?
A: The phrase is "wow factor" (not "war factor"): the non-functional requirements — usability, reliability, security, safety — are what give the software its wow factor and make the project interesting.
The professor closes the thread by noting that the course will talk about non-functional requirements and how they are captured for a particular organization and a particular project. Notice the discipline here: the professor did not reject the students' first answers as wrong — he corrected them toward the better, more precise term, which is exactly how a vocabulary correction works.
4.5.3 The Real-Requirement Test
A use case answers the question: what is the system supposed to do for the user? The real-requirement test is blunt: if a user needs something out of the system, then it is a real requirement; otherwise it is not real. So you ask the users directly: what benefits do you get? Asking that question produces better use cases.
Use cases are also the guard rail that keeps the evolving design honest. They are used to ensure that the evolving design is always relevant to what the user required — whatever coding, design, and analysis the team is doing, the use cases say whether it is really required by the users or not.
4.5.4 Worked Example: The Dice Game Story
Worked Example — The Dice Game Use Case. The professor shows use case writing with the small running example — the dice game. The use case is written as a story, the way use case analysis is supposed to be done:
The player picks up the roll of the die and rolls the die. The result of the face value is the total. Seven — they win. Otherwise, they lose.
Worked through step by step:
| Element | What the story says |
|---|---|
| Actor | the player |
| Action | picking up the die and rolling it |
| System response | the face value is presented as the total |
| Business rule | total is seven → win; anything else → lose |
That one paragraph is a complete, valid use case: it names an actor, a trigger (the roll), a system response (the total), and a valuable outcome (win or lose) for the player. This is the kind of story format to use when writing use cases — requirements written with the focus on the user.
Course note: in the textbook's canonical version of this example (Chapter 1) the player rolls two dice and the total of both faces is used — seven wins, anything else loses. The professor's one-line story compresses that to "the face value is the total." Either way, the rule is the same: total seven → win.
4.5.5 The Use Case Model Governs the Whole Process
The use case model (the collection of use cases, and in this course often called the user model) is used throughout the development of your system:
- You use the use case model for testing — checking whether a requirement is done or not, whether the robustness is there, whether the kind of user is satisfied.
- The whole unified process is governed by this model: you create analysis models based on the use cases, you analyze the use cases, you realize them in the real world, you create design solutions for them, you create the design model, and you write source code for these requirements.
Visual intuition — the use case model as the hub of the process:
┌──► analysis models ──► design model ──► source code
use case model ──────┤
(the requirements) └──► test cases ──► user documentation ──► deployment
For any project, requirements are the main thing that governs the whole technical process or the project development process. Use case analysis has become a de facto standard of requirement analysis in the industry — and the professor notes there is "nothing object related about this": use cases work for any development style, but they fit object-oriented practice particularly well because actors, goals, and stories map naturally onto objects and their interactions.
4.5.6 Roles of Use Cases Across the Lifecycle
Concretely, the use cases do several jobs in the overall system:
- Identify the users. The first job is to identify the different kinds of users — the classes of users, the roles they play — and their requirements. These user classes become the actors in the use case model. For each actor you identify goals and requirements.
- Validate the system architecture. Every time you validate and verify what you are doing, the use cases let you check what is really required and whether it is complete. Quality questions about a design — is it complete, is it functional, is it efficient — all come out of this.
- Define the test cases and procedures. Testing should not begin after coding, or after the product has sometimes already gone to the clients — that is the waterfall pattern and it should not happen. You create your test cases as soon as you have your requirements and use cases. Testing is a very important — and a very big — industry.
- Plan the iterations. With the number of use cases and the kind of requirements, you can plan your iterations: which use cases fit in which iteration, in what order.
- Drive user documentation and deployment. The same model produces your user documentation and finally guides the deployment of the system.
Real-world: testing is described as "a very big industry" — test design from use cases is standard practice in professional QA teams, and the test cases you write early, from the requirements, are exactly what waterfall projects discover too late.
Recap & Bridge. A use case is functionality with real value to the end user — it must produce a valuable outcome. Requirements come in two kinds: functional (what the system does) and non-functional (usability, reliability, security, safety — the "ilities" that give software its wow factor). The real-requirement test is blunt: if a user needs it, it is real. Use cases are written as user-focused stories (the dice game: actor = player, trigger = roll, rule = seven wins), and the use case model governs testing, analysis, design, coding, documentation, and deployment. Next, we look at the four phases of the Unified Process — the calendar of the whole development effort.
4.6 The Four Phases of the Unified Process
4.6.1 Inception: Feasibility and Scope
Hook — An idea is not a project yet. Every project begins as an idea. The first question is not "how do we build it?" but "should we build it at all?" The Unified Process answers that question inside its first phase, inception, where every iteration ends in a go/no-go decision.
The Unified Process organizes its iterations into four high-level phases: inception, elaboration, construction, and transition. Inception is your idea. In every iteration, the main outcome of the inception work is a decision: whether to go forward into the next iteration or not — a feasibility test, a go/no-go check.
Inception establishes the business rationale; in this early phase you do the estimations of cost and planning. You define your vision and scope — whatever is really required. The professor stresses the scope boundary: because if you have the complete scope of what you want to do — what is there with you — that makes your life easier. You cannot work things out of scope. You need to define the system boundary for your product: the scope over which you will be working.
(The textbook adds texture here: inception is deliberately short — roughly ten percent of the project — and its purpose is a business case, feasibility, and an order-of-magnitude cost range, not a full requirements specification. That comes later.)
4.6.2 Elaboration: Architecture and Risk
Elaboration is where analysis and design happen: detailed requirement analysis and design, and the risk analysis. Different risks are handled here:
Key Concept — Elaboration's Two Keywords: Risk Management and Architecture. Elaboration is the phase where you confront uncertainty head-on. Three kinds of risk are worked through:
- Requirements risk — whether you are building the right product or not.
- Technology change risk — and whether the people are expert in the technologies or not; that is the skill risk.
- Political risk — if any IT rule or regulation changes, for example a data-protection rule from a government, you need to make changes. The professor cites data protection and "fake news" regulation as the flavor of this risk in the real world.
The desired outcomes of elaboration are the use case model, the non-functional requirements, and the domain model. The professor flags the two keywords of this phase: risk management and architecture. You need to know what you are, where you are, and be able to measure it:
Warning — A Measured Step, Not a Leap of Faith. Moving from one phase to another is a measured step, not a leap of faith. If you cannot state what was achieved in the phase you are leaving, you are not ready to leave it.
Exam note: The textbook chapter on the phases is assigned reading — the recommendation is to read chapter two of the textbook, because the details of what exactly happens in each phase are where the material becomes new.
4.6.3 Construction: Building Increments
Construction is mainly building or writing the code — but any artifact that you are constructing also counts. As an outcome you get product-quality software; coding is the most important aspect as an outcome. In the early iterations, the increments may not be ready for the end user, but some outcome must exist at the end of every iteration.
Example — Construction in the Course Project. Imagine the dice game delivered across construction iterations: iteration one produces a die you can roll and read; iteration two adds the player and the win/lose rule (seven wins); iteration three turns it into a repeatable game with a score. Each iteration is an executable release of increasing functionality — early ones are not shippable, but every single one has an outcome.
Construction focuses on completing the implementation: as you refine your use cases and design models, you make them complete, and you produce executable releases of increasing functionality. User documentation, whatever is required, is produced here as well. The construction outcomes include the iteration plan, the design model, and the executable releases.
4.6.4 Transition: Deployment and Beta Testing
Transition is when you take the product to the user community — deploying in the industry or in the real-world domain. This is where beta testing happens, and the professor checks the class's testing knowledge:
Q: What is the difference between alpha testing and beta testing?
A: Beta testing happens in the client domain — the client's environment. Alpha testing happens within your own team. You can verify through this. In transition, no new functionality is added unless it is small or essential.
Transition ends with installable releases and then a post-mortem analysis of the project's performance — after you complete the product in accordance with the product requirements, you review how the project itself went.
4.6.5 Milestones Are Management Decisions
Various milestones are specified; after a few iterations, their aim is to define or guide your overall development. A milestone is a management decision in the project: it determines whether to authorize movement to the next phase or not — whether you have achieved what that milestone required. The professor's image: going for a long distance, you always need some milestones.
Key Concept — Four Phases, Four Milestones. Each phase ends in a milestone that is an explicit decision point:
| Milestone | The decision taken |
|---|---|
| Inception milestone | agreement among customers and developers on the system objectives: the decision that you will go forward, and what exactly you will do |
| Elaboration milestone | agreement on the architecture, the business case, and the project plan |
| Construction milestone | acceptability of the software product: in terms of what you wanted to construct versus what you have done |
| Transition milestone | the product is finally accepted for the client |
4.6.6 Workflows, Iterations, and Time Boxing Rules
As a definition: a software process is the complete set of activities that you do to transform your user requirements into the product — a definition true of any process model. All the activities are the tasks you do to take the requirements and convert them into a software product. The process has a lifecycle, artifacts, workflows, phases, and iterations. You define your workflows through activity diagrams: a set of activities to be done in parallel or in sequence, together with the different outcomes of all those small activities — and you show the workflows. The releases are cyclic.
The phases are not sequential in the waterfall sense. Every phase contains iterations, and in each iteration you do some construction and some elaboration; the focus of work shifts over time. Inception and transition are very short and very small phases; the main work happens in elaboration and construction. In the figures, the size of the square is related to the time spent — and more time is spent in the initial phases on requirements and analysis:
Inception ██
Elaboration ██████████████
Construction ████████████████
Transition ██
(width ≈ time spent; each phase still contains iterations)
The time boxing rules are hard rules:
Warning — The Time-Boxing Rules Are Hard Rules.
- Iterations have a fixed length: two to four weeks is standard, six weeks at the outside. More than that is not recommended.
- No change in the time is accepted — no extension of the development plan.
- If the planned activities cannot be completed within a cycle, there is no extension: either you remove the requirements (that signals poor planning), or you add them to the next iteration if they are really required.
4.6.7 How Iterations Converge
Each iteration is a cyclic thing: planning, requirements, analysis, implementation — and you keep on evaluating, getting feedback from the end users. Each iteration results in some executable release, which may not be deployed in production. Feedback from iteration n is taken into iteration n+1: you refine, adapt, and grow — incrementally and iteratively, in the same spirit as evolutionary development.
The professor describes the trajectory with a picture: in the initial phases there are hiccups; early iterations sit further from the true path of the system. Suppose you want to go in a straight line — it does not happen. A lot of adaptations and a lot of changes occur, but later on things converge to what is really required and what you have done:
1 2 3 4 5 6
x x x x
x x x x x x
wandering early ──────────► converging later
Every time you get a success in the project development — but there will be challenges. Why do changes become rare in late iterations? Because the cost factor becomes very high and changes become difficult to make. Some organizations do not allow late changes at all. And yet — the professor's nuance — late changes can give an organization competitive business advantage: if you are able to handle later changes as well, and you take them (say a new technology comes out, like ChatGPT, and you incorporate it), you get a high-value product and a competitive advantage over your competitors. Change capability is itself a business weapon.
Recap & Bridge. The Unified Process has four phases — inception (feasibility and scope), elaboration (architecture and risk management), construction (building increments into executable releases), and transition (deployment and beta testing) — each ending in a milestone that is a management decision. The phases are not waterfall: they overlap, every phase contains iterations, and the focus of work shifts. Iterations are strictly time-boxed (two to four weeks, no extensions), and although changes grow costly in late iterations, the ability to handle them well is a competitive weapon. Next, we turn from the process machinery to the people who run it.
4.7 People, Project, Process, Product
4.7.1 The Four P's
Hook — Software is built by people, not by processes. The most elegant process in the world cannot save a weak team. Before we dig into workflows and phases, the professor puts the human being back at the center: every software effort rests on four P's — people, project, process, and product.
Every software development effort can be described with four P's: people, project, process, and product. Any software development process takes some requirements as input, and its output is your software system — but those four ingredients determine how well that transformation goes. In agile thinking, people are the most important of the four, then the process; project management exists where a lot of people are involved, and the final product is what you are actually building.
Visual intuition — the process as the container:
┌────────────────────────────────────┐
│ PROCESS │
│ (the container that holds it) │
│ │
│ people project product │
│ │
└────────────────────────────────────┘
4.7.2 What Each P Contributes
Key Concept — The Four P's, One by One.
- People. You need highly motivated, high-quality, highly productive people in your team, with very good communication skills, and they fill different roles.
- Product. This is your main focus. In agile, you need to deliver a product; the product is more important than the ceremony around it. The requirements — these are the requirements your product must satisfy.
- Project. You make a project out of the product and its requirements: something to plan, estimate, staff, and manage.
- Process. When you have a lot of people and a problem at hand, without a process you will not get anywhere. You need a framework, some structure, some systematic manner in which you can go ahead. The process is the container that holds people, project, and product together.
4.7.3 People Before Process
The professor's ordering is deliberate: people come before the process. A brilliant process cannot save a weak team — but a strong team can carry a mediocre process. That is why the Unified Process places so much emphasis on the human element, and why the agile mindset treats people as the first P.
Warning — Do Not Build a Product Only You Can Maintain. The professor's advice to the class is blunt: never build a product that only you can maintain. If the design lives only in your head, nobody else can take it over — which means the team, the project, and eventually the product all break the moment you leave. Build so that others can read, use, and extend your work.
The practical consequence: good communication skills are not a nice-to-have — they are what let a team of different roles (analysts, designers, coders, testers) hold the product together. The process organizes them; the people make it work.
Recap & Bridge. Every software effort runs on four P's — people (the most important), product (your main focus), project (plan, estimate, staff, manage), and process (the container that holds the other three together). People come before process: a brilliant process cannot save a weak team, and you should never build a product only you can maintain. Next, we look at the discipline workflows that organize what those people actually do across the process.
4.8 Planning Iterations and the Course Project
4.8.1 The Group Project Exercise
Exam Note — The Group Project Exercise. The professor announces a group project exercise: make a group of three or four people and make your project follow the Unified Process. Without doing it, the material stays theoretical only. This is your chance to run the whole process — phases, iterations, artifacts — on something real.
The starting steps for the project:
- Define the project scope and feasibility for your requirements — your idea.
- Start making your use case model and domain model, 10 to 20 percent complete.
- Get your success criteria, an initial plan, and a risk assessment.
- Set your objectives for the overall project. Usually, in one iteration you would be able to focus on that.
Notice how these steps mirror inception from 4.6: scope, feasibility, use cases, risks, objectives — the go/no-go foundation comes first, then the iterations carry the work forward.
4.8.2 Glossary and Project Repository
The inception artifacts you create include: the vision, the risk list, iteration plans, and the glossary.
Key Concept — The Glossary Is a Domain Dictionary. A glossary is a list of terminologies specific to a particular domain, with their specific meanings. It matters because common terms mean different things in different domains — the term artifact itself is a perfect example, since it has a specific technical meaning here but means something else elsewhere. Each term needs to be defined. You also start creating your use case model and the project repository for your change requirements.
The repository is where the project's common understanding lives: the glossary, the models, the plans, and the record of change requirements all sit together so the whole team shares one source of truth.
4.8.3 What Good Iteration Planning Looks Like
Iterations need to be planned in a logical manner. The professor enumerates what good iteration planning buys you:
- The most important risks are handled first — risks are mitigated earlier rather than later, so the biggest unknowns never wait until the end.
- You get visible progress — after every time-boxed iteration there is something to show.
- You can manage the changes — each iteration absorbs feedback, so change becomes a planned event, not a crisis.
- You get reusability — with object orientation, reusability is the most important term, and it is what made this approach so popular. You should be able to reuse what you have already done.
- The project team can learn, and overall better quality comes out of it — every iteration teaches the team something that the next iteration exploits.
4.8.4 Core and Supporting Workflows
The professor frames this project work in terms of workflows — the sets of activities that run across all the iterations and phases:
Key Concept — Core Discipline Workflows and Supporting Workflows.
Core workflows (the discipline workflows) run in every iteration:
- Modeling — building and evolving the models
- Requirements — the use case model and non-functional requirements
- Analysis and design — turning requirements into design
- Implementation — coding the design
- Test — verifying each increment against the use cases
- Deployment — delivering working increments
Supporting workflows hold the project together:
- Environment — the tools and infrastructure the team works in
- Configuration management — managing versions and change requirements (the repository's job)
- Project management — planning, staffing, tracking, and managing risk
Core workflows (every iteration):
modeling → requirements → analysis & design → implementation → test → deployment
Supporting workflows (continuously):
environment │ configuration management │ project management
The glossary and the repository from 4.8.2 are part of this framework: the glossary feeds the requirements and modeling workflows, and the repository is the configuration-management backbone. Good iteration planning (4.8.3) is what the project-management workflow produces.
Recap & Bridge. The course project forces the Unified Process into practice: define scope and feasibility, start the use case and domain models, and set success criteria, plans, and risk assessments in a first iteration. Inception artifacts — vision, risk list, iteration plans, glossary — feed the project repository, where the glossary pins down domain terms like artifact. Iteration planning pays off in five ways: risks handled first, visible progress, managed change, reusability, and team learning. All of this happens inside the core workflows (modeling, requirements, analysis and design, implementation, test, deployment) supported by environment, configuration management, and project management. Next, the professor distills everything into a short list of best practices.
4.9 The Unified Process Best-Practice Summary
4.9.1 The Consolidated List
Hook — Everything, distilled. The professor closes the process-model part of the session with the summary of the best practices the Unified Process packages. If you remember nothing else about the process, remember this list.
Key Concept — The Best-Practice List. Seven practices carry the whole process model:
- Handle high-risk and high-value issues in the early iterations. The biggest unknowns get tackled while they are still cheap to fix — risk first, always.
- Engage users continuously — for evaluation, feedback, and requirements. The user is the source of the value test from 4.5.
- Build a cohesive, core architecture in the early iterations — without the architecture, no incremental or iterative delivery. Architecture first (4.3) is what makes every later increment possible.
- Continuously verify the quality — do the testing of what you are doing, all along. Testing is a workflow, not a final act (4.5.6).
- Apply use cases wherever appropriate — the use case model is the backbone of the whole process.
- Use visual modeling — UML is the language for showing and sharing your thinking.
- Do change management in a careful manner — practice request-change and configuration management, the discipline that keeps a changing project coherent.
4.9.2 Unified Plus Agile for This Course
The professor's suggestion for the course is Unified + Agile: the unified process model with its agile features. The course's main focus is business modeling, requirement analysis, and object-oriented analysis and design; the development would be organized as a series of short, time-boxed iterations with these best practices inside them.
The definition to keep for the exam:
Definition to Keep — The Unified Development Process. The Unified Development Process is a complete set of activities that transforms your user requirements into the product — using an iterative life cycle, a risk-driven approach, change management, flexibility, quality with continuous verification, minimal but enough documentation, and UML. This single definition pulls together everything from 4.1 through 4.8: iteration, risk, architecture, use cases, workflows, and visual modeling all land in one sentence.
4.10 UML: The Unified Modeling Language
4.10.1 What UML Is and Is Not
Hook — A language for drawing, not a recipe for thinking. Before you draw your first diagram, the professor sets the record straight: UML is a notation. Learning the notation will not, by itself, teach you what to do — the thinking comes first.
UML — the Unified Modeling Language — is a collection of diagrams for visualizing your system. It is a diagramming language: a notation. You can capture both the static and the dynamic behavior of your organization or your system. Importantly, UML is not a methodology. The professor insists on this distinction:
Warning — UML Is Not a Methodology. Learning UML will not by itself teach you what to do; the main thing is the thinking about what you want to do. UML is strictly a notational language — and there is a companion language in the background, OCL, the Object Constraint Language, in which constraints are expressed.
The history explains the name: UML was created by the Object Management Group (OMG) in 1997, with many versions since. During the 1990s a lot of work went into it, and after 2010 it became so standard, so acceptable, that it is now the de facto — and formal — standard throughout the industry.
Real-world: UML is a de facto industry standard. Earlier, everyone used their own notations and their own conventions — that fragmentation was the challenge the OMG unification solved. UML is also "unified" because a large number of people contributed their innovations and their thinking into it.
4.10.2 Static and Dynamic Diagrams
UML is organized into diagram families. The structural diagrams (the static side) include the class diagram, which is very popular, and the package diagram. On the dynamic behavior side you have the activity diagram and the use case diagram — the diagrams the course will actually work with. The professor's practical rule: you will not create every diagram in every project; you create whatever is required. At least the class diagram, the use case diagram, and the activity diagram are expected.
The professor quizzes the class on interaction diagrams:
Q: What are the two different types of interaction diagrams?
A: One is the sequence diagram. The other is the collaboration diagram — also called the communication diagram. Through these we capture the message flow, the message passing, of your system.
The component diagram (showing components and their connections, for deployment) and the package diagram belong to the implementation side. In analysis you use analysis diagrams; in design, design diagrams; and there are deployment or implementation diagrams — architecture modeling can be done through UML using all of these. Also note the professor's reminiscence: in earlier times, when the instructor was a student, a cloud was used to denote a class — today a rectangle is used.
4.10.3 Class Diagrams and the Modeling Elements
Key Concept — Model Elements and the Class Rectangle. A model element is the building block of a diagram. For the class, the notation is a rectangle:
┌──────────────────┐
│ Dice │ ← class name (top)
├──────────────────┤
│ faces: int │ ← attributes (middle)
│ value: int │
├──────────────────┤
│ roll(): int │ ← methods (bottom)
│ getFace(): int │
└──────────────────┘
You should read about why you need modeling, what the purpose of modeling is, and what the different model elements are. The professor's point throughout: in analysis and design the main issue is how to show people what you are doing, and UML is the answer — it is a graphical language for specifying, visualizing, constructing, and documenting the various artifacts of software systems.
4.10.4 History: From Fragmentation to Standard
The unification story: earlier everything was fragmented, everyone using their own notations. Unification started around 1995 onward, a lot of standardization happened, and today UML is a de facto standard in the industry. Three names are credited as the principal people: Booch, Rumbaugh, and Jacobson. But the language also absorbed contributions from many others:
| Contributor | Contribution to UML |
|---|---|
| Booch, Rumbaugh, Jacobson | the principal unification of the language (the "three amigos") |
| Meyer | preconditions and postconditions (the design-by-contract idea) |
| Harel | statecharts; state transition diagrams are part of UML |
| Gamma and others | frameworks and design patterns, which the course will work on |
| Shlaer-Mellor | object lifecycles, classification, and responsibility assignments |
4.10.5 Goals: Machine-Readable Models and OCL
The major goals of UML:
Key Concept — Three Major Goals of UML.
- Model systems using object-oriented concepts. You can create a design using UML, you can represent any system, and you should be able to build any system using these concepts as an object-oriented system — that is what the course wants you to learn.
- Explicit coupling of conceptual or executable artifacts and modeling. The models you create — say a class diagram — should be read by the machine and converted into executable code. That is the main motive: the modeling language has a programming/backend language behind it, a metalanguage, so that if you provide your diagrams, the OCL is the backend language in which all your constraints are mentioned. The model can then be read by both humans and machines — and only then is it useful for constructing something.
- Model all different kinds of systems through this one language. UML can itself be used to show almost any system.
4.10.6 Tools and How to Learn UML
The professor's advice is practical: take a tool and start using it; learn the notations by creating the diagrams. Lab sheets will be provided. Free tools such as StarUML — and, as far as the audio allows, Violet or ArgoUML — will do.
Learning UML is not something great — it is just notations — but it will help you broaden your aspect and your thinking process. The skill this course is after is object-oriented thinking; UML aids it and helps you put your ideas in a visual manner for clients and teammates.
Recap & Bridge. UML is a notational language, not a methodology — the thinking comes first, and OCL is the backend constraint language behind the diagrams. It captures static structure (class, package) and dynamic behavior (activity, use case, interaction diagrams: sequence and collaboration), with component diagrams for implementation and deployment. Its history runs from fragmented notations to the OMG standard of 1997, unified around Booch, Rumbaugh, and Jacobson with contributions from Meyer, Harel, Gamma, and Shlaer-Mellor. Practice with free tools (StarUML, Violet, ArgoUML) to make UML a habit — then the exam guidance and industry applications that close this lecture.
Exam Guidance Summary
The professor's exam guidance for this session, collected in one place — everything below is fair game:
Reading Assignments
- Chapter reading: Chapter two of the textbook is assigned for the phases of the Unified Process — read it, because the per-phase details are where the material becomes new.
- Requirement analysis reading: Read about requirement analysis before starting use case analysis; it is the foundation the use case work builds on.
- UML self-study: Go through the UML diagrams before the next session (activity diagrams, use case diagrams, class diagrams, sequence and communication diagrams). Use any free tool — StarUML, Violet, or ArgoUML — and build diagrams until you are confident with the notations.
The Project Exercise
- Project exercise: Form a group of three or four people and run your project on the Unified Process. Start by defining scope and feasibility; build the use case model and domain model 10 to 20 percent complete; write success criteria, an initial plan, a risk assessment, and objectives. Produce the vision, risk list, iteration plans, and glossary in the first iteration.
Process Facts to Memorize
- Time boxing: Expect iterations of two to four weeks (six weeks maximum; more is not recommended). No deadline extensions: if planned activities do not fit, remove requirements or push them to the next iteration.
- Iteration count: A typical project is planned as 8 to 10 iterations.
- Phase keywords: Inception = feasibility and scope; Elaboration = risk management and architecture (plus the use case model, non-functional requirements, and domain model); Construction = coding and executable releases of increasing functionality; Transition = deployment, beta testing, and post-mortem. Expect the milestone meanings for each phase — each is a management decision to move to the next phase.
Definitions and Reasoning to Be Ready For
- Concepts to be able to define: artifact, time boxing, software architecture, component, interface (vs implementation), use case (valid use case = valuable outcome for the end user), non-functional requirements, glossary, milestones, the four P's (people, project, process, product), and the alpha vs beta testing distinction.
- Process questions to be ready for: why iterative development suits object-oriented systems (changing requirements, user feedback, bottom-up development); why high-risk items go in early iterations; why architecture must be built early; and what the relative-effort picture teaches (relative effort shifts across disciplines and phases; every iteration covers all activities).
Exam Focus. The session's examable core: phase keywords and milestones, time-boxing rules (two to four weeks, no extensions, 8 to 10 iterations), the definitions list, the alpha vs beta testing distinction, and the four reasoning questions about iteration, risk, architecture, and relative effort.
Key Industry Applications
The lecture's ideas mapped onto the real world — the professor's recurring examples of where the Unified Process, CBSE, and UML live in industry practice:
Processes in the Industry
- Rational Unified Process (RUP): The commercial form of the Unified Process, influential since around 2000 — the best-practice packaging of iterative, risk-driven, change-managing development.
- Spiral model: The origin of risk-driven development, which the Unified Process adopts as a core idea.
- Agile: The source of change management and lightweight, adaptive processes.
Architecture and Components at Work
- Client-server architecture: The architecture behind essentially all websites — the professor recommends reading about it as the canonical architecture example.
- Component-based software engineering: APIs and off-the-shelf components are the current real-world step toward CBSE; hardware (desktop computers assembled from Samsung, Dell, and HP parts with standard interfaces like the universal keyboard connector) is the model software is trying to catch up with.
- Amazon: A well-known platform of separate services (for example payment) that third parties integrate through well-defined interfaces — the industry-scale picture of CBSE.
UML in the Industry
- UML: De facto and formal industry standard for analysis and design, standardized by the Object Management Group (1997) — used for specifying, visualizing, constructing, and documenting software artifacts.
- UML contributors: Booch, Rumbaugh, Jacobson (creators); Meyer (pre/postconditions); Harel (statecharts); Gamma et al. (design patterns); Shlaer-Mellor (object lifecycles).
Testing, Change, and Risk
- Testing industry: Test case design from use cases; alpha testing in-house vs beta testing in the client domain — testing is described as a very big industry.
- ChatGPT and new technology: Incorporating late-breaking technology into a running project can deliver competitive business advantage — the payoff of good change management.
- Regulatory risk: Data-protection rules and similar government IT regulations can force changes mid-project; political risk is a named risk category in elaboration.
- Medical analogies in engineering: Knee-replacement surgery illustrates physical, replaceable components — the same "physical, replaceable part" idea CBSE wants for software.
OODAP Lecture 4 notes · Unified Process Model and UML
Sections Breakdown
Iterative development repeats requirements analysis and design to handle change, works like mini projects, and gives early feedback from the user, which the sequential model lacked.
The Unified Process packages ~20-25 years of industry experience (spiral risk-driven thinking + agile change management); time-boxed iterations are mini projects (8-10 per project); artifacts are chosen like medicines; analysis paralysis and endless design are banned; UML and people/risk-first practices round it out.
Architecture is the high-level design of major components and their connections, built early so the system can be extended; analogies include the human skeleton and a carpenter building one desk first.
Component-based software engineering assembles software from independent components with well-defined interfaces, like assembling a desktop computer from parts of different companies.
Use cases capture functional requirements with real value to the end user; non-functional requirements (usability, reliability, security, safety) must also be identified, and the use case model governs testing, design, coding, and deployment.
The Unified Process phases are inception, elaboration, construction, and transition; each has a milestone as a management decision, and changes become rare and costly in late iterations yet can give a competitive business advantage.
Every software effort rests on four P's — people, project, process, product; people come before process, a brilliant process cannot save a weak team, and one must never build a product only they can maintain.
The course project runs the Unified Process in a group; inception artifacts (vision, risk list, iteration plans, glossary) feed the repository, good iteration planning handles risks first and enables reusability, all within core and supporting workflows.
The professor's seven best practices (risk/value early, user engagement, core architecture early, continuous quality verification, use cases, visual modeling, change management) packaged into Unified + Agile; the Unified Development Process definition transforms user requirements into the product.
UML is a notational language, not a methodology; its diagram types cover structure, behavior, interaction, and implementation, and tools like StarUML, Violet, and ArgoUML are used for modeling.
Exam guidance: read chapter two for phases, run the group project on the Unified Process, two-to-four-week iterations with no extensions and 8-10 iterations typical, milestone meanings per phase, definitions list, and four reasoning questions.
Industry applications: RUP, spiral model, agile, client-server architecture, CBSE via APIs and Amazon services, UML as industry standard, testing industry, ChatGPT-style late technology, regulatory risk, and medical analogies.
Exam Revision Notes
Below is the distilled, exam-ready core. Every entry comes from the full explanation above. Use this section for rapid review; return to the main notes when a point needs more context.
4.1 Why Object-Oriented Development Needs Iteration
Must know: Iteration = one full cycle (requirements -> analysis -> design -> implementation -> testing), repeated; a mini project of 2-4 weeks (textbook allows up to 6). Iterations are time-boxed: the date is fixed, scope shrinks instead. Stable executable/outcome at the end of each iteration; incremental delivery after several iterations. Waterfall = sequential, everything first then build; feedback too late; associated with highest failure rates. OO is bottom-up (build from small self-contained classes) which suits short cycles. Code-a-bit-test-a-bit is drift, NOT iteration (no plan/architecture/feedback loop).
Common pitfall: Treating 'code a bit, test a bit' as iteration, or letting waterfall thinking (define 100% of requirements first) sneak back in.
Quick check: Why can't the waterfall handle changing requirements? What does 'time-boxed' mean for scope? Why is iteration a natural fit for bottom-up OO development?
Connections: 4.2 best practices (risk handling, user engagement) build on this; 4.6 phases reuse the same mini-project/timebox idea.
4.2 The Best Practices Behind the Unified Process
Must know: RUP crystallized ~2000 from 20-25 years of experience; spiral -> risk-driven, agile -> change management. Time boxed = fixed end date; scope shrinks, date never moves; you show what you did. Typically 8-10 iterations per project; each iteration is a mini project with a stable executable outcome. Artifact = documents, diagrams, code, database design, models; choose few, quality over quantity; UP mandates nothing. Analysis paralysis and endless design are the two stall modes; the timebox forbids both. UML = notation/visual language; real skill is object-oriented thinking; de facto standard. People over process; users are most important people; high-risk items first; early change is cheap, late change is expensive.
Common pitfall: Letting analysis (or design) run without a time limit, or asking for deadline extensions instead of shrinking scope.
Quick check: What does 'time boxed' force you to do at the end of every iteration? Why sequence high-risk items early? What does 'UP mandates nothing' mean for artifacts?
Connections: Risk-first sequencing feeds 4.6 (phases handle risk) and 4.8 (planning iterations for the course project); UML details in 4.10.
4.3 Software Architecture
Must know: Software architecture = collection of components AND their connections (boxes + arrows). Built in EARLY iterations: increments need a stable skeleton; open architecture anchors future growth. Architecture realizes use cases: form follows function (car, glass, house analogies). Styles: client-server (all websites), three-tier, pipes and filters, layered. Relative-effort picture: every iteration does everything; relative effort shifts across phases. Architecture is not rigid; varies by organization and project.
Common pitfall: Treating architecture as just the components and ignoring the connections — or delaying architecture until construction.
Quick check: Why must architecture be built in the early iterations? What makes a glass's 'architecture' serve its function? Name the four common styles.
Connections: Components + connections carry into 4.4 (component-based engineering); relative-effort picture reappears in 4.6 phases; layered style recurs in T1 ch13 logical architecture.
4.4 Component-Based Software Engineering
Must know: CBSE = build software by connecting components through standard interfaces; APIs are integration points. Interface = collection of operations; component = physical, replaceable part; users treat it as a black box. Separate interface from implementation => polymorphism: one interface, many implementations, swap freely. Die example: contract (six faces, value each, read showing face) independent of manufacturer; classes become components. UML component diagram (implementation view) + package diagram show components and connections. Hardware leads: any keyboard works with any PC; software is still narrowing that gap.
Common pitfall: Coupling callers to a specific implementation instead of programming to the interface, which destroys replaceability.
Quick check: Why does polymorphism require a fixed interface? What is the 'contract' of the die? Where does the component diagram live?
Connections: Components are the building blocks of the architecture from 4.3; component diagram details appear again in 4.10 UML; interfaces link to use cases in 4.5.
4.5 Use-Case-Driven Development
Must know: Use case = functionality with real value to the end user; must result in a valuable outcome. Real-requirement test: if a user needs it out of the system, it is a real requirement. Functional vs non-functional requirements; the 'ilities' (usability, reliability, security, safety) are often ignored and projects fail when unfulfilled. Use case story format: actor, trigger, system response, business rule (dice game: seven wins, else lose). Use case model governs testing, analysis, design model, source code, documentation, deployment. Testing starts from requirements/use cases, NOT after coding (waterfall pattern is wrong).
Common pitfall: Writing requirements without a user-value test, or deferring test design until after coding.
Quick check: What makes a requirement 'real'? Name three 'ilities'. What are the four elements of the dice game use case story?
Connections: Use cases realize architecture from 4.3-4.4; actors reappear in 4.10 use case diagrams; phases in 4.6 plan iterations around use cases.
4.6 The Four Phases of the Unified Process
Must know: Four phases: inception (feasibility, scope, business rationale, go/no-go), elaboration (analysis, design, risk management, architecture), construction (building increments, executable releases), transition (deployment, beta testing, post-mortem). Phases are NOT waterfall: every phase contains iterations; focus of work shifts; inception and transition are short. Milestones are management decisions authorizing movement to the next phase (4 milestones). Risk types: requirements risk, technology/skill risk, political risk. Time-boxing hard rules: 2-4 weeks standard (6 max), no extensions, remove or defer requirements instead. Changes become rare in late iterations because cost is high; yet late changes can give competitive advantage.
Common pitfall: Treating phases as sequential waterfall stages, or extending an iteration's deadline instead of cutting scope.
Quick check: Name the four phases and their milestones. Why must moving between phases be a 'measured step'?
Connections: Phase details are assigned reading in T1 ch2; architecture from 4.3 is elaboration's keyword; use cases from 4.5 drive iteration planning; time-boxing echoes 4.2.
4.7 People, Project, Process, Product
Must know: Four P's: people, project, process, product. Agile ordering: people most important, then process; project management exists where many people are involved; product is the main focus. Process = the container holding people, project, and product together. People before process: a brilliant process cannot save a weak team. Do not build a product only you can maintain.
Common pitfall: Elevating process ceremony above the people who do the work, or writing code nobody else can maintain.
Quick check: What are the four P's and which is most important? What does 'process is a container' mean?
Connections: People/roles expand in 4.8 workflows; the warning against unmaintainable products connects to 4.4 component reuse and 4.9 best practices.
4.8 Planning Iterations and the Course Project
Must know: Group project exercise: groups of 3-4, follow the Unified Process; start with scope, feasibility, use case + domain models (10-20%), success criteria, initial plan, risk assessment. Inception artifacts: vision, risk list, iteration plans, glossary. Glossary = domain terminology with specific meanings (e.g., the term 'artifact'). Good iteration planning: risks first, visible progress, manage changes, reusability, team learning. Core workflows (every iteration): modeling, requirements, analysis & design, implementation, test, deployment. Supporting workflows: environment, configuration management, project management.
Common pitfall: Planning iterations without addressing the biggest risks first, or skipping the glossary so the team's terms drift apart.
Quick check: What five benefits does good iteration planning buy you? Name the six core and three supporting workflows.
Connections: Inception artifacts connect to 4.6 phases; glossary/repository feed the workflows; reusability ties back to 4.4 components.
4.9 The Unified Process Best-Practice Summary
Must know: Seven best practices: high-risk/high-value early, engage users continuously, cohesive core architecture early, continuously verify quality, apply use cases, use visual modeling, careful change management. Course approach = Unified + Agile: short time-boxed iterations carrying the best practices. Definition of the Unified Development Process: complete set of activities transforming user requirements into the product, with iterative life cycle, risk-driven approach, change management, flexibility, continuous verification, minimal-but-enough documentation, UML. The manifest's canonical six practices map onto the professor's seven: iterative development, requirements management, component-based architecture, visual modeling, continuous quality verification, change control management.
Common pitfall: Treating any single practice as optional — the seven work as a package.
Quick check: List the seven best practices. Recite the Unified Development Process definition.
Connections: Definition summarizes 4.1-4.8; visual modeling best practice is the gateway to 4.10 UML; change management ties to 4.6/4.8.
4.10 UML: The Unified Modeling Language
Must know: UML = diagramming/notation language, NOT a methodology; OCL is the backend constraint language. OMG standard (1997), de facto industry standard after 2010; unified from fragmented notations. Diagram families: structural/static (class, package) and behavioral/dynamic (activity, use case); interaction diagrams = sequence + collaboration/communication; component diagram for implementation. Class notation: rectangle with name (top), attributes (middle), methods (bottom). Principal people: Booch, Rumbaugh, Jacobson; contributions from Meyer (pre/postconditions), Harel (statecharts), Gamma (patterns), Shlaer-Mellor (object lifecycles). Three goals: model systems with OO concepts, machine-readable models (OCL), one language for all systems. Free tools: StarUML, Violet, ArgoUML.
Common pitfall: Confusing notation with methodology — knowing UML does not tell you what to do.
Quick check: Name the two interaction diagrams. Who are the three amigos? Where does OCL live?
Connections: Component diagram ties to 4.4; use case diagram to 4.5; class diagrams to design in later lectures; visual modeling is best practice 4.9.
Exam Guidance Summary
Must know: Chapter two assigned reading for phases; requirement analysis reading before use case analysis. UML self-study: activity, use case, class, sequence, communication diagrams with free tools. Project: group of 3-4, scope + feasibility, use case/domain models 10-20%, success criteria, plan, risks, objectives; vision, risk list, iteration plans, glossary in first iteration. Iterations 2-4 weeks (6 max), no deadline extensions, 8-10 iterations typical. Phase keywords: inception=feasibility/scope, elaboration=risk/architecture, construction=coding/releases, transition=deployment/beta/post-mortem; milestones = management decisions. Definitions: artifact, time boxing, software architecture, component, interface, use case, non-functional requirements, glossary, milestones, four P's, alpha vs beta. Reasoning: why iterative for OO; high-risk early; architecture early; relative-effort picture.
Common pitfall: Memorizing phase names without their milestone meanings and the reasoning questions.
Quick check: What are the phase keywords? Which definitions are examable? What does the relative-effort picture teach?
Connections: Pulls together all manifest exam_guidance entries plus the definitions from 4.1-4.10.
Key Industry Applications
Must know: RUP = commercial Unified Process (since ~2000); spiral = origin of risk-driven development; agile = change management. Client-server = architecture of essentially all websites (recommended reading). CBSE today: APIs and off-the-shelf components; Amazon's platform of services; hardware (Samsung/Dell/HP, keyboard connector) is the model. UML = de facto industry standard (OMG, 1997). Testing industry: test design from use cases; alpha in-house vs beta client domain. Late technology (e.g., ChatGPT) = competitive advantage via change management; regulatory risk = political risk in elaboration.
Common pitfall: Forgetting the concrete industry examples that anchor abstract concepts.
Quick check: What industry example illustrates CBSE at scale? What is the canonical architecture example?
Connections: Anchors 4.1-4.10 concepts to real-world practice; RUP/spiral/agile connect to 4.2 and 4.9.
Was this lecture useful?
BitsNotes AI Assistant
Subject Notes AssistantConfigure AI Chat
Choose how to access the chatbotSigned in as
Powered by BitsNotes — 20 messages per day. No API key needed. Want unlimited access? Use "Bring Your Own Key" mode.
Sign in to use AI Chat
Get 20 free AI messages per day to ask questions about your lecture notes. Sign in with Google or GitHub — it takes 5 seconds.
Sign In to BitsNotesSwitch to "Bring Your Own Key" tab above for unlimited access with any OpenAI-compatible provider.