Lifecycle

Software Maintenance Services for Existing Codebases

We take over inherited codebases, patch security issues, upgrade dependencies and keep production running under a defined support SLA.

NDA on request · Free, no-obligation estimate · Reply within one business day

Operator with a headset at a desk of monitors in a large operations centre
NDA before discovery
You own the code and IP on payment
Code in your repository from day one
A working demo every two weeks
Senior engineers do the work
How we work

A codebase doesn't need a rewrite just because the person who built it is gone. It needs someone to read it carefully, understand what it actually does, and take responsibility for keeping it running and current. We start every maintenance engagement with a code audit, not a patch, because the fastest way to introduce a new bug is to change code nobody has actually read yet.

From there, the work is steady rather than dramatic: known vulnerabilities get remediated, dependencies and frameworks get upgraded in stages so a jump of several major versions doesn't happen all at once, and a support SLA defines exactly how fast a production issue gets a response. Small enhancement requests get handled inside that same relationship, so a minor feature doesn't require re-litigating scope every time.

This covers taking over and sustaining a system that already exists. For a system that needs a substantial rebuild or a new major capability, that's closer to custom software development or one of the specific service pages, like backend development or cloud DevOps.

What we deliver

Software Maintenance & Support services

  • Codebase Audit for Inherited Projects

    A structured read-through of an unfamiliar codebase before any change is made: architecture, dependencies, known issues and the parts that are riskier than they look.

  • Security Patching and Vulnerability Remediation

    Known vulnerabilities in dependencies and application code identified and fixed, prioritized by actual exposure rather than a generic severity score alone.

  • Dependency and Framework Upgrades

    Multi-version upgrades staged incrementally with testing at each step, so a framework several versions behind doesn't require one large, risky jump.

  • Support SLAs

    Defined response and resolution times based on issue severity, so a production outage has a known escalation path instead of an uncertain wait.

  • Production Monitoring

    Monitoring and alerting set up or reviewed so issues surface before a customer reports them, with clear ownership for who responds to an alert.

  • Small Enhancements and Bug Fixes

    Ongoing feature requests and bug fixes handled inside the same relationship, without treating every small change as a new project to scope from scratch.

  • Documentation of Undocumented Systems

    Architecture, data flow and operational knowledge written down as it's discovered during the audit and ongoing work, so the next person doesn't start from zero.

You receive

Deliverables

  • A written codebase audit report
  • Patched dependencies with known vulnerabilities remediated
  • Upgraded framework and dependency versions
  • A defined support SLA with an escalation path
  • Monitoring and alerting configuration
  • Documentation of system architecture as it's discovered

How we work

Our software maintenance & support process

  1. Codebase and Dependency Audit

    We read through the codebase and its dependency tree before touching anything, documenting what it does, how it's structured and where the real risk sits.

  2. Prioritize Security and Stability Risks

    Findings from the audit are ranked by actual exposure and business impact, so the first fixes address the risks that matter most, not just the easiest ones.

  3. Patch and Upgrade in Stages

    Vulnerabilities and outdated dependencies are addressed incrementally, with testing between each stage rather than one large batch of changes at once.

  4. Establish Monitoring and SLA

    Monitoring is set up or reviewed, and a support SLA is agreed on covering response time by severity, so ongoing support has a defined shape.

  5. Ongoing Support and Enhancements

    Bug fixes and small feature requests are handled under the same engagement, with the audit's documentation making each change faster than the last.

  6. Quarterly Health Review

    A periodic check on dependency freshness, open vulnerabilities and system performance, so maintenance stays proactive rather than reactive to the next incident.

What an Inherited Codebase Audit Actually Finds

Most audits surface a similar pattern: a handful of genuinely risky areas (an unpatched dependency, an authentication flow with a subtle gap, a piece of business logic nobody fully understands) surrounded by a much larger amount of code that's simply unfamiliar rather than actually broken. The audit's job is telling those two categories apart before any change gets made.

We document findings by severity and by how confident we are in the assessment, since some risks are clear from reading the code and others need a test in a safe environment to confirm. That distinction matters for prioritizing what gets fixed first.

Upgrading a Framework Three Major Versions Behind

Jumping several major versions at once tends to surface every breaking change simultaneously, which makes it hard to isolate what broke and why. We upgrade one major version at a time, running the existing test suite (or writing a minimal one first, if none exists) between each step, so a regression is traceable to a specific version jump instead of buried in a pile of changes.

This takes longer than a single leap in theory, but it's the difference between a controlled, testable upgrade and a weekend spent guessing which of a dozen simultaneous changes broke production.

  • One major version upgraded at a time, not several at once
  • Test suite run (or built first) between each upgrade step
  • Breaking changes isolated to a specific, traceable version jump

Setting an SLA That Matches What's Actually at Stake

A support SLA is only useful if its severity tiers reflect what a real incident actually costs you. A production outage during business hours and a minor display bug in an admin screen shouldn't have the same response time commitment, and an SLA that treats them the same either overcommits on the trivial cases or undercommits on the ones that matter.

We set tiers based on your actual usage patterns and business impact, not a generic template, and review them periodically as the system and its usage change.

Budget

What drives cost and timeline

  • Codebase size and how outdated it is

    A small application a few versions behind costs less to audit and stabilize than a large one on a framework version several years out of date.

  • Number of known vulnerabilities to remediate

    A handful of low-severity dependency issues is a smaller project than a codebase with multiple high-severity vulnerabilities across its dependency tree.

  • SLA response time required

    A same-business-day response commitment costs less to staff for than a round-the-clock, sub-hour response requirement.

  • Volume of small enhancement requests expected

    An engagement scoped for occasional bug fixes is different from one expected to absorb a steady stream of small feature requests each month.

  • Whether documentation exists at all

    A codebase with reasonable existing documentation takes less time to audit than one where every piece of institutional knowledge has to be reconstructed from the code itself.

Compliance

Standards we design and build to

None of these is a certification or attestation held by this agency. They are the standards we design and build client systems to, so your own audit or assessment starts from a sound base.

  • GDPR / UK GDPR

    Personal data handled on a lawful basis, with data minimisation and a documented retention policy.

  • HIPAA safeguards

    Administrative, physical and technical safeguards applied where a system touches protected health information.

  • PCI DSS scope reduction

    Card payment flows tokenised through a certified processor so cardholder data never touches your systems.

  • SOC 2 readiness

    Access control, change management and audit logging built in from day one, ready for a client's own SOC 2 audit.

  • WCAG 2.2 AA

    Keyboard navigation, colour contrast and screen-reader labelling checked against the AA success criteria.

  • OWASP ASVS

    Authentication, session handling and input validation reviewed against the Application Security Verification Standard.

We list certifications only when they are real and current. See our security practices →

FAQ

Software Maintenance & Support FAQs

Can you take over a codebase built by a developer or agency we no longer work with?

Yes, and this is one of the most common ways a maintenance engagement starts. We begin with a code audit before making any change, so we understand what the system actually does and where the real risks are before touching production.

How do you audit a codebase you didn't build?

We read through the architecture, dependency tree and core business logic systematically, documenting what each part does and flagging anything that looks risky, outdated or unclear. Where the code's intent isn't obvious from reading it, we test in a safe environment rather than guess.

What's included in a software maintenance SLA?

A defined response time and resolution time by issue severity, an escalation path for production incidents, and a scope covering what counts as a bug fix versus a new feature request. Tiers are set based on your actual business impact rather than a generic template applied to every client.

Can you patch a known vulnerability without upgrading the entire framework at once?

Often yes. Many vulnerabilities can be patched at the dependency level without a full framework upgrade, and we prioritize that path when it's available. Where the fix genuinely requires a framework upgrade, we stage it incrementally rather than combining it with unrelated changes.

How long does it take to get comfortable with an inherited codebase before making changes?

A structured audit typically takes from a few days to a couple of weeks depending on the codebase's size and how much documentation already exists. We can start on urgent fixes, like an active vulnerability, in parallel with the broader audit rather than waiting for it to fully complete.

Do you handle small feature requests or only bug fixes and patching?

Both, under the same ongoing engagement. Small enhancements are scoped and delivered alongside bug fixes and patching rather than requiring a separate project each time, which is usually faster once the initial codebase audit is done.

Get an estimate for your software maintenance & support project

Share a few details about your project. A senior engineer reviews every request and replies with next steps, questions, and a rough budget range.

Get a free project estimate