Skip to main content
Software Architectures

Software Architecture

Published: 2026-08-20
Level: postgraduate
Audience: Postgraduate students studying Software Architecture

This first lecture lays the foundation of the course. It answers what software architecture is (and what it is not), walks through the quality attributes an architect commits to, and shows how functional and non-functional requirements, constraints, and early design decisions shape a system. It then introduces architectural patterns, the benefits architecture brings to a project, how architecture drives business process reorganization, the development models a team can follow, and how budgeting and project management roles work. The lecture closes with the assessment structure and grading scheme, followed by a summary of exam guidance and the key industry applications of architecture.

1.1 What Software Architecture Is — and Is Not

Hook: What do you expect out of a course in software architecture? Ask that question in any room of developers, and the answers reveal how the field is commonly — and sometimes wrongly — understood. The way the professor frames the answer to this question sets the boundary of the entire course.

1.1.1 Course Expectations and Positioning

The session opens with a simple question to everyone in the room: what do you expect out of a course in software architecture? The answers arrive from all sides: how complex systems work, system design, designing robust and resilient systems, understanding the end-to-end workflow of how software is designed, being able to build software systems that scale well, system design as a blueprint to the stakeholders, learning about design patterns, designing scalable systems, problem–solution thinking using patterns and practices, optimizing design, system structure and design, modern software architecture, learning architecture patterns and best practices, understanding how enterprise solutions are designed, building future-ready software, understanding scalability, the low-level and high-level architecture of software systems, designing complex scalable systems, sustainable and scalable workflows, reuse, stakeholders, risk in deployment, laying a foundation of work, and helping both business owners and development get on the same page.

From this list, a few words get singled out as especially telling. Stakeholders is called a nice word. Scalable and resilient are words worth liking too. High-level design makes sense as a description of the subject. But one warning follows immediately: there is a strong expectation in the room that this is a course on software design, and it is not. This is not a design-patterns course and it is not a low-level design course. It is a high-level design course. So the phrasing from the instructor is worth holding onto: while it is a design course, it is not a design course — the design work studied here happens at a much higher level of structure and decision-making than the design of classes and methods.

Scope — what this course is NOT:

  • It is not a design-patterns course. Patterns are studied only insofar as architectural patterns (the structure of major subsystems) matter; cataloguing GoF-style design patterns is out of scope.
  • It is not a low-level design course. Designing individual classes, methods, and their interactions is the job of software design, not architecture.
  • It is a high-level design course: the structure of the whole system, the major subsystems, the externally visible properties of those subsystems, and the relationships among them.

Because design patterns are not taught here, prior knowledge of design patterns is expected from you. For anyone who has not had that exposure, recorded lectures on design patterns are referenced and you can go through them to catch up. You do not need to memorize design patterns to follow this course, but you are expected to have met them before.

1.1.2 Architecture as an Outline Blueprint

The word blueprint was used in the opening answers, and it fits. Software architecture is the outline blueprint of a system. The architect's decisions determine things like: what subsystems the system is made of, what the major recognizable components of the system are — and importantly, these are components, not classes as in software design — which aspects of the software system need to be taken up by the architect, and why. This distinction between components (architecture-level) and classes (design-level) is the first sharp line drawn between the two disciplines.

Working definition (outline blueprint). Architecture separates the overall structure of a system — its subsystems and their interfaces — from the internal details of the individual subsystems. A classic formulation captures the idea precisely: the software architecture of a program or computing system is the structure or structures of the system, comprising software elements, the externally visible properties of those elements, and the relationships among them. Three things matter in this definition:

  1. Structure or structures — architecture is not one single diagram. It is usually studied through several views (for example, a structural view showing subsystems, a dynamic view showing how they interact, and a deployment view showing where they run), because one picture cannot show how a system is organized, how it behaves, and where it is installed all at once.
  2. Externally visible properties — what matters is how each component presents itself to the rest of the system (its interface, its responsibilities), not its private implementation details. A component can therefore be treated as a black box: its implementation is hidden behind a well-defined interface.
  3. Relationships among elements — architecture is as much about the connections (who calls whom, which subsystems depend on which, how data flows) as about the elements themselves.

Later in the course the material moves into styles, views, and what is described as the three structures, which are the formal ways an architecture is organized, presented, and studied. The architectural decisions themselves are taken early because once they are fixed, they are expensive or impossible to change.

Assumption — architecture decisions are early decisions. The blueprint is drawn before the walls are built. An architecture is decided up front, and the reason is economic: the cost of changing a decision grows with time. Choosing an operating system, a database, or the division into subsystems in week two costs an afternoon of discussion; changing that same decision after implementation can cost months of rework, and some decisions (say, the data model behind a bank's core ledger) become practically impossible to reverse. This "decide early, pay later" property is exactly why the architect's job carries so much weight.

Pitfalls (fresh-student traps):

  • Treating components like classes. A component is a self-contained unit with a well-defined interface — a subsystem, service, or deployable unit — not a class. Saying "the system has 400 components" when you mean classes mixes the two levels and blurs the line between architecture and design.
  • Expecting one canonical architecture diagram. There is no single "the architecture." Different stakeholders need different views, and a good architect deliberately presents the view that answers the question at hand.
  • Believing the blueprint is the building. The architecture document is a model of the system, not the system. The architecture is realized in the running system, and the two drift apart unless conformance is checked.

1.1.3 Architecture as Art and Science

Many people believe that a good thinker is a good dreamer — that the architect simply sits, closes his eyes, and produces a beautiful picture. There is some truth in that. Software architecture is a bit of an art and a bit of a science. But there is a lot of science in it, and the whole point of the course is to study the science of architecture. That scientific grounding is also what lets someone who wants to go into research proceed on a research path afterwards.

Intuition — the art is in the judgment, the science is in the method. The art of architecture shows up in the choices no formula can make for you: balancing two conflicting qualities, sensing which requirement will quietly become critical, persuading stakeholders that a decision must be made now. The science shows up in everything checkable and learnable: what an ASR is, how quality attributes are defined and measured, what patterns and styles exist, how views are constructed, why some decisions are irreversible. Art without science is guesswork; science without art is a process with no judgment. This course deliberately builds the scientific half so the artistic half has something rigorous to work with.

The course states a clear outcome: by the end you should be able to identify the architecturally significant requirements (ASRs) of a system. This is a piece of terminology to give a lot of importance to. An ASR is a requirement that genuinely shapes the architecture — a requirement the architect must take into account when making structural decisions. Understanding what makes a requirement architecturally significant is a recurring theme, and the term comes back again when the assignments are explained.

ASR (architecturally significant requirement). A requirement is architecturally significant when its presence or absence would lead to a dramatically different architecture. Not all requirements are created equal: most of what sits in a requirements specification — individual features and functions — shapes the architecture very little. The ASRs are the ones that force structural choices: a hard performance target (respond in under 100 ms) may force a different decomposition than a modifiability goal (add a new payment method every quarter). ASRs often, but not always, take the form of quality attribute requirements — performance, security, modifiability, availability, usability — and they are the requirements an architect hunts for first when a project begins, usually by talking to stakeholders rather than by waiting for the requirements document to be finished.

Pitfalls:

  • Equating "important" with "architecturally significant." A requirement can be critical to the business yet leave the architecture untouched (a regulatory label printed on an invoice changes a string, not a structure). Only requirements that change structural decisions are ASRs.
  • Treating architecture as pure artistry. Waiting for inspiration instead of applying method. The course exists because the science is teachable — definitions, attributes, patterns, views, and evaluation are all systematic.
  • Assuming the blueprint is fixed forever. Architecture decisions are early and expensive to change, but the discipline includes techniques for evolving architectures; "decide early" does not mean "never revisit."

Recap + bridge. Software architecture is the high-level, blueprint-level design of a system — components and their relationships, decided early, part art and part science, and guided by architecturally significant requirements. The natural next question is: what makes one blueprint better than another? The answer begins with the quality attributes the system must exhibit, which is exactly where the lecture goes next.

In practice, this positioning matters beyond the classroom. Enterprises routinely call in architects precisely because business owners and development teams "are not on the same page": the architect's blueprint is the shared artifact that lets business goals, non-functional expectations, and engineering reality be discussed on one document. A future-ready, scalable, resilient enterprise solution starts from decisions made at this high level — the layer where a mistake is cheapest to fix and most expensive to ignore.

1.2 Quality Attributes and the Architect's Commitments

Hook: A system can do everything its specification demands and still fail. How? Because the customer was never really buying the functions on the list — they were buying qualities: how fast, how available, how secure, how easy to change, how pleasant to use. This section explains what those qualities are, why they must be designed in from the start, and why the architect is personally accountable for them.

1.2.1 The Quality Attributes of a System

Architecture has a major impact on the quality attributes of the software system that is created. That is one reason the opening answers used words like scalable and robust. Quality attributes are not just influenced by the architecture — they are totally determined by it. The architecture does influence other, non-quality attributes too, but the quality attributes are decided at the architectural level.

Quality attribute (QA). A quality attribute is a measurable or testable property of a system that indicates how well the system satisfies the needs of its stakeholders. Note the word measurable: "fast" is a feeling, "responds within 100 ms" is a quality attribute. This is the single most important idea in this section — the whole discipline of building qualities into a system depends on being able to state them precisely.

Why the architecture decides them. The structure of a system — its components, their interfaces, and their relationships — directly enables or blocks every quality. There is no quality attribute that can be achieved "later," because each one maps to structural choices:

  • Performance depends on how components communicate, where the hot paths are, and what shared resources exist.
  • Modifiability depends on which components are coupled to which, and what is hidden behind interfaces.
  • Availability depends on how components take over for each other when one fails.
  • Security depends on which components hold data, and how they protect it from the rest of the system.
  • Testability depends on whether components expose their state in controllable, observable ways.

That is why the lecture states it so strongly: quality attributes are totally determined by the architecture. Choosing the wrong structure chooses the wrong qualities, whether anyone intended that or not.

The quality attributes this course stresses are: performance, modifiability, security, scalability, reusability, availability, testability, and usability. There are a few others as well that are not all listed, but these are the ones the course keeps returning to.

Quality attribute Plain meaning What the architecture must provide
Performance How fast the system responds and how much it gets through Communication paths with bounded time behaviour; controlled sharing of resources
Modifiability How cheaply the system can be changed during and after development Well-defined interfaces; change isolated behind information-hiding boundaries
Security How well the system resists and survives attacks Clear trust boundaries; protected access to data and functions
Scalability How well the system grows after deployment Structure that allows adding capacity (more users, data, load) without redesign
Reusability How much of the system can be reused in other products Self-contained components with clean interfaces, usable outside the original application
Availability How much of the time the system works, and how it recovers from failure Redundancy and failure-handling mechanisms between components
Testability How easily the system's behaviour can be observed and controlled during testing Components whose state can be inspected and driven independently
Usability How easily and pleasantly users can accomplish their goals Separation of the user-interface details from the rest of the system so they can be tuned

One useful distinction: some of these attributes are system quality attributes — they need both hardware and software to be achieved (performance, availability, security all depend on machines, networks, and code together), while others are purely software attributes (modifiability, testability, reusability depend only on the code's structure). Both kinds are architectural concerns, because even the hardware-dependent ones are enabled or blocked by the software's structure.

1.2.2 Quality Must Be Marinated, Not Sprinkled

The client believes that requirements get fully communicated, yet many of the most important requirements are never stated — they are taken for granted, and they surface only when the bill is due and the customer is not satisfied with what was delivered. That gap sometimes ends in major controversy. The conventional software requirement specification (SRS) documents only the input forms, output forms, computation logic, and business logic. A system that correctly produces every input, every output, and every computed result can still fail the customer, because the customer is actually looking for performance, availability, maintainability, testability, security, and scalability.

Intuition — the marination analogy. Quality cannot be sprinkled over an end product like salt, pepper, red pepper, cloves, and masalas served at the table for people to add as they please. Anyone who appreciates Indian food knows that is not how quality gets into food — the quality has to be marinated into the dish, which means it enters before you even start cooking. The same applies to software. Quality must be marinated into the system from the beginning, before the system is built. Quality comes in even before you start cooking up the system.

Where the analogy holds: marination is invisible in the raw ingredients and unmistakable in the finished dish — exactly like quality attributes, which appear nowhere in the feature list and yet dominate the customer's verdict. Where it must be adjusted: food can be re-marinated with a good sauce afterwards; software quality largely cannot — an architecture that chose the wrong qualities can rarely be fixed by later patches.

Assumption — the SRS alone is not the contract. The conventional software requirements specification records what the system must do: input forms, output forms, computation logic, business logic. Qualities are precisely the things it tends to omit, because they are hard to write down and often assumed to be free. The assumption that "of course it will be fast/secure/maintainable" is the most expensive unstated requirement in software. The architect's job is to treat unstated qualities as missing requirements, surface them, and make them explicit and measurable — before the customer does it at the bill.

1.2.3 Quality Is Measurable and Negotiated

Someone in the room says quality is not measurable. That claim is rejected directly. Quality is measurable, and learning how to measure it is part of the course. You have to deliver the quality you commit to, and you decide what to commit only after negotiating it with the stakeholders. You decide exactly what level of performance, availability, security, and scalability you are going to provide. This is a different way of thinking about the architect's job: the architect does not just build to a specification, the architect negotiates what quality will be delivered and then commits to it.

Q: Some people say quality is not measurable. A: Quality is measurable. That is what we learn in this course. You negotiate the level of performance, availability, security, and scalability with the stakeholders, commit to a specific level, and then you have to deliver exactly what you committed.

Formalize — how a quality is made measurable. The way to turn a vague quality into a measurable one is to write it as a quality attribute scenario: a concrete statement with six parts — the source (who or what triggers the interaction), the stimulus (what happens), the artifact (which part of the system responds), the environment (operating conditions), the response (the system's observable behaviour), and the response measure (the number that decides pass or fail). When all six parts are filled in, the quality has become a measurable, testable commitment.

Worked example — turning "must be fast" into a commitment. Take a customer's opening demand: "The system must be fast." The word "fast" is asserted as a plain fact, but the demand itself only becomes real once it is unpacked into a scenario:

  • Source: a logged-in customer using the web application
  • Stimulus: submits a search query
  • Artifact: the search service
  • Environment: normal operation, 1,000 concurrent users
  • Response: the first result page is rendered
  • Response measure: within 100 ms, for 95% of requests in a one-hour load test

Now there is a number to negotiate. The stakeholder might accept 100 ms at 95% or demand 50 ms at 99.9% — and each level carries a different cost and a different architecture. Once agreed, the commitment is written down and the architect signs for it: "95% of searches return their first page within 100 ms under 1,000 concurrent users." Measurable, testable, and legally enforceable between the two parties. Sense-check: the scenario passes the test if a load test with those exact parameters confirms the bound — nothing subjective remains.

A second, equally common example is availability, which is typically stated as a percentage: "99.9% available." Because a year has 365 × 24 = 8,760 hours, 99.9% availability permits only 0.1% of that — 8.76 hours — of downtime per year. Moving the goal to 99.99% cuts the allowed downtime to 52.6 minutes per year and typically forces a visibly different (redundant, failover-capable) architecture. The same technique applies to security (what threats, what detection time, what recovery time), scalability (how many users at what response time), and every other attribute on the list.

Pitfalls:

  • Committing to a quality without a number. "We will make it secure" is not a commitment; "we will detect a denial-of-service attack within 60 seconds and shed load without dropping sessions" is. Numbers are what make negotiation possible.
  • Negotiating after building. Quality negotiated with stakeholders at the end of the project is not negotiation, it is a dispute. The negotiation happens up front, in the same conversation where the features are agreed.
  • Measuring quality with vibes. "It feels fast enough in testing" is not a response measure. The response measure must be stated so that a test can decide pass/fail objectively.

1.2.4 Usability as the Emerging Most-Important Attribute

Usability has emerged in the last five to ten years as the most important quality attribute of a system. A concrete example of what a usability requirement looks like: think of how WhatsApp interacts with you. A usability requirement might state that a page should carry no more than so many controls, that a particular type of control must be used, that each item should have a question-mark symbol with help support, and that the user should be able to reverse any activity before committing it. These are the kinds of attributes that make a system usable, and they are specified and measured just like any other quality attribute.

Worked example — WhatsApp's "undo before commit" as a measured scenario. Consider the requirement that a user can reverse any activity before committing it. Concretely: WhatsApp lets you delete a message you just sent — not forever, but within a short window, and the recipient sees a "message deleted" marker instead of the content. Written as a scenario:

  • Source: a user who just sent a message
  • Stimulus: requests deletion within the allowed window
  • Artifact: the messaging client and the message service
  • Environment: normal operation, sender and recipient online
  • Response: the message is removed from the recipient's view and replaced by a deletion notice; no copy remains on either device
  • Response measure: the deletion is available within 60 seconds of sending, for 100% of eligible messages

The lesson of the WhatsApp example is that usability requirements are requirements: they constrain the structure (the client must keep the message recoverable until the window expires; the service must support a delete operation that propagates), and they are specified and measured exactly like performance or availability. A usability target written this way is as testable as any other quality commitment.

The reason usability has risen to the top is commercial: with competing products one tap apart, the product that is frustrating to use loses users regardless of its features. Two systems with identical functions differ in market value almost entirely through usability. That makes usability the quality attribute the modern architect must weigh first — which is exactly why the course flags it so prominently.

Recap + bridge. Quality attributes are measurable, negotiable commitments that are totally determined by the architecture, so they must be marinated in from the start — never sprinkled on at the end — with usability having emerged as the most important of them. The natural follow-up question is: where do these quality commitments actually come from? The answer introduces the distinction between functional and non-functional requirements, which is the next topic.

In industry, the marinated-not-sprinkled principle is exactly what separates architecture practices from feature factories: cloud providers, banks, and e-commerce platforms publish availability and latency targets as contracts precisely because their customers learned to demand measured qualities. A modern engineering organization treats a 99.99% availability commitment as a first-class requirement with its own architecture — redundancy, failover, chaos testing — rather than a hope applied at release time.

1.3 Functional and Non-Functional Requirements

Hook: If the functional requirements are documented so well, and the industry is so good at delivering them, why do software projects still end in disaster? The answer hides in the requirements that were never written down — the non-functional ones. This section shows where they hide and why the architect must drag them into the light and get a signature.

1.3.1 The SRS Blind Spot

Functional requirements are what the SRS documents: inputs, outputs, computation logic, and business logic. The IT industry is very well geared to take care of functional requirements — documenting them and making commitments around them is not really a concern. But the actual implementation of a system has very little to do with the functional requirements. Coding has to do with functional requirements — though even in coding you can sometimes satisfy non-functional requirements. The deeper point is that what the coder will do has been determined before the coder gets into action: in design, and before design, in architecture. The architecture gives the overall high-level picture; the designers, understanding the motivation behind the architecture, make sure the design systems they build achieve the requirements.

Functional requirement (FR). A functional requirement states what the system must do: a given input produces a given output, a computation produces the right result, a business rule is enforced. It lives in the SRS, and the industry is genuinely good at documenting it and committing to it.

Non-functional requirement (NFR). A non-functional requirement states how well the system must do it: how fast, how available, how secure, how easy to change. These are the quality attributes of the previous section, and they are the requirements that decide the architecture.

The decision chain. The lecture's deeper point is that the coder's freedom is an illusion: by the time code is written, the important choices have already been made. The chain runs top-down — architecture sets the high-level picture (components, relationships, qualities), design refines it (how each component is built, what classes and modules it contains), and coding realizes it. A coder can nudge a quality here and there, but the qualities that matter were settled when the structure was chosen. This is why the SRS's blind spot is fatal: the document that everyone treats as the contract is exactly the document that says nothing about the qualities the structure must deliver.

Assumption — "it will be handled in coding" is false. Expecting implementation to fix missing qualities assumes quality is a coding concern. It is not. Once the architecture is set, the coder can only tune what the structure permits — a monolithic architecture cannot be made scalable by clever code, nor can a tightly coupled one be made modifiable. Quality arrives through the chain, not despite it.

1.3.2 Non-Functional Requirements Must Be Coaxed Out

Non-functional requirements (NFRs) are also customer requirements. But very often the architect has to coax them out of the customer. Sometimes it reaches a point where the architect has to first educate the customer that these things are non-functional requirements, and then ask the customer to sign off: this is what you require. NFRs are expensive — achieving them costs much more than achieving the functional requirements — and the customer would not pay for them if the customer did not require them. So they are very much real requirements, just harder to surface.

Intuition — why NFRs hide. Nobody walks into a requirements workshop and announces "I require availability" the way they announce "I require a search box." Qualities are assumed, like air: the customer assumes speed, security, and uptime are free properties of "a computer system." Because the customer does not say them, they never enter the SRS; because they never enter the SRS, nobody prices them; because nobody prices them, nobody designs for them — until the delivered system is slow, fragile, and insecure, and the customer refuses to pay. The architect's job is to educate the customer that these are requirements, then coax out the levels, then get them signed — because an NFR nobody signed for is a cost nobody approved.

Q: What happens when a client never specifies non-functional requirements but expects them in the end product anyway? A: That is your job as an architect: decide them right in the beginning, then tell the client these are your requirements and you had better sign off. Otherwise you land up in a mess. Many of the litigations in software deliveries have to do with NFRs. One company I represented went into litigation even after being advised that it was a losing case, because the people writing the documents did not share the emotional connect of the top people with the client, and the expectation gap did the rest.

The litigation story carries the whole lesson: the dispute was not about whether the software worked — it was about whether the software was as the client expected. Documents had been written by people who did not feel the client's expectations, the expectation gap grew until it could only be resolved by lawyers, and the case was lost because the expectation had never been converted into a signed requirement. The only protection is writing the NFR down, with a number, and getting the signature before the work starts.

Pitfalls:

  • Treating NFRs as optional extras. An NFR is a customer requirement like any other — it is simply harder to surface. Optional extras do not cause litigation; unstated requirements do.
  • Assuming the customer knows what an NFR is. Many customers have never heard the term. The architect must educate first, then negotiate — skipping the education step produces a signature on words the customer does not understand, which is no protection at all.
  • Leaving the expectation gap to luck. If the document writers do not share the client's expectations, the gap widens until it becomes a dispute. Sign-off is the mechanism that closes the gap while it is still cheap to close.

1.3.3 The Architect's Sign-Off Responsibility

The architect works toward the functional requirements, the non-functional requirements, and the constraints. Getting the NFRs written down and signed early is what protects everyone. The requirements the architect commits to become the basis for everything that follows, and the architect also explains to the stakeholders why the chosen architecture is necessary and what it will achieve by way of NFRs.

The architect's triple mandate. The architect works against three kinds of input at once:

  1. Functional requirements — the system must do these things.
  2. Non-functional requirements — the system must do them at these measured levels.
  3. Constraints — the system must do them within these limits (platforms, policies, budgets; the subject of the next section).

The sign-off is not paperwork — it is the moment the requirements stop being the client's hopes and become the architect's commitments. Everything that follows (the architecture, the design, the estimate, the delivery) is measured against the signed set. And the architect's duty is not finished with the signature: the architect must also explain — why this structure, what each choice buys, and how the committed NFRs will be achieved — because stakeholders who understand the architecture can defend it, and stakeholders who do not will attack it at the first setback.

Recap + bridge. Functional requirements live in the SRS and are well handled by industry; non-functional requirements must be coaxed out of the customer, priced, and signed for, because they are the expensive ones and the ones that cause the lawsuits. But requirements are only half of what shapes an architecture — the other half is what the architect is not free to choose: the constraints, which come next.

In industry this sign-off practice is institutionalized as service-level agreements (SLAs): the measurable NFR commitments (uptime, latency, throughput) that a provider signs with a customer, with penalties attached. Every litigation-avoidance lesson of this section is built into the SLA discipline — and the same discipline, applied a layer down, is what the architect applies to every project, with the client's signature in place of a legal document.

1.4 Constraints and Early Design Decisions

Hook: How much of an architect's freedom is real? Less than it looks: part of the blueprint is dictated before the architect draws anything — and discovering that too late is how projects die. This section separates what the architect must accept (constraints) from what the architect must decide early (foundation choices), and shows why both are architectural decisions rather than implementation details.

1.4.1 Constraints: Hardware, Software, and Client Policy

A constraint can be ridiculous. The customer may say: use any RDBMS you like, as long as it's Oracle. What does that mean? It means the customer wants Oracle, only Oracle, because all of the customer's systems work using Oracle. That is a constraint. Constraints can come from the choice of hardware, the choice of software, or the client's internal policies. If a company has a policy decision that it will not use any product from a given vendor, that becomes a constraint. For example, if a retailer were to decide it will not use storage on a particular cloud provider, that decision becomes a constraint on the architecture. The constraint also interacts with your team's talent: a team that is very conversant with a specific storage system may be useless if the company policy forbids that storage, and you will need different skill sets. Better to discover that early. If you build for months and then discover a constraint, the investment is wasted and the regret is permanent.

Q: What does a constraint actually look like? A: The customer may say "use any RDBMS you like, as long as it's Oracle." That is a constraint — they want Oracle only, because all their systems work on Oracle. Constraints can also come from the choice of hardware, the choice of software, or the client's internal policies, such as a policy never to use a particular vendor's product.

Constraint. A constraint is a design limit the architect cannot negotiate away — a requirement that the architecture must fit within, rather than a goal the architecture strives for. Three common sources:

  1. Hardware constraints — the machines, devices, and networks the system must run on (a warehouse system must run on the existing handheld scanners; an embedded system has 512 KB of memory).
  2. Software constraints — mandated platforms and products ("Oracle only", "Windows Server only", "Java 17 only").
  3. Client policy constraints — organizational rules that are not technical at all (no products from vendor X, no storage on cloud provider Y, data must stay in-country).

The Oracle example shows how a constraint is born: the customer's existing estate (all systems on Oracle) turns into a technical rule ("use any RDBMS you like, as long as it's Oracle") — the "any you like" is real, and the "as long as it's Oracle" is real too. The rule is not about database quality; it is about operational reality: the customer has the skills, the licenses, the backup practices, and the disaster-recovery procedures built around Oracle.

Assumption — constraints and team talent interact. A constraint does not just bind the architecture; it binds the team. A team deeply skilled in a storage system that company policy forbids is the wrong team for the project, and finding that out after months of building means replacing both the team and the architecture. Constraints must be inventoried before staffing and before building: a constraint discovered late is a wasted investment with permanent regret — the cost is sunk, and the only choices left are expensive ones.

Pitfalls:

  • Negotiating a constraint as if it were a preference. "Use Oracle" said as a constraint is not an invitation to argue database merits. Treating it as negotiable wastes the client's trust; the professional move is to accept it and design around it.
  • Discovering constraints by accident. Constraints not collected up front surface later as "why didn't you use our mandated platform?" — at which point months of work must be redone.
  • Hiding constraints from the team. If the team does not know the policy, they will design the happy path — with the forbidden product — and the discovery lands during review instead of during planning.

1.4.2 Early Design Decisions

Certain design decisions should be taken early so that the people designing the various aspects of the system can make sure compatibility is achieved. There are interfaces that have got to be matched. Early design decisions include: which operating system to use, what form of RDBMS to use, whether you will use a NoSQL setup or pure SQL, whether you will use flat files, whether you will use local storage or remote storage, and — for a mobile application — where data lives on the device. There is an RDBMS available in every mobile device called SQLite; it is present in Apple and Android devices. So some data may live in SQLite, some in file storage, and some in other storage mechanisms provided within the programming languages on the mobile platforms. These small decisions are taken early to make sure they facilitate the type of working you want from the system.

Early design decision. An early design decision is a foundation choice made before detailed design begins, so that every designer and every team building a part of the system works against the same ground rules and the interfaces they produce will actually match. Typical early decisions:

  • Operating system — every other technology decision sits on top of it.
  • Data storage paradigm — relational (SQL), NoSQL (document, key-value, graph), or flat files. The choice is a paradigm choice: it decides how the data will be queried, scaled, and evolved, not merely which vendor's product is installed.
  • Storage location — local (on the machine/device) vs remote (central servers, cloud). The location decides latency, offline behaviour, and security boundaries.
  • Mobile data placement — where data lives on the device. Every Apple and Android device ships with an embedded relational database, SQLite, so an app may keep some data in SQLite, some in file storage, and some in the storage mechanisms the platform's programming language provides — and that split is decided up front.

The lecture's point about compatibility is the key: interfaces must match. If one team designs around SQL and another around flat files, or one around local storage and another around remote storage, the subsystems cannot be joined. The early decision exists precisely to make those interfaces match before anyone builds against the wrong assumption.

Assumption — "small" does not mean "cheap to change." These look like small details compared to the architecture itself, but each one locks the system onto a platform or paradigm. Switching an OS, migrating SQL to NoSQL, or moving data from device to cloud is a project of its own once the system is built. They are decided early because they are cheap to decide and expensive to reverse — the same economics as the architecture itself.

1.4.3 Asynchronous Processing as an Early Decision

Asynchronous processing is explained with a working definition: it is a way to process two activities in parallel. Running two activities in parallel is only possible if one activity does not have to wait for a response from the second activity before it can proceed to the next step. So you initiate both activities and let them meet up at a later phase. An example: you make a request to a server for certain information, and while the request is being processed you continue some other activity — maybe you are doing data entry and you keep entering. As soon as the data becomes available, it updates certain fields and you continue working from there. Decisions like this have an impact on usability and on performance, which is exactly why they are early design decisions rather than implementation details.

Asynchronous processing (working definition). A way to process two activities in parallel: you start both, neither waits for the other's response before proceeding, and they meet up at a later phase. Contrast this with synchronous processing, where one activity hands work to another and stops until the reply arrives — the "wait" is the defining difference.

Dimension Synchronous Asynchronous
Requesting activity Stops and waits for the reply Continues working
Response Required before the next step Arrives later; updates in place
User experience Progress visibly blocked Work continues; results appear when ready
Architecture impact Simple call/return, easy to reason about Needs queues, callbacks, or event mechanisms
Typical fit Small, fast, local operations Long operations, remote calls, background work

When to pick which: synchronous when the caller genuinely cannot proceed without the result and the operation is fast; asynchronous when the operation is slow, remote, or the user's flow should not freeze — most real systems mix both.

Worked example — background stock check during order entry. An order-entry application needs to validate that each item is in stock before confirming an order. Synchronous version: the user fills in an item and waits (screen frozen) while the server checks inventory, then enters the next line. Asynchronous version:

  1. The user enters an order line and submits it.
  2. The client sends the stock-check request to the server and immediately returns the screen to the user — entry continues; the user keeps typing the next lines.
  3. Meanwhile the server checks inventory in the background.
  4. When the server's response arrives, the client updates the affected fields in place — a stock-out appears as a highlighted warning on the already-typed line.
  5. The user reviews the completed form with all results in place and confirms the order.

Sense-check: the user never waits on the network; the total working time is one data-entry pass plus one review pass instead of one pass per line. The price of the improvement is architectural: the client must manage outstanding requests, handle out-of-order responses, and reflect late results in the UI — which is why the decision is taken at the architectural level, early.

Pitfalls:

  • Making everything asynchronous "for performance." Asynchrony buys responsiveness at the cost of complexity — late arrivals, ordering, error handling, and UI updates all become harder. Slow and truly parallelizable operations earn it; short local calls usually do not.
  • Assuming asynchrony is a coding detail. Choosing sync vs async changes interfaces, state handling, and error semantics across the whole system. It is an early design decision, exactly because it shapes usability and performance — the lecture's two named impacts.
  • Forgetting the "meet up" phase. Asynchrony is not "fire and forget": the two activities must rendezvous somewhere (a callback, a queue, a status flag). Designs that start the parallel activities but never plan the rendezvous lose results silently.

Recap + bridge. Constraints — from hardware, software, or client policy — bound the design and must be discovered before investment is sunk; early design decisions — OS, storage paradigm, storage location, mobile data placement, async vs sync — lock the foundation so every team builds matching interfaces. With the inputs (requirements) and the boundaries (constraints) in hand, the architect can finally ask: what reusable shapes exist for building the structure itself? That is the world of architectural patterns, the next topic.

Every mobile app in production is a working demonstration of this section: the platform (iOS/Android), the embedded SQLite database, the local-versus-remote storage split, and the asynchronous background fetch that updates the screen without freezing it are exactly the early decisions this lecture describes — made once, at the start, and lived with for the life of the product.

1.5 Architectural Patterns vs Design Patterns

Hook: Every experienced developer has the feeling of "I have solved this before" — different project, same problem, and the solution they already know works. Patterns are that feeling turned into a discipline. The question is at what level the problem lives: in the classes, or in the structure of the whole system. This section draws the line.

1.5.1 Patterns as Reusable Solutions

There is something called architectural patterns, and they are different from design patterns. This course discusses architectural patterns. A pattern is a regular, reusable solution to a problem: a problem of a particular type, arising in a particular context, solved with a particular solution. So the pattern captures the problem, the context, and the solution together, so that when you meet the same situation again you can apply the solution you already know works. Design patterns are the same idea applied at the level of code and class structure; architectural patterns apply at the level of system structure.

Pattern. A pattern packages three things as one reusable unit:

  1. Problem — the recurring difficulty (of a particular type).
  2. Context — the situation in which that problem arises (the conditions that make the problem appear).
  3. Solution — the structure or arrangement that resolves it, known to work in that context.

The key word is reusable: because the same situation keeps arising, the same solution keeps applying. Instead of reinventing the solution each time — the "reinventing the wheel" trap — the architect recognizes the situation, reaches for the pattern, and adapts it. The same idea works at different scales, which is exactly where the levels of patterns are separated:

Dimension Design patterns Architectural patterns
Level of application Code and class structure Structure of the whole system
Grain size Small group of collaborating objects (a "microarchitecture") Large-grained; the structure of major subsystems
Canonical example Factory, Observer, Strategy (Gamma, Helm, Johnson, Vlissides — the "Gang of Four" — 1995) Layered architecture, client–server, pipes-and-filters
What it decides How a few classes cooperate to solve a local problem How the system is divided into subsystems and how they connect
Consequences Local: affects a module's design Global: enables or blocks quality attributes

Below both sits a third, smaller level: idioms — patterns so specific to one programming language that they describe implementation technique (a C++ or Java idiom) rather than structure. The three levels form a ladder from system structure (architectural) down to code technique (idioms), with design patterns in between.

Intuition — patterns as a chess opening library. A chess player does not derive the opening from first principles at the board; they recognize the position, recall the opening that handles that position, and adapt the moves to the opponent. A pattern works the same way: recognizing the situation is the skill. Without patterns, every architect re-derives the same structures from scratch — with patterns, the profession accumulates knowledge: a solution that took someone else years of failures to find is available in a paragraph. This is also why pattern ideas crossed into software from building architecture — Christopher Alexander described the timeless way buildings are shaped by recurring solutions long before the software community (via the Gang of Four and later the POSA series) adapted the idea to code and then to system structure.

1.5.2 Prior Knowledge of Design Patterns

Because the course is about architectural patterns, design patterns themselves are not taught here. From an examination point of view, the paper setters who contribute the exam are instructed not to give any question that is purely on design patterns. Still, you are expected to have prior exposure to design patterns. If you have not, the recorded design-patterns lectures are easy to understand, and you do not need to understand coding to grasp them. Knowing how to code does give you a connection to them — the instructor, who codes, finds that connection — but it is not necessary.

Exam note: The exam will not contain any question that is purely about design patterns — the paper setters are explicitly instructed on this. Design patterns are background knowledge: expected, used for understanding, but not examined as a standalone topic. Architectural patterns are the examined material.

Q: Will we learn design patterns in this course? A: No. This is not a design-patterns course. We study architectural patterns here, which are different — patterns are regular solutions to a problem of a particular type in a particular context. You are expected to already know design patterns; if not, the recorded design-patterns lectures are easy to follow and you do not need to understand coding to grasp them.

Pitfalls:

  • Memorizing pattern catalogues. The exam does not test design-pattern catalogues, and this course is about recognizing architectural situations and their solutions — pattern names are a means, not the end.
  • Applying an architectural pattern at the wrong grain. Using a class-level (design) solution where a subsystem-level (architectural) decision is needed, or vice versa, produces a structure that works locally and fails globally.
  • Confusing "pattern" with "framework." A pattern is a described solution you adapt; a framework is a concrete body of code. Patterns teach structure; frameworks deliver structure — they are different tools.

Recap + bridge. A pattern bundles problem, context, and solution for reuse; design patterns do this at the class level, architectural patterns at the level of system structure — and this course (and its exam) lives at the architectural level. Knowing that patterns exist raises the obvious question: why go to the trouble of choosing a structure at all? The answer is the subject of the next topic — the benefits architecture brings: communication, modularity, and the management of change.

In industry, the pattern ladder maps directly onto job levels: a developer solves local problems with design patterns, an architect solves system-level problems with architectural patterns, and both are expected to recognize the situation before inventing anything. Enterprise solutions are routinely described in interviews and design documents by their architectural patterns ("it's a layered system with an event-driven core") — the pattern name is the fastest, most precise description of a system's structure that exists.

1.6 Benefits of Architecture: Communication, Modularity, and Change

Hook: Why does the architect draw the structure before anyone builds anything? Not for the drawing's sake — for what the drawing makes possible. A good architecture is not just a blueprint of a system; it is the first communication with stakeholders, the mechanism for reuse, and the tool that decides whether a change costs one team an afternoon or the whole project a rewrite. This section is the "why bother" of everything before it.

1.6.1 Stakeholder Communication

The architecture document is the first view the stakeholders get of what will probably come to them. It is the first document that lets a stakeholder know what to expect. The architect discusses with the stakeholders — and the course will engage with how those discussions are conducted: what the topic is, what the form of negotiation is, and how you come to consensus. The architect not only presents the architecture but also explains why this architecture is necessary and what it will achieve by way of NFRs. That explanation is the important part. Stakeholder engagement improves when an architecture exists, because people come to know where you are heading and what they are going to expect.

Architecture as the first communication. Long before there is anything to demonstrate, the architecture document is the first tangible artifact stakeholders can react to. It tells them what will come, at the level where they can still influence it — a functional prototype shows what the system does, but the architecture document is the first thing that shows what the system is. Three consequences follow:

  1. Negotiation happens early, on structure. The lecture signals a course theme: how the architect discusses with stakeholders — the topic, the form of negotiation, reaching consensus. These discussions are about the architecture and its commitments before investment, not about the finished product after.
  2. Explanation is the job, not presentation. Presenting the architecture is trivial; explaining why this architecture is necessary and what it achieves by way of NFRs is the substance. A stakeholder who understands the reasoning can defend the choices; one who only sees the picture will challenge every line of it later.
  3. Engagement rises with direction. People commit to a journey they can see. Knowing where the project is heading and what to expect is what converts passive clients into engaged stakeholders — engagement is an output of the architecture, not a prerequisite.

Pitfall — the presentation trap. Treating the architecture review as "show the diagram, collect applause" and skipping the why/achievement explanation. When the first crisis arrives, a stakeholder who never understood the reasoning will treat the architecture as the problem — the explanation that should have happened at review time gets relitigated at the worst possible moment.

1.6.2 Modularity, Reuse, and Divide and Rule

Architecture helps you create a design in a form such that components can be reused. Reusability comes in because you may use ready-made components, or you may construct components that can be used in different situations. The moment we talk about architecture we bring in modularity. The architect does not think of creating everything ab initio (from scratch); an architect likes to work with proven technologies, so if a particular sub-module is proven, it can be brought into the overall solution.

There is a classical idea here: divide and rule. Divide and rule is convenient for any administrator because when you divide things into smaller groups, entropy reduces — there is less confusion, and you have specialists working together. In a software system the same idea applies: a module that does a particular purpose is put into one unit, a separate team can work on it, and the interfaces between units are precisely defined. Once you have the architecture you can orient all the teams to work towards it. And if you want to give anyone a skeletal idea of what the system is about, you present the architecture and they know what the system is about.

Modularity. The architecture divides the system into units (modules) such that:

  • Each module has one clear purpose — a unit that does a particular thing is put into one place.
  • A separate team can own and build each module — parallel work becomes possible.
  • Interfaces between units are precisely defined — teams agree on the seams first, then build their sides against them.

Reuse follows from modularity. With modules as units, reuse has two directions: importing proven components from elsewhere (an architect prefers proven technology over building from scratch — never "ab initio"), and exporting components built once that can serve different situations. Reuse is not an accident of coding style; it is a property of the structure.

Divide and rule. The classical administrative idea: dividing things into smaller groups reduces entropy — less confusion, specialists working together. The lecture's insight is that this is not management advice applied to software; it is the same mechanism: a system divided into purpose-held modules has less confusion (each module is small enough to reason about), specialists work on their module, and the team is oriented — everyone aims at the same architecture. And the architecture doubles as the skeleton: presenting it is enough to convey what the whole system is about.

Worked example — the payroll system, divided. A monolithic payroll system is a single, entangled program: tax logic, employee records, payslip printing, and bank-file generation all mixed together. Any change is risky because the blast radius is the whole program.

  1. The architect divides the system into modules by purpose: employee records, tax calculation, payslip generation, bank-file export.
  2. Interfaces are defined first: tax calculation consumes employee data and produces a per-pay-slip tax figure; bank-file export consumes final amounts; nothing else.
  3. Teams are oriented: team A builds employee records, team B the tax engine, team C the exports — in parallel, against the same interface contracts.
  4. A ready-made library for bank-file formats is imported as a proven component instead of being written from scratch — ab initio avoided.

Sense-check: before a single screen exists, each team knows exactly what it owns, what it must accept and produce, and where it plugs in. Presenting the module diagram to a new stakeholder is the skeletal idea of the whole system.

1.6.3 Managing Change and Localizing Impact

Once you fix an architecture, you can manage change much better. The point of predicting system quality is really early determination: with the quality attributes and architectural decisions set, you can determine what type of quality attributes the system will have. A good architecture is one where you estimate the changes and plan them in such a way that almost any change that actually comes up as a requirement will not impact the architecture. Changes that will have ramifications in a single submodule do not even need to come back to the architect — the development team will take care of them. Changes that affect multiple modules are still not a major issue: the modules remain as they are, and you engage the people involved in each of the modules to get the changes done. The best outcome is an architecture designed and divided so that almost any change that is ever required is local — completely handled by the design team with no ripple effect across the architecture.

Change management through structure. A fixed architecture turns predicting quality into early determination: once the quality attributes and architectural decisions are set, the system's quality profile is effectively decided — the architecture is the forecast. The same principle governs change. A good architecture is designed against the changes it expects: the architect estimates what changes are likely to come, and divides the system so that those changes will not touch the architecture itself. Change impact then falls into a clear three-tier ladder:

Tier Change scope Who handles it Ripple effect
1 Single submodule The design/development team alone None — never reaches the architect
2 Multiple modules The module owners, engaged together Moderate — modules stay as they are; people coordinate
3 The architecture itself The architect Maximum — a change here ripples everywhere

The design goal is explicit and striking: almost any change that is ever required should be local — a Tier-1 change, handled entirely by the design team. Tier 2 is tolerable and routine. Tier 3 should be the exception — the architecture is the commitment, and the architecture should not be re-litigated by ordinary requirement changes.

Worked example — three kinds of change, three levels of cost. A banking system with modules for accounts, transactions, and statements:

  1. Local (Tier 1): the regulator raises the per-day withdrawal limit. This is a constant in the transactions module — the team changes one value and the interface contract is untouched. The architect is not consulted; the change never ripples.
  2. Multi-module (Tier 2): a new fee applies only to business accounts. The accounts team and the transactions team each adjust their module; the modules themselves do not change shape, and the architect coordinates the people, not the structure.
  3. Architectural (Tier 3): the bank decides to support a second currency with real-time conversion. Conversion is now a cross-cutting concern touching accounts, transactions, and statements — the structure itself must change. This is an architect's change, and it is deliberately rare: the good architecture is the one where the estimate of likely changes put the most probable ones into Tier 1.

Sense-check: the architecture is a bet on where change will land. The better the bet — the better the division anticipates real requirements — the fewer changes ever reach Tier 3.

Pitfalls:

  • Dividing without defining interfaces. Parallel teams without precise interface contracts produce modules that do not fit together — the divide-and-rule benefit collapses into integration hell.
  • Freezing the architecture against all change. The goal is that likely changes stay local — not that the architecture is untouchable forever. Refusing Tier-3 changes on principle eventually forces worse ones.
  • Reuse at any cost. Importing a proven component is good; importing one that does not fit the module's purpose or interface drags the architecture. Reuse serves the structure, not the other way around.

Recap + bridge. The architecture document is the first word to stakeholders; modularity and divide-and-rule bring reuse, parallel teams, and reduced entropy; and the whole point is to make change a local event. But structure alone does not protect a system — the qualities the structure promises must also be checked as the system is built. That is the role of evaluation, the next topic: how do you know, before and during construction, that the architecture will deliver what it promised?

In industry the three-tier change ladder shows up as the difference between a routine sprint change (Tier 1 — a developer's ticket), a coordinated release across teams (Tier 2), and an architectural review board decision (Tier 3). Teams that feel "every change touches everything" are experiencing exactly what a bad architecture produces — and the fix is not better coding, it is better division.

1.7 Business Process Reorganization and Organizational Impact

Hook: Some decisions have a blast radius beyond the software. Choose the wrong structure early, and you cannot convert the building later; choose the right process, and an entire department gets reshuffled — people, roles, and training included. This section shows that architecture is a business decision wearing a technical coat.

1.7.1 The Hospital Analogy

The architect's early decisions are hard to undo, and a building analogy makes the point. If you build a hospital, there is an architect who decides this building is going to be a hospital, and that locks in a number of decisions that you cannot change later. If you decide to make a building for a hospital and then try to convert it into a cinema hall, a mall, or a school, it becomes very difficult. If you want a mall that will have a multiplex, you have to design a particular part of the mall to take the multiplex — the projector room, the viewing room, with no pillars in between. Similarly, if you want high availability you might want a certain type of distributed architecture, and that choice helps determine the future of the system. The architecture decision is the equivalent of deciding where the pillars go.

The building is the architecture. The hospital analogy transfers the architect's reality into software with precision:

Building world Software world
The building is declared a hospital The system is declared a certain architecture
Converting hospital → cinema/mall/school is very difficult Changing the architecture later is very difficult
A multiplex needs a designed-for space: projector room, viewing room, no pillars in between High availability needs a designed-for structure: a particular type of distributed architecture
Where the pillars go is fixed early and lives forever The architecture's structural choices fix the system's future

The point is not that conversion is impossible — it is that conversion is costly and crippling: a cinema converted from a hospital keeps its hospital skeleton forever, and a system re-architected late keeps the scars. High availability is the lecture's concrete example: it is not a feature you bolt on; it determines the future of the system from the day the structure is chosen. Choosing a distributed architecture "just in case" and choosing it "for availability" are different decisions made at different moments — and only one of them can be made at pillar-placing time.

Pitfall — the deferred structural choice. Postponing the "what is this building?" decision to avoid commitment. The building is a hospital either way — a decision not made at pillar-placing time is made later at conversion cost. In software: avoiding the distributed-vs-monolithic choice in the architecture phase does not preserve flexibility; it merely moves the (much more expensive) choice into construction.

1.7.2 The Finance–Receiving Reorganization Example

Once you determine an architecture you may also involve business process reorganization, and if you reorganize business processes you may have to reorganize the organization structure itself. A concrete case: the finance department had to be bifurcated; some people from finance were moved to receiving, and the receiving section had to be separated from administration. The trigger was a new business process for processing customer requests. Under the old system, all issues relating to customer requests went to finance, and only when the check cleared was the request forwarded to the next department. Under the new process, requests that come with payment are handled in receiving rather than going to finance: the check gets separated in receiving, and the processing of the document can start even before the check is cleared. Check clearing becomes a separate process running in parallel, which expedites the processing of customer requests. This is a worked example of the type of change an architecture can force on an organization.

Worked example — before and after the process change.

Old process (serial): every customer request goes to finance → finance holds the request until the check clears → only then is the request forwarded to the next department. Document processing waits on money processing; a customer request can sit idle for the whole clearing cycle.

New process (parallel): requests that arrive with payment are handled in receiving — the check is separated there, the document's processing starts immediately, and check clearing runs as a parallel process. Processing no longer waits for the bank.

Organizational ripples of the new process:

  1. Finance is bifurcated — part of finance is moved to receiving, because the check-handling skill now lives where the requests land.
  2. Receiving is separated from administration — its role changed from a mail room into a first-line processing unit with authority to start work.
  3. Roles shift — the people moved to receiving now perform check-screening at the start of the flow, not at the end.

Sense-check: a system design choice (parallel processing of documents and checks) forced an organizational redesign (who works in which department, what each department may decide, where documents first arrive). The software architecture enabled the process; the process reorganized the company.

1.7.3 The Check-Processing Decision Options

Here is the same scenario as a decision problem. An envelope arrives from a customer. It contains a check and a work request. The check is a financial document. If the check bounces, the work cannot proceed. So you have options:

  • Option one: wait for the check to be processed; once it is cleared by the bank, continue the activity.
  • Option two: continue the activity regardless of whether the check is cleared, and after one week check back; if within a week the check is not cleared, whatever processing you have run on the activity, you stop it at that level.
  • Option three: split the work so the check is processed in parallel with the activity.

To run the check processing in parallel, you might have to change the organization so the people doing these tasks can work side by side. You might have to change the roles played by departments: who is going to process the check? Processing a check requires certain talents — you have to recognize a check, find out whether it is an order, and so on. It may feel trivial, but the finance department may not think it is trivial, so it may involve training some people. Once trained, the finance department agrees these people have the requisite knowledge to process a check and decide whether the work can at least be initiated. You hold the check; if it is perfectly in order, you allow the normal work on the activity to proceed while the check is sent to the bank for clearing. That saves a little bit of time. The point of the example is that architectural decisions about how work is processed can ripple into who works where, who is trained, and how departments are structured.

The decision options, formalized. The scenario is a genuine trade-off between speed and risk. The check is a financial document: if it bounces, the work cannot proceed — so the question is how much work to risk, and how long to risk it.

Option Rule Speed Risk of wasted work Organizational change
1. Serial wait Wait for bank clearing, then process Slowest (document idle through the clearing cycle) None None
2. Time-boxed processing Process anyway; check back after one week; stop the work at that level if not cleared Fast start Limited to one week of work per request None
3. Parallel split Separate check in receiving; start document processing; send check to the bank in parallel Fastest Work stops if the check bounces, but only the short parallel window is wasted Required — departments, roles, training

Option 3 wins on speed because processing no longer sits idle — but it is the only option that costs organizational change: the check-handling skill must be present where requests arrive. The lecture walks through the real cost of that change: recognizing a check and judging it "in order" is a talent that looks trivial and is not — the finance department must agree the trained people have the requisite knowledge to at least initiate the work; the check is held; if it is perfectly in order, normal work proceeds while the check is in transit to the bank. The "little bit of time saved" per request is a lot of time across thousands of requests — which is why the department structure itself was reshaped for it.

Pitfalls:

  • Treating process options as purely technical. Option 3 is the fastest precisely because it was implemented as an organizational change — choosing it while leaving departments and roles untouched means the people with check skills never see the requests, and the parallel split silently reverts to option 1.
  • Underestimating the training and trust cost. Moving check-handling out of finance requires the finance department to certify that others have the requisite knowledge. Skipping that agreement step makes the new process untrusted — and a process nobody trusts gets bypassed.
  • Ignoring who becomes responsible for what. In the new flow, receiving decides whether work may be initiated — that is authority moved from one department to another. Organizations that do not explicitly reassign responsibility end up with a process whose steps contradict its org chart.

Recap + bridge. Early decisions are like pillar placement — hard to undo, future-determining; and an architecture can force business-process reorganization that reshapes departments, roles, and training. The check-processing example shows the mechanism precisely: a parallel-processing decision rippled from a flow diagram into the org chart. Structure — whether of a building, a software system, or a process — is decided once and paid for forever, which is why the next topic asks the controlling question: what process should the project itself follow, so these decisions are made at the right time and with the right discipline?

Real-world: this is the business-process angle of architecture — a system design choice is not just a technical choice; it can reorganize an entire department and the flow of documents through a company. It is the reason architecture decisions are presented to business leadership, not just to engineering: in industry, a reorganization like the finance–receiving split is exactly what "business process reengineering" projects deliver, with the software architecture as the enabling lever.

1.8 Development Models: Waterfall, Agile, Prototyping, and DevOps

Hook: The architecture decides what the system will be — but how does the project proceed? Build everything and deliver at the end? Show the customer something from day one? Release continuously forever? This section surveys the development models that surround the architecture, and why the industry abandoned "deliver once, at the end" for approaches that keep the customer in the loop from the very beginning.

1.8.1 Waterfall and Agile

Once a system is ready, there are different approaches to building it. The conventional approach used to be the waterfall model: you analyzed, you designed, you coded, you constructed, you deployed — and then nobody wanted it, and there was a lot of ill will. Still, the waterfall model is valuable because it presents the major activities involved in developing a software system, in order. Today, and this is discussed in great detail during the course, the industry has moved to agile systems. In an agile approach, right from the very beginning you start giving the customer a feel of what they will be getting at the end of the system, thereby cutting down the variation between the customer's expectations and what is actually delivered.

Waterfall. The conventional model: a strict sequence of phases — analyze → design → code → construct → deploy — each finishing before the next begins. Its value is real: it presents the major activities of software development, in order; it is the vocabulary every other model rearranges. Its failure is also real: the customer sees nothing until the end, so the first look at the product is the final look — and with it comes "nobody wanted it" and a lot of ill will. The expectation gap from earlier sections is built into the model's structure: nothing is shown, nothing is corrected, the gap grows for the entire project, and it is discovered all at once, at delivery.

Agile. The industry's current approach (detailed in this course): deliver working increments from the very beginning and show them to the customer continuously. The mechanism, precisely: right from the start the customer gets a feel of what they will get at the end — each increment narrows the variation between customer expectations and actual delivery, while there is still time to change the next increment.

Dimension Waterfall Agile
Delivery One final delivery at the end Working increments from the very beginning
Customer sees the product Only when it is finished From the first iteration
Expectation gap Grows silently, discovered at delivery ("nobody wanted it") Cut down continuously, discovered while it is cheap to fix
Change cost Highest — change late means revisiting completed phases Lower — change is absorbed by the next increment
What it teaches The order of the major activities The feedback loop that makes the order work

Pitfall — waterfall's failure is a feedback failure. "Nobody wanted it" is not because the phases are wrong; it is because the customer saw nothing while it was being built. The lecture's framing is exact: waterfall's value is the activity list; its cost is the silence between start and delivery.

1.8.2 Prototyping and Evolutionary Prototyping

Prototyping makes a sample of how things will work, to demonstrate that it works. Evolutionary prototyping is fashionable these days, particularly in machine learning and artificial intelligence work. A common pattern: you code in Python — a very strong language with very good libraries, but it is not compiler based. Being interpreter-oriented, it is very easy to troubleshoot and to try out various options, so it is great for rapid prototyping. But when you want to manufacture a product to put on the retail counter, you might switch to something like Java. So the prototype and the final implementation may be in different languages.

A prototype can also be a skeletal system. For example, in an ERP system you might develop all the screens without any functionality: clicking a button takes you to the next screen, and you create dummy reports — when you click report, the report prints. The customer gets a look and feel of the entire system. Then you gradually populate the system. Maybe you leave out certain types of validation that are less required and put them into subsequent sprints. You create backlogs for each iteration and move that way, and gradually the product comes into being.

Prototype. A sample of how things will work, built to demonstrate that it works — to test feasibility, show behavior, or give the customer a look and feel. Two distinct roles for a prototype:

  1. Throwaway (demonstration) prototype. A quick sample to prove or explore an idea; once it has demonstrated, it is discarded — the product may then be built in a completely different language. The Python → Java pattern is the canonical case.
  2. Evolutionary prototype. A prototype that grows into the product: start skeletal, keep shaping it, and let the final system be the prototype matured. Fashionable today, especially in machine learning and AI work, where the exploratory loop never really closes.

Why Python for the prototype, Java for the product. Python is interpreter-oriented, not compiler-based: every change runs immediately, troubleshooting is easy, and trying out various options costs almost nothing — exactly the properties a demonstration phase needs. But "manufacturing a product for the retail counter" wants different properties: compiled execution, type discipline, runtime performance, packaging, and long-term maintenance — the strengths of something like Java. The lecture's rule: match the language to the phase; prototype and final implementation may deliberately differ.

Worked example — the skeletal ERP prototype. An ERP system is huge; building it "in full" before showing anything risks the waterfall ending. Instead:

  1. Build all the screens, none of the functionality — clicking a button navigates to the next screen; reports are dummy prints that print anyway.
  2. Give the customer the look and feel of the entire system — the whole application is navigable; the customer experiences the flow without any real processing.
  3. Gradually populate the system — iteration by iteration, real behavior replaces dummy behavior behind the already-accepted screens.
  4. Defer what is less required — validation types of lower priority are deliberately left out and scheduled into subsequent sprints.
  5. Run backlogs per iteration — each sprint has a backlog; the product comes into being incrementally, with the interface already approved.

Sense-check: the screens, approved first, become the contract; the customer's expectations are pinned to something they have walked through, and every sprint moves the system from skeleton to product without a single big-bang surprise.

Pitfalls:

  • Shipping the throwaway prototype. The Python prototype was meant to demonstrate; "manufacturing" it as the product trades away the compiled-product properties (performance, robustness, maintainability) at exactly the wrong time.
  • An evolutionary prototype without structure. "Start skeletal and keep shaping" only works when the skeleton was architected; a prototype that grew without an architecture is a system nobody can predict, maintain, or change locally.
  • Skeletal screens that oversell. Dummy reports that print and buttons that navigate are promises: if the customer mistakes the skeleton for the finished behavior, the expectation gap has just been recreated in a new form — the demo must come with explicit framing of what is real and what is dummy.

1.8.3 DevOps and the Never-Finished Product

Today's environment is a DevOps environment. In DevOps you have continuous construction, continuous integration, and continuous deployment, which means the product is actually never complete. Even when the product is complete, you keep thinking of evolutionary ideas to improve it, and every product becomes an evolutionary prototype for the next product. You see it with products like Facebook, WhatsApp, and X — any of the major products in the industry today — they are continuously undergoing change and improvement and evolving into something better. If you look back at WhatsApp the way it was some fifteen years back in its nascent state, you would probably feel that that was a prototype for what is delivered today. When they made it, of course, they did not call it a prototype; it was a finished product, and that is what made it popular. But in hindsight, that is what the pattern looks like.

DevOps. The operating environment of today's software: continuous construction (features are always being built), continuous integration (every change is merged and tested against the whole system, constantly), and continuous deployment (integrated changes flow to users continuously rather than in release events). The consequences are structural:

  • The product is never complete — there is no "done" milestone in the waterfall sense; there is a continuously improving system.
  • Every product is an evolutionary prototype for the next product — the delivered system keeps evolving, and the lessons of each version seed the next, exactly the same relationship as prototype → product, one scale up.
  • Even a "complete" product is only complete for a moment — "you keep thinking of evolutionary ideas to improve it."

The WhatsApp lesson. Fifteen years back, WhatsApp's nascent state looks like a prototype of today's product — yet when it was made, it was a finished product, and that is precisely why it became popular: it shipped, it was usable, it was complete at its scale. The pattern is only visible in hindsight: today's finished product is tomorrow's prototype. Completeness is not a state a product reaches and stays in; it is a property of a release.

Pitfalls:

  • Confusing "never complete" with "never shipped." DevOps products are never finished but always shippable. A never-shipping system is not continuous deployment; it is a prototype that forgot to become a product — the WhatsApp lesson is that the product must be complete at its scale at every release.
  • Continuous integration without continuous validation. CI/CD that merges and deploys without tests and checks just makes the never-finished product arrive broken, faster.
  • Expecting a frozen product. Stakeholders who plan around a fixed final product misunderstand the model: the architecture must absorb evolution, not resist it — which is exactly why earlier sections insisted on change-friendly structure.

Recap + bridge. Waterfall contributes the ordered activity list; agile adds the feedback loop that makes delivery match expectation; prototyping (throwaway or evolutionary) demonstrates and de-risks; DevOps makes the product permanently evolving. Under every model, though, decisions need owners, resources need budgets, and deliveries need dates — and that is not the architect's discipline but the project manager's, which is exactly the boundary the next topic draws: what belongs to the architect, and what belongs to the PM.

Real-world: the ML/AI industry runs on the evolutionary-prototyping pattern the lecture names — models are prototyped in Python notebooks and promoted into production platforms; and every major consumer product (Facebook, WhatsApp, X) demonstrates the DevOps never-finished cycle, with continuous integration and deployment pipelines that keep a product permanently evolving while always keeping it releasable.

1.9 Budgeting, Costing, and Project Management Roles

Hook: Who owns the numbers? Someone must promise what the project will deliver, what it will cost, and when it will finish — and someone must be able to explain those numbers. This section draws the line between the architect and the project manager, and between a price that comes from understanding and a price pulled from the air.

1.9.1 Project Manager vs Architect

There are two important roles in any software system project. The project manager does have technical responsibilities, but the job is more to do with ensuring the scope is adhered to, on time and at the right cost. Cost, time, and scope are the three pillars of the project manager's responsibility. The negotiation of the scope is mostly done by the architect. The architect co-owns the scope with the customer. So the division of labour is: the architect negotiates what will be built and why the architecture is what it is; the project manager makes sure it gets delivered within the agreed scope, time, and cost.

The two roles, divided. Any software project runs on two leadership roles that must not be confused:

Architect Project manager
Core responsibility Negotiate what will be built and why the architecture is what it is Deliver the agreed scope, on time, at the right cost
Relationship to scope Co-owns the scope with the customer — negotiates it Adheres to the scope — guards it
Nature of the work Technical leadership, structure and commitments The three pillars: cost, time, scope
Success measure The architecture achieves the committed NFRs The project lands within scope, time, and cost

The lecture is careful to say the project manager does have technical responsibilities — the PM must understand the project well enough to manage it — but the PM's job is not the technical decisions; it is the delivery guard. The architect negotiates what will be built (and why the chosen structure is the right one); the project manager makes sure the agreed scope is delivered as agreed. When the architecture must change, that is an architect-and-customer event; when the plan must hold, that is the PM's event.

Pitfall — blurred roles. An architect who starts managing schedules, or a PM who starts redesigning the architecture, creates a project with two bosses and no owner. The lecture's division is the professional one: architect owns the what and why; PM owns the scope, time, and cost.

1.9.2 Bottom-Up vs Top-Down Budgeting

Budgets can be built bottom-up or top-down, and normally it is a combination of both that helps you evolve a budget. Top-down means you come out with a figure, break it up gradually into details, allocate the cost to each unit, and ask people to accept it — will you accept it, can you do it at this cost, or this is the cost you have to do it at in any case. Bottom-up means you ask each unit what resources they will put into the work, estimate the cost, add the costs upward, and come out with the total product cost. Putting the two exercises together cross-checks one against the other.

Two directions, one budget. A budget is not built in one direction; it is evolved by working both directions and letting them confront each other.

  • Top-down: start with a total figure, break it up gradually into detail, allocate a cost to each unit — then ask each unit to accept it: will you accept it? Can you do it at this cost? Or is this the cost you have to do it at in any case? The figure flows from the top and is imposed downward.
  • Bottom-up: ask each unit what resources it will put into the work, estimate the cost of that, add the estimates upward, and arrive at the total product cost. The figure flows from the units and is aggregated upward.
Dimension Top-down Bottom-up
Starting point A total figure Each unit's resource estimates
Direction Broken down and allocated downward Added up to a total
Question asked "Can you do it at this cost?" "What will it cost you?"
Strength Discipline — the total is fixed by the market/management Ground truth — real unit-level needs
Weakness Can under-fund units Can drift upward with optimism

The lecture's rule: normally it is a combination of both. The two exercises cross-check each other — a bottom-up total far above the top-down figure signals either an optimistic market figure or inflated unit estimates; a bottom-up total far below it signals missed work. The negotiated budget lives where the two directions confront each other honestly.

1.9.3 Crystal-Gazing vs Informed Pricing

By being able to take a clear decision, you can decide on the cost. You know what you will be doing, you know what it is going to cost you, and you can get a cost commitment and a schedule commitment. If you had started off without formulating an architecture, the project was bound to go out of hand, because you will end up doing work without knowing where you are heading. As you move, you start realizing problems, and at a certain stage the problems may be so many that the project goes way out of the budget.

The alternative is a crystal-gazing exercise: "This project — quote five million. Our competitor is giving it at four million. Okay, we'll also take it at four million." You just do not know why five million, and why four million. Whereas if you can engage the customer and explain in greater detail than your competition why you are charging what you are charging and what you will deliver, the competitor will probably go back to your competitor and ask: are you delivering this stuff? The competitor says no, that is not part of our commitment. Then you have something meaningful to work on, and people understand who is in control. An informed, architecture-based cost commitment beats a guess every time.

Informed pricing. Pricing from the architecture: because the architecture fixes what will be built, the cost can be decided — "you know what you will be doing, you know what it is going to cost you" — and from that knowledge come two commitments: a cost commitment and a schedule commitment. The causal chain matters: clear architectural decisions → known work → known cost → committed cost and schedule. Without the architecture, there is no basis for the numbers, and the project "was bound to go out of hand": work proceeds without a heading, problems surface as the project moves, and past a certain point the problems are so many that the budget is gone. Cost overruns are not a budgeting failure; they are an architecture failure — a project priced without knowing what it is.

Crystal-gazing. The opposite: pricing from thin air, anchored only to competitors — "quote five million. Our competitor is giving it at four million. Okay, we'll also take it at four million." Nobody knows why five million and nobody knows why four million; the number is matched, not derived. The giveaway is that the price carries no explanation and therefore no commitment — there is nothing behind the figure to defend.

Why informed pricing wins the customer. The architect engages the customer and explains, in greater detail than the competition, why the price is what it is and what it delivers. The customer then goes back to the competitor with the specifics: "are you delivering this stuff?" — and the competitor must answer no, that is not part of our commitment. The explanation has just created something meaningful to work on, and everyone understands who is in control: the party whose price is an explanation, not a guess. The lecture's verdict is absolute: an informed, architecture-based cost commitment beats a guess every time.

Worked example — the four-million bid. Two vendors bid on the same system. Vendor A (crystal-gazing): price = competitor's number, four million, with no breakdown and no specifics. Vendor B (informed): price = five million, built from its architecture — the chosen structure, the modules it implies, the committed NFRs, and what each line delivers.

  1. Vendor B explains its number: the architecture commits to specific qualities (the measurable NFRs), the work is derivable from the structure, and the five million covers exactly that work.
  2. The customer returns to Vendor A with B's specifics: "Are you delivering this — high availability, this latency, this security level?"
  3. Vendor A must answer: "No, that is not part of our commitment" — because a crystal-gazed four million has no commitments attached.
  4. The comparison is now between comparable things: the customer can weigh five million with commitments against four million without them — "something meaningful to work on."

Sense-check: the crystal-gazer's price was a guess about a number; the informed bidder's price was a statement about a system. The customer learns who is in control — and the architect who can explain the cost owns the negotiation.

Pitfalls:

  • Matching competitor prices without knowing why. The four-million match looks like winning the negotiation and is actually losing it: a price without explanation cannot survive contact with a competitor who can explain theirs.
  • Committing to cost without an architecture. Pricing a project before the architecture exists is pricing a project before its work is known — the "bound to go out of hand" project, where problems accumulate until the budget is destroyed.
  • Treating the budget as a one-direction exercise. A purely top-down budget under-funds units; a purely bottom-up one drifts. The cross-check between the two directions is the mechanism that produces a defensible figure.

Q: Can we expect assignments or projects that involve either creating a new architecture or analyzing an existing one? A: You will definitely have both. Assignment one asks you to pick an existing system from your workplace, understand its goal and key requirements, document the purpose and the functional and non-functional requirements, build a utility tree, identify the architecturally significant requirements, choose tactics to satisfy them, and draw context, module, component-connector, and deployment diagrams, plus a description of how the system works functionally and a slide on what you learned.

Exam note: Assignment one is an individual assignment, due before the midterm — an analysis of an existing system from your workplace (requirements, utility tree, ASRs, tactics, the four diagram types, functional description, lessons slide). Assignment two is a group assignment, after the midterm. Both are part of the course's assessment alongside the examinations — the practical counterpart of the budgeting lesson: know exactly what is being delivered, and document it.

Recap + bridge. The architect negotiates the scope and the PM guards scope, time, and cost; budgets evolve from the cross-check of top-down and bottom-up; and only an architecture-based, explainable price is a real commitment. With roles, budgets, and commitments settled, the last piece of the course picture is the assessment itself — how this module is graded, examined, and where the marks come from. That is the subject of the next, final topic of the module.

Real-world: every credible software vendor prices from an informed base — scope, architecture, and committed service levels produce the proposal; the same discipline appears in fixed-price contracts, where the architecture-based cost commitment the lecture describes becomes a signed, legal price. The crystal-gazing vendor, by contrast, is the one who wins the bidding war and then discovers, mid-project, "the problems may be so many that the project goes way out of the budget."

1.10 Assessment Structure and Grading

Hook: Every mark in this course lands somewhere, and the landing rules are specific: how a grade moves the CGPA, how relative grading turns marks into grades, which exams are mandatory, and how the makeup works. This section is the course's own contract with the student — the exact rules of the game being played.

1.10.1 Credit Units and CGPA Weighting

This is a five-credit-point course. Credit units determine the weightage a course has on your grade point average, and they also tell you how much time to spend on a course — you spend five units of time on this course because it is worth five units. Courses come in three, four, or five units. Whatever grade you get in this course gets multiplied by five.

where is the grade points awarded on the 0–10 scale and is the course's credit units. For a five-unit course the weightage of the grade is five; for a four-unit course it is four. So the same grade moves the CGPA more in a heavier course. The four-unit versus five-unit difference genuinely does affect the CGPA.

Credit units. A course's credit units express two things at once: weightage (how much the grade counts toward the CGPA) and time (how much study time the course deserves — five units of time for a five-unit course). Courses come in three, four, or five units.

The weighting formula. The CGPA contribution of a course is its grade points times its credit units:

where is the grade points awarded on the 0–10 scale and is the course's credit units. The consequence is arithmetic: a five-unit course multiplies the grade by five, a four-unit course by four — the same grade moves the CGPA more in a heavier course. This course is five units, so every point earned here is worth more than a point in a three- or four-unit course, and the difference "genuinely does affect the CGPA."

1.10.2 Relative Grading and the Sigma Rule

Marks get converted into grades for the official report card. For example, fifty out of one hundred gives an A grade, and an A grade translates to nine points out of ten. The pass mark in this program is an overall 5.5 CGPA; a mixture of C minuses and C's, fifty-fifty, helps you clear.

Grading itself is relative. If the faculty finds that everybody scored about seventy percent plus or minus five marks, they would give everyone a comfortable grade (e.g., B) and be over and done with. Otherwise a histogram of all the marks is drawn. This follows the concept of the standard normal distribution: people who are higher than the average by at least one sigma end up with a B grade; people who are away from the average by two sigma end up with an A grade; and exceptionally high outliers, where nobody's marks are anywhere near them, end up with an A plus.

where is the class average mark and is the standard deviation of the marks. The source describes these bands only in plain words — "at least one sigma above the average" for B and "two sigma above" for A — and the enrichment docs confirm this standard framing, so the exact boundaries of the grade bands should be treated as approximate.

The same pushing logic applies at the borders: people between A and B who are getting a B could have been pushed to A, but instead they get an A minus; C graders who are coming to the border and could have done with a B get a B minus; and the same happens for C minus. D graders are not penalized with a D grade, because a D grade gives only four points on the CGPA scale and pulls down the overall CGPA quite significantly — so students who do not quite deserve a C (the people who got a C did much better) get pushed up into a C minus. A C minus is below average, but it keeps the CGPA healthier than a D would.

Q: How does relative grading work? A: We draw a histogram of all the marks and use relative grading with the standard normal distribution: average people get a C, people who performed well above average get a B, exceptionally high marks get an A, and extreme outliers get an A plus. Using the standard-normal idea, people at least one sigma above the average get a B, two sigma above get an A. The same logic produces A minus, B minus, and C minus, because a D gives only four points and pulls the CGPA down significantly.

Relative grading. Marks are converted into grades relative to the class, not against an absolute table. Two regimes:

  1. The cluster case. If the faculty finds that everybody scored about seventy percent, plus or minus five marks, the class is a cluster — a histogram would show nothing worth separating. In that case everyone gets a comfortable grade (e.g., B) and the matter is closed.
  2. The spread case. Otherwise, a histogram of all the marks is drawn, and the standard normal distribution supplies the bands: people at least one sigma above the average get a B; people two sigma above get an A; and exceptional outliers, with marks nobody else approaches, get an A plus.

where is the class average mark and is the standard deviation of the marks. The band boundaries are approximate — the source describes them in plain words ("at least one sigma above" for B, "two sigma above" for A), which the standard framing confirms.

The border logic. The same pushing applies at every border: a student between A and B who would have got a B gets an A minus instead; a C grader at the border who could have done with a B gets a B minus; the same for C minus. The D grade is the one thing the system avoids giving: a D carries only four points on the CGPA scale and pulls the overall CGPA down quite significantly — so students who do not quite deserve a C (the C students did much better) are pushed up into C minus instead. A C minus is below average, but it keeps the CGPA healthier than a D would. The whole scheme is a single mechanism: protect the average student's CGPA while still separating the distribution honestly.

Worked example — fifty out of one hundred. The grade conversion in numbers:

  1. A student scores 50 marks out of 100 in this five-unit course.
  2. Fifty out of one hundred earns an A grade on the report card.
  3. An A translates to nine points out of ten on the 0–10 grade-point scale.
  4. CGPA contribution: grade-point-units for the semester's tally.

Sense-check: the same 50/100 in a four-unit course would contribute — nine fewer grade-point-units for the identical grade — which is precisely why "the four-unit versus five-unit difference genuinely does affect the CGPA." And the pass line: the program's pass mark is an overall 5.5 CGPA — a fifty-fifty mixture of C minuses and C's is enough to clear it, and D's are what drag students below the line.

Pitfall — confusing "relative" with "absolute." A mark that earns an A in one class may earn a B in another, because the bands move with the class average and spread. Relative grading rewards position in the distribution, not a fixed score — and the cluster case shows the faculty's own preference: when the class is homogeneous, grade everyone comfortably and move on.

1.10.3 Examinations, Makeup, and Study Strategy

The internal component (EC1) includes quizzes and assignments: the quizzes are multiple choice, and the assignment is descriptive and participative. The exams (EC2 and EC3) are descriptive — definitely not MCQ. Historically EC2 has always been closed book and EC3 open book; during the pandemic period EC2 was also made open book, and whether the institution is still in that mode is not certain. The instruction about an open-book exam is simple: do not hope to start reading the book during the exam. It is like practical work with an open Google — if you do not know what to Google, you will end up nowhere. You had better have read the book if you intend to refer to it. Teachers have read the books too, and they are not impressed by copied passages. The question paper expects you to connect what you write with the question, not to dump something relevant-looking. Printed PDFs can carry intellectual-property issues on campus, and e-books and soft copies are generally not allowed; handwritten notes in a bound volume, spiral or flat bound, are allowed, and you should check the examination department's announcement for the exact rules.

The makeup exam exists for people with a business exigency, medical issue, or extraordinary circumstance who cannot take the regular exam. You can appear for only one of the two — once you have taken the regular exam the chapter is closed, and they will not allow the makeup. The regular and makeup papers are completely different; they have no similarity to each other. There is no makeup for the makeup.

Q: Should I take the makeup exam just to spread my exams across two weekends? A: Because there is no makeup for the makeup. It is the fox story — you said fox, fox, and the fox wasn't there; when the fox actually came, nobody came to save you. If you were not prepared for the regular day and you fall sick during the makeup, or you have a car malfunction, or some problem in the house, you miss the semester. Take the makeup only if you have to — a genuine business exigency, a medical issue, or extraordinary circumstances.

The exam questions will be tough but they will be easy to answer. Do not bother about getting full marks. There is a fairness guarantee in this course: a given question is corrected by the same examiner for all students, so if the best mark that examiner gives is three out of ten, you can be sure nobody got better than three out of ten. No amount of memorizing is going to help, because the questions will be a little vague. Past papers will not help either — the course is so wide that you cannot study everything in it, so you get an overall idea, understand the concepts, sleep well the night before, read the question paper very carefully, and answer what has been asked.

Assignments and quizzes are optional under the institution's peculiar rule — you do not have to appear for them — but they are the easiest place to make the mark, and the internal 30 percent matters for relative grading. Getting twenty out of thirty is not a problem, and if you land up getting fifty-five marks overall you clear the course. EC2 and EC3 are mandatory: if you do not appear for them, you do not clear the course and you repeat it. A quiz is a half-hour quiz with a ten-day window in which to appear. Revaluation requests are normally fairly futile, especially the "begging requests" that ask for one more mark; but if there is a totaling mistake, or you believe a particular question was left unevaluated, teachers have no problem re-evaluating and giving you the marks.

Q: Is the exam open book or closed book? A: Historically EC2 has always been closed book and EC3 open book; during the pandemic EC2 was also made open book, and whether we are still in that mode is not certain. The rule for an open-book exam is: do not hope to start reading the book during the exam — that is like working with an open Google; if you don't know what to Google, you end up nowhere.

Q: I have a previous year's question paper. Will going through past papers help? A: Not really. Past papers will not help, because the course is so wide that you cannot study everything in it. You get an overall idea, understand the concepts, sleep well the night before, read the question paper very carefully, and answer what has been asked. No amount of memorizing helps because the questions will be a little vague.

Q: Can I carry e-books or digital copies into the open-book exam? A: E-books and soft copies are generally not allowed, and the institution does not want copyright infringement on its premises, so printed PDFs can be a problem. Handwritten notes in a bound volume — spiral or flat bound — are allowed. Check the examination department's announcement for the exact rules.

Q: Can I get my answer script re-evaluated if I disagree with the marks? A: Revaluation requests are normally fairly futile, especially the "begging requests" asking for one more mark — a teacher will not even feel like reading the answer for those. But if there is a totaling mistake, or you believe a particular question was left unevaluated, bring it up; teachers have no problem re-evaluating and giving you the marks.

Exam guidance — the assessment map:

  • EC1 (internal): quizzes (multiple choice, half-hour, with a ten-day window) and a descriptive, participative assignment. Optional under the institution's peculiar rule — but they are the easiest place to make the mark: twenty out of thirty is not a problem, the internal 30 percent matters for relative grading, and fifty-five overall clears the course.
  • EC2 and EC3 (exams): descriptive, definitely not MCQ. Mandatory — miss them and you repeat the course. EC2 has historically been closed book, EC3 open book (EC2 was also open book during the pandemic; whether that mode persists is uncertain).
  • Open-book rule (the "open Google" analogy): an open-book exam only helps if you know what to look for — if you do not know what to Google, you end up nowhere. Read the book before the exam; teachers have read it too and are unimpressed by copied passages; connect what you write with the question rather than dumping something relevant-looking. Printed PDFs can raise intellectual-property issues; e-books and soft copies are generally not allowed; handwritten notes in a bound volume (spiral or flat bound) are allowed — check the examination department's announcement for the exact rules.
  • Makeup: only for genuine business exigency, medical issue, or extraordinary circumstance; only one of the two exams; once the regular is taken the chapter is closed; regular and makeup papers are completely different; and there is no makeup for the makeup (the fox story).
  • Strategy: questions will be tough but easy to answer — the fairness guarantee means a given question is corrected by the same examiner for all students, so nobody can outscore that examiner's best mark. No memorizing (questions are a little vague), no past papers (the course is too wide) — get an overall idea, understand the concepts, sleep well, read the paper carefully, answer what is asked.
  • Revaluation: normally futile, especially "begging requests"; legitimate only for a totaling mistake or a question left unevaluated.

1.10.4 Course Map: Modules, Contact Sessions, and Assignments

The course runs across sixteen contact sessions, each with a stated outline. Contact session one was the introduction. The next session moves into the architectural context: what an architect is, software architecture, and an introduction to styles, views, and the three structures. The midterm exam covers modules one to five; the comprehensive exam covers modules one to ten. Module references, recorded lectures, and textbook chapters are given for each module, and the direct references are all to the primary textbook (T1), with a secondary textbook (T2) that is not really a necessity. Reference material (R1 through R5) is provided as PDFs.

Assignment one is an individual assignment done before the midterm exam. You choose an existing system from your workplace, understand its goal and key requirements, document the purpose of the system — why it exists — the functional and non-functional requirements, build a utility tree, identify the architecturally significant requirements, choose the tactics that satisfy them, and draw at least one diagram under each of these options: context, module, component-connector, and deployment view. Then you give a brief description of how the system works functionally and one slide on what you learned. You are expected to give only one page for each point, except that each diagram gets its own page. The assignment is submitted as slides, but a PDF is the safer form to give because PowerPoint sometimes gives problems in reading.

Assignment two comes after the midterm exam. It is a group assignment, but you will be evaluated individually — each person works on an independent assignment while participating in a group discussion (groups are created on the e-learning site), and you are graded on your individual submission and your participation, not on the group as a whole.

Q: What do merged and flipped mean? A: Merged means two separate courses intended for different degree programs are conducted together as one course. Flipped means the subject coverage is delivered through pre-recorded lectures available in the library, while the contact sessions exist for interaction — some material is covered there too, but the purpose of a contact session is to be able to interact.

Q: I don't work in a software company and I don't know coding. Is there any coding in this course? A: No, there is no coding in this course, and you will not be expected to code. You must have been admitted on a job related to your degree area, with at least a year of related experience, so you already have a genuine interest in computers. Understanding patterns and architecture does not require you to write code.

Exam note — the course map at a glance:

  • Sixteen contact sessions, each with a stated outline; this lecture was the introduction, and the course next moves into the architectural context — the architect's role, software architecture, and styles, views, and the three structures.
  • Coverage: midterm covers modules one to five; the comprehensive exam covers modules one to ten.
  • Materials: direct references all to the primary textbook (T1); T2 is not really a necessity; reference material R1–R5 provided as PDFs.
  • Assignment one (before midterm, individual): an existing system from your workplace — purpose (why it exists), FRs and NFRs, a utility tree, the architecturally significant requirements, tactics that satisfy them, at least one diagram each for context, module, component-connector, and deployment views, a brief functional description, and one slide on what you learned. One page per point, except each diagram gets its own page; submit as slides, but PDF is safer than PowerPoint.
  • Assignment two (after midterm, group): a group assignment with individual evaluation — each person works on an independent assignment while participating in the group discussion (groups created on the e-learning site); you are graded on your individual submission and your participation, not on the group as a whole.
  • The course format: merged (two courses intended for different degree programs conducted together) and flipped (pre-recorded lectures in the library; contact sessions exist for interaction). No coding, and none expected — the admission requirement is a job related to your degree area with at least a year of experience.

Recap. The assessment picture is complete: five credit units weight every grade here by five; relative grading with the sigma rule (B at about one sigma above the average, A at two, outliers at A plus) plus the border logic (A minus, B minus, C minus — and never a D when a C minus will do) converts marks to grades; fifty out of one hundred is an A worth nine points; 5.5 CGPA is the pass line; EC2 and EC3 are mandatory and descriptive, EC1 is optional but the easiest mark; the makeup exists but there is no makeup for the makeup; and the strategy is concepts, not memorizing — read the paper carefully and answer what has been asked. This closes the module's map: architecture, its qualities, its requirements, its constraints, its patterns, its benefits, its organizational impact, the development models around it, the economics of it — and now the rules of the course that measures the learning.

Exam Guidance Summary

Exam format. The exams (EC2 and EC3) are descriptive — definitely not MCQ. Quizzes are MCQ; the assignment is descriptive and participative; the internal component (EC1) includes MCQ quiz components but is not only MCQ. Historically EC2 has always been closed book and EC3 open book; during the pandemic EC2 was also made open book, and whether the institution is still in that mode is not certain. The midterm covers modules one to five; the comprehensive exam covers modules one to ten.

Open-book strategy. Read the book before the exam; do not plan to start reading during the exam — an open book is like an open Google, and if you do not know what to Google, you end up nowhere. Teachers have read the books too: connect your answer to the question rather than dumping copied material. E-books and soft copies are generally not allowed; handwritten notes in a bound volume, spiral or flat bound, are allowed — check the examination department's announcement for the exact rules.

Question strategy. The questions will be tough but easy to answer — do not worry about full marks. The same examiner corrects a given question for all students, so grading is fair across the class: if the best mark an examiner gives is three out of ten, nobody got better than three out of ten. The questions are a little vague, and no amount of memorizing will help. Past papers will not help, because the course is so wide that you cannot study everything in it. Get an overall idea, understand the concepts, sleep well the night before, read the question paper very carefully, and answer what has been asked. There will be no question purely on design patterns.

Makeup rules. The makeup exam is for a genuine business exigency, medical issue, or extraordinary circumstance. You can appear for only one of the two exams — once you have taken the regular exam, the chapter is closed. The regular and makeup papers are completely different. There is no makeup for the makeup (the fox story), so do not take the makeup just to spread exams across weekends — you would be taking a calculated risk with the whole semester.

Grading and weighting. Fifty out of one hundred gives an A grade, which translates to nine points out of ten. The overall pass mark is 5.5 CGPA; a fifty-fifty mixture of C minuses and C's helps you clear. Grading is relative: average people get C, well-above-average people get B, exceptionally high marks get A, extreme outliers get A plus, and the borders become A minus, B minus, and C minus. A D gives only four points and pulls the CGPA down significantly, so the push up to C minus exists. Weighting: this is a five-unit course, so the grade is multiplied by five; a four-unit course multiplies by four.

Internal marks, mandatory exams, and revaluation. Internal marks matter for relative grading: getting twenty out of thirty is not a problem, and fifty-five overall clears the course. Below roughly thirty internal marks you get isolated in the batch and penalized under relative grading. Assignments and quizzes are optional under the institution's peculiar rule, but they are the easiest place to make the mark; EC2 and EC3 are mandatory, and missing them means repeating the course. A quiz is half an hour with a ten-day window in which to appear. Revaluation is usually futile except for totaling mistakes or a question left unevaluated — those should be brought up. Assignment one is individual and before the midterm; assignment two is a group assignment after the midterm, with individual evaluation.

Study advice. The recorded lectures and contact sessions give the basic level; the primary textbook (T1) adds depth, and a good bit of the syllabus comes from it — page through the textbook. A lot of modern material depends on the internet. The course is wide: do not try to study everything — get an overall idea, understand the concepts, and answer what has been asked.

Key Industry Applications

Quality attributes are the industry's delivery contract. Quality attributes — performance, modifiability, security, scalability, reusability, availability, testability, usability — are the qualities the industry delivers and measures, and the architect commits to specific levels of them after negotiation with stakeholders.

Usability is the emerging king. Usability has emerged in the last five to ten years as the most important quality attribute; the interaction model of WhatsApp is used as the reference example of what usable means, including limits on controls per page, help support via question-mark symbols, and the ability to reverse an activity before committing it.

Mobile data placement decisions are early and everywhere. SQLite is the embedded RDBMS present in every mobile device, on both Apple and Android platforms, and mobile data storage decisions (SQLite versus file storage versus platform mechanisms) are early design decisions made once, at the start of every mobile product.

Constraints in industry are real and sometimes surprising. "Use any RDBMS you like, as long as it's Oracle", or a client policy never to use a particular vendor's storage. A team's skill set (for example, fluency with a specific cloud storage service) can be wasted by such a policy, so constraints must be discovered early — before staffing and before investment.

Asynchronous processing is an everyday architectural decision. A request to a server is made while data entry continues, and fields update when the data becomes available; such decisions shape usability and performance, which is exactly why they are made at the architectural level, early.

Prototyping and implementation often use different languages. Python for rapid, interpreter-based prototyping in machine learning and AI work, and Java for the product that goes on the retail counter. Skeletal prototypes (all screens, no functionality, dummy reports) give customers a look and feel before the system is populated.

DevOps keeps every product permanently evolving. DevOps environments run continuous construction, continuous integration, and continuous deployment; the product is never truly complete, and every product becomes an evolutionary prototype for the next — as seen with Facebook, WhatsApp, and X.

Architectural patterns structure today's enterprise systems. Major enterprise systems today are built with architectural patterns (distinct from design patterns) — regular solutions to a recurring problem in a particular context, applied at the level of system structure.

SA Lecture 1 notes · Software Architecture

Software Architectures· postgraduate· 2026-08-20

Sections Breakdown

11.1 What Software Architecture Is — and Is Not

Course expectations and positioning, architecture as an outline blueprint, and architecture as art and science with the concept of architecturally significant requirements.

21.2 Quality Attributes and the Architect's Commitments

Quality attributes are determined by the architecture, must be marinated in from the beginning, and are measurable and negotiated with stakeholders.

31.3 Functional and Non-Functional Requirements

The SRS blind spot, coaxing non-functional requirements out of the customer, and the architect's sign-off responsibility.

41.4 Constraints and Early Design Decisions

Constraints from hardware, software, and client policy; early design decisions including SQLite on mobile devices; asynchronous processing as an early decision.

51.5 Architectural Patterns vs Design Patterns

Patterns as reusable solutions at the system-structure level, distinct from design patterns, with prior knowledge of design patterns expected.

61.6 Benefits of Architecture: Communication, Modularity, and Change

Stakeholder communication, modularity with divide and rule and reuse, and managing change by localizing its impact.

71.7 Business Process Reorganization and Organizational Impact

The hospital analogy, the finance–receiving reorganization example, and the check-processing decision options.

81.8 Development Models: Waterfall, Agile, Prototyping, and DevOps

Waterfall versus agile, prototyping and evolutionary prototyping, and DevOps with the never-finished product.

91.9 Budgeting, Costing, and Project Management Roles

Project manager versus architect roles, bottom-up versus top-down budgeting, and crystal-gazing versus informed pricing.

101.10 Assessment Structure and Grading

Credit units and CGPA weighting, relative grading with the sigma rule, examinations makeup and study strategy, and the course map.

11Exam Guidance Summary

Consolidated exam guidance: EC2/EC3 are descriptive and mandatory, quizzes are MCQ, EC2 historically closed book and EC3 open book (uncertain after the pandemic) with the open-Google rule for open-book strategy; questions are tough but easy to answer, the same examiner corrects a given question for all students, and there is no question purely on design patterns; the makeup exists only for genuine exigency, only for one of the two exams, and there is no makeup for the makeup; fifty out of one hundred is an A (nine points), the pass mark is 5.5 CGPA, grading is relative with borders A minus, B minus, C minus, and a D (four points) avoided; internal marks matter for relative grading, and below roughly thirty internal marks a student is isolated in the batch and penalized; recorded lectures and contact sessions give the basic level while T1 adds depth.

12Key Industry Applications

Appendix of the lecture's real-world anchors: quality attributes are what the industry delivers and measures; usability has emerged in the last five to ten years as the most important attribute (WhatsApp as the reference interaction model); SQLite is the embedded RDBMS on every mobile device and mobile data storage is an early design decision; constraints in industry are real and surprising (use any RDBMS as long as it's Oracle, client storage policies) and must be discovered early; asynchronous processing is an everyday architectural decision; prototyping and implementation often use different languages (Python prototyping, Java product, skeletal prototypes for look and feel); DevOps runs continuous construction, integration, and deployment and no product is ever truly complete; major enterprise systems today are built with architectural patterns at the level of system structure.

Postgraduate students studying Software Architecture

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.

1.1 What Software Architecture Is — and Is Not

Must-know: Architecture = high-level design of components and relationships, decided early, expensive to change; the architect's key skill is identifying architecturally significant requirements (ASRs).

⚠️ Top pitfall: Confusing architecture with design patterns or low-level class design; treating components like classes.

Self-check: What makes a requirement architecturally significant?

Connects to: 1.2 · 1.3 · 1.5

1.2 Quality Attributes and the Architect's Commitments

Must-know: A quality attribute is a measurable or testable property; the architect negotiates specific measurable levels with stakeholders and commits to them; quality is decided by architecture and must be designed in from the start.

⚠️ Top pitfall: Committing to quality without a number; treating 'fast' or 'usable' as a requirement instead of a scenario with a response measure.

Self-check: Why is usability now considered the most important quality attribute?

Connects to: 1.1 · 1.3

1.3 Functional and Non-Functional Requirements

Must-know: NFRs are real customer requirements, expensive to achieve, hidden by assumption; the architect must decide them, educate the client, and get a signed commitment — many software litigations trace to the NFR expectation gap.

⚠️ Top pitfall: Treating NFRs as optional extras; assuming the client knows what an NFR is before asking for a signature.

Self-check: Why does the architect need the client's sign-off on NFRs?

Connects to: 1.2 · 1.4

1.4 Constraints and Early Design Decisions

Must-know: A constraint is a non-negotiable limit from hardware, software, or client policy ('any RDBMS as long as it's Oracle'); early design decisions (OS, storage, async vs sync) are taken early so interfaces match, because they are cheap to decide and expensive to reverse.

⚠️ Top pitfall: Discovering constraints late (wasted, sunk investment); making everything asynchronous without planning the rendezvous phase.

Self-check: Why must the sync/async choice be an early design decision?

Connects to: 1.3 · 1.5

1.5 Architectural Patterns vs Design Patterns

Must-know: A pattern captures problem + context + solution for reuse; design patterns apply at code/class level, architectural patterns at system-structure level; the course covers architectural patterns and the exam has no purely design-pattern questions.

⚠️ Top pitfall: Applying an architectural pattern at the wrong grain; memorizing pattern catalogues instead of recognizing situations.

Self-check: At what level do architectural patterns apply, and what do design patterns apply to?

Connects to: 1.1 · 1.6

1.6 Benefits of Architecture: Communication, Modularity, and Change

Must-know: Architecture delivers three benefits: communication with stakeholders (first document of expectations, with explanation of why the architecture is necessary), modularity/reuse (divide and rule, precisely defined interfaces, proven components rather than ab initio), and change management (changes should land in one submodule, never rippling into the architecture).

⚠️ Top pitfall: Dividing without precisely defined interfaces; treating every change as an architectural change; importing components that do not fit the module.

Self-check: What are the three tiers of change impact, and who handles each?

Connects to: 1.4 · 1.7

1.7 Business Process Reorganization and Organizational Impact

Must-know: The hospital analogy: early architecture decisions lock in the future and are very hard to undo; high availability requires a designed-for distributed architecture. Architecture can force business process reorganization, and reorganizing processes can force reorganizing the organization itself — departments, roles, and training.

⚠️ Top pitfall: Treating process options as purely technical; choosing parallel processing without making the organizational change that makes it work.

Self-check: In the check-processing scenario, what makes option 3 (parallel split) different from the other two options?

Connects to: 1.1 · 1.4

1.8 Development Models: Waterfall, Agile, Prototyping, and DevOps

Must-know: Waterfall: analyze, design, code, construct, deploy in order — valuable as the ordered activity list, but the customer sees nothing until delivery ('nobody wanted it'). Agile: customer feels the end product from the very beginning, cutting the expectation gap. Evolutionary prototyping (fashionable in ML/AI) lets the prototype grow into the product; Python (interpreter-oriented) for prototyping, Java-like compiled languages for the product. DevOps: continuous construction, integration, deployment — the product is never complete.

⚠️ Top pitfall: Shipping the throwaway prototype; confusing 'never complete' with 'never shipped'.

Self-check: Why is Python described as great for rapid prototyping but not necessarily for the retail product?

Connects to: 1.3 · 1.9

1.9 Budgeting, Costing, and Project Management Roles

Must-know: Division of labour: the architect negotiates what will be built and why, co-owning the scope; the PM delivers the agreed scope on time at the right cost (three pillars). Budgets combine top-down allocation with bottom-up aggregation to cross-check. An informed, architecture-based cost commitment beats a guess every time.

⚠️ Top pitfall: Matching a competitor's price without knowing why (crystal-gazing); pricing before the architecture exists, so the project goes out of hand and out of budget.

Self-check: Why does an informed, architecture-based cost commitment beat a crystal-gazing guess?

Connects to: 1.1 · 1.3 · 1.10

1.10 Assessment Structure and Grading

Must-know: CGPA contribution = g × u (grade points × credit units); this is a five-unit course. Relative grading: histogram + standard normal — B at about one sigma above the average, A at two sigma, extreme outliers at A plus; border logic gives A minus/B minus/C minus and pushes near-C students to C minus instead of D (D is only four points and pulls the CGPA down). Fifty out of one hundred is an A (nine points); the pass mark is 5.5 CGPA. EC2 and EC3 are mandatory descriptive exams; the makeup is only for genuine exigency and there is no makeup for the makeup.

⚠️ Top pitfall: Treating grading as absolute rather than relative; banking on the makeup exam as a convenience (no makeup for the makeup); hoping to read the book during an open-book exam.

Self-check: Why are near-C students pushed to C minus instead of given a D?

Connects to: 1.9 · 1.1

Exam Guidance Summary

Must-know: EC2 and EC3 are descriptive and mandatory (missing them means repeating the course); quizzes are MCQ and the assignment is descriptive and participative. EC2 historically closed book, EC3 open book (uncertain now). Questions are tough but easy to answer, vague, no memorizing, no past papers, no pure design-pattern question. The same examiner corrects a given question for all students. Makeup: one exam only, completely different paper, no makeup for the makeup. 50/100 = A = nine points; pass is 5.5 CGPA; relative grading with A minus/B minus/C minus borders; D avoided (four points). 20/30 internal is fine, 55 overall clears; below ~30 internal you are isolated and penalized in relative grading.

⚠️ Top pitfall: Taking the makeup just to spread exams across weekends; hoping to read the book during the open-book exam; memorizing answers to vague questions.

Self-check: Why is there no question purely on design patterns, and why won't past papers help?

Connects to: 1.10 · 1.1

Key Industry Applications

Must-know: Quality attributes are the industry's delivery contract. Usability has emerged as the most important attribute in the last five to ten years (WhatsApp: controls per page, question-mark help, reversible activities). SQLite is on every mobile device; storage decisions are early. Constraints are real and surprising (Oracle-only policy; a vendor's storage banned). Async processing shapes usability and performance. Python prototypes vs Java products; skeletal prototypes (all screens, no functionality, dummy reports). DevOps: continuous construction/integration/deployment; every product is an evolutionary prototype for the next (Facebook, WhatsApp, X).

⚠️ Top pitfall: Underestimating surprising industry constraints until a team's skill set is wasted; treating the product as ever-complete instead of ever-evolving under DevOps.

Self-check: Why does the mobile data-storage decision belong to the architect's early design decisions?

Connects to: 1.2 · 1.4 · 1.8 · 1.5

Was this lecture useful?

Loading comments…
🤖

BitsNotes AI Assistant

Subject Notes Assistant

Configure AI Chat

Choose how to access the chatbot
Have your own API key?

Switch to "Bring Your Own Key" tab above for unlimited access with any OpenAI-compatible provider.

🔑 Enter API key above to fetch live models from provider, or enter model name manually.
OpenAI-Compatible API Support

Choose any provider preset (Gemini, DeepSeek, Kimi, GLM, MiniMax, Qwen, OpenAI, Groq, Ollama, etc.) or enter a custom endpoint URL.

Security & Privacy First

Your API key is sent directly from your browser to your specified provider. BitsNotes servers never store or see your key.