AI & Engineering
Beyond Code Generation: Using AI Across the Software Development Lifecycle
Follow a hypothetical appointment-booking feature from an initial request through design, implementation, release, and maintenance.
Rommel Clarino 10 min read
At a glance
AI can contribute throughout software delivery. At each stage, give it useful context, define a concrete deliverable, and decide what evidence is needed before moving forward. A small appointment-booking feature shows how those stages connect.
Software delivery extends beyond writing code
Writing code is one part of delivering software. Before a feature reaches a user, someone has to decide what it should do, resolve unclear requirements, choose an approach, and verify that it behaves correctly. After release, someone has to keep it working.
AI can help throughout that process. The useful question at each stage is: what information does it need, what work can it contribute, and how will we know the result is good enough to move forward?
Let’s follow one feature through the software development lifecycle.
The hypothetical feature: booking a consultation
Imagine a small consulting business that arranges appointments by email. A customer asks for a time, an employee checks the calendar, and several messages later they agree on a slot. The business wants customers to book directly from its website.
The initial request is simple: “Let customers see available times, book a consultation, and receive a confirmation email.”
For this example, the first version supports one consultant, 30-minute appointments, and a fixed weekly schedule. Customers provide their name and email address. Employees can view bookings and cancel them.
Payments, recurring appointments, calendar synchronization, and customer rescheduling are outside the first release. That boundary gives us something small enough to build and clear enough to evaluate.
1. Requirements: turn the request into observable behavior
The first useful AI contribution is identifying what the request leaves unanswered. What does “available” mean? Can someone book five minutes before an appointment? Which time zone determines the business’s working hours? What happens when two customers choose the same slot?
AI can organize these questions and draft acceptance criteria. The business owner supplies the decisions. For our hypothetical feature, we agree on the criteria below.
These statements describe behavior we can inspect. They also expose consequences that a broad request hides. Email delivery, for example, cannot be the only evidence that a booking exists.
A useful prompt at this stage is: “Review this feature request for missing decisions. Separate questions requiring business input from implementation choices. Draft acceptance criteria using only the decisions already confirmed.”
The output should be an agreed specification. Unanswered questions should remain visible instead of becoming assumptions buried in generated code.
| Area | Agreed behavior |
|---|---|
| Duration and schedule | Appointments last 30 minutes and fall within the consultant’s working hours. |
| Booking cutoff | Customers must book at least two hours ahead. |
| Time display | The interface shows times in the customer’s selected time zone. |
| Exclusivity | Only one active booking can exist for a slot. |
| Confirmation | A booking is confirmed when saved, even if its email is delayed. |
| Employee access | Only authorized employees can view customer details or cancel bookings. |
2. Design: decide how the feature will work
With the behavior defined, AI can help explore implementation options and their trade-offs. For this first version, imagine a straightforward design: the application calculates bookable slots from the consultant’s schedule, stores reservations in a database, and schedules confirmation emails for delivery.
The most important design question is what happens when two customers try to reserve the same slot. Both might see it as available. Disabling a button in one browser does not protect against another customer submitting at the same time. The reservation operation must enforce exclusivity where bookings are stored.
For a fixed-slot design, that might mean representing each slot explicitly and allowing only one active reservation against it. The exact database mechanism depends on the application, but the requirement stays the same: two simultaneous requests cannot both succeed.
Ask AI to examine that interaction: “Walk through two customers booking the same slot simultaneously. Identify where exclusivity is enforced, what each customer receives, and how the system recovers from a timeout.”
Time handling deserves the same attention. The design should distinguish the business’s scheduling time zone from the time displayed to the customer, including what happens around daylight-saving changes.
The deliverable is a design that explains the important decisions and failure paths well enough for another developer to review.
3. Planning: break the feature into reviewable changes
“Implement appointment booking” gives an agent a large surface area and several intertwined decisions. AI can help divide the work into smaller changes: define the schedule and reservation data; implement availability calculation; add the reservation operation and conflict handling; build the customer booking interface; add confirmation-email delivery; and add the employee booking view and cancellation flow.
Each change should have a purpose, dependencies, and a way to verify completion. For example, the reservation operation is complete when it accepts valid requests, rejects unavailable slots, handles repeated submissions predictably, and returns a saved booking reference.
That is more useful than a checklist item saying “booking API done.” Keep the plan connected to the requirements. If AI introduces payments or external calendar integration, those additions should be removed unless the scope has deliberately changed.
4. Implementation: give AI a bounded task and useful context
An implementation prompt should include more than the desired feature. Provide the relevant repository conventions, existing modules, accepted design, and behavior that must remain intact. Point the agent toward the files it needs rather than overwhelming it with unrelated material.
For the reservation operation, a task might be: “Implement reservation creation using the existing database and validation patterns. Follow the agreed fixed-slot design. Reject slots that are occupied or inside the two-hour cutoff. Return the persisted booking reference. Keep email delivery outside the request’s success condition.”
The agent can produce the change and explain its decisions. The developer should then inspect whether it actually follows the design.
Watch for unnecessary dependencies, broad refactors, duplicated validation, and newly invented business rules. A working feature can still be difficult to maintain if its implementation ignores the surrounding codebase. Small changes make those problems easier to spot.
5. Verification: check the behavior that matters
Once the implementation exists, AI can help derive verification scenarios from the acceptance criteria and examine failures. For appointment booking, the happy path is only the beginning.
The checks need to match the risk. A database-backed concurrency check provides stronger evidence about double booking than a mocked response that assumes conflict handling works.
AI can also challenge the verification itself: “Which acceptance criteria are not covered by these checks? Which checks would still pass if the implementation were wrong?”
A passing suite is useful evidence. Its value depends on whether it exercises the behavior we intended to deliver.
| Scenario | Expected behavior |
|---|---|
| Two customers request the same slot | One reservation succeeds; the other receives a conflict. |
| A customer submits the same request again | The system avoids an unintended duplicate booking. |
| A slot falls inside the two-hour cutoff | The server rejects it. |
| The customer selects another time zone | The displayed time changes without changing the appointment instant. |
| Confirmation-email delivery fails | The reservation remains saved and delivery can be retried. |
| An unauthorized visitor requests booking details | Customer information is not disclosed. |
6. Review: assess the change as a whole
Code review connects the implementation back to the requirements and design. AI can help identify suspicious logic, missing error handling, and inconsistencies. Developers still need to assess the evidence behind each finding and understand the change they accept.
For our feature, the review should answer concrete questions. Can any request bypass the booking cutoff or slot-exclusivity rule? Is access to employee functions enforced on the server? Could a retry send duplicate confirmations? Does cancellation make the slot available again as intended? Are logs exposing names, email addresses, or other unnecessary details?
Ask for findings tied to specific code and a reproducible scenario. “This could have a race condition” is less useful than a description of the competing requests and the missing protection.
A second AI review can contribute another perspective, but agreement between agents is not independent proof that the feature is correct.
7. Release: make the change recoverable
Deployment is another part of the design. AI can help prepare a release checklist, inspect configuration requirements, and draft a rollback procedure. For this feature, the checklist should cover the database change, email credentials, employee access, and a complete booking attempt in the deployment environment.
If a feature flag is available, the team might initially expose booking only to internal users. That allows the complete flow to be checked before opening it to customers.
Recovery needs careful wording. Turning the feature off should stop new bookings while preserving existing reservations. Reverting application code does not automatically undo customer commitments or make deleting booking data acceptable.
The release is ready when the team knows how to enable the feature, recognize a problem, and contain it without losing valid appointments.
8. Operations: learn from what happens after release
After launch, AI can help summarize errors and investigate unexpected behavior using appropriately scoped operational data. For our booking feature, useful signals include failed reservation attempts, slot conflicts, confirmation-email failures, and requests that take unusually long.
Those signals need interpretation. A conflict may be normal when two customers choose a popular slot. A sudden increase might indicate that the interface is showing stale availability.
AI can propose explanations and help trace a request through the system. An explanation should be checked against logs, stored state, and reproducible behavior before it becomes a fix.
Operational findings should also return to the specification. If customers frequently misunderstand the selected time zone, the next improvement may be clearer confirmation copy rather than a different scheduling algorithm.
Keep a clear deliverable at every stage
The process becomes easier to manage when each stage produces something the next stage can use.
These stages will often overlap. A verification failure can expose a design mistake. An operational incident can reveal a missing requirement. AI can help carry that information between stages, provided the accepted decisions remain recorded and accessible.
| Stage | AI can help produce | Evidence needed to move forward |
|---|---|---|
| Requirements | Questions and acceptance criteria | Business decisions are explicit. |
| Design | Options and failure-path analysis | Important constraints are addressed. |
| Planning | Small tasks and dependencies | Each task has a completion condition. |
| Implementation | Focused code changes | The change follows the agreed design. |
| Verification | Scenarios and checks | Critical behavior is demonstrated. |
| Review | Specific findings | Findings are resolved or explained. |
| Release | Deployment and recovery steps | The feature can be released and contained. |
| Operations | Investigations and proposed improvements | Conclusions match observed evidence. |
Start with one complete feature
Appointment booking is a useful example because a small interface hides several meaningful engineering questions: concurrency, time zones, access control, retries, and delivery failures. AI can contribute to all of them. Its output becomes useful when it is connected to a clear requirement and a way to check the result.
For your next feature, write the acceptance criteria, choose the important constraints, and define the evidence needed at each stage. Then use AI to help produce and inspect those deliverables.
That gives you a way to assess progress beyond how much code was generated: whether the feature behaves as agreed, survives predictable failures, and remains understandable to the people responsible for it.