课程大纲
第一单元 基于LLM的软件研发思路
利用LLM进行软件研发的思路
1. LLM智能大模型的应用场景:
1)代码解释:通过LLM对代码进行解释与注释
2)代码改写:通过LLM对原有代码进行优化
3)代码生成:通过LLM根据新需求编写代码
4)代码测试:通过LLM根据新需求编写测试用例
2. LLM智能大模型核心原理与应用:
1)提示词工程:如何通过提示词的互动,指导LLM编码
2)示例文档上传:如何通过编写与上传示例文档,指导LLM工作
3)搭建本地知识库:通过搭建知识库,为LLM制定开发规范
4)Skills/Rules:为AI提供编程的技能,制订开发的规范
氛围编程vibe coding的AI编程思路
1. 氛围编程(vibe coding)的设计思想
1)设定环境、目标与业务需求
2)让AI去编码,完成开发的工作
3)不断地运行调试与反馈,让AI去修复与解决问题
2. 从传统编程到氛围编程的转变
1)从“实现者”到“引导者/产品经理”的转变
2)从“关注细节”到“关注体验”的转变
3)从“全面地设计”到“快速启动、逐步迭代”的转变
3. 氛围编程(vibe coding)的设计实战
实战演练:图书管理系统的AI编程过程
1)提出最小需求让AI去设计实现
2)提出需求让AI去不断地调试与优化
3)在原有的基础上,提出更多的业务需求
4. 氛围编程(vibe coding)的局限与问题
1)AI编程无法去应对复杂的、大规模的应用开发
2)AI编程同样需要制定相应的编码规范
3)AI编程同样需要架构规划与层次划分
4)AI编程同样需要基于设计思想进行设计编码
结论:AI替代的不是人,而是不会使用AI的人
1)需要更加深刻的理解业务而不是技术
2)需要更强的架构规划与设计能力
3)需要对AI编码的正确与否的甄别与判断能力
4)需要掌握与AI工作与协同的工作技能
契约编程spec coding的AI编程思路
1. 契约编程spec coding与规范驱动开发SDD
1)人与AI一起制订契约(业务需求、业务架构、UI原型、非功能需求)
2)人与AI一起制订技术架构、拆解开发任务
3)AI驱动进行设计、开发、测试与运行调试
2. 从氛围编程到契约编程的转变
1)从“模糊指令”到“精准契约”的转变
2)从“代码优先”到“规范优先”的转变
3)从“实现者”到“架构师/审核者”的转变
4)从“结果不可控”到“过程可验证”的转变
3. 契约编程spec coding的设计实践
实战演练:图书管理系统的AI编程过程
1)为AI制订契约:spec、tasks、checklist
2)人AI基于契约进行设计、开发与调试
3)通过修改契约,迭代地扩展业务需求
4. 契约编程spec coding的探讨与思考
1)用什么方式表达契约:用例模型与领域模型
2)如何制订开发任务:以领域驱动为规范制订开发任务
3)以rules和skills为核心,规范AI的编程质量
案例:以DDD为指导的AI编程实践
1. 制定LLM软件开发的模板与规范:
1)文档模板:架构设计的模板、用例模型的模板、领域模型的模板
2)开发规范:领域对象、服务接口、DSL配置、测试用例的开发规范
3)依次为基础,提前为AI设计一系列的rules和skills
2. 基于领域模型的LLM软件开发:
上半场:梳理业务需求,构建领域模型,形成契约
1)LLM辅助的软件需求探索与业务架构规划
2)LLM辅助编写用例模型,由人来审核
3)LLM辅助编写领域模型,由人来审核
下半场:基于领域模型的AI驱动开发、测试与调试
4)LLM辅助形成数据库设计,编写SQL脚本
5)LLM辅助编写领域对象、服务接口与DSL代码
6)LLM辅助,基于底层平台实现业务代码的编写
7)LLM辅助,基于业务需求创建测试用例代码
8)LLM辅助完成前端的开发,并进行运行调试与优化
第二单元 DDD的AI编程全程演练
业务架构的规划与设计过程
一、业务需求探索与业务架构规划
实战演练:AI辅助与人机结合的业务架构探索过程
二、由粗到细的业务梳理过程
三、动态模型与静态模型相结合的分析过程
1. 动态模型:用例模型
每个用例及其业务流程的梳理过程
2. 静态模型:领域模型
领域对象及其相互关系的梳理过程
用例模型与需求规格说明书
实战演练:在线交易系统的业务梳理过程
1. 用例模型的分析设计过程
1)站在全局的业务规划与战略设计
2)由粗到细的用例建模过程:用例、参与者与系统边界
3)三种类型的用例描述:业务流程、查询报表、图表展示
4)按照用例描述的方式编写需求规格说明书
2. 界面原型设计
3. 演练:基于LLM的进行需求探索,建立用例模型
1)基于LLM进行业务架构的规划与业务需求的探索
2)为用例模型编写设计skills并且不断调教
3)业务架构+skills,让LLM自动生成用例模型与用例描述
4)对LLM生成的用例模型与用例描述进行审查与调教
5)基于用例模型形成最终的需求规格说明书
演练基于LLM的领域建模过程
1. 从领域中吸取业务领域知识
2. 统一语言建模:与用户沟通需求的高级技巧
3. 领域驱动的设计思想:将真实世界与软件世界对应起来
1)将真实世界的事物与软件世界的对象对应起来
2)将真实世界中事物的行为,与软件世界中对象的方法对应起来
3)将真实世界中事物间的关系,与软件世界中对象间的关联对应起来
4. 演练:用LLM基于用例模型形成领域模型
1)为领域模型编写skills并不断调教
2)用例模型+skills,通过LLM形成领域模型
3)对AI生成的领域模型进行梳理与确认
4)按照领域模型划分限界上下文
5. 基于DDD进行业务架构规划
1)为每个限界上下文构建业务领域模型
2)划分并识别主题域、支撑域、通用域
3)落实各子域之间的联系、接口及事件通知机制
6. 对LLM生成的领域模型进行审查与调教
演练基于AI编程的后端开发
1. 利用LLM搭建后端项目软件开发环境
1)编写skill文件定义Springcloud开发环境
2)采用Builder模式,由LLM搭建后端开发环境
3)通过Maven运行并验证后端开发环境
2. 利用LLM将领域模型的设计转变成数据库设计脚本
1)为数据库设计编写skills文件
2)领域模型+skill文件,由LLM生成数据库脚本
3)开发人员对数据库脚本进行审查与优化
3. 利用LLM将领域模型的设计转变成程序设计
1)为领域对象编写skills文件
2)为服务接口编写skills文件
3)为DSL的配置编写skills文件
4)基于领域模型+skills文件,由LLM生成初步的程序代码
5)开发人员对程序代码进行审查与优化
4. 基于DDD的平台规范,由LLM实现业务功能
1)基于DDD的规范,搭建一套支持DDD的开发平台
2)编写DDD开发平台的API接口文档
3)通过注释的方式,对服务接口Service的每个方法进行设计
4)基于接口注释+平台API接口文档,由LLM编写和实现业务功能
5)开发人员对AI生成的程序代码进行审查与调优
5. 基于用例模型的业务需求,由LLM生成测试用例代码
1)为测试用例代码编写skills文件
2)用例模型+skills文件,由LLM生成测试程序代码
3)开发人员对测试代码进行确认与调教,并完成最终的测试
基于DDD的平台架构设计
1. 解决软件层次的复杂性:将业务与技术解耦
2. 整洁架构与六边形架构的设计思想
3. CQRS命令与查询职责分离的设计思想
4. 基于整洁架构的DDD架构设计思路
1)制作通用仓库与工厂的设计思路
2)引入DSL的思路与设计实现
3)支持DDD的增删改功能架构设计
4)支持DDD的查询功能的架构设计
5. 基于DDD的底层平台,进行AI编程开发
6. 用AI去优化与规范底层开发平台
演练基于AI编程的前端开发
1. 利用LLM搭建前端项目软件开发环境
1)通过业务架构规划的技术选型,搭建React+Vue的前端项目
2)基于LLM创建登录页、主页、用户注册等基础组件
3)启动并验证前端项目
2. 基于用例模型,由LLM规划UI界面,生成界面原型
1)通过读取用例模型,由LLM规划UI/UX
2)基于UI界面规划,由LLM生成界面原型
3)通过人机交互,对界面原型的效果进行调优
3. 由LLM识别后端API接口,进行前后端交互
1)由LLM识别后端API接口,完成前后端交互的开发
2)分别启动前后端应用,运行调试前后端项目
3)由LLM对前后端运行过程中的问题进行分析与修复
第三单元 LLM的高质量软件设计
在AI时代应该如何编程
1. AI是用于替代人,还是给人提供更加高效的工具?
2. 脱离设计的AI编程只能是低质量的代码
3. 高质量的软件设计才能指导AI高质量地编码维护
结论:AI时代给设计者提出的是更高的设计要求
1)基于业务需求进行分析设计
2)将大任务拆分成无数个小任务
3)基于rules对AI编程进行规范
4)基于rules对AI编写的测试用例进行规范
基于LLM的代码整洁与重构过程
1. AI编程是软件重构与代码整洁的解决之道
1)解析软件退化的根源与代码整洁
2)传统的软件重构的困境
3)AI编程是软件重构的解决之道
2. 重构是代码整洁与高质量编码的实现方式
1) 准确理解软件重构
2) 每次变更的时候,先重构再实现需求
3) 每过一段时间就通过重构整理一次代码
3. 案例:演练业务需求变更与代码维护过程
1) 基于LLM进行业务需求与用例模型的变更
2) 基于LLM与用例模型进行领域模型的变更
3) 基于用例模型与领域模型的变更,让LLM进行程序代码的变更
4) 基于用例模型与领域模型的变更,让LLM编写新的测试用例
5) 通过测试用例,对新老功能的测试与验证
基于LLM对遗留系统进行优化
案例分析:基于LLM重构一个大型遗留系统
1. 重构第一步:代码可读性
1)讲解代码的规范性与可读性
2)演练用AI对遗留系统的代码进行规范与注释
2. 重构第一步:分解大函数
1)解析超级大函数产生的根源
2)演练用AI进行软件重构:抽取方法
3. 重构第二步:拆分大对象
1)超级大对象拆分的思路:单一职责原则
2)演练用AI进行软件重构:抽取类
4. 重构第三步:提高复用率
1)讲解顺序编程的危害与散弹式修改
2)演练用AI进行代码复用的重构过程
5. 重构第四步:可扩展设计
1)讲解“开放-封闭”的设计原则
2)演练用AI进行代码可扩展设计的4个方法
6. 重构第五步:降低耦合度
案例:利用AI进行工厂模式的软件设计
案例:利用AI进行适配器模式的软件设计
案例:利用AI进行策略模式的软件设计
第四部分 基于LLM的自动化运维
基于LLM搭建自动化发布平台
1. 持续集成工具Jenkins及其运行原理
2. AI辅助的Jenkins的安装部署过程
1)AI编写Jenkins在Docker的部署脚本
2)AI编写Jenkins在Kubernetes的集群部署脚本
3. 创建自动化流水线Pipeline
1)Pipeline的任务创建与脚本语法
2)Junit + Allure的自动化测试与测试报告
3)基于SonarQube的代码规范性检查
4)基于Jacoco的代码覆盖性检查
5)制作Docker镜像并发布
6)在Kubernetes分布式云平台部署
4. 演练:由LLM编写基于Pipeline的持续集成脚本
演练电商订单系统的自动化部署
1. 一个完整项目的微服务拆分与Git发布
2. 通过AI为每个微服务项目创建pipeline脚本
3. 通过AI每个微服务编写自动化测试脚本
4. 每个微服务的代码规范性检查
5. 每个微服务的代码覆盖率检查
6. 通过AI为每个微服务制作Docker镜像发布脚本
7. 通过AI编写Kubernetes云平台自动化部署脚本
8. 通过AI编写Vue前端项目打包部署脚本
演练智能化的系统监控与运维
1. 搭建系统监控组件Prometheus实操
1)K8s系统监控组件kube-state-metrics与metrics-server
2)在Kubernetes平台埋点:node-exporter
3)在Prometheus中设计rules与告警
实战演练:通过AI的规划,对redis, RabbitMQ, kafka, elasticSearch等技术组件进行实时监控与告警
2. 搭建监控数据展现组件Grafana实操
实战演练:通过AI的规划,用Grafana设计数据监控指标与控制台
3. 设定AlertManager自定义告警通知的实操
4. 基于MCP的故障问题智能处置
智能化的链路跟踪与性能优化
1. 搭建基于SkyWalking的链路跟踪体系
1)SkyWalking的架构体系与设计原理
2)在Kubernetes云平台搭建SkyWalking服务器
3)为每一个服务应用加入SkyWalking的agent收集数据
2. 基于AI进行数据分析与性能优化
1)通过日志分析和压力测试,在AI的辅助下进行故障的排查
2)有针对性地对问题进行设计调优
3)有针对性地设计监控指标,进行实时监控与告警
EFK日志采集与故障分析
1. 日志采集与故障分析的重要意义
2. 搭建ElasticSearch+Flunted+Kibana日志采集实操
1)部署Flunted在Kubernetes平台采集日志
2)日志数据存储在ElasticSearch数据库中
3)使用Kibana对日志数据进行分析
3. 使用Kibana系统监控组件分析与监控系统
1)在Kibana中进行错误日志的跟踪与监控
2)通过AI进行错误日志的分析与处置
3)通过Kibana进行数据图表分析,建立日志监控控制台
4. 通过Kibana进行业务指标分析与问题溯源
1)通过Kibana进行用户行为日志的追踪与监控
2)通过AI进行用户行为的业务指标分析与问题溯源


