Can LLMs Revive Classic Software Engineering? A Deep Dive into Standardized AI‑Driven Development
This article explores how large language models can standardize software engineering practices by converting requirements and designs into DSL formats, enabling more automated and efficient code generation, while discussing the challenges of dynamic context building, DSL specification, and the evolving role of LLMs in development pipelines.
Introduction: Looking Back
The author reflects on early programming experiences, from hand‑written code on DOS machines to modern web development, highlighting the recurring need for rapid proof‑of‑concept cycles such as creating templates, running unit tests, and delivering MVPs.
LLM as a New Team Member
Large language models (LLMs) are positioned as a new "team member" that requires extensive documentation and specifications to be effective. The article outlines three stages of LLM involvement:
Stage 1 – LLM as Copilot: Enhances individual engineers without changing existing roles.
Stage 2 – LLM as Co‑Integrator: Facilitates cross‑role collaboration by providing shared context.
Stage 3 – LLM as Co‑Facilitator: Assists in planning, forecasting, and decision‑making at the organizational level.
Dynamic Context Construction for LLM‑Driven Development
To make LLMs useful, the author describes the need to build dynamic development context, illustrated by the ArchGuard Co‑mate project. Key steps include extracting requirements from a management system, selecting appropriate code entry points (e.g., Java controllers), and feeding these to the LLM for code generation.
您是一个软件架构师,请生成 博客 entity 的所有 API。使用表格返回,格式:方法、路径、请求参数、返回参数、状态码。
1. 使用表格返回,格式:方法、路径、请求参数、返回参数、状态码。
2. 参考 API 规范生成。
rest_api {
uri_construction {
pattern("/api\/[a-zA-Z0-9]+\/v[0-9]+\/[a-zA-Z0-9\/\-]+")
example("/api/petstore/v1/pets/dogs")
}
http_action("GET","POST","PUT","DELETE")
status_code(200,201,202,204,400,401,403,404,500,502,503,504)
security("""Token Based Authentication (Recommended) ...""")
}Standardizing Specifications with DSL
The article proposes converting traditional documentation into a domain‑specific language (DSL) that can be consumed by LLMs. Examples include a naming‑validation DSL and a Kotlin‑style workflow DSL for describing activities and tasks.
naming {
class_level {
style("CamelCase")
pattern(".*") { name shouldNotBe contains("$") }
}
function_level {
style("CamelCase")
pattern(".*") { name shouldNotBe contains("$") }
}
} caseflow("MovieTicketBooking", defaultRole = "User") {
activity("AccountManage") {
task("UserRegistration") {
story = listOf("Register with email", "Register with phone")
}
task("UserLogin") {
story += "Login to the website"
}
}
activity("MovieSelection") {}
activity("PaymentCancel") {
task("ConfirmCancel") { role = "Admin" }
}
}Challenges and Future Directions
While LLMs can generate code given precise context, they still lack a global view of the system, making it necessary to provide higher‑level architectural and specification information. The author advocates for making documentation explicit, DSL‑driven, and dynamically available to reduce the cognitive load on LLMs.
Key takeaways include the need to:
Standardize the software development process and tool it.
Transform documentation into executable DSLs to lower AI reasoning costs.
Re‑package classic software engineering practices into AI‑first workflows.
Implementing these steps will require substantial effort and time, but promises a more automated and efficient development pipeline.
phodal
A prolific open-source contributor who constantly starts new projects. Passionate about sharing software development insights to help developers improve their KPIs. Currently active in IDEs, graphics engines, and compiler technologies.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
