Opsera Presents Flutter 2026 · The AI-SDLC Summit

Evaluate your code base for modernization.

Software Factory Model cover graphic showing five stages: define, design, build, govern, and deliver

TL;DR

  • A software factory model standardizes software delivery by connecting requirements, architecture, governance, implementation, and testing into one continuous engineering workflow instead of treating them as independent activities.
  • Instead of asking developers or AI agents to interpret broad feature requests, the model converts approved specifications into machine-readable Work Orders with defined scope, dependencies, and acceptance criteria.
  • Every engineering artifact, from PRDs and architecture documents to generated code and pull requests, remains linked through a shared execution record, making changes traceable throughout the software lifecycle.
  • Governance becomes part of software generation rather than a review after implementation. Architecture approvals, security policies, and compliance checks validate specifications before development begins.
  • Legacy modernization benefits from the same workflow by reconstructing business intent before code transformation, reducing the risk of carrying undocumented behavior into modern applications.
  • Engineering teams adopt a software factory model to build repeatable software delivery, where developers, AI agents, and governance systems execute from the same versioned specifications instead of separate tools and disconnected context.

Understanding the Software Factory Model 

Imagine a team building an e-commerce platform over six months. The first engineer uses dependency injection for payment services, the second introduces a different pattern through an AI coding assistant, and a third starts a new AI session weeks later that recreates utilities already present in the repository because the previous architectural decisions never formed part of its context. The application still compiles, tests pass, and every individual change looks reasonable. Six sprints later, the codebase contains three different ways of solving the same problem, and reviewers spend more time recovering design intent than reviewing implementation. That pattern appears repeatedly in developer discussions about AI-assisted development and architecture drift.

A software factory model addresses that problem by treating software delivery as a governed engineering workflow instead of a collection of independent coding sessions. Product requirements, architecture decisions, policies, Work Orders, generated code, and reviews remain connected as versioned engineering artifacts, allowing every engineer and AI agent to execute from the same source of truth instead of rebuilding context whenever work resumes.

Interest in software factory models has grown alongside AI coding assistants, but they solve different problems. A coding assistant helps produce code inside a development session. A software factory governs how that code is planned, generated, reviewed, and traced back to the business requirement that justified it. As engineering organizations adopt AI across the SDLC, the challenge shifts from generating code quickly to ensuring every implementation follows approved architectural intent.

Gartner predicts a 2,500% increase in GenAI-related software defects as AI-generated code volume grows without matching governance. That projection matches what engineering leaders describe during retrospectives: code reaches review faster than teams can verify whether it still reflects the original design. A Hacker News discussion on architecture-drift tooling captured the problem succinctly: architecture drift rarely causes immediate failures, which is exactly why it survives unnoticed until much later.

This piece walks through one representative engineering workflow, from a written intent to a merged pull request, and marks where drift usually enters. It covers how specifications turn into executable Work Orders, where governance checkpoints sit inside the pipeline instead of after it, and what separates a software factory model from a coding assistant that happens to be fast.

Why Software Projects Drift From Their Original Design

A PRD defines the business objective. A BRD captures stakeholder requirements. An Architecture Document records system design, service boundaries, and technology choices. Jira stores implementation work as Epics and Stories, while GitHub contains the final code. When those artifacts evolve independently, developers spend more time reconciling conflicting documents than implementing features. A software factory model keeps those artifacts connected through versioned Living Specifications and Work Orders, preserving the relationship between the original requirement and the code that implements it.

Consider a payment feature that changes after architecture approval. The PRD adds partial refunds, the architecture document introduces a refund service, but the existing Jira Story still describes the original workflow. If an AI agent generates implementation from that stale ticket, the resulting code faithfully executes outdated requirements. A software factory model avoids that situation by regenerating Work Orders from the latest versioned specifications, keeping requirements, architecture, and implementation synchronized before code generation begins.

How A Software Factory Model Executes Work Orders Instead Of Prompts

A single sprawling ticket gives an agent room to guess. A bounded Work Order gives it a contract. The difference shows up first in how consistently two different engineers, or two different agent runs, land on the same implementation.

Work Orders Replace Large Unstructured Development Tasks

“Build the checkout flow” is not an instruction, it’s an invitation to interpret. Ten engineers handed that ticket would produce ten different validation rules for the discount field, ten different retry policies for the payment call, and probably three different answers for what happens when inventory hits zero mid-transaction. AI agents are worse at resolving this ambiguity than humans are, not better, because they resolve it silently and confidently instead of asking a Slack question.

A representative Work Order breaks that same feature into acceptance criteria an agent can execute against directly, something closer to this structure, reflecting the machine-readable Work Order schema Forge describes on its product site:

work_order: checkout-discount-validation
traces_to: prd-checkout-v3, arch-payments-v2
acceptance_criteria:
  - discount_code must validate against active promotions table before apply
  - retry policy: 3 attempts, exponential backoff, no retry on 4xx
  - inventory check runs inside the same transaction as payment authorization
dependencies:
  - payments-service >= v2.4
  - promotions-service (read-only)
out_of_scope:
  - gift card stacking (tracked separately, WO-checkout-giftcards)
owner: payments-team
story_points: 5

Requirements Stay Connected Throughout The AI SDLC

Ask a compliance auditor to trace a shipped feature back to the requirement that justified it, and most engineering organizations produce an awkward pause followed by three separate systems and a promise to “pull that together.” The requirement lived in Jira. The architecture decision lived in a design doc nobody updated after the third revision. The actual code diverged from both, quietly, over four sprints of small fixes.

An AI-SDLC that keeps specification, execution, and governance connected removes that pause. Forge’s model routes execution and governance through the same traceability matrix that generated the PRD and architecture in the first place, so a requirement, its implementation, and its test coverage share one lineage instead of three loosely related ones. That’s not an audit convenience. It’s the difference between a fifteen-minute compliance question and a two-day forensic exercise.

Diagram showing a traceability matrix connecting PRD, BRD, architecture, work order, source code, tests, pull request, and audit record as one versioned system of record

Look at the center node before following any individual connection because every relationship originates there. The audit path is easy to confuse with a deployment flow even though it only represents inherited traceability.

Human Review Moves From Prompt Editing To Decision Validation

Prompt engineering treats the human as an editor of phrasing: rewording an instruction until the output looks closer to right. That’s a strange place to spend senior engineering judgment. The actual decisions worth a human’s attention are architectural: does this service boundary hold, does this auth flow leak a scope it shouldn’t, does this dependency choice create a five-year maintenance liability.

A software factory model relocates the review checkpoint from “does this prompt produce acceptable code” to “does this architecture decision get approved before implementation starts.” Engineers stop negotiating with a chat window and start signing off on an artifact, the same way they’d approve a design doc, except the approval is now the gate that unlocks the next generation stage rather than a suggestion someone might read later.

Concretely, that changes what shows up in a senior engineer’s queue. Instead of a diff to skim for style violations, they see a locked intent document, a proposed architecture with the trade-offs stated next to it, and a Work Order that hasn’t started executing yet. Rejecting the architecture at that stage costs a comment and a re-generation. Rejecting it after three days of implementation costs a rewrite, a delayed release, and an uncomfortable conversation about why nobody caught it sooner. The gate is cheap precisely because it sits before the expensive part of the work, not after.

Governed delivery flow diagram showing nine steps from requirement and living specification through work order, AI agent review gate, architecture approval, code generation, and merge, with a rework path before implementation

Start by following the blue path until the review gate instead of jumping directly to code generation. The orange branch is easy to misread because it represents specification changes before implementation rather than code fixes after review.

Governance Inside The Software Factory Model Instead Of After Delivery

Architecture standards tend to live in a wiki page that gets read once, during onboarding, and never again. Everything after that point relies on someone remembering the standard exists. That’s a fragile place to put enforcement.

Architecture Policies Travel With Every Engineering Task

Post-hoc review catches violations after the cost of fixing them has already gone up: code is written, tests are passing, a PR is open, and now someone has to explain why a merged approach needs to be unwound. NIST’s Secure Software Development Framework, extended for generative AI in SP 800-218A, pushes toward the opposite pattern: security and architecture practices integrated at each stage of the SDLC rather than bolted on at the end, precisely because late-stage rework is where the real cost sits.

policy_set: payments-service
enforced_at: prd_generation, architecture_pass, work_order_execution
categories:
  - owasp_top_10: enabled
  - pci_dss_scope: enabled
  - internal_coding_standard: enabled
on_violation: block_stage_advance

That configuration snippet reflects the OWASP and compliance-framework toggle model Forge documents for its governance layer, again reconstructed as a representative structure rather than pulled verbatim, since the live docs site returned no readable content at fetch time. The effect it points to is real regardless: policy checks that run as PRDs, BRDs, and architecture passes get generated, with coverage tracked as it happens instead of discovered in a retrospective audit.

Forge platform screen showing Policy Coverage by Framework, listing compliance policies across business, coding standards, data flow, infrastructure, and OWASP Top 10 categories

PRD Generation With Policy Enforcement. Suppose an engineering team is building a PCI-compliant checkout service. The product manager creates a PRD. Before any architecture or Work Order exists, Forge exposes the Policy Coverage by Framework page shown in the screenshot. Instead of relying on someone remembering internal standards, the engineering lead enables policies across multiple governance layers:

  • PCI DSS
  • OWASP Top 10
  • Internal Coding Standards
  • Infrastructure & Network
  • Data Flow
  • Regulatory & Compliance

The interesting part isn’t the list itself. Each framework can be applied at different generation stages, including PRD, BRD, and Architecture. Requirements are therefore generated under governance rather than reviewed for compliance weeks later. Now the Work Order inherits those constraints automatically instead of asking an engineer or an AI agent to rediscover them.

Existing Engineering Systems Become Execution Entry Points

Engineering teams already depend on Jira, GitHub, Slack, and CI pipelines for daily delivery. Replacing those systems introduces migration work, retraining, and integration changes that add risk without improving software delivery by themselves.

A software factory model takes a different approach. Existing tools remain the interface engineers use, while governed execution happens underneath them. A Jira ticket becomes a Work Order, a GitHub pull request inherits traceability, and CI pipelines execute against the same versioned specifications instead of disconnected artifacts. Engineers keep familiar workflows while gaining a single execution record across planning, implementation, and governance.

Why Legacy Modernization Needs More Than Code Conversion

Modernization programs get pitched as a language problem: COBOL to Java, a monolith to services. In practice, the language conversion is rarely what stalls the project.

Legacy Applications Lose Context Before They Lose Code

A twenty-year-old system usually still runs. What it’s lost is the person who knew why a particular validation exists, or which downstream job silently depends on a field that looks unused. Technical debt consumes roughly 40% of IT budgets in organizations carrying significant legacy load, and most of that spend goes toward rediscovering intent, not toward the mechanical work of rewriting syntax.

Automated code conversion tools solve the wrong layer of that problem. They translate syntax accurately and reproduce whatever undocumented assumptions were baked into the original implementation, bugs included. A batch job that silently rounds currency to the nearest cent because of a 1998-era floating point workaround gets translated faithfully into modern syntax, rounding bug and all, because the converter has no way to know that behavior was never intentional in the first place. Nobody flags it because nobody reads decades-old COBOL line by line looking for a rounding quirk; they trust the conversion and move on.

Reconstructing the specification first, before touching the code, at least gives a team the chance to decide which of those old assumptions still deserve to exist. That reconstruction work looks less like reading code and more like interviewing it: tracing which fields still get written to, which conditional branches are unreachable dead weight from a policy that expired a decade ago, and which downstream batch job would break silently if a field’s format changed by one character. None of that shows up in a syntax diff. It shows up when someone, or something, asks the codebase the right questions before generating a single line of the replacement.

Forge platform screen for starting a project, with options to build something new or modernize legacy code by connecting a Git repository, folder, or ZIP file

The developer selects Modernize Legacy Code, connects the Git repository, and chooses the modernization journey. This isn’t the modernization itself. It’s the point where Forge builds the project context that later stages use to generate architecture, Living Specifications, modernization recommendations, and Work Orders. 

A codebase health scorecard displaying an 8-dimension score, including auth coverage, secrets handling, dependency risk, and logic-narrative categories, for a legacy service. Look at where the lowest-scoring dimension sits relative to the others; that’s usually the one nobody remembered was fragile.

Diagram showing the governed modernization path from legacy system through dependency mapping, specification recovery, and architecture review to governed release, alongside a risk path where skipped intent recovery leads to hidden defects and production risk

Follow the blue state transitions first because every later decision depends on recovering intent before code generation begins. The orange branch is easy to mistake for a shortcut, although it simply carries hidden assumptions into a newer codebase.

How Do You Measure Success in a Software Factory Model?

Lines of code shipped per week is a productivity metric that AI made worthless almost overnight. An agent can produce ten thousand lines of code that nobody should merge. What’s harder to fake is a percentage of requirements with a clean trace to approved architecture, or a rework rate measured as the share of merged code that gets reverted or substantially rewritten within thirty days.

Engineering organizations evaluating AI-SDLC tools increasingly ask about traceable Work Orders and rework rate before they ask about tokens-per-second. That shift in what gets measured is itself evidence that raw generation speed stopped being the bottleneck a while ago.

Rework rate is worth defining precisely, because it’s easy to fudge. The useful version counts merged code that gets reverted, substantially rewritten, or hotfixed within thirty days, divided by total lines merged in that period. A team generating code faster while that number climbs isn’t shipping more, it’s borrowing time from a future sprint that will have to clean up the difference. Traceability coverage works the same way: the percentage of merged pull requests that trace cleanly to an approved Work Order and, through it, to a PRD. Low coverage doesn’t mean the code is wrong. It means nobody could prove it was right without opening three separate systems and comparing timestamps by hand.

Why AI-Assisted Development Still Produces Architecture Drift

Faster generation didn’t remove the coordination problem between planning and delivery. It just moved the friction downstream, into review and rework, where it costs more to fix.

Living Specifications Disappear Between Planning And Development

A product requirements document gets approved in one meeting. A business requirements document gets approved in another, usually with a different set of stakeholders in the room. Neither document travels with the ticket that eventually implements it, so engineers spend the early part of every feature reconstructing what was already decided: which edge cases were explicitly out of scope, which compliance constraint killed a simpler design, which dependency was chosen over a better one because of a contract that expires next year. None of that context is wrong. It’s just scattered.

Forge generates and maintains Living Specifications throughout delivery, including PRDs, BRDs, architecture documents, and Work Orders. Those artifacts remain linked through the same execution workflow, allowing later stages to inherit approved requirements, architectural decisions, and acceptance criteria instead of relying on a developer to restate them.

Forge platform screen showing PRD-Spec generation for an incident command center project, including executive summary and business objectives with success criteria

Legacy Payment Service ➜ Import Repository ➜ Company Context ➜ PolicyCoverage ➜ Living Specifications ➜ Architecture ➜ Work Orders ➜ AI Code Generation ➜ Pull Request ➜ Deployment

A layered artifact stack showing PRD, BRD, architecture, and Work Orders connected as a single versioned specification, with the labels “Living Spec” and “No blank slates” overlaid. Look at how each layer references the one above it rather than sitting in a separate tool. 

Prompt Context Breaks Long Before Code Quality Does

Long-running engineering work rarely fits in one sitting, and most AI coding sessions treat each new sitting as a blank page. A developer restates the tech stack, the naming conventions, and the three past decisions that overrode the “obvious” approach, every single time a session resets. On a Hacker News comment about architecture-drift tooling, one practitioner working on long-lived enterprise codebases described exactly this fatigue: keeping a system’s real picture accurate without someone manually re-explaining it, over and over, to whatever tool is in the loop that week.

The failure isn’t that the model forgets syntax. Syntax holds up fine. What degrades is judgment: which constraint mattered, which shortcut was already rejected last month, which service boundary is load-bearing versus which one is just how the first engineer happened to draw it. Forge’s persistent mission context is built to resume a project inside the same system-of-record session rather than restart a conversation, so the constraints from week one stay live in week six without a human re-typing them.

Building a Software Factory Model in Practice

A software factory model changes how engineering work moves from an idea to production. Instead of handing developers a Jira ticket and expecting requirements, architecture, implementation, and governance to stay synchronized through documentation, every stage produces an engineering artifact that becomes the input for the next stage. A PRD defines the business objective, an approved architecture translates that objective into a technical design, machine-readable Work Orders define bounded implementation tasks, policy checks validate those artifacts before execution, and generated pull requests inherit the same engineering context instead of starting from a blank prompt.

For engineering teams, adopting a software factory model isn’t about replacing developers or introducing another coding assistant. It means replacing disconnected handoffs with a continuous execution workflow where every implementation traces back to an approved requirement, and every architectural decision survives beyond the sprint that introduced it. If a developer can start from a versioned specification instead of reconstructing intent from Jira comments, wiki pages, and previous pull requests, the software factory is solving the problem it was designed to solve.

FAQs

  1. How does a software factory model differ from GitHub Copilot?

Copilot speeds up writing code inside an editor session with no persistent memory of architecture decisions. A software factory model versions specifications, work orders, and governance checkpoints as a system of record, so context survives across sessions and audits.

  1. Why do AI coding tools still create architecture drift?

Most tools generate code from a prompt with no binding to the original requirement or architecture doc. Each session starts fresh, so small interpretive choices accumulate unchecked until the shipped system no longer matches what was designed.

  1. Can a software factory model work with existing engineering tools?

Yes, when execution triggers from Jira, GitHub, Slack, or CI rather than replacing them. The governed mission runs underneath, so a team keeps its existing stack while gaining traceability it didn’t have before.

  1. What is a Work Order in a software factory model?

A Work Order is a bounded, machine-readable unit of implementation work with explicit acceptance criteria, dependencies, and traceability back to the PRD and architecture that justified it, replacing a loosely scoped ticket or prompt.

Evaluate your code base for modernization.