Usability, Architecturally Significant Requirements, and Agile Architecture
6.1 Usability as a First-Class Quality Attribute
6.1.1 From Afterthought to Survival Trait
There was a time when design talk centered on performance, availability, security, maintainability, and testability. Usability was treated as decoration. The attitude went: the creative people will come along later and make the application pleasant to use.
That view has flipped over the last five to ten years. The most important thing now is to keep people glued to your application. Why did it flip? Because the market changed shape. The software space is crowded, and alternatives sit one click away. Most applications follow a pay-as-you-use model — you pay only while you use the service — so nobody makes a huge capital investment before trying you out.
The switching-cost story. A company that once sank a large investment into an application would push people to use it whether they liked it or not — the customer had paid up front, so the customer stayed. Pay-as-you-use removed that trap. Today an application is used only if people like using it. Very often the application lives on the internet, and for the same endpoint you may have several competing ways in. The user experience decides whether a customer stays with your application or wanders off.
An everyday picture makes the economics visible. Think of a food court: twenty stalls, one hungry customer, zero entry cost to try any of them. If your stall makes people queue with no sign of what they get, they walk two steps to the next counter. Old enterprise software was more like a wedding banquet hall booked a year in advance and paid in full — the guests ate what was served, like it or not. The analogy breaks where business software is concerned: some corporate systems still enjoy captive users, which is exactly why their interfaces lag behind consumer software by years.
This connects directly to the textbook view of usability: how easy it is for the user to accomplish a desired task, and the kind of support the system provides while doing it. Notice that this definition is architectural, not cosmetic. "The kind of support the system provides" means cancel buttons that actually work, help that appears when needed, and state that survives an interruption — all of these are properties of system structure, not skin-deep styling. In fact, usability has five recognized sub-areas, and each one maps to something an architect must plan for:
- Learning system features — what does the system do to make the first task easy for an unfamiliar user?
- Using the system efficiently — can the user redirect the system mid-task, suspend one activity, do something else, and resume?
- Minimizing the impact of errors — can a wrong command be canceled or undone before damage spreads?
- Adapting the system to user needs — does the system fill in known details, remember preferences, adjust to the person?
- Increasing confidence and satisfaction — does the user get feedback that the right thing is happening, especially during long operations?
6.1.2 Software That Assumes No Manual
Open any modern application and compare it with software from twenty or thirty years ago. Today's software does not expect anyone to read a user manual before operating it. At most, customized software offers a one-page pullout or a first screen that asks: "Want to see more? Would you like some guidance?" Most people skip even that. They believe they are smart enough to start immediately.
Here is the design consequence, and it is the sharpest sentence in this whole lecture:
A stuck user blames the product, never themselves. Once users begin, if they get stuck, they do not blame their own understanding. They blame the product. So the product must pull the user's focus to the right next action and serve support at the moment of need. All of this has to feel free, as if it added no extra cost to delivering the product.
That standard must sit at the back of your mind right through design, baked into every little piece of the product — not bolted on afterward. This is why usability is an architectural concern rather than a late-stage paint job. Guidance at the moment of need requires somewhere to hook it: the system must know what task the user is attempting (a model of the task), who the user is (a model of the user), and what the system itself is currently doing (a model of the system). We meet those three models formally in section 6.6 — but notice already that "know what the user is doing" is a structural property you must design in, not a color scheme you apply later.
Assumptions and scope deserve a word here. The no-manual expectation assumes a walk-up audience: people who arrive with no training and no obligation to stay. It applies with full force to consumer web applications and mobile apps. Inside a bank's back office, staff may still get weeks of training on a terminal system — but even there the tide moves the same way, because every trained person who leaves takes the training with them and the replacement expects modern ease.
6.1.3 Questions from the Class: WYSIWYG
Q: Where does WYSIWYG fit within usability?
A: WYSIWYG — what-you-see-is-what-you-get — was a buzzword for thirty or forty years. Screens slowly evolved until what you saw resembled the document that would print out. Today it is the minimum expectation. Without it you are not really building interactive software at all.
Why did WYSIWYG matter so much? Because it removes a hidden learning tax. Before it, a user had to hold a mental translation table in their head — "this code on screen becomes that layout on paper" — and every document was an act of faith. WYSIWYG moved that translation into the machine, which is the general pattern behind most usability progress: take a burden the user carried and make the system carry it. Every modern editor, mail client, and word processor treats screen-print resemblance as table stakes; nobody ships one whose output surprises you.
Usability graduated from decoration to survival trait because pay-as-you-use markets erased switching costs: users stay only while using feels effortless, and a stuck user blames the product. Design guidance and support into the structure from day one — screen-truth (WYSIWYG) is merely the floor, not the ceiling.
Real-world: pay-as-you-use pricing removed the switching cost that once trapped customers with unloved software. Streaming services, cloud platforms, and ride-hailing apps all live or die by the second session — nobody signs a year-long lease before trying the interface.
6.2 Measuring Usability: Learnability in Action
6.2.1 Target-Audience Testing
Learnability is how quickly a chosen kind of user can learn to complete a real task. The word hides two variables that people often blur: who is learning, and how fast. A screen a shop-floor user masters in two minutes might baffle a chartered accountant, and neither finding says anything about the other group. That is why the test always starts by naming the audience.
The test itself is simple enough to run next week:
- Declare the audience — for example, class-8 or class-12 graduates working on a shop floor.
- State the bar — people of that type should perform a defined activity on this application within so many minutes.
- Draw a random sample of such people — not your colleagues, not the developers.
- Ask them to execute the activity while you observe silently.
- Check completion against time. Completion within time is the pass mark.
A learnability test you could actually run. Audience: ten class-12 graduates who have never seen the app. Task: book one economy ticket, Chennai to Delhi, for tomorrow. Bar: eight of the ten finish unaided within five minutes. You run the session; six finish in under four minutes, two wander for nine minutes before giving up on the seat-selection step. Result: fail — not because the software cannot book tickets, but because the target audience cannot learn it inside the bar. Fix the seat-selection step, retest with a fresh sample of ten.
Notice what makes this scientific rather than a vibe: the pass mark is a number attached to a named population. "Users find it intuitive" is an opinion; "eight of ten class-12 graduates complete a booking within five minutes" is a measurement.
Exam note: expect the general scenario vocabulary — source, stimulus, artifact, response, response measure — to carry marks; learnability is the classic response measure for usability. We assemble the full six-part scenario in section 6.4.
6.2.2 The Airline Booking Benchmark
Put two similar applications side by side, both able to book an airline ticket. The one on which you can book quicker is the one we consider more usable.
The twist worth remembering: the quicker application may offer fewer features. That is acceptable, because features should grow out of the system as needed rather than crowding the first screen. Speed on the core task beats breadth on the first screen.
Walk through what a good first page does:
- It asks only: where do you want to go, from where?
- The date field is optional and already filled in (today or tomorrow).
- One button says submit search — and it works.
- You get results immediately.
Then needs surface later, one by one. You realize the date is wrong, so you change it. Then you decide you want direct flights only. Then only particular airlines. Then a particular time of day. Each of these refinements should be easy to locate at the moment the need appears.
Worked example — the booking flow, step by step.
- Enter origin "Chennai", destination "Delhi". Two fields typed.
- Accept the defaulted date (today + 1). Zero extra effort.
- Press submit search. Results appear — say, 23 flights.
- Spot that tomorrow is wrong; change date to Friday. Results refresh to 19 flights.
- Tick "direct flights only". Down to 6 flights.
- Pick your preferred airline. Down to 2 flights.
- Choose the morning band. One flight remains. Book it.
Count the decisions a first-time user had to make before any value appeared: exactly two (origin, destination). Every later decision was made only when it became real, and each sat one obvious click away. Final answer: the site won the transaction because it postponed every question until the moment the answer mattered. Sense-check: if step 3 had instead demanded travel class, meal preference, and insurance before showing anything, most users would still be filling forms.
The lesson: win the first transaction, then reveal depth gradually. This is also why comparing two apps on booking speed is fair even when their feature lists differ — features are cheap to add behind a clean flow, but a crowded first screen taxes every single user on every single visit.
6.2.3 Error Prevention by Design
Take date entry. Type 31.4.2024 — a day that April does not have — and most systems today just laugh along with you, because the widget handles it. Not too long ago you could not take that for granted. You would enter the wrong date and receive an error saying the date is not supported.
Today the widget silently turns 31 April into 30 April, often without informing you. Edit an old stored record whose day reads 31, change the month to one with fewer days, and the day may roll over to the 1st. Here is the full correction table the widget is applying:
| You type | Month's last day | Widget shows |
|---|---|---|
| 31 April | 30 | 30 April |
| 31 February (non-leap year) | 28 | 28 February |
| 31 February (leap year) | 29 | 29 February |
| 31 June | 30 | 30 June |
And when editing an existing record: day 31 stored, month changed to April → some widgets clamp to 30 April, others roll over to the 1st of May. Either way, the program shifts 31 down to 30, 28, or 29 depending on the last day of the month involved.
The design rule: an error should not be able to take place at all. Prevention beats error messages. An error message arrives after the user has already failed; prevention means the failure state is unreachable. Every error dialog you can delete is a small victory for usability.
Destinations work the same way. When you type the destination, only destinations that exist can be typed, and a type-ahead help lists similar names as you go. Wrong input becomes impossible instead of punished. This is the same trick as the date widget at a higher level: constrain the input space so illegal values have nowhere to live.
Business rules join in. Book a ticket for an unaccompanied minor and the system immediately tells you: minors are not permitted to travel alone to this destination. If you go ahead, the booking must include airline assistance, and the cost is picked up automatically.
Worked example — the policy-aware booking. A parent selects passenger age 9, flying alone, Mumbai to Dubai. At submission the system checks its business rules: this route requires escort service for minors. It informs the user immediately, adds the mandatory assistance line item (say ₹3,200) into the fare automatically, and blocks payment until the assistance box is included. The user never sees a rejection at the airline counter three weeks later — the policy was enforced gently, at the right moment, inside the product. Sense-check: the cheapest place to fix a rule violation is before money changes hands.
Real-world: Cleartrip, Easy Trip, MakeMyTrip, and every airline's own booking portal compete on exactly this feel. Users gravitate to whichever gives them confidence. IRCTC is a standing case discussion — its pros and cons then versus today, and the alternate sites selling the same services. Confidence, or the lack of it, is a usability outcome, not a slogan.
Learnability is measured against a declared audience and a time bar; the faster of two booking apps wins even with fewer features, because features should surface at the moment of need. Prevent errors structurally — clamping dates, constraining choices, enforcing policy inline — rather than punishing users with messages afterward.
6.3 Aesthetics, Look-and-Feel, and the User Learning Curve
6.3.1 First Impressions and Substance
Aesthetics is very much part of usability. People say do not judge a book by its cover, yet that is exactly where most people end up judging it. So invest in appearance — but be careful.
There has to be something behind the lipstick and the powder. An application that is all aesthetics collapses the moment you go to touch it, and then no amount of beauty keeps it worth using. Beauty buys you the first session; behavior earns the second one.
A useful way to order the work: treat aesthetics as the packaging of a promise the rest of the system must keep. A polished screen sets an expectation of quality; if the cancel button then does nothing and the search takes thirty seconds, the same polish now works against you, because the gap between promise and delivery feels like deception rather than mere clumsiness.
6.3.2 Upgrades and the Learning Curve
DevOps-style environments roll out upgrades continuously, which creates a peculiar pattern worth naming:
Usability peaks at birth. Applications are at their most usable when they start life, because they do little. The moment you add features, some users cry about usability — a learning curve has appeared. How your application helps users navigate that learning curve is what keeps the software going.
Picture the learning curve as a graph: the horizontal axis is time using the application, the vertical axis is skill at it. Every feature addition bends that curve upward at the start — a steeper initial climb — before it flattens again. Users feel the steep part as "the new update ruined everything." The architect's job is not to stop adding features (that is slow death) but to flatten each new climb: introduce features behind menus users already understand, keep familiar actions in familiar places, and let power surface gradually.
WhatsApp is the standing example: it keeps its core dead simple while layering features carefully, which is why feature additions rarely trigger revolt there. Voice notes, statuses, payments, and communities arrived without ever moving the basic send-message act.
6.3.3 Specialization and Shared Conventions
Usability has grown its own specializations: human-computer interaction (HCI), human factors, aesthetics. There is a dedicated course many students take on human-computer interaction.
The medicine analogy. Software is specializing the way medicine did. There was a time when an MBBS degree was the big achievement. Then came the MD, the surgeon, the pediatrician. Gradually cardiologists, nephrologists, urologists appeared. Today even within ophthalmology you find specialists for the retina, for the inner eye, for the outer eye. Software grew the same way as the field matured: general developers first, then UI specialists, then HCI researchers, then human-factors engineers who study exactly how eyes scan screens and fingers miss targets.
Shared conventions lower the curve. Learning is minimized when all applications share the same look and feel — the gear icon means settings everywhere, the hamburger opens a menu everywhere, red means destructive everywhere. Each convention your app adopts is knowledge the user gets for free; each convention you break is knowledge they must pay for. In fact, nowadays it is risky not to follow established best practices — a theme this course returns to.
Think of it the way Charles Darwin framed natural selection. Certain species survive; certain species of software survive too — the ones that feel standard and keep evolving. And evolve they must, because users get sick of the same look and feel after too long. Malls repaint and rearrange their getup every year or two to keep footfall coming. Software needs the same gradual evolution.
Skins and the architectural boundary. Give users skins — selectable visual themes — so they can choose their own aesthetics. The division of labor matters here: creating skins and selecting among them sits outside architecture, but providing the facility to swap skins is architecture's job. That facility is a structural decision: colors, fonts, and images must live separately from layout and behavior, or no skin could ever be applied without rebuilding the app.
This is the same separation principle the textbooks push for the whole user interface: keep the interface layer loosely coupled from the rest of the system so its look can change freely — we will meet this again as defer-binding and encapsulation tactics later in the lecture.
Invest in appearance only where substance backs it; expect a learning curve with every feature you add and design to flatten it; follow shared conventions because they are free user knowledge; and build the skin-swapping facility into the architecture even though the skins themselves are someone else's job.
6.4 The Usability General Scenario
6.4.1 Six Parts of the Scenario
The quality scenario gives usability a testable shape. Every quality attribute in this course uses the same six-part skeleton; for usability it fills in like this:
| Part | What it means for usability |
|---|---|
| Source | The end user who wants to use the system in an error-free way (possibly in a specialized role, such as an administrator). |
| Stimulus | The wish to use the system efficiently, learn it, minimize the impact of errors, adapt it, or configure it. This arises mostly at runtime, but sometimes at configuration time too. |
| Artifact | The system itself. It could be an operating system, an application, or one particular subsystem — whatever the user is directly touching. |
| Environment | Runtime during use, or configuration time during installation. |
| Response | The system provides the requested features and the support the user needs — or anticipates needs before they are voiced. |
| Response measure | Count the errors, count the tasks completed, and time how quickly tasks finish. Run user-satisfaction surveys. Check how much the user knows about available features after using the system. Also usable: the ratio of successful operations to total operations, and the amount of time or data lost when an error occurs. |
Why the scenario matters architecturally: each row converts a vague wish ("make it user-friendly") into a slot you can fill with a testable sentence. Once every slot is filled, the scenario becomes something you can design for, review in a walkthrough, and later measure against.
One concrete target shows the flavor:
Worked example — the two-minute scenario. A customer hands you this target: a user downloads the application and is using it productively within two minutes. Fill the slots: source = the user; stimulus = downloads a new application; artifact = the system; environment = runtime; response = the user uses the application productively; response measure = within two minutes of experimentation. It is measurable, so it can be tested — hand ten people laptops with the download link and start the clock. This single sentence is a complete usability scenario, and notice that no part of it mentions colors or fonts: usability scenarios talk about tasks, support, and measures.
The response-measure row deserves special attention because it is where most student answers go thin. "Users liked it" is not a measure. Task time in minutes, error counts per session, tasks completed per hour, satisfaction survey scores, and post-use knowledge checks all are — pick the ones your stakeholder actually cares about.
6.4.2 Configuration-Time Usability: Installation War Stories
Configuration-time usability deserves its own war stories, because the environment row has two legal values and the second one is easy to forget.
Configuration-time pain is still usability failure. Consider database installation experience stretching from Oracle version four or five up through version eleven. The earliest versions were painful: to install, you went back to the hardware provider hunting for drivers and patches; the operating system itself had to be patched first; the software arrived on CDs — around fifteen of them. You loaded five or seven discs and then hit an error, which meant starting the whole thing again from the beginning. No state was saved, no resume was offered, and the user paid for every mistake twice.
Worked example — tracing the Oracle story through the scenario slots. Source: the database administrator. Stimulus: wants to install (configure) the DBMS. Artifact: the database server plus its installer. Environment: configuration time. Response required: installation completes, resuming safely from any failure point. Response measure: hours consumed, restarts forced, support calls placed. The actual experience — roughly fifteen CDs, an error at disc six, restart from disc one — scores catastrophically on every measure. Sense-check: by this section's own definition, the product was unusable at configuration time even though it ran beautifully once installed.
Generations improved, and each improvement is a usability tactic in disguise. First came hard disks big enough to dump whole stacks of floppies onto before configuring — staging media locally instead of swapping packs. Then CD drives arrived and boxes shrank from dozens of discs to a handful. Now everything downloads from the net, with resumable installers that save state after every step — exactly the staged-save pattern we meet under user-initiative tactics in section 6.5.
Buy a new laptop today and the experience of getting it working is smooth and short. Had Microsoft not evolved that setup experience, the world might be ruled by Mac or Linux instead. Even operating-system-level setup counts as usability, and it shapes which platforms win.
The six-part scenario turns usability into testable sentences — source, stimulus, artifact, environment, response, response measure. Remember environment has two values: runtime and configuration time; the fifteen-CD Oracle install proves configuration-time usability can decide market winners.
6.5 Usability Tactics: User Initiative
6.5.1 Cancel, Undo, Pause, Aggregate
User-initiative tactics put control in the user's hands: cancel an action, undo it, pause midway, resume later, aggregate scattered pieces into one view, and reuse earlier entries. The name matters: user initiative means the human decides when to act and the system must be ready to respond at any moment.
What each tactic demands from the architecture — these are not buttons; each is a structural commitment:
- Cancel. When a user issues a cancel command, the system must be listening for it — which means a constant listener that is never blocked by whatever is being canceled. Then the canceled command must be terminated, any resources it held must be freed, and components collaborating with it must be informed so they can also take appropriate action. This is why so many real-world cancel buttons feel dead: the dialog listens, but the worker thread does not.
- Undo. To support undo, the system must keep enough information about state to restore an earlier state on request. Two standard ways exist: periodic snapshots (checkpoints of full state) or a log of reversible operations. Not every operation reverses cheaply: changing every letter "a" to "b" cannot be undone by swapping back, because some "b"s existed before your edit — the system needs a more elaborate record. And some acts, like ringing a bell, cannot be undone at all; design so irreversible actions ask first.
- Pause/resume. For a long-running operation — downloading a large file, say — pausing must temporarily free resources so other tasks can use them, and resuming picks up where things stopped rather than starting over.
- Aggregate. When the same operation hits many objects — recolor forty shapes, rename thirty files — let the user group them and act once on the group, freeing them from drudgery and from the mistakes repetition breeds.
Behind those buttons sit supporting structures:
- Save the work at every stage, so nothing dies with a dropped connection or closed tab.
- Provide separate pages for separate tasks so navigation stays easy.
- Show which tasks are already completed, so the user always knows where they stand.
- Let the user review whatever was uploaded, gather everything together, check which points remain, run a final checkout, and only then allow submission.
6.5.2 Case Study: Online Visa Applications
Watch a visa portal through ten years of use and the evolution is huge — it is the four supporting structures above appearing one by one.
Worked example — the visa workflow, then and now.
Early portal: you filled a long form, and at the photograph step the site handed you a separate helper tool just to convert the picture's file size down to 4 KB. You created the file elsewhere, compressed it, came back, selected it — and if anything failed later, you started over.
Evolved portal: save at every stage (leave at step 5 of 8, return next week to step 5); one task per page (photographs on one page, passport details on another); visible completion status (a checklist showing three sections done, two pending); review-before-submit (see every uploaded document and every typed answer gathered together, fix any item, then check out).
Trace one applicant: Monday she completes personal details (saved), uploads photo (status turns green), stops. Thursday she resumes exactly there, reviews the summary, spots an old passport number, fixes it on its own page, pays, submits. Final answer: zero lost work across five days and two sessions. Sense-check: count how many times the early portal would have made her retype everything — that difference is the tactic paying off.
Yet even today the usability may not be good enough for everybody. People still try to apply for visas to major countries and wrestle with the portal for a day or two. Then they hire a paid consulting service to do it for them.
Abandonment to consultants is the sharpest possible usability signal. A user who pays someone else to fight your interface has told you, with money, that your product lost. Usability is a moving target measured against actual people, not against a checklist — passing last year's checklist says nothing about this year's users.
Real-world: Passport Seva Kendra-style government portals show the same arc — painful beginnings, then staged saving and appointment systems that work — while some national visa portals still push applicants toward paid agents.
User-initiative tactics — cancel, undo, pause/resume, aggregate — are structural promises: a listener that never blocks, stored state that permits restoration, resources that free cleanly, grouping that scales actions. Support them with staged saves, one task per page, visible status, and review-before-submit; measure success by whether users finish without paid rescuers.
6.6 Usability Tactics: System Initiative Models
6.6.1 User Model
System-initiative tactics flip the roles of section 6.5: now the system reaches toward the user instead of waiting for commands. To do that responsibly, the system must predict — and prediction requires a model. Three models exist, one for each thing worth predicting: the user, the task, and the system itself.
The user model keeps track of the user and gives continuity:
- Log in and it picks up where you left off.
- If you were mid-task and never logged out, the system remembers what you were doing.
- Working on a mobile? The application remembers which activity you had done — start on the laptop, continue on the phone.
Deeper still, the user model represents the user's knowledge of the system and typical responses. A well-built model can pace itself to the user: slow down suggestions for a newcomer, speed up shortcuts for an expert, control how much assistance appears automatically. Enter your name once and it can help fill in name, address, pin code — the works.
Auto-fill can become a source of problems. Two people may share a similar address, or one person may have two addresses, and the model picks up part of the wrong address — your new office pin code glued onto your old home street. The lesson: the user model has to be properly constructed, not just collected. Collecting every click into a pile is data hoarding; constructing a model means deciding what represents the user reliably, what is stale, and what must never be inferred.
Personalization flows from the same idea. Ask what food someone would like for dinner and hear "biryani"; ask further and learn the preference order between biryani, South Indian food, and continental. Taste differs for every person, so focus on the user segment rather than the individual where individual data is thin. Marketing's old idea of market segmentation applies directly: know your market, figure out what your users require, and ultimately convert that knowledge into revenue. A streaming service that cannot name its five biggest audience segments is not personalizing; it is guessing loudly.
6.6.2 Task Model
The task model says: while the user executes a particular task, surface all the features that task requires, and check whether the task has been completed. The system knows what you are trying to do and brings exactly that toolset forward — nothing more, nothing missing.
Tiny trace of a task model at work. In a word processor, the task model knows sentences begin with capital letters. You type "dear sir" after a full stop; before you even ask, the lowercase "d" quietly becomes "D". The system used context (a sentence-start position) to predict intent (letter-writing) and assist without being asked. Sense-check: no menu was opened, no command issued — the model did the reaching.
Step-by-step workflow screens are the visible face of this model. They lay out the whole path and show exactly where you stand at present and where you will navigate next — the visa portal's eight-step progress bar from section 6.5 is a task model made visible.
6.6.3 System Model
The system model maintains an explicit model of the system itself — what the system is currently doing and what it will do next — so it can give the user honest feedback about its own state. On a visa application system, it knows which option you chose across the various categories of visas, and it knows the behavior of the processing pipeline. Come back tomorrow and the first thing it tells you is: your application is in process, awaiting response.
Because processing times are standardized — normally ten days end to end, five days between given checkpoints — it can even show a countdown, giving progressive feedback on where you stand. That countdown is the textbook's classic manifestation of this tactic: the progress bar. A progress bar is only possible because somewhere the system keeps an explicit expectation of its own behavior and compares reality against it.
One model per party. Separate model variants serve different parties: consultants juggling multiple clients need a portfolio view across applications; a family applying together needs shared status with individual steps; an individual needs one clean timeline. Same underlying system, three constructed views — because each party's mental task differs.
The system also keeps track of the types of problems users have had and how to respond to them — if thousands of users stall at the payment step, the system (and its owners) learn to surface help right there.
Together, user model, task model, and system model form the system-initiative toolkit for enhancing user behavior. Keep them distinct in your head by their objects: the user model predicts the person, the task model predicts the work, the system model predicts the machine.
System initiative rests on three maintained models — user (who they are and what they know), task (what they are trying to finish), system (what the machine itself is doing, as exposed by progress bars and countdowns) — and every model must be properly constructed, not merely collected, or auto-fill turns from helper into saboteur.
6.7 Responsibility Allocation and Proactive Support
6.7.1 Assigning the Work
Usability tasks will not happen on their own. Allocation of responsibility means assigning duties to systems, subsystems, and people so the tasks required for usability are efficiently performed. This is a standard architectural design decision — every duty needs an owner, and "the user will figure it out" is not an owner.
As part of the development effort, work through the allocation deliberately:
- Decide what the learning model will be — who or what teaches a new user the system.
- Decide how each task gets achieved and how the flow is worked out.
- Brainstorm configuration questions with the people actually involved in deployment — the folks who install the system know where setup hurts.
- Stand up a system for logging system errors, define how they are attended, and keep asking how the handling can enhance the user's experience rather than merely record its failure.
A wave of experts publishing videos on informing and enhancing usability has appeared in recent years — useful material for anyone involved in system design.
The allocation test: for each usability need — learning the system, finishing tasks efficiently, adapting and configuring, recovering from errors — name the component or person that owns it. If you cannot name an owner, the need is unassigned, and unassigned needs are silently dropped. That is the whole discipline in one sentence.
6.7.2 Reaching Out When Things Break
The strongest usability moves are proactive: the system notices trouble first and reaches out before frustration sets in.
Three proactive rescues, escalating in force.
- Travel booking site: an error hits while booking a ticket; within a minute a message arrives on WhatsApp or SMS — "Do you want support? Reply to this message. You were booking ticket so-and-so and left off at this stage." Cost to the company: one automated message. Cost of silence: one lost booking.
- Bank payment failure: heavier artillery — a human calls. "Did you try to make a payment of a lakh rupees?" You confirm. They explain they stopped the payment for a stated reason, and you reactivate if you wish. They do not want to miss out on the business — the call is a recovery mission, not a courtesy.
- Dead session: the site calls and says you were not logged in, you were booking this ticket, and here are your particulars. Log in and we restore your status — or shall we book it over the telephone? Continue by phone, make the payment, and authenticate through the IVRS — the interactive voice-response system that reads back choices over the keypad.
Sense-check: each rescue reuses state the system already had (what you were doing, where you stopped) — proactive support is the user model and task model of section 6.6 pointed outward through a phone line.
Chatbots belong in the same family: automated conversational helpers that catch users the moment trouble starts, available at the exact second of need — which is precisely what section 6.1 demanded support should be.
Real-world: banks calling about failed payments of a lakh rupees, WhatsApp recovery nudges within sixty seconds, and IVRS-authenticated telephone bookings are all production patterns today; chatbots extend the same channel family.
Assign every usability duty a named owner — component or person — and then let the system take the initiative when things break: message within a minute, call for high-value failures, offer channel-switching rescue with restored state. Proactive outreach converts failures into saved transactions.
6.8 Architectural Decisions That Shape Usability
Usability is not decided in the paint layer; it is decided in a handful of recurring architectural decision categories. Sections 6.7 and 6.9 cover two more of them (allocation of responsibilities, binding time, choice of technology); this section walks the middle four.
6.8.1 Coordination Model
Usability has much to do with timeliness, currency, completeness, correctness, and consistency of behavior. The coordination model defines how those properties get achieved across interacting parts.
Concretely, ask questions like these of any design:
- Can the system respond to mouse events and give meaningful feedback in real time?
- Can a long-running event be canceled within a reasonable amount of time? (Recall from 6.5 that cancel needs an unblocked listener — that listener lives here.)
- When two parts of the system show related information, do they agree — or does the cart page disagree with the checkout page?
Each "no" is a coordination decision waiting to be made, and every one lands directly on the user's experience.
6.8.2 Data Model
The data model decides where data lives: centralized storage, local storage, application-level storage, storage in RAM, in a file, or in a database. On mobile devices you may specifically want SQLite — the lightweight embedded database that runs inside the app process with no separate server, which is why it is the default workhorse for on-device state.
Data placement is usability. Decisions about how data is distributed directly enhance or damage usability — a form that survives a dropped connection is a data-model decision. If draft answers live only in server memory, one dead train tunnel erases ten minutes of typing; if they persist locally first and sync later, the same tunnel costs nothing. The textbook adds a second, subtler rule: design transaction granularity so that undoing or canceling an operation never takes absurdly long — if one giant transaction spans twenty screens, cancel at screen nineteen means unwinding everything.
6.8.3 Mapping Among Architectural Elements
Achieving any task may involve third-party APIs. Uber makes huge use of Google Maps; travel sites integrate banking systems for payments. Within your own system, certain activities run on the device, others on the server, some at the application level, some at the database level.
Mapping means tying each activity to the hardware or software unit that will perform it — and doing that mapping well is part of usable design. The key question: which mappings are visible to the end user? A user who can tell that the map loads locally but prices come from a remote service experiences helpful structure; a user who stares at a blank screen because a remote call stalls has experienced a bad mapping. Put slow, remote operations behind progress feedback and local-first interactions wherever possible.
6.8.4 Resource Management
Resource management asks: what type of resources must be provided, and where will they be provided, so the task can be achieved? Bandwidth, compute, storage, and third-party quotas all need homes before the user ever feels a stall.
Two checks keep this honest:
- User-controlled configurations must not sabotage tasks. If users can choose settings that change resource use — offline mode, sync frequency, video quality — ensure no reachable configuration produces response times that make tasks effectively impossible.
- Resource limits must not tax learning or confidence. A first-time user on a low-end phone should learn the system just as easily as one on a flagship device; if your tutorial videos assume bandwidth the user's plan denies, the resource decision just became a usability failure.
Scope reminder: these four categories interact. Moving data local (data model) changes what must synchronize (coordination model), which changes what the user waits on (resource management). Review them together when a usability scenario fails — the root cause often sits one category away from the symptom.
Real-world: SQLite inside mobile apps, Uber's deep Google Maps integration, and payment-gateway integrations on travel sites are all mapping-and-data-model decisions made years before a user ever tapped a button.
Four decision categories shape usability structurally: the coordination model (timeliness, currency, completeness, correctness, consistency), the data model (where data lives; local-first drafts survive bad networks), the mapping of activities to units (hide remote slowness, surface structure), and resource management (no configuration may make tasks impossible).
6.9 Binding Time and Technology Choice
6.9.1 Decisions at Different Moments
Binding time is the classic architecture question: runtime binding versus compile-time binding — deciding when a choice gets frozen. For usability, ask finer questions:
- Which decisions must be taken when the system is set up?
- Which when the user starts, say, a booking?
- Which can wait until even later?
Worked example — deferring travel class. You need not select your travel class at the beginning. Proceed with the booking — origin, destination, date — and only later does the application show first class, second class, and third class with seats actually available on your chosen flight. A marker beneath each hides the price; click it and the price appears. Final answer: feature choice deferred to the last sensible moment is itself a usability feature — the user decides with full information instead of guessing early. Sense-check: compare it with a form that demands travel class before showing whether that class even exists on the route.
The same logic runs inside development too: deferring binding of user-interface choices lets you change screens without recoding the core — which is why interface prototyping works at all.
6.9.2 Plugins Added While Operating
Plugins push late binding further: capabilities you attach without deciding up front. Flight-booking assistance comes as plugins — a wheelchair, or a meet-and-assist service such as Marhaba, the airport hospitality service operating at major Gulf hubs. For a charge, somebody escorts you from the entrance gate to the aeroplane; the escort then walks back with you through customs and baggage until you meet the people who came to receive you.
Such facilities matter for senior citizens and people with special abilities. And notice the binding-time point: you do not need to decide about them when the booking starts. They attach to an existing itinerary while the system is already in operation. Many features like these get added to systems while they are running — no rebuild, no redeployment of the core.
Vanilla is not enough anymore. As an architect today, offering only a vanilla service — the standard fast-food menu — is not enough. Design the slots through which late-bound capabilities arrive, or every future add-on becomes a surgery on the core.
6.9.3 Two Restaurant Analogies
Late binding — the classy restaurant. You look at the menu and sigh: they serve good food, but that dish you love elsewhere is missing. You mention it anyway. The waiter goes back, checks with the kitchen, returns, and says: we can manage it. And lo, they serve the same item, probably better than the place you remembered. Nothing was configured in advance; no recipe waited ready. The sheer capability of the kitchen delivered it. That is late binding — serving what was never on the menu.
Early binding — the catered party. You want your family cook's Rajasthani kadi — the preparation with exactly the right quantum of condiments and spices. That is not the restaurant's specialty, so they ask you to bring a sample. Your cook prepares it; the restaurant's chef studies it; you return after a week for a trial. The trial shows a small variation; you point it out. By the third trial they are dot on. What your cook made for a family of five or ten, they now deliver to 5000 guests. You configured the solution into the system ahead of time — early binding.
Where the analogy maps onto software: the classy restaurant's capability is a flexible platform plus skilled operators — cost per request is higher, response is immediate, and surprises are absorbed. The catered party's configuration is deployment-time setup and testing — expensive once, then cheap and uniform at scale. Choose early binding when the requirement is known, stable, and must scale identically thousands of times; choose late binding when needs arrive unpredictably and variety is the product.
6.9.4 Late Binding with Third-Party Services
In software, late binding means services hosted anywhere in the world become reachable through an orchestrating service or a service-lookup facility. They plug in and behave as if they had always been part of your system. Binding third-party services this way, purely to give a better usability experience, is late binding in action — the payment gateway appears mid-checkout era, the maps layer appears when the tracking page is designed, and neither required rebuilding the application.
6.9.5 Choice of Technology
Technology choice serves interaction. For a company application you might standardize one brand, size, and configuration of tablet, mobile, or desktop — one device profile means every usability test generalizes. For public-facing service you might evaluate kiosks: look up available brands, their capabilities, their size, their touch and feel.
Binding time asks when each decision freezes. Defer choices to the last sensible moment for the user (travel class after flights are visible) and attach capabilities late via plugins (wheelchair, Marhaba-style meet-and-assist) — but remember the restaurant rule: late binding buys flexibility with per-request capability, early binding buys scale with up-front configuration. Choose technology to suit the user experience, not the other way round.
6.10 Architecturally Significant Requirements
6.10.1 What ASRs Are and Why They Hide
ASR stands for architecturally significant requirement — the few requirements that actually determine the shape of the architecture.
The working definition: an ASR is a requirement that will have a profound effect on the architecture — the architecture might well be dramatically different in its absence. The textbooks add a second test that goes with it: an ASR also carries high business or mission value, because satisfying it may come at the expense of other requirements, and only something stakeholders deeply value justifies that trade.
How do you gather them? Smell them out. It sounds like a joke, but it is nearly literal — the professional literature itself talks of "sniffing out" ASRs from requirements documents, because they do not arrive on a platter. Plenty of requirements pour in; you must figure out which handful are architecturally significant. A practical filter from the same source: if a requirement would change one of your critical architectural decisions — allocation of responsibilities, coordination model, data model, resource management, mapping among elements, binding time, choice of technology — then it is by definition significant. Everything else is detail that the architecture can absorb without changing shape.
The tell-tale comes afterward. Once you identify them, the customer insists, "I told you that — that's exactly what I told you." They did tell you, buried somewhere in the pile. Digging the significant ones out is your job, and it starts at the very first meeting — competent architects begin by talking to the important stakeholders whether or not any document exists yet.
6.10.2 Business Goals Come First
To understand requirements at all, understand business goals. Requirements point toward business goals, and the architecturally significant ones are the requirements the architecture is determined by. Many ASRs never appear in any requirements document at all — they derive from the business goals of the organization building or buying the system, which is why reading documents alone is never enough.
Both kinds count. Remember ASRs can be either kind: functional requirements or quality requirements. Both can drive architecture. "The system must run on our existing mainframe" is functional-sounding, yet it can reshape everything; "the system must recover in under a minute" is a quality demand that reshapes everything else.
6.10.3 NFRs Are Quality Requirements
Decode the jargon here. In IT circles people chant NFR, NFR, NFR. NFR means non-functional requirement, and an NFR is nothing but a quality attribute wearing an acronym.
Translation table for the jargon-weary:
| Chanted acronym | What it actually is |
|---|---|
| NFR (non-functional requirement) | A quality attribute requirement |
| Quality | Performance, availability, testability, maintainability, scalability, security, usability |
| ASR | Whichever requirements — functional or quality — profoundly shape the architecture |
When a requirement says the system must handle load or recover fast, it is a quality requirement — and quite possibly an ASR.
Real-world: hiring interviews and design reviews constantly probe this skill — given a pile of stakeholder statements, which three reshape the architecture? That is the daily exercise of the job this lecture is preparing you for, and the assignment in the next section makes you do it deliberately.
An ASR is a requirement whose absence would produce a dramatically different architecture, usually paired with high business value; ASRs hide in the pile and must be smelled out starting at the first meeting; NFR is simply jargon for a quality attribute requirement.
6.11 Documenting an Existing System: The Assignment Blueprint
6.11.1 Purpose and Seven Parts
The assignment, worth five marks, builds familiarity with software architecture by having you choose an existing system from your workplace. The reason: exposure to a real system you may actually work on. Understand why the system exists, its goals, its key requirements, who the stakeholders are, what components it has, and how it is laid out. Do all that analysis — but report only seven things:
- Purpose — state in one line why the system exists.
- Key requirements — functional and non-functional. Booking an airline ticket, from selecting the flight through making the payment, is a functional responsibility. Non-functional means one or two specific quality scenarios — availability, or another quality, spelled out concretely.
- Utility tree — architecturally significant requirements listed as a tree (next subsection).
- Tactics for the top five ASRs — not every tactic studied in recent lectures; only the tactics your chosen system actually uses to satisfy its significant requirements. Smell out the requirements, then name the tactics you observe in action.
- Diagrams — context diagram, module decomposition, component-and-connector, deployment. One or two good diagrams can be enough; the cap is tight — at most four diagrams.
- How the system works — a brief description.
- Key learning — how the exercise benefited YOU as a student and software engineer. Not the benefit to the system. Did executing this activity make you better at working in the IT space? Candor is allowed: if it truly taught nothing, say so — though the hope is you leave able to use what the course taught.
Format rule: one page per part, prepared as slides and preferably converted to PDF. The whole report lands at exactly ten pages — seven content pages plus three more. It cannot be more, cannot be less. The page cap is itself the lesson: an architect who cannot compress a system into ten pages has not yet decided what matters.
Notice how the seven parts mirror this lecture's own arc: purpose and requirements are section 6.10's ASR hunt, the utility tree is ASR capture, tactics are the usability-and-quality tactic catalogs, and the diagrams are the views we take up again in section 6.12.
6.11.2 The Utility Tree
Why call it a utility tree? In the professional literature, "utility" names the overall goodness of a system — the root expresses everything the system should be good at. The trunk says quality. Under quality hang branches — the various quality attributes covered in this course. Stick to the course attributes; inventing new ones is not wanted. Under each attribute, write the scenario in plain English: what the situation is, in one readable sentence.
A tiny utility tree you can pattern-match against.
- Quality
- Availability
- "The booking service recovers within five minutes after a data-center failure." (H,H)
- Usability
- "A first-time user books a ticket within five minutes unaided." (M,M)
- Security
- "Payment details are encrypted end to end and never stored in logs." (H,H)
Each leaf is a full scenario sentence, and each carries a two-letter rating: business value first, architectural impact second (H/M/L each). The (H,H) leaves are your top ASRs — they deserve the tactics in part 4 of the report.
The tree turns vague quality wishes into placed, inspectable leaves — and empty branches tell you something too: a quality attribute with no scenarios under it means that area has not been thought through.
6.11.3 Staying High-Level; Confidentiality; Honest Learning
Q: My workplace has no user-facing product — what system do I pick?
A: A pure back-end application is perfectly in order. It is still an application.
Q: How deep should the diagrams and descriptions go?
A: High-level views only. The moment you go into details, it stops being architecture and becomes system design.
Confidentiality rules protect you. Never violate company policy. Say you work somewhere secretive and the real architecture is confidential. Describe what the company itself prints on its public website — that cannot be confidential — with a little added description. Nothing is so secret that even the customer does not know it; claiming otherwise goes too far. If your domain is genuinely sensitive — the class heard the example of proprietary tactics that hide drones from radars — pick an application outside that domain entirely. Using a generic name instead of the real product name is fine, and a bit of insider knowledge, where permitted, makes the report stronger.
Seven parts, ten pages, high-level views only: purpose, key requirements, utility tree, tactics for the top five ASRs, at most four diagrams, how the system works, and honest key learning. Back-end systems qualify; public-website material keeps you safe; (H,H) leaves of the utility tree point straight at the ASRs whose tactics you must name.
6.12 Documentation in an Agile World
6.12.1 The Right Dose
Agile environments are rightly wary of over-documentation, yet documentation matters more in agile settings, not less, because people join and leave projects constantly. Every departure walks out the door with undocumented knowledge; every newcomer arrives needing exactly what a good document holds.
The medicine rule: treat documentation like a good medicine — the dose should be just right. Not more, not less. An under-documented project repeats decisions painfully; an over-documented one spends its energy maintaining paper instead of shipping software.
The contrast with the past is stark. Sybase was then a major competitor to Oracle as a database, an excellent product. Buying a copy meant building a cabinet to host the manuals: around twenty volumes. Books were scarce in the market, so you depended on manuals, and manuals were printed and bound. The accounts department inspected the physical manuals before releasing payment — and plenty of old-fashioned managers still want paper before they pay.
Against that backdrop, modern documentation is need-based: document the architecture briefly so people who onboard know what they will be doing and stakeholders know what will be delivered. Then stop. Do not over-document. Ask of every proposed page: who reads this, and when? If no named reader exists, neither does the page's job.
6.12.2 Views and Scenario-Based Quality Documentation
A documentation package contains a number of views — each view is a rendering of the architecture from one angle, suited to one kind of reader. Part of the architect's job is figuring out which combination of views fits the project. Several combinations are possible, and the options repay quick study.
Whatever the mix, documentation should capture three kinds of things:
- The elements themselves — the module view: what the code is divided into, and which modules depend on which.
- The behavior — the component-and-connector view: what runs at runtime, how the pieces talk, what the channels are.
- The quality attributes — often forgotten, always decisive. A third family, allocation views, maps software elements onto the hardware, teams, or environments that host them, closing the loop between design and deployment.
Quality enters the document through scenarios written the way this course teaches them. Each scenario names a source of stimulus, a stimulus, an artifact, an environment, and a response that is measurable — the six-part skeleton from section 6.4 doing duty as documentation.
One quality scenario as a documentation artifact. "During peak sale hours (environment: runtime), a customer submits a payment while another checkout completes (stimulus), and the payment service confirms within two seconds (response measure)." Any stakeholder can read that sentence; any tester can execute it. That is what scenario-based quality documentation buys: qualities stated as testably as features.
Real-world: Facebook, Twitter, LinkedIn, WhatsApp, and MS Teams thrive with no visible end-user documentation — working software over comprehensive paperwork — yet each maintains internal architecture documents for its engineers, which is precisely the need-based dose this section prescribes.
Document like dosing medicine: brief, need-based architecture documentation for onboarders and stakeholders, nothing more. Capture three things — module views (elements), component-and-connector views (behavior), and quality attributes expressed as measurable scenarios.
6.13 Architecture Stability in a Changing World
6.13.1 Detailed Design Is a Flying Bird
The flying bird analogy. Detailed software design behaves like a flying bird: by the time you aim at where it was, it has already left that place. Things keep changing underneath you — requirements shift, teams learn, libraries deprecate.
Yet an architect must produce an architecture that stays more or less stable across the entire development run. That means finding cornerstones — decisions true enough about the future that you can hold the system to them while everything else shifts.
What qualifies as a cornerstone? Decisions whose change would be catastrophic: the split into major subsystems, the choice of coordination style between them, where the system's data lives, the qualities it must guarantee. What does not? Screen layouts, table columns, message formats — things detailed design can keep moving with. If everything changes — cornerstones included — you end up starting from the very beginning, which is precisely what a stable architecture exists to prevent.
6.13.2 The School-to-Mall Thought Experiment
A building makes the idea concrete. Suppose you construct a building for a school, and later the owner wants to turn it into a shopping mall with a multiplex. Where do the multiplex screens even go? The play area probably becomes a courtyard lined with stalls. Classrooms become individual shops — except the rooms are too large to sell as single shops, so walls must subdivide them. Doors move. The window layout may misfit. The walking area is wrong: mall customers expect generous movement space outside shops, while classrooms need only narrow corridors.
Now sharpen it, because the first version flatters architecture too much:
Even the bare skeleton betrays the wrong cornerstones. Suppose the original architect understood only the bare structure — pillars raised, no walls built — and never grasped the most significant requirements. Converting even that skeleton is brutal: lots of cutting and chopping, beams removed, pillars repositioned. Pillars are load-bearing decisions; they were placed for a school's spans and corridors, and no absence of walls saves them.
But suppose everyone had known from day one that the building would become a shopping mall. Then the facade, the look and feel, the movement plan, and the traffic flow would have been designed for that purpose. Details could fill in gradually as tenants appeared — a pharmacy here, a food court there — without touching pillars or beams.
Software is identical: understand the significant requirements early (section 6.10), freeze the cornerstones, and variations stop wrecking your timelines. The ASRs are the pillars; everything else is drywall.
6.13.3 What Makes an Architect
An architect has to be a visionary, technically very strong, and clear about which items must freeze early so project timelines survive later variation. Creating a stable architecture takes real creativity, which is why the role demands enormous experience — and not only of the domain.
A running argument illustrates the tension. Someone insisted core technical knowledge matters more than domain knowledge, since one can switch domains any number of times and technical skill travels freely. Hiring reality disagrees — when organizations look for people, they look for domain exposure.
The resolution is both/and, not either/or. An architect needs strong technical knowledge AND strong domain knowledge. Add command of the entire development life cycle, working sense for database and user-interface design, and fluency in stakeholder language. With that fluency, stakeholders can be helped to define not only what the application must functionally do, but its non-functional qualities too — which is where this lecture began, back with usability as a quality worth naming out loud.
Real-world: architects who survive a decade in banking systems become rare and expensive precisely because the domain knowledge compounds on top of the technical base — either half alone is half an architect.
Detailed design moves like a flying bird; only well-chosen cornerstones hold still. Understand significant requirements before the pillars rise (the school-to-mall lesson), and expect the architect role to demand vision, deep technique, deep domain knowledge, life-cycle command, and stakeholder fluency together.
6.14 Agile and Architecture Together
6.14.1 How Waterfall Projects Broke
Software architecture as a named discipline dates to the early 1990s — roughly thirty to thirty-five years of practice. Before that, large projects meant a series of programs run top-down, the style of the 1970s and 1980s, which is not worth comparing here.
The old recipe went: understand the customer's requirement thoroughly, document it, get sign-off, build with only occasional clarification calls, then deliver. The job never got done. The customer rejected most of the delivery with the feeling that it simply did not serve the requirements. Practitioners called it the late break — the discovery that requirements had moved arrived latest of all, after the money was spent. Then came redoing; if luck ran out, a restart from zero. Restarts slid into litigation, because neither the developer could afford the loss nor the customer accept the result.
Inheriting a failure teaches the lesson viscerally. The old developer walks out; you walk in with a fresh slate and fresh budget, knowing everything that went wrong. Even so, you cannot reuse most of the inherited work, because it climbed up the wrong tree. Every module assumed requirements that turned out false, so correctness anywhere else is worthless.
Agility exists for exactly this. Start climbing the wrong hill and somebody calls from behind: pal, that is not it — because everybody is watching you climb. Interaction with users stays dense, and in today's DevOps environment it is absolutely continuous.
6.14.2 Both, Not Either
People say: either I have architecture or I have agile; I cannot have both. That is false. You must formally document the architecture and still stay agile — and while doing it, minimize the documentation. The professional literature states the real question directly: not "Agile or architecture?" but "how much architecture, up front versus deferred, and how much documented?" The two are critical companions, not rivals.
The Agile Manifesto frames the balance. Dating deserves one careful sentence, because two numbers float around: the manifesto itself was signed in 2001 by seventeen leading figures of the software industry, nearly every big name of the era, many still influential today — while the movement's roots extend back into the early-to-mid 1990s, in practices like Extreme Programming and Scrum that predate the signing by years. Both facts are true; they answer different questions. Its four values:
- Individuals and interactions over processes and tools. Good people make processes work.
The fly-by-wire analogy. It is not enough to own a fly-by-wire airplane — you need pilots who can fly it. Which matters more, the sophisticated plane or good pilots? Take the good pilot first, train them onto the fly-by-wire system, and switch over gradually. Bring in fly-by-wire with crews who cannot handle it and all you get is crashes. Process technology adopted ahead of people readiness crashes projects the same way.
Even today, with artificial intelligence everywhere, the best people keep their place; tools replace only the people whose work was process-shaped anyway.
- Working software over comprehensive documentation. If your software works, who cares about the documentation? Nobody has seen documentation for Facebook, Twitter, LinkedIn, or WhatsApp — nor for MS Teams, nor attended a training program to start using it. The software works and is usable intuitively, so documentation finds no role for the end user. Keep need-based documents internally: a brief architecture description so newcomers know the mission and stakeholders know what will be delivered. Just that much — section 6.12's medicine dose.
- Customer collaboration over contract negotiation. Years past saw enormous effort — even court cases — determining whether work matched the contract. Collaborative work is what actually succeeds. Constant contact gives the customer flexibility and a proper appreciation of what the paid value buys, while the developer stays interested in giving value for money. With good collaboration, negotiation stops helping. When variation appears there is room for give and take — we will do this, we cannot do that. Then pen it, paper it, and take it through the project control board or whatever change-management mechanism exists.
- Responding to change over following a plan. Never start without a plan — but hold it loosely. With a plan you can change it; without one, what would you change? Respond to shifting requirements and environment, and always know why you are making a change: this was the plan, it becomes that, for this stated reason.
Read the values as a ratio, not a ranking. The manifesto itself says there is value in the items on the right — processes, documentation, contracts, plans — only the items on the left are valued more. Teams that skip the right side entirely have misread the document.
6.14.3 The Twelve Principles and the People
Beyond the values sit twelve principles, published at agilemanifesto.org — one word, no dash — and worth reading directly rather than taking second-hand. They include early and continuous delivery of valuable software, welcoming changing requirements even late in development, frequent delivery in weeks rather than months, daily collaboration between business people and developers, building around motivated individuals, face-to-face conversation as the most efficient communication, working software as the primary measure of progress, sustainable pace, continuous attention to technical excellence, simplicity (maximizing the work not done), self-organizing teams, and regular reflection on how to become more effective.
The names behind the manifesto read like an industry hall of fame — all seventeen signatories were leading practitioners, and the roster includes Robert C. Martin, famous as Uncle Bob (if you are a designer in any form, watch his videos); Martin Fowler, the authority on UML; Ward Cunningham of Cunningham fame; Alistair Cockburn and the Cockburn rules; James Grenning; Jeff Sutherland; Dave Thomas; and Ken Schwaber. Books by these authors are famous and repay reading.
Real-world: Scrum and Extreme Programming grew from those early-1990s roots into today's default vocabulary of sprints, stand-ups, and refactoring — the movement the seventeen signatories gave a name in 2001.
Waterfall died of late breaks, restarts, and litigation; agility fixes the feedback loop with dense user interaction. Architecture and agile coexist — document formally but minimally, value people over process tools, collaborate over contracting, and hold plans loosely with stated reasons for every change.
6.15 Planning Investment versus Rework Cost
6.15.1 Reading the KSLOC Curves
KSLOC means kilo software lines of code — a way of measuring the volume of a software product. (Texts usually expand it as thousands, or kilo, of source lines of code; same measure either way — one KSLOC is one thousand lines.) A well-known chart — analyzed by Boehm and Turner from historical data on 161 industrial projects, using the COCOMO II cost model's architecture-and-risk-resolution factor — plots how much of a project's schedule should go into up-front planning.
How to read the chart. The horizontal axis is the share of the project schedule devoted to initial architecture and risk resolution, running from about 5% up to 50%. The vertical axis is the percentage of time added to the schedule. Two families of curves live there:
- An upward-sloping line for planning cost: the more you plan, the more time planning itself adds.
- Descending curves for rework cost, one per project size — very small, mediocre, and very large projects: the more you planned, the less rework you pay later.
The pattern is simple: the larger the project, the steeper the rework curve falls as planning rises — so the larger the project, the larger the percentage of investment that should go into up-front architecture and risk resolution. For a very small project the payoff curve is virtually flat; planning buys almost nothing because there is little enough work that redoing it is cheap anyway. For a mediocre project the curve is shallower. For a very large project it climbs steeply — unplanned errors multiply across a million lines.
6.15.2 Worked Numbers: The 90 Percent Penalty
Each planning curve pairs with a rework curve: the less you spend on planning, the more schedule you burn reworking. Add the two curves and you get the total percentage added to the schedule — rework addition plus planning addition. The lowest point of that total is the sweet spot: the planning level that minimizes total cost.
Worked example — the 90 percent penalty.
- A large project starts with zero up-front planning.
- Rework adds up to 90% of the original schedule — you almost double the work.
- Concretely: a 1000 man-hour project without proper planning needs about 900 further man-hours in rework. Total: roughly 1900 man-hours for what should have cost 1000.
- Now add planning instead: at the sweet spot (for a very large project, near the top of the 5–50% planning range), planning costs its few tens of percent but cuts the 900 man-hours of rework to a fraction.
- Compare totals: planning-plus-small-rework beats no-planning-plus-900-hours decisively.
Final answer: rather than spend the money on rework, spend it on architecture. Sense-check: this genuinely used to happen — it is why projects ended in court, abandoned rather than redone, exactly the waterfall endings of section 6.14.
For large projects the total comes out least at the sweet spot, and good planning plus good stakeholder interaction carries huge weight.
6.15.3 Sweet Spots and Residual Risk
The sweet spot moves with project size:
| Project size | Sweet spot | Meaning |
|---|---|---|
| Very small (~10 KSLOC) | Far left — almost no planning | Start the project, finish it, rework if needed |
| Medium (~100 KSLOC) | Around 20% of schedule | Moderate up-front architecture pays |
| Very large (~1000+ KSLOC) | Near the top of the planning range (~40%) | Heavy up-front architecture and risk resolution |
For a very small project, the minimum of the total curve sits right at the beginning. There is no point spending heavily on architecture or flying in big-name architects to plan a tiny job. For a very large project — think 10,000 KSLOC — invest near the top of the planning range so rework is cut down. Rework is a headache in any case: it messes up your code, your project, everything else.
Scope note: project size is not the only driver. Rapid change pushes the sweet spot leftward (planning freezes decisions that will be wrong soon); high assurance needs push it rightward (flight-control software wants every hour of analysis). Size sets the default; context shifts it.
Q: Suppose we did all the planning, started the work, and five or six months down the line a core change arrives anyway. Is that not a different matter altogether?
A: Residual risk never reaches zero — even a Mercedes could not keep one famously unlucky passenger safe. Statistically such surprises sit above four sigma: beyond four standard deviations of what reasonable expectation covers. We plan for reasonable expectation. When a well-planned project, with an architect spending proper time with stakeholders, still absorbs a major change, something went wrong somewhere: the job was not done properly.
Real-world: capacity planners and engineering managers use exactly this trade-off when they decide how many weeks of design review a new service deserves before code may start — small internal tools ship in days, while core payment ledgers get months of architecture and risk work first.
Planning and rework trade against each other along the 5–50% planning axis; their sum has a minimum — the sweet spot — that sits far left for tiny projects and near 40% for huge ones. Zero planning on a large project costs about 90% extra schedule; residual risk above four sigma is bad luck, not planning failure.
Exam Guidance Summary
Q: How many modules are included for the quiz?
A: Whatever has been covered so far, plus anything you can quickly look up on the internet. The quiz will not rigidly follow the course line — if the course runs along the road, the answer may sit on the roadside. It is basically easy stuff; getting four or five out of five is no problem.
- Exam note: the quiz opens on the 19th and runs to the 28th. It is time-limited to 30 minutes and allows a single attempt — do not log in until you truly have 30 minutes free.
- Exam note: when the quiz closes, the result announces automatically, so no extension is possible even if requested.
- Exam note: do the quiz in its first five days and treat the last five days as a makeup buffer. No extra time comes with a makeup, and life intervenes — illness, weddings, sudden duty travel.
- Exam note: Assignment 1 opens on the 19th and closes on the 28th, with a few extra days likely for this one. Assignment 2 will NOT get extra days — do not assume symmetry.
- Exam note: Assignment 1 format — five marks, one page per part, PDF preferred, ten pages total, at most four diagrams, high-level views only.
- Exam note: before the next session, read up on utility trees using internet research; next week's material may be released early for deeper preparation.
- Exam note: midterm pattern questions barely help at this stage; the topic moves to next week.
- Exam note: trade-off analysis is the subject of an upcoming session in the near future.
Exam note: plan the quiz for the first five days of its window with a full free half hour (single attempt, auto-announced results, no extensions), start Assignment 1 early despite its likely grace days, and pre-read utility trees before the next session.
Key Industry Applications
- Real-world: WhatsApp — restrained feature layering protects usability across continuous DevOps upgrades; the core send-message act never moves, so each addition flattens its own learning curve.
- Real-world: Cleartrip, Easy Trip, MakeMyTrip, and airline-owned portals compete on booking speed and confidence — two fields and a working submit button win the first transaction; IRCTC's evolution is a standing case discussion.
- Real-world: Passport Seva Kendra — online passport applications evolved dramatically, and the in-person center experience is polished; TCS served as the support provider for many centers.
- Real-world: Oracle installations from version four/five through eleven trace configuration-time usability pain: driver hunts, OS patches, roughly fifteen CDs, restart-on-error — the environment row of the general scenario done badly.
- Real-world: Sybase shipped around twenty manual volumes needing a cabinet — the anti-pattern for need-based documentation.
- Real-world: Microsoft, Mac, and Linux platform setup experiences show OS-level usability shaping market outcomes; smooth setup is why Windows kept the desktop.
- Real-world: SQLite serves as the mobile-side storage choice inside the data model decision — an embedded database with no server, ideal for local-first drafts that survive dropped connections.
- Real-world: Uber leans heavily on Google Maps via third-party APIs; banking integrations power payments — mapping activities to external units is part of usable design.
- Real-world: Banks proactively call about failed payments of a lakh rupees and reactivate them; IVRS authenticates telephone bookings — proactive support converting failures into saved transactions.
- Real-world: Government visa portals illustrate staged saving, task models, and remaining usability gaps that push applicants to paid consultants — abandonment to consultants as the sharpest usability signal.
- Real-world: Facebook, Twitter, LinkedIn, WhatsApp, and MS Teams thrive with no visible end-user documentation — working software over comprehensive documentation.
- Real-world: Chatbots extend proactive support channels alongside WhatsApp, SMS, and telephone callbacks, catching users at the moment of need.
- Real-world: Marhaba-style meet-and-assist airport services ship as late-bound plugins for senior citizens and travelers with special abilities — capabilities attached while the system operates.
- Real-world: WYSIWYG editors made screen-print resemblance the minimum expectation of interactive software — the machine absorbing a translation burden users once carried.
- Real-world: agilemanifesto.org hosts the Agile Manifesto and its twelve principles; videos and books by Robert C. Martin (Uncle Bob), Martin Fowler, Ward Cunningham, Alistair Cockburn, Jeff Sutherland, Dave Thomas, James Grenning, and Ken Schwaber are standard professional reading.
- Real-world: HCI, human factors, and aesthetics grew into dedicated specializations and university courses, mirroring medicine's drift from MBBS to retina specialists.
SA Lecture 6 notes · Usability, Architecturally Significant Requirements, and Agile Architecture
Sections Breakdown
Usability rose from afterthought to survival trait because pay-as-you-use markets removed switching costs, and modern software assumes no manual: a stuck user blames the product, so guidance must be built in from day one.
Learnability is tested by declaring a target audience, setting a time bar, and sampling real users; the airline booking benchmark shows usable design wins the first transaction with two fields and reveals depth later, while error prevention makes invalid input unreachable.
Aesthetics must be backed by substance; continuous upgrades create learning curves that design must flatten; shared conventions and skin support keep software evolving without alienating users.
The six-part general scenario (source, stimulus, artifact, environment, response, response measure) turns usability into testable sentences; configuration-time usability — illustrated by the fifteen-CD Oracle installs — is the often-forgotten second environment.
User-initiative tactics (cancel, undo, pause/resume, aggregate) are structural commitments — unblocked listeners, stored state, freed resources, grouping — supported by staged saves, one task per page, visible status, and review-before-submit.
System-initiative tactics rest on three maintained models — user (identity, knowledge, continuity), task (current work and required features), system (the machine's own state, exposed via progress bars and countdowns) — each of which must be properly constructed, not just collected.
Every usability duty needs a named owner (system, subsystem, or person); the strongest support is proactive — WhatsApp/SMS nudges within a minute, bank calls on failed high-value payments, IVRS-authenticated telephone rescue of dead sessions.
Four architectural decision categories shape usability: the coordination model (timeliness, currency, completeness, correctness, consistency), the data model (where data lives — SQLite locally, drafts that survive dropped connections), mapping of activities to hardware/software units (Uber on Google Maps), and resource management.
Binding time asks when each decision freezes; deferring choices to the last sensible moment is itself a usability feature, plugins add capabilities while operating (Marhaba-style meet-and-assist), and the two restaurant analogies contrast late binding (capability serves the unlisted dish) with early binding (configured kadi scaled to 5000 guests).
An ASR is a requirement with a profound effect on the architecture (absence would change it dramatically) plus high business value; ASRs hide in the requirements pile and must be smelled out from the first meeting; NFR is just jargon for a quality attribute requirement.
The five-mark assignment reports seven parts in exactly ten pages (one page per part, PDF preferred): purpose, key requirements, utility tree, tactics for the top five ASRs, at most four diagrams, how the system works, and honest key learning — high-level views only, with confidentiality rules.
Documentation in agile is medicine — the dose must be just right: brief, need-based architecture documentation for onboarders and stakeholders; capture module views (elements), component-and-connector views (behavior), and quality attributes as measurable scenarios.
Detailed design moves like a flying bird, so architects must freeze cornerstones — decisions true enough about the future — early; the school-to-mall experiment shows why significant requirements must be understood before the pillars rise; the architect needs technical AND domain knowledge plus life-cycle command and stakeholder fluency.
Waterfall died of late breaks, restarts, and litigation; agile fixes the feedback loop. Architecture and agile coexist: document formally but minimally, live the four manifesto values (signed 2001 by 17 industry leaders, with roots in early-1990s XP/Scrum), and read the twelve principles at the source.
Boehm-Turner KSLOC curves plot planning share (5–50% of schedule) against added time; total cost = planning + rework, minimized at the sweet spot (far left for ~10 KSLOC, ~20% for 100, near 40% for 1000+); zero planning on a large project costs about 90% extra schedule; residual risk above four sigma is bad luck, not planning failure.
Quiz logistics (19th-28th, 30 minutes, single attempt, auto results, no extensions), Assignment 1 format and dates, utility-tree reading homework, and upcoming topics.
Named industry cases from the lecture: WhatsApp's restrained layering, booking-portal speed competition, Oracle install pain, Sybase manual overdose, SQLite local-first storage, Uber/Google Maps mapping, proactive bank calls, visa portal gaps, WYSIWYG, the Agile Manifesto roster, and HCI specialization.
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.
Usability as a First-Class Quality Attribute
Must-know: Usability = ease of accomplishing a desired task plus the user support the system provides; it became first-class because pay-as-you-use removes switching costs.
⚠️ Top pitfall: Treating usability as late-stage decoration; a stuck user blames the product, not themselves.
Self-check: Why did usability become a survival trait in the last decade?
Connects to: Section 6.2 (6.2 Measuring Usability: Learnability in Action); Section 6.6 (6.6 Usability Tactics: System Initiative Models)
Measuring Usability: Learnability in Action
Must-know: Learnability test = declared audience + time bar + random sample + completion rate; general scenario vocabulary (source, stimulus, artifact, response, response measure) carries marks.
⚠️ Top pitfall: Crowding the first screen with features; punishing users with error messages instead of preventing invalid input.
Self-check: Why is the quicker booking site more usable even if it offers fewer features?
Connects to: Section 6.1 (6.1 Usability as a First-Class Quality Attribute); Section 6.4 (6.4 The Usability General Scenario)
Aesthetics, Look-and-Feel, and the User Learning Curve
Must-know: Applications are most usable at birth; every feature addition creates a learning curve the design must flatten (WhatsApp pattern).
⚠️ Top pitfall: All aesthetics with no substance — beauty collapses on first touch.
Self-check: Which part of skins is architecture's job and which is not?
Connects to: Section 6.1 (6.1 Usability as a First-Class Quality Attribute); Section 6.9 (6.9 Binding Time and Technology Choice)
The Usability General Scenario
Must-know: Six scenario parts and their usability values; the two-minute download-and-use concrete scenario; environment = runtime or configuration time.
⚠️ Top pitfall: Forgetting configuration time as an environment, or giving 'users liked it' instead of a countable response measure.
Self-check: Write a one-sentence concrete usability scenario with all six slots filled.
Connects to: Section 6.2 (6.2 Measuring Usability: Learnability in Action); Section 6.5 (6.5 Usability Tactics: User Initiative)
Usability Tactics: User Initiative
Must-know: The four user-initiative tactics and what each demands architecturally; the visa portal's staged-save evolution as the canonical case study.
⚠️ Top pitfall: Thinking cancel/undo are UI buttons rather than architectural responsibilities (listener, state snapshots, resource freeing).
Self-check: Why can't 'replace all a with b' be undone by replacing b with a?
Connects to: Section 6.4 (6.4 The Usability General Scenario); Section 6.6 (6.6 Usability Tactics: System Initiative Models)
Usability Tactics: System Initiative Models
Must-know: The three system-initiative models and their objects: user model predicts the person, task model the work, system model the machine (progress bar = classic system model).
⚠️ Top pitfall: Auto-fill picking part of a wrong address when people share addresses or one person has two — models must be constructed, not merely collected.
Self-check: Which model makes a countdown on a visa application possible?
Connects to: Section 6.5 (6.5 Usability Tactics: User Initiative); Section 6.7 (6.7 Responsibility Allocation and Proactive Support)
Responsibility Allocation and Proactive Support
Must-know: Allocation of responsibilities = assign each usability need (learning, efficiency, adaptation, error recovery) to a named owner; proactive outreach saves business.
⚠️ Top pitfall: Leaving usability needs unassigned — unowned needs are silently dropped.
Self-check: How does a travel site use stored state to rescue a dead booking session?
Connects to: Section 6.6 (6.6 Usability Tactics: System Initiative Models); Section 6.8 (6.8 Architectural Decisions That Shape Usability)
Architectural Decisions That Shape Usability
Must-know: The five coordination properties (timeliness, currency, completeness, correctness, consistency) and why data placement is a usability decision.
⚠️ Top pitfall: Treating usability as a UI-layer concern when it is decided by coordination, data, mapping, and resource decisions.
Self-check: Why is 'a form that survives a dropped connection' a data-model decision?
Connects to: Section 6.7 (6.7 Responsibility Allocation and Proactive Support); Section 6.9 (6.9 Binding Time and Technology Choice)
Binding Time and Technology Choice
Must-know: Runtime vs compile-time binding and finer usability questions: which decisions freeze at setup, at booking start, or later; deferred feature choice = usability feature.
⚠️ Top pitfall: Offering only vanilla service — architects must design slots for late-bound plugins rather than rebuilding the core per add-on.
Self-check: Which restaurant analogy is early binding and why?
Connects to: Section 6.3 (6.3 Aesthetics, Look-and-Feel, and the User Learning Curve); Section 6.8 (6.8 Architectural Decisions That Shape Usability)
Architecturally Significant Requirements
Must-know: ASR definition (profound architectural impact + high business value); ASRs can be functional or quality; NFR = quality attribute requirement.
⚠️ Top pitfall: Waiting for ASRs to be labeled in documents — they never are; excavation starts at the first stakeholder meeting.
Self-check: What two characteristics must every ASR have?
Connects to: Section 6.11 (6.11 Documenting an Existing System: The Assignment Blueprint); Section 6.13 (6.13 Architecture Stability in a Changing World)
Documenting an Existing System: The Assignment Blueprint
Must-know: Seven report parts; ten pages total (7 content + 3); at most four diagrams; utility tree leaves are plain-English scenarios rated H/M/L for business value and architectural impact.
⚠️ Top pitfall: Going too deep — past high-level views you are doing system design, not architecture.
Self-check: Which utility-tree leaves identify your top ASRs?
Connects to: Section 6.10 (6.10 Architecturally Significant Requirements); Section 6.12 (6.12 Documentation in an Agile World)
Documentation in an Agile World
Must-know: Need-based documentation captures elements (module view), behavior (C&C view), and quality attributes via six-part scenarios.
⚠️ Top pitfall: Both extremes: over-documenting like Sybase's twenty volumes, or documenting nothing because 'agile'.
Self-check: Why does documentation matter MORE in agile settings?
Connects to: Section 6.4 (6.4 The Usability General Scenario); Section 6.11 (6.11 Documenting an Existing System: The Assignment Blueprint); Section 6.14 (6.14 Agile and Architecture Together)
Architecture Stability in a Changing World
Must-know: Cornerstones = decisions that must stay stable while detail changes; understanding ASRs early prevents timeline-wrecking variation.
⚠️ Top pitfall: Believing a bare skeleton is requirement-neutral — pillars placed without significant requirements still doom the conversion.
Self-check: In the school-to-mall story, what do the pillars represent in software terms?
Connects to: Section 6.10 (6.10 Architecturally Significant Requirements); Section 6.14 (6.14 Agile and Architecture Together)
Agile and Architecture Together
Must-know: The four Agile Manifesto values (individuals/interactions, working software, customer collaboration, responding to change) each read as 'over', not 'instead of'; manifesto signed 2001, roots in early-1990s practices.
⚠️ Top pitfall: Claiming architecture and agile are mutually exclusive; misdating the Manifesto to its roots' decade.
Self-check: Why can't inherited work from a failed waterfall project be reused?
Connects to: Section 6.12 (6.12 Documentation in an Agile World); Section 6.13 (6.13 Architecture Stability in a Changing World); Section 6.15 (6.15 Planning Investment versus Rework Cost)
Planning Investment versus Rework Cost
Must-know: Sweet spot = minimum of (planning + rework) curves; large projects reward heavy up-front architecture (~40%), small projects barely gain from planning; 90% rework penalty without planning.
⚠️ Top pitfall: Assuming one planning level fits all sizes — the sweet spot moves with project size (and shifts left with rapid change, right with high assurance).
Self-check: Where does the sweet spot sit for a very small project and why?
Connects to: Section 6.13 (6.13 Architecture Stability in a Changing World); Section 6.14 (6.14 Agile and Architecture Together)
Exam Guidance Summary
Must-know: Quiz: first five days of window, full free 30 minutes, single attempt; Assignment 2 gets no extra days.
⚠️ Top pitfall: Logging into the timed quiz without a free half hour, or assuming Assignment 2 will get the same grace period as Assignment 1.
Self-check: What happens when the quiz closes?
Connects to: Section 6.11 (6.11 Documenting an Existing System: The Assignment Blueprint)
Key Industry Applications
Must-know: Each named product maps to a lecture concept: WhatsApp to learning curves, Oracle installs to configuration-time usability, Sybase to documentation dose, Marhaba to late binding.
⚠️ Top pitfall: Citing products without naming which usability/architecture concept they illustrate.
Self-check: Which concept does the fifteen-CD Oracle install illustrate?
Connects to: Section 6.1 (6.1 Usability as a First-Class Quality Attribute); Section 6.4 (6.4 The Usability General Scenario); Section 6.9 (6.9 Binding Time and Technology Choice); Section 6.12 (6.12 Documentation in an Agile World)
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.