MAL Hackathon · Participant field guide

Architecture you can defend.

Make choices that fit your problem. Understand the qualities your system needs, the principles behind your design and the evidence that supports your decisions.

Start with the problem

Prioritise. Explain. Verify.

Quality attributes describe outcomes. Reliability, scalability and performance describe what your system should achieve. Design principles guide your choices about responsibilities, dependencies and change.

This is a reference, not a requirement to implement every item. Working code is optional; diagrams, contracts, example data and reasoned walkthroughs can demonstrate your design.

As a useful exercise, choose three priority attributes for your assigned problem. For each, explain:

  1. A target: a measurable goal or concrete acceptance condition.
  2. A decision: the design choice that supports it.
  3. Evidence: how you would verify the behavior.
  4. A tradeoff: the cost, limitation or competing goal.

Always address the stated business rules and relevant security and privacy concerns. Identify assumptions and distinguish proposed behavior from behavior you have actually verified.

01 · Outcomes that matter

Quality attributes

These examples use reimbursement claims. Apply the same questions to Healthtech appointments, Mumbai property workflows or Martech approvals.

01 / CORRECTNESS

Get the rules right.

Does the system enforce the business rules?

Example: An approved reimbursement cannot exceed the claimed amount.

How to verify

Walk through allowed and rejected amounts, boundary values, and invalid state transitions. Identify which component enforces the rule.

02 / SCALABILITY

Plan for increasing load.

What changes as users, records or requests increase?

Example: Fetch claim history in pages and index the service-side queries used most often.

How to verify

State an expected workload, identify the likely bottleneck and explain what would change at ten times the load. Pagination alone does not prove scalability.

03 / PERFORMANCE & EFFICIENCY

Respect time and resources.

Is the experience responsive without wasting battery, bandwidth or memory?

Example: Compress receipt images before upload and keep expensive work off the app’s main thread.

How to verify

Choose a target device, network condition and response-time goal. Explain how you would profile frame delays, upload latency or memory use.

04 / RELIABILITY

Make outcomes dependable.

Can users trust an operation to produce its intended result?

Example: Retrying the same claim submission does not create duplicate claims.

How to verify

Walk through repeated requests, lost responses and app restarts. Show where a submission identifier is stored and where uniqueness is enforced.

05 / AVAILABILITY

Keep useful capabilities accessible.

What remains usable when a dependency is unavailable?

Example: Users can read saved claims while the approval service is down, with a clear last-updated indication.

How to verify

Mark which features remain available, which become read-only and which must stop. Do not imply cached data is current.

06 / RESILIENCE & RECOVERY

Design the unhappy path.

How does the system handle interruptions and recover?

Example: An interrupted upload remains pending and retries with bounded backoff.

How to verify

Identify retry limits, timeouts, persisted pending state and user feedback. Explain what happens if the app closes before recovery.

07 / DATA CONSISTENCY & INTEGRITY

Protect the source of truth.

Who owns authoritative state, and how are conflicts resolved?

Example: Two reviewers cannot move a claim into conflicting final states.

How to verify

Trace simultaneous updates and stale reads. Explain version checks or transactions at the authoritative service, and how the app reconciles a rejected update.

08 / SECURITY & PRIVACY

Protect people and data.

Who can perform each action, and what information needs protection?

Example: The service enforces reviewer permissions, and receipt contents stay out of diagnostic logs.

How to verify

Describe trust boundaries, access checks, storage protection and data retention. You may simulate roles without building a login screen; explain production controls separately.

09 / MAINTAINABILITY & ADAPTABILITY

Make change understandable.

How safely can the team change the system?

Example: Updating reimbursement policy does not require rewriting screens or storage code.

How to verify

Pick a realistic policy change. Name the modules and contracts affected, the tests that protect existing behavior and any data migration needed.

10 / TESTABILITY

Make behavior checkable.

Can important behavior be verified in isolation?

Example: Approval rules can be checked with a fake repository and a controlled clock.

How to verify

Write example inputs and expected outcomes for a business rule and a recovery scenario. Automated tests are welcome if you build code; a clear test design is useful evidence too.

11 / OBSERVABILITY

Explain what happened.

How would you discover and diagnose a failure?

Example: A correlation identifier connects an app upload failure to a service request without exposing personal data.

How to verify

Define useful events, metrics and diagnostic fields. Show how they distinguish a network failure from a validation rejection, without logging sensitive payloads.

12 / ACCESSIBILITY

Make the workflow usable.

Can people with different abilities complete the core journey?

Example: Claim status has a text label, errors are not communicated by color alone, and controls have screen-reader names.

How to verify

Walk through the flow using a screen reader, larger text and keyboard or switch navigation where supported. Explain how focus moves after an error.

13 / COST & OPERABILITY

Keep it supportable.

Can the team afford, deploy and operate this design?

Example: Limit receipt upload sizes, plan data recovery and describe how a faulty release would be rolled back.

How to verify

Identify the main cost drivers, configuration and deployment boundaries, backup responsibilities and a recovery plan. Avoid adding services without a clear benefit.

02 · Choices behind the diagram

Design principles

  1. Separation of concerns

    Keep presentation, business rules and data access in distinct responsibilities. A screen should not own reimbursement policy.

  2. High cohesion, low coupling

    Keep related behavior together and dependencies deliberate. A policy change should not force unrelated modules to change.

  3. Explicit contracts and boundaries

    Define inputs, outputs, errors and ownership between components. State what “submit claim” guarantees and what it can reject.

  4. Dependency inversion

    Let core rules depend on interfaces rather than a particular database or network client. Supply a different implementation for testing.

  5. Simplicity and proportionality

    Use the least complex design that meets the requirements. Every layer, service and tool needs a reason.

  6. Design for change

    Isolate likely sources of change, such as approval policies or external providers. Avoid abstracting everything in advance.

  7. Explicit tradeoffs

    State what your choice improves, what it costs and when you would revisit it. Offline access, for example, adds synchronization and conflict-handling work.

03 · Show the reasoning

A reliable claim submission

Acceptance condition
Repeated attempts for the same logical submission create one claim.
Design decision
Persist and reuse a submission identifier. Enforce uniqueness at the authoritative service and return the existing result on a retry.
Verification
The service saves the claim, its response is lost, and the app retries. Trace how the existing claim is returned and local state becomes confirmed.
Tradeoff
Additional identifier storage and duplicate-request handling. Define how long identifiers are retained and reject conflicting payloads using the same identifier.

A sequence diagram, interface contract and example data can prove that you have thought through the scenario. Label any simulation; claim only guarantees your evidence supports.

04 · Use it in your defence

Connect the reference to judging

This guide explains the concepts behind the published criteria. It does not add scoring categories or change their weights.