AI赋能软件工程综合实训

实践教学案例 - 桂林信息科技学院 信息工程学院 · 软件工程专业

本教学案例由《软件工程综合实训》课程组创建,黄良宝主创

案例概述

🎯 教学目标

知识目标

  • 掌握AI工具在软件工程全生命周期的应用
  • 理解DevOps + AIOps的核心理念
  • 学会智能体(Agent)的搭建与使用
  • 建立AI辅助编程的正确方法论

能力目标

  • 能够独立使用AI工具完成项目开发
  • 具备AI输出内容的评审与优化能力
  • 掌握CI/CD自动化流水线的搭建(可选)
  • 培养团队协作与AI协同工作能力

📋 案例特点

零成本

所有工具均为免费服务,无需付费购买

可操作

每一步都有详细截图和操作说明

已验证

所有流程经过实际操作验证,确保可行

教师端 - AI赋能教学实施

1

课前准备:搭建教学专用智能体

使用扣子Coze平台搭建3个教学专用智能体

智能体1:软件工程实训顾问

扣子平台界面

图1:扣子Coze平台首页

📝 角色设定(Persona):

你是一位拥有15年软件工程经验的资深实训指导老师,熟悉高校软件工程实训教学。 你擅长指导学生完成需求分析、系统设计、编码实现、测试部署全流程。 你的回答要专业、耐心,给出具体可操作的建议,避免空泛理论。

🔗 学生访问链接:

软件工程实训顾问智能体

智能体2:报告评审专家

📝 角色设定:

你是软件工程文档评审专家,严格按照GB/T 9385国家标准评审学生提交的文档。 请从以下维度评审:格式规范性、内容完整性、逻辑一致性、技术可行性。 每个文档至少提出3个具体问题,标注位置并给出改进建议。

使用场景:学生提交需求/设计文档后,上传给此智能体自动生成评审意见,减轻教师批改负担

🔗 教师访问链接:

报告评审专家智能体

智能体3:代码质量检查助手

📝 角色设定:

你是代码质量检查专家,检查学生提交的Java/Python/JavaScript代码。 检查维度:代码规范、安全漏洞、性能问题、注释完整性、单元测试覆盖率。 输出格式:问题位置 + 问题描述 + 修复建议 + 优化后代码示例。

🔗 访问链接:

代码质量检查助手智能体

2

课中实施:AI辅助教学流程

10天实训周期的AI赋能教学安排

天数 阶段 教师AI赋能动作 学生产出
第1天 可行性分析 演示AI生成可行性分析报告框架
指导学生使用豆包/DeepSeek
《可行性分析报告》
第2天 项目计划 演示AI生成WBS任务分解
ProcessOn甘特图制作指导
《项目开发计划书》
第3天 需求分析 使用"AI产品经理"智能体引导需求挖掘
PlantUML用例图生成教学
《需求规格说明书》+ 评审意见
第4-5天 系统设计 AI生成UML类图/时序图教学
数据库设计AI辅助技巧
《概要/详细设计说明书》
第6-7天 编码实现 Trae IDE/Cursor现场教学
AI辅助调试与Bug排查演示
可运行的系统代码
第8天 系统测试 AI生成测试用例方法教学
边界值测试思维训练
《测试报告》
第9天 CI/CD部署(可选,可在本地开发环境进行演示) Jenkins + Docker流水线搭建演示
AIOps监控智能体配置
部署完成的系统
第10天 验收答辩 AI辅助生成答辩PPT
智能体模拟答辩提问
项目验收 + 总结报告
3

课后评价:AI辅助考核评价体系

建立客观、公正的AI辅助评价机制

📊 AI工具使用评价维度

  • 1 日志完整性:AI工具使用日志是否完整记录每次交互
  • 2 人工修改率:AI生成内容的人工修改比例(建议≥30%)
  • 3 理解深度:学生是否真正理解AI输出的内容
  • 4 创新性:在AI基础上是否有团队原创贡献

⚖️ 成绩构成(AI赋能版)

平时表现:出勤、团队成员研讨参与度、批判思维 10%
阶段性检查:项目进度+规范性检查 10%
文档质量(AI评审+人工复核):小组报告+个人报告: 30%
验收答辩:系统功能展示+答辩表现+AI工具合理使用 50%
CI/CD部署完成度(加分项) 10%

学生端 - AI辅助项目开发实战

1

阶段一:AI辅助需求分析(第3天)

以"校园实验室设备管理系统"为例

步骤1:使用"AI产品经理"智能体挖掘需求

💬 对话示例:

👤 你说:

我们要做一个校园实验室设备管理系统,用户包括学生、老师、管理员。请帮我挖掘需求,提出5个澄清问题。

🤖 AI产品经理回答:

  1. 学生借用设备是否需要老师审批?审批流程是几级?
  2. 设备是否需要分类管理?是否支持设备二维码扫码借用?
  3. 是否需要设备维护保养记录和损坏赔偿功能?
  4. 是否需要统计报表功能?按部门/设备类型/使用率统计?
  5. 是否需要与学校统一身份认证系统对接?

步骤2:AI生成PlantUML用例图代码

📝 提示词模板:

请为校园实验室设备管理系统生成用例图的PlantUML代码, 参与者包括:学生、教师、管理员。 用例包括:设备查询、设备借用、设备归还、审批申请、 设备管理、用户管理、统计报表。 要求:使用标准PlantUML语法,添加注释。

将生成的代码粘贴到 PlantUML在线编辑器 即可生成图片

可使用的软件工程实训顾问

📝 访问链接:https://www.coze.cn/store/agent/7629174469491703823?bot_id=true

2

阶段二:AI辅助编码实现(第6-7天)(时间可前置一些)

使用Trae IDE进行AI辅助编程(可使用其他工具,这里只是示范)

Trae IDE界面

图2:Trae IDE 操作界面

✅ Trae IDE 安装配置

  1. 1 访问官网 www.trae.ai 下载对应系统版本
  2. 2 安装完成后使用手机号注册登录(完全免费)
  3. 3 打开项目,按 Ctrl+K 呼出AI对话

💡 高效编程提示词技巧

代码生成:

"在DeviceController中生成分页查询设备列表的REST接口,使用MyBatis-Plus,返回Page对象,包含异常处理"

Bug修复:

"分析这段错误堆栈信息,找出NullPointerException的原因并给出修复方案 [粘贴错误日志]"

代码重构:

"重构这段代码,应用策略模式消除if-else,保持原有功能不变 [粘贴代码]"

⚠️ 重要提醒:AI编程三原则

  1. 理解优先:AI生成的每一行代码都要理解其逻辑,禁止复制粘贴后不管
  2. 人工审查:重点检查SQL注入、空指针、权限控制等安全漏洞
  3. 团队贡献:必须在AI基础上加入自己的思考和改进,体现原创价值
3

阶段三:CI/CD自动化部署(第9天)注意:可选项,加分项

搭建Gitee + Jenkins + Docker自动化流水线(有能力的团队,可实现CI/CD。亦可在本地开发环境部署。)

🏗️ CI/CD 流水线架构图

开发者提交代码
Gitee Webhook
Jenkins构建
Docker部署
系统上线
📌 步骤1:本地启动Jenkins(一条命令搞定)
docker run -d --name jenkins -p 8080:8080 -p 50000:50000 \ -v jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ jenkins/jenkins:lts-jdk11

浏览器访问 http://localhost:8080 进入Jenkins

📌 步骤2:项目根目录创建Jenkinsfile
pipeline { agent any stages { stage('代码检出') { steps { git 'https://gitee.com/your-name/project.git' } } stage('后端构建') { steps { dir('backend') { sh 'mvn clean package' } } } stage('前端构建') { steps { dir('frontend') { sh 'npm install && npm run build' } } } stage('构建镜像') { steps { sh 'docker build -t myapp:latest .' } } stage('部署') { steps { sh 'docker run -d -p 8080:8080 myapp:latest' } } } }
📌 步骤3:配置Gitee Webhook触发自动构建

在Gitee仓库设置 → WebHooks → 添加Jenkins提供的回调地址,选择"Push事件"触发

🎉 完成效果:

此后,团队成员每次 git push 提交代码,都会自动触发:代码拉取 → 编译构建 → 测试 → Docker镜像构建 → 自动部署上线!真正体验企业级DevOps开发流程!

Vibe Coding高效提示词工程大全

💡 提示词工程核心原则

角色明确

指定AI扮演专家角色

任务具体

清晰描述要完成的任务

格式指定

明确输出格式要求

约束清晰

说明技术栈和限制条件

1 阶段一:技术选型与架构设计

技术栈选型建议
你是资深架构师。我要做【校园实验室设备管理系统】,团队5人,实训2周。 请从以下维度给出技术选型建议: 1. 后端框架(Spring Boot vs Node.js vs Python)对比 2. 前端框架(Vue3 vs React vs 原生)对比 3. 数据库(MySQL vs PostgreSQL vs SQLite)对比 4. 考虑因素:学习成本、开发效率、部署难度 5. 给出最终推荐方案及理由 输出格式:表格对比 + 推荐结论
系统架构设计
你是企业级架构设计师。为【Spring Boot + Vue3 + MySQL】技术栈的设备管理系统设计: 1. 分层架构图(Controller/Service/Dao/Entity) 2. 核心模块划分(用户模块/设备模块/借用模块/统计模块) 3. 接口设计规范(RESTful API命名、返回值统一格式) 4. 数据库表设计原则 5. 给出包结构目录树 要求:符合阿里巴巴Java开发规范,适合学生团队开发
数据库设计生成
为校园实验室设备管理系统设计数据库表: 1. 用户表(管理员、老师、学生) 2. 设备表(分类、状态、位置) 3. 借用记录表(申请、审批、归还流程) 4. 设备维护记录表 请输出: - MySQL DDL建表语句(含索引、外键、注释) - 字段说明(类型、长度、约束、含义) - ER关系说明 - 索引优化建议

2 阶段二:编码实现(GitHub Copilot‌/Cursor/Claude Code/Trae IDE(国内且免费)等)

实体类/VO/DTO生成
基于以下数据库表结构,生成符合Spring Boot规范的Java代码: 【粘贴表结构】 生成内容: 1. Entity实体类(使用JPA/MyBatis-Plus注解) 2. DTO(新增/修改请求参数) 3. VO(返回给前端的视图对象) 4. Converter(DTO与Entity互转工具类) 要求: - 使用Lombok @Data @Builder - 字段添加swagger注解@ApiModelProperty - 添加参数校验注解@NotNull @NotBlank等 - 命名规范:XXXEntity, XXXDTO, XXXVO
Controller接口生成
为【设备借用】功能生成完整的RESTful Controller: 功能点: 1. 分页查询借用记录(支持按状态、用户、设备筛选) 2. 提交借用申请 3. 审批借用申请(通过/拒绝) 4. 确认归还设备 5. 删除借用记录 技术要求: - 使用MyBatis-Plus的IService和Page - 统一返回Result - 参数校验@Valid - 日志注解@Slf4j - 异常处理 - RESTful风格:GET POST PUT DELETE 参考已有代码风格:【粘贴类似Controller代码片段】
Service业务逻辑生成
实现设备借用的业务逻辑Service层: 业务规则: 1. 同一设备同一时间只能被一人借用 2. 借用时长不能超过30天 3. 学生借用需要老师审批,管理员可直接审批 4. 逾期未还自动标记为异常 5. 设备损坏需要记录赔偿 实现要求: 1. 接口 + 实现类分离 2. 事务注解@Transactional(注意rollbackFor) 3. 业务校验抛出自定义BusinessException 4. 关键操作记录日志 5. 使用LambdaQueryWrapper构建查询 需要考虑的边界条件:重复借用、设备不存在、权限校验、日期冲突
Vue3前端页面生成
使用Vue3 + Element Plus生成设备管理列表页面: 功能: 1. 搜索表单(设备名称、分类、状态) 2. 表格展示(分页、排序) 3. 新增/编辑弹窗表单 4. 删除确认 5. 批量操作 技术要求: - <script setup>语法糖 - Composition API - TypeScript类型定义 - axios请求封装 - ElTable + ElPagination - 表单校验rules - 响应式布局 参考API接口:GET /api/device/page, POST /api/device, PUT /api/device, DELETE /api/device/{id}

3 阶段三:自动化测试生成

JUnit单元测试生成
为以下Service方法生成JUnit 5单元测试用例: 【粘贴Service方法代码】 测试要求: 1. 使用Mockito Mock依赖的Mapper/其他Service 2. 覆盖正常流程、异常流程、边界值 3. given-when-then三段式 4. assertAll批量断言 5. 参数化测试@ParameterizedTest 6. 测试方法命名:test方法名_场景_预期结果 需要测试的场景: - 参数合法 → 成功执行 - 参数为null → 抛出参数异常 - 业务条件不满足 → 抛出业务异常 - 数据库操作成功/失败
边界测试用例设计
针对【设备借用申请接口 POST /api/borrow/apply】设计完整测试用例: 请求参数: - deviceId: Long (设备ID,必填) - startTime: LocalDateTime (开始时间) - endTime: LocalDateTime (结束时间) - reason: String (借用原因,最长200字) 请按以下分类设计测试用例: 1. ✅ 正常用例(3个) 2. ⚠️ 边界值用例(5个:日期边界、字符串长度边界) 3. ❌ 异常用例(8个:参数缺失、非法值、业务冲突) 4. 🔒 权限用例(2个:未登录、无权限角色) 输出格式:表格(用例ID | 测试场景 | 输入数据 | 预期结果)
Postman接口测试脚本
为设备管理模块的RESTful API生成Postman Collection JSON: 接口列表: 1. GET /api/device/page?pageNum=1&pageSize=10&name=xxx 分页查询 2. GET /api/device/{id} 查询详情 3. POST /api/device 新增设备 4. PUT /api/device 修改设备 5. DELETE /api/device/{id} 删除设备 要求: - 完整Postman Collection v2.1格式 - 包含环境变量:{{baseUrl}} - 预置Headers:Content-Type: application/json - 请求示例数据(真实可用) - Tests脚本:自动校验返回code=200、data不为空 - 保存到本地后可直接导入Postman运行

4 阶段四:Debug调试与代码优化

异常堆栈分析
分析以下Java异常堆栈,找出根本原因并给出修复方案: 【粘贴完整错误堆栈信息】 请按以下格式回答: 1. 🎯 问题根因:(用一句话总结) 2. 🔍 错误位置:(类名+方法名+行号) 3. 💡 触发场景:(什么操作导致此错误) 4. ✅ 修复方案:(具体的代码修改建议) 5. 📝 预防建议:(如何避免类似问题) 如果有多种可能的原因,请按概率排序
代码重构优化
重构以下代码,消除if-else嵌套,提升可读性和可维护性: 【粘贴需要重构的代码片段】 优化目标: 1. 应用设计模式(策略模式/工厂模式/责任链) 2. 单一职责原则 3. 消除重复代码 4. 提高方法内聚性 5. 不改变原有业务逻辑 请输出: 1. 重构前代码问题分析 2. 重构思路说明 3. 完整的重构后代码 4. 优化效果对比(圈复杂度、行数、可读性)
代码安全审计
安全审计以下代码,检查OWASP Top 10安全漏洞: 【粘贴待审计代码】 重点检查: 1. SQL注入风险 2. XSS跨站脚本 3. CSRF攻击 4. 权限绕过 5. 敏感信息泄露 6. 输入验证缺失 输出格式: | 风险等级 | 漏洞类型 | 代码位置 | 问题描述 | 修复建议 | |----------|----------|----------|----------|----------| | 高危/中危/低危 | SQL注入 | 第45行 | 字符串拼接SQL | 使用预编译 |

5 阶段五:部署与Docker容器化

Dockerfile生成
为Spring Boot + Vue3前后端分离项目生成Docker部署方案: 项目结构: - backend/target/*.jar (Spring Boot打包结果) - frontend/dist/ (Vue3打包结果) 请生成: 1. 后端Dockerfile(基于openjdk:11-jre-slim) - 设置时区Asia/Shanghai - 优化镜像分层(依赖先COPY) - JVM参数优化:-Xms512m -Xmx512m - 健康检查HEALTHCHECK 2. 前端Dockerfile(基于nginx:alpine) - 配置nginx.conf(支持history路由) - gzip压缩 - 反向代理/api到后端 3. docker-compose.yml(一键启动前后端+MySQL) - 网络配置 - 数据卷持久化 - 环境变量配置 - 启动依赖顺序depends_on
Jenkins Pipeline脚本
生成声明式Jenkins Pipeline脚本,实现CI/CD自动化: 流水线阶段: 1. 代码检出(Git拉取) 2. 代码质量检查(可选) 3. 后端Maven构建(跳过测试?) 4. 前端npm构建(npm install && npm run build) 5. Docker镜像构建与打标签 6. 停止旧容器,启动新容器 7. 健康检查与部署通知 特性要求: - 使用environment定义环境变量 - post动作:成功/失败时的通知 - 超时设置timeout - 重试机制retry - 并行构建(可选) - 保留构建历史 输出:完整的Jenkinsfile代码,可直接使用

🚀 高级提示词使用技巧

✅ 高效技巧

  • • 使用「参考已有代码风格:[粘贴片段]」保证一致性
  • • 指定「输出格式:JSON/Markdown表格/代码块」
  • • 要求「分步解释,不要直接给答案」用于学习
  • • 追加「继续优化,考虑XX场景」迭代改进

❌ 避坑提醒

  • • 避免模糊描述:"写个接口" → "写分页查询设备的REST接口"
  • • 不要让AI猜:明确技术栈、框架、版本
  • • 一次一个任务:不要同时要求生成+优化+测试
  • • 永远审查:AI会"幻觉",务必验证代码正确性

免费工具清单(全部零成本)

工具名称 用途 官方地址 费用
🔮 扣子Coze 搭建AI智能体、工作流 www.coze.cn 完全免费
💻 Trae IDE AI原生编程IDE www.trae.ai 完全免费
🤖 豆包 通用AI对话、文档生成 www.doubao.com 完全免费
🧠 DeepSeek 深度代码理解、技术咨询 chat.deepseek.com 完全免费
📊 ProcessOn 流程图、UML图、甘特图 www.processon.com 免费版够用
📐 PlantUML 文本生成UML图 www.plantuml.com 完全免费
🐙 Gitee 代码托管、Git版本控制 gitee.com 完全免费
🏭 Jenkins CI/CD自动化构建 www.jenkins.io 开源免费
🐳 Docker 容器化部署 www.docker.com 个人版免费

常见问题 FAQ

Q1: 实验室没有外网,学生无法使用在线AI工具怎么办?

A: 建议学生使用个人笔记本电脑,开启手机热点上网。每个小组至少保证2台设备可联网,其余设备可使用本地IDE编写代码,需要AI时轮流使用联网设备。Trae IDE和Cursor都支持离线使用基础编辑功能,AI功能按需联网即可。

Q2: 如何防止学生过度依赖AI,丧失独立思考能力?

A: 建立三道防线:1)强制要求完整记录AI使用日志,包括每次的提示词和人工修改内容;2)答辩时随机抽取代码片段要求学生解释原理;3)成绩构成中"AI合理使用"占20%权重,重点考察人工修改率和理解深度。

Q3: AI生成的代码有Bug怎么办?

A: 这正是培养学生能力的好机会!要求学生:1)学会阅读和理解AI生成的代码;2)学会调试和定位问题;3)学会向AI准确描述Bug获取修复建议;4)最终必须人工修复并理解修复原理。Bug排查能力是程序员的核心能力。

Q4: Jenkins + Docker环境复杂,学生搭不起来怎么办?

A: 采用分层要求:1)基础要求:能在本地运行项目即可;2)进阶要求:小组中至少1人成功搭建流水线,其他成员观摩学习;3)挑战要求:全组都能独立搭建。教师课前提前准备好Docker命令一键启动脚本,降低入门门槛。

Q5: 如何评估学生使用AI的贡献度?

A: 从四个维度评估:1)提示词质量 - 能否精准描述需求;2)修改幅度 - AI输出后人工修改的比例;3)创新程度 - 在AI基础上的原创改进;4)理解深度 - 答辩时对技术细节的掌握程度。禁止"零修改直接使用"。