Technology · 06

How the promises get checked.

A business analysis case study. Every feature traces to a written requirement and a test, and anything a Simulator cannot prove is checked on a real device.

By the numbers

One business analyst, from the first commit to the App Store, counted at the build sent to Apple for 3.3.

5,777commits
950+numbered requirements
221commits on the busiest day
8 pmsecond busiest hour: the evening shift is real
5languages: English, Swedish, Korean and two forms of Chinese
Show all thirteen figures
5,777commitsThe build number is the commit count, so every build names its exact code.
About halfmade with an AI coding agent2,993 commits carry the agent’s name; many earlier ones do not record it.
1 yearfrom first commit to 3.33 September 2025 to 24 September 2026.
170days with at least one commit
1,670merges into the main lineEach one brings a finished piece of work in from its own branch.
221commits on the busiest day19 September 2026, the last week before 3.3.
2 pmbusiest hour8 pm is second: the evening shift is real.
114,000lines of app codeSwift, for iPhone and iPad.
57,000lines of test codeHalf the size of the app, there only to prove it works.
3,074automated tests
950+numbered requirementsAcross 25 epics from 3.0 to 3.3; more than 700 with formal Given, When, Then acceptance criteria.
253written documentsRequirements, specifications, decisions and runbooks.
2,647lines of text in the appEach one in English, Swedish, Korean and two forms of Chinese.
Business analysis · Process flow

From a question to the App Store

Every change, large or small, follows the same path. Nothing ships without a written requirement, a green test gate and a check on a real screen.

  1. 1Question
  2. 2Look
  3. 3Decide
  4. 4Specify
  5. 5Build
  6. 6Test
  7. 7Release
Show the eleven steps and a worked example
  1. 1

    A question or a report

    The owner asks for something, a tester reports a problem, or a review finds a gap.

  2. 2

    Look before deciding

    The real app is captured on the Simulator, measured, and checked against Apple’s design guidelines. Options are drawn side by side.

  3. 3

    A dated decision

    The owner chooses. The decision and the options not taken are written down with the date, so they are not reopened by accident.

  4. 4

    A build specification

    Each piece of work becomes a work order with Given, When, Then scenarios, the files it may touch and what it must not change.

  5. 5

    One branch per work order

    Work happens in its own branch and folder, never on the main line, so parallel work cannot collide.

  6. 6

    A requirement with acceptance criteria

    The work order becomes a numbered functional requirement, with Given, When, Then criteria where the behaviour is new, and a test that covers it.

  7. 7

    The test gate

    Merging into the main line runs the full unit suite, 3,074 tests at 3.3, one merge at a time. A red gate stops the merge.

  8. 8

    Checked on a screen

    The change is verified on the Simulator across screen sizes, and on a real device for what a Simulator cannot show. Every build names itself in its log, so a test result is tied to the exact build.

  9. 9

    Release checklist

    Version, build number, privacy wording, store copy and screenshots are signed off item by item. The build number is the commit count, so it names the exact code.

  10. 10

    Submission and a release line

    The submitted build is tagged and given its own branch. The main line moves to the next version the same day, so a later rebuild can never pick up new work.

  11. 11

    Fixes start from the release

    A bug in the shipped version is fixed on its release line, then carried forward to the main line. The website waits behind its own gate until the App Store shows the new version.

Worked example · September 2026

Question: the editor’s top controls take room from the photo on small screens. Look: the editor was measured on eleven iPhone, iPad and iPhone Duo shapes with all nine presets, and four rebuilds of the bottom bar and five menu models were drawn to scale. Decision: the owner chose Apple’s own tab bar shape for the bottom bar. Specification: thirteen work orders for the bar and for the foldable iPhone, each with its scenarios. Release line: the same week, 3.3 was tagged at its submitted build and the main line moved to 4.0.

Business analysis · Backlog

Epics and stories, release by release

Every requirement belongs to an epic, and every epic to the release that shipped it. Most carry formal Given, When, Then acceptance criteria; the rest are change records with the request, the fix and the test that covers it.

3.0 to 3.17 epics · 245 requirements

The rebuild: one text system, 3D Pop and rendering parity, filters and presets, the Hub, the design system, iCloud Sync and preset sharing. All with acceptance criteria.

Shipped
3.27 epics · 166 requirements

Live Photo and motion export, rotation and the Layers panel, caption styling, White Balance, preset collections, full translation, import speed. Most with acceptance criteria.

Shipped
3.311 epics · 545 requirements

Print and paper, Shot Data and Film, your logo as the watermark, the iPad landscape editor, export quality, the menu design system, accessibility and placement. 313 with formal acceptance criteria.

Shipped
4.05 epics · 42 work orders

Short menus, the start list, the bottom bar and the foldable iPhone, collage, and the polish once planned for 3.4.

Planned; requirements are numbered when each work order is built
Read five 3.3 stories

Five 3.3 stories, as written from their acceptance criteria

Epic P · Print and Paper

As a person printing a photo at a lab, I want the saved file to be the pixel size my chosen paper needs at 300 dpi, and to be told before I order whether my photo can give that and what would improve it, so that I do not pay for a soft print.

Traced to FR-3.765
Epic Q · Shot Data and Film

As a photographer, I want a caption that shows my photo’s shutter speed, aperture, ISO, focal length and camera, written the way a camera writes them, so that I can share how the shot was made; when a value is missing I want it to drop out cleanly instead of leaving a gap.

Traced to FR-3.802
Epic R · iPad Landscape Editor

As an iPad user working in landscape, I want Layers, Info and Presets to open in the right-hand panel instead of in a sheet over my photo, so that the photo stays fully visible and does not move while I use them.

Traced to FR-3.743
Epic S · Export Quality and Motion

As a person saving a video, GIF or Live Photo, I want to choose the quality for this one export, starting from my Hub setting and seeing the resulting size before I commit, so that I can make one file smaller or sharper without changing my everyday default.

Traced to FR-3.780
Epic X · Placement

As a person placing a logo on a frame, I want the frame’s spots offered as two clear groups, Border corners and Gutter Left, Centre and Right, with no spot offered twice under two names, so that I can choose where the logo goes without guessing.

Traced to FR-4.263

Each story is a plain summary of the requirement it cites. Four of the five carry formal acceptance criteria; the placement story is a change record with the test that covers it.

From strategy to a test

Each feature traces up to the goal it serves and down to the tests that prove it.

Strategic theme
Private intelligent creativityMake advanced photo composition approachable without unnecessary cloud dependency.
Epic
AI-assisted photo compositionUse scene understanding and subject separation to unlock meaningful composition.
Capability
On-device scene understandingDiscover context and reusable foreground structure from an imported photo.
Feature
Subject discovery and persistent mask assetsFind foreground instances and retain recoverable artifacts for editing and export.
User story
As a creator, I want the app to separate a clear subject so I can place content around it.Acceptance criteria and automated/manual evidence make the expected behaviour explicit.
Show four features traced to their evidence
EpicCapabilityFeature / requirement sourceEvidenceLifecycle
AI-assisted compositionSubject separationRendering requirements and AI pipeline auditMask pipeline tests plus device verificationImplemented
3D Studio & paritySubject overflow3D Pop and rendering requirementsLayout-engine tests and visual verificationImplemented
Creative textBehind-subject captionCaption requirements and unified text modelCaption/model tests plus canvas verificationImplemented
Dependable deliveryWYSIWYG exportRendering requirements and offset specificationGeometry tests, parity traces and export verificationImplemented

Measured against SFIA

How the project’s artefacts line up with the industry skills framework for requirements work.

L4Enable
SFIA 9 · REQM

Requirements definition and management

Managing requirements across the delivery and operational lifecycle, with Level 4 focused on autonomous enablement of medium-sized and complex initiatives.

Show the five responsibilities and the evidence for each

Define and manage scope, requirements and priorities

REQM Level 4 expects ownership of these activities for initiatives of medium size and complexity.

Max Photo Frames evidenceProduct domains, roadmap initiatives, Epic/Feature groupings, detailed FRs, non-functional constraints and prioritised implementation task boards establish scope from product intent through delivery.

Contribute to selecting the requirements approach

The practitioner helps choose an approach appropriate to the context rather than applying one method mechanically.

Max Photo Frames evidenceLean value-stream analysis explains outcomes, SAFe-aligned hierarchy connects strategy to capability, and Agile stories, acceptance criteria and tests govern incremental delivery.

Facilitate stakeholder input and constructive challenge

REQM Level 4 includes enabling effective input, testing assumptions and supporting prioritisation.

Max Photo Frames evidenceOwner decisions are recorded in roadmap plans, alternatives and rejected approaches remain visible, decision points precede implementation, and requirements are revised when product review changes direction.

Establish a baseline or backlog and obtain agreement

Requirements should have an agreed reference point from which controlled delivery and change can proceed.

Max Photo Frames evidenceThe requirements index, domain shards, Epic view, roadmap, task board and release checklist form the controlled baseline. Proposed work remains visibly separate from implemented behaviour.

Maintain traceability to source

Requirements must remain connected to their origin, delivered behaviour and evidence.

Max Photo Frames evidenceFeatures link to FR numbers, acceptance criteria, related architecture documents, implementation files, automated tests, manual verification and release sign-off. The matrix above summarises that chain.
Level 4 responsibility

Enable, guide and work autonomously

The broader SFIA Level 4 responsibility describes diverse complex work under general direction, supporting others and contributing expertise to team outcomes.

Honest usage

Practice alignment, not certification

This page demonstrates how the project’s artefacts align with REQM Level 4. A formal SFIA assessment would also require evidence of the individual’s workplace autonomy, influence, complexity and behaviours.

How the app is built

One editor made of separate parts, each with one job, from the controls you touch to the file you save.

A document-centred product

The editor is one experience built from distinct responsibilities.

Views present the controls, state coordinates intent, the document preserves creative decisions, and dedicated services understand, render and deliver the pixels.

Max Photo Frames on iPad: the editor with a logo placed on a photo as its watermark
Experience→State & intents→Creative document→Use-case coordination→AI & image pipeline→Layout & rendering→Storage & delivery
Show the seven parts and the technology
Experience
App shell, editor, canvas and inspectors

Present navigation and creative controls while reading state and raising user intent.

State & intents
Reactive coordination

State flows down to the interface; controlled actions flow up through the intent system.

Creative document
Non-destructive project and profile

FrameDocument, FrameProfile, document layers and unified caption elements preserve creative intent.

Use-case coordination
Intake, document and export interactors

Coordinate complete business processes without embedding policy inside views.

AI & image pipeline
Vision, analysis and processing nodes

Understand the scene, refine masks and create scoped image products.

Layout & rendering
Shared geometry, canvas and compositor

Turn one document contract into responsive preview pixels and high-resolution delivery pixels.

Storage & delivery
Settings, document assets and export services

Recover work, persist reusable assets, protect metadata and deliver the finished creation.

UI

SwiftUI and Observation

SwiftUI, iOS 17 Observation with @Observable, a custom staged editor layout, Swift concurrency and a canvas-first interaction model.

Imaging

Vision and Core Image

Apple Vision foreground masks, Core Image compositing and filters, Photos/PhotosUI integration, skin smoothing and subject cutouts.

Rendering

Shared preview and export

ExportInteractor, ExportManager, RenderService and layout math stay aligned with the live SwiftUI preview.

Architecture

Non-destructive documents

Reusable frame profiles, persisted media layers and a V5 document model keep editing flexible while protecting user work.

Selected build history

Development runs on the main line. Each release gets its own line at the exact build sent to Apple, is fixed there, and closes back in when the next version is live.

Show what happened at each step
  1. 15 Sep 2025

    First App Store release

    Max Photo Frames launches on iPhone and iPad with its first photo-framing experience.

    v1.06 commits
  2. 30 Jan 2026

    Smarter date handling

    Photos with unknown dates gain safer fallbacks and smarter caption behaviour.

    v2.8.0132 commits
  3. 31 Jul 2026

    A complete rebuild

    Version 3.0: a new document model, one text system and a shared preview and export path.

    v3.0.02,000 commits
  4. 1 Aug 2026

    Version 3.0 approved; its release line opens

    Fixes for the shipped version now start from their own branch. On the main line, automated comparison work keeps the live preview and the saved image aligned.

    release/v3.0
  5. 2 Aug 2026

    Hotfix 3.0.1, and full backup returns

    A fix ships from the release line as 3.0.1 and is carried forward. On the main line, backup returns to the Hub with the saved caption library.

    v3.0.1
  6. 14 Aug 2026

    Reliable iCloud Sync

    A full two-device test cycle hardens iCloud Sync and ensures an empty cloud answer can never delete a library.

  7. 15 Aug 2026

    Version 3.1 submitted

    The release notes, device verification and App Store materials come together, and 3.1 gets its own release line.

    v3.1.02,898 commitsrelease/v3.1
  8. 18 Aug 2026

    3.1 approved; one renderer for every export

    The 3.0 line closes into the main line. Live Photo, GIF and video exports move onto the same rendering path as the saved photo, and projects open without stalling.

    release/v3.0 closed
  9. 25 Aug 2026

    Version 3.2 submitted

    Presets gain groups you can name and search, captions and props answer to a touch and hold, and a 57-step device pass is completed on iPhone and iPad.

    v3.2.03,664 commitsrelease/v3.2website-v3.2
  10. 28 Aug 2026

    3.2 approved and live

    The 3.1 line closes into the main line, 3.2 becomes the live line, and the main line opens 3.3.

    release/v3.1 closed
  11. 24 Sep 2026

    Version 3.3 submitted

    Print sizes, your own logo as the watermark and camera settings as a caption are checked step by step on iPhone and iPad before 3.3 goes to Apple. Its release line is cut at the exact build sent, and the main line moves to 4.0.

    v3.3.0build 5,777release/v3.3website-v3.3
  12. Next

    Version 4.0, in development

    Short menus, a new bottom bar, the foldable iPhone and collage, on the main line while 3.2 and 3.3 stay on their own lines.

    4.0.0

Repository snapshot: 3,488 first-parent commits on main, 5,781 commits across local refs, and 23 release or milestone tags. Commit count describes repository activity, not hours worked.

Back to top ↑