110
社区成员
发帖
与我相关
我的任务
分享| 作业基本信息 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 202501福大-软件工程实践-W班社区 |
| 这个作业要求在哪里 | 软工实践——CodeArts团队实战总结 |
| 这个作业目标 | 设计实现基于大语言模型的购车意向咨询软件 |
| 参考资料 | 无 |
管理员测试账号:admin 管理员密码:admin123
用户测试账号:user001 用户密码:user123
| 成员 | 次数 |
|---|---|
| 102300308 陈尚斌 | 3 |
| 102300235 林怡杰 | 5 |
| 102300328 许俊翔 | 5 |
| 102300322 吕东剑 | 4 |
| 102300329 鄢灿 | 7 |
| 102300327 吴康明 | 3 |
| 102300330 杨文渊 | 5 |
| 102300309 陈禹帆 | 3 |



- 本项目已在阿里云上部署前后端与数据库,正常情况下点击项目链接即可正常运行,以下是项目开发时的运行环境,如果需要在本地部署,可以按照仓库中的README.md进行操作
- Edge浏览器最新版本
云服务器操作系统:Alibaba Cloud 3 (OpenAnolis Edition) x86_64(Py3.7.16)
Java JDK版本:17
Maven版本:3.9.9




| 模块 | 接口地址 | 请求方法 | 功能描述 | 请求示例 | 返回示例 |
|---|---|---|---|---|---|
| 用户模块 | /api/user/register | POST | 用户注册 | {"username":"user123","password":"Pass123","name":"张三","phone":"13800138000"} | {"code":200,"message":"注册成功","data":{"userId":1,"username":"user123"}} |
| /api/user/login | POST | 用户登录 | {"username":"user123","password":"Pass123"} | {"code":200,"message":"登录成功","data":{"token":"eyJhbGciOiJIUzUxMiJ9..."}} | |
| /api/user/info | GET | 获取用户信息 | 请求头:Authorization: Bearer {token} | {"code":200,"message":"操作成功","data":{"id":1,"username":"user123","name":"张三"...}} | |
| /api/user/update | PUT | 更新用户信息 | 请求头:Authorization: Bearer {token}
{"name":"李四","phone":"13900139000"} | {"code":200,"message":"更新成功","data":{}} | |
| 咨询模块 | /api/consultation/create | POST | 创建咨询记录 | 请求头:Authorization: Bearer {token}
{"budgetMin":100000,"budgetMax":200000,"preferredType":"SUV","llmProvider":"qwen"} | {"code":200,"message":"咨询创建成功","data":{"id":1,"userId":1,"status":"pending"...}} |
| /api/consultation/list | GET | 获取我的咨询记录 | 请求头:Authorization: Bearer {token} | {"code":200,"message":"操作成功","data":[{"id":1,"createTime":"2024-05-01"...}]} | |
| /api/consultation/{id} | GET | 获取咨询详情 | 请求头:Authorization: Bearer {token}
路径参数:id=1 | {"code":200,"message":"操作成功","data":{"id":1,"consultationResult":"推荐车型...",...}} | |
| 积分模块 | /api/points/total | GET | 获取总积分 | 请求头:Authorization: Bearer {token} | {"code":200,"message":"操作成功","data":{"totalPoints":100}} |
| /api/points/history | GET | 获取积分记录 | 请求头:Authorization: Bearer {token} | {"code":200,"message":"操作成功","data":[{"id":1,"points":10,"description":"完成咨询"...}]} | |
| /api/points/consume | POST | 消费积分 | 请求头:Authorization: Bearer {token}
{"points":50,"description":"兑换礼品"} | {"code":200,"message":"消费成功","data":{}} | |
| 管理员模块 | /api/admin/login | POST | 管理员登录 | {"username":"admin","password":"Admin123"} | {"code":200,"message":"登录成功","data":{"token":"eyJhbGciOiJIUzUxMiJ9..."}} |
| /api/admin/consultations | GET | 获取所有咨询记录 | 请求头:Authorization: Bearer {adminToken} | {"code":200,"message":"操作成功","data":[{"id":1,"userId":1,"status":"completed"...}]} | |
| /api/admin/users | GET | 获取所有用户 | 请求头:Authorization: Bearer {adminToken} | {"code":200,"message":"操作成功","data":[{"id":1,"username":"user123"...}]} | |
| /api/admin/statistics/users | GET | 获取用户统计数据 | 请求头:Authorization: Bearer {adminToken} | {"code":200,"message":"操作成功","data":{"totalUsers":100,"newUsersToday":5}} | |
| /api/admin/statistics/topics | GET | 获取热门咨询话题 | 请求头:Authorization: Bearer {adminToken} | {"code":200,"message":"操作成功","data":[{"topic":"SUV","count":50},{"topic":"轿车","count":30}]} | |
| 礼品模块 | /api/admin/gifts | POST | 添加礼品 | 请求头:Authorization: Bearer {adminToken}
{"name":"车载充电器","pointsRequired":50,"stock":100} | {"code":200,"message":"添加成功","data":{"id":1,"name":"车载充电器"...}} |
| /api/admin/gifts/{id} | PUT | 编辑礼品 | 请求头:Authorization: Bearer {adminToken}
路径参数:id=1
{"stock":90} | {"code":200,"message":"更新成功","data":{}} | |
| /api/admin/gifts | GET | 获取礼品列表 | 请求头:Authorization: Bearer {adminToken} | {"code":200,"message":"操作成功","data":[{"id":1,"name":"车载充电器","pointsRequired":50...}]} | |
| LLM模块 | /api/llm/consultation/generate | POST | 调用大语言模型生成咨询结果(自动选择供应商) | {"budgetMin":150000,"budgetMax":250000,"preferredType":"SUV","usageScenario":"家庭通勤","brandPreference":["比亚迪","理想"]} | {"code":200,"message":"生成成功","data":{"consultationResult":"基于您的需求,推荐以下3款SUV...", "processingTime":3200,"provider":"qwen-max","tokenUsage":{"promptTokens":89,"completionTokens":342}}} |
| /api/llm/providers | GET | 获取可用大模型供应商列表及配置 | 请求头:Authorization: Bearer {token} | {"code":200,"message":"操作成功","data":[{"code":"qwen","name":"通义千问","enabled":true,"models":["qwen-max","qwen-turbo"]},{"code":"zhipu","name":"智谱GLM","enabled":true,"models":["glm-4","glm-3-turbo"]}]} | |
| /api/llm/consultation/generate/{provider} | POST | 指定供应商生成咨询结果 | 路径参数:provider=qwen
{"budgetMin":100000,"budgetMax":200000,"preferredType":"轿车"} | {"code":200,"message":"生成成功","data":{"consultationResult":"推荐车型:...", "processingTime":2800,"provider":"qwen","rawResponse":{"finish_reason":"stop","usage":{"total_tokens":456}}}} | |
| /api/llm/monitoring/realtime | GET | 获取LLM服务实时监控数据 | 请求头:Authorization: Bearer {adminToken} | {"code":200,"message":"操作成功","data":{"totalRequests":12847,"avgLatency":3.2,"providerStats":[{"provider":"qwen","requests":8560,"errorRate":0.02},{"provider":"zhipu","requests":4287,"errorRate":0.05}]}} |
1.用户如何快速了解系统功能并开始咨询?
简洁的引导页面:在系统首页,我们设置了一个功能导航区,清晰地展示了“用户注册/登录”、“发起购车咨询”、“查看历史咨询”、“积分兑换礼品”等核心功能的入口。同时,新用户可以通过“帮组中心”按钮,查看详细的分步操作指引,帮助他们快速熟悉系统。
简化咨询流程:用户登录后,在“发起咨询”页面只需要填写预算区间、车型偏好、使用场景等5个关键信息,就可以快速提交咨询,无需经过复杂的操作。
示例数据填充:为了降低使用门槛,我们为表单提供了“示例数据”按钮,用户点击后,可以自动填充模板内容(例如:预算15-25万、SUV、家庭出游),帮助用户更快完成输入。
2.咨询结果如何清晰、直观地展示给用户?
结构化排版:咨询结果会以简洁清晰的方式呈现,包括“推荐车型列表 + 核心亮点说明 + 适配场景分析”,例如:
推荐车型
- 比亚迪宋PLUS DM-i
- 核心亮点:综合续航1200km,空间宽敞(后备箱容积574L)
- 适配场景:家庭出游(可容纳婴儿车+露营装备)
- 理想L6
- 核心亮点:增程式混动,无续航焦虑,智能座舱支持多设备互联
- 适配场景:长途自驾(支持对外放电,可供电煮茶/照明)
3.如何保证咨询结果的准确性和实用性?
多模型交叉验证:系统集成了多个大模型,例如通义千问、智谱 AI 等,用户可以选择多模型并行生成咨询结果,通过比对多个模型的推荐内容,取共识度高的内容作为最终推荐,避免单一模型可能带来的偏差。
领域数据训练:为了提升推荐的专业性,我们整理了部分汽车领域知识(如车型参数、真实购车案例等),并将其作为Prompt模板注入到大模型的上下文中,使得推荐结果更加精准。例如,使用 “你是专业汽车顾问,基于2025年最新车型数据推荐” 这样的系统提示来保证推荐的时效性和专业性。
用户反馈闭环:在咨询结果页面,我们设置了反馈系统,并用于优化大模型的Prompt策略。如果用户不满意,可以通过填写反馈信息来让管理员得到应该改进的地方。
4.如何保护用户隐私和数据安全?
- 数据加密存储:所有用户的密码通过加盐哈希算法进行加密存储,敏感信息(如手机号、预算)也会在数据库中进行加密,密钥由配置中心进行动态管理,确保数据的安全性。
严格的权限控制:普通用户只能查看自己的咨询记录和个人信息,管理员需要通过特定的API接口获取专属令牌,操作权限会被严格限制。此外,所有操作日志(如查看用户数据、修改礼品信息等)都将被全量记录,便于后期审计。
数据最小化采集:我们只会采集用户进行购车决策时需要的关键信息(如预算、车型偏好等),不强制要求用户提供与购车无关的隐私数据。同时,用户的个人信息管理员无法修改,以增强隐私保护。
- 接口安全防护:所有API接口都通过JWT令牌进行身份验证,令牌会设置为短期有效。
- 详见下方5.1演示
在平台上实现积分与奖品兑换机制,鼓励用户咨询与反馈。具体功能如下:
- 每次用户咨询完成后,系统自动发放10积分,并记录在用户账户中。
- 用户可以在平台的兑换商品中使用积分选择奖品,系统将扣除相应积分并减少奖品的库存数量。
- 详见下方5.2演示
测试目标:
测试环境:

- 进入网站首页,点击中间“立即登录”进行网站的账号登录操作。

- 进入用户登录界面,通过“用户名”和“密码”进行登录。

- 用户如果没有账号可以点击“立即注册”进行注册操作进入用户注册界面。设置账号基本信息:包括:用户名、密码、姓名、手机号。

- 同时通过验证保证用户名、手机号信息唯一。

- 登录成功后在首页点击中间“开始咨询”或者在页面上方栏目点击“发起咨询”进入咨询页面;

- 用户可以在各个栏目中填写或选择自己的购车预算、偏好车型、主要使用场景、燃料类型偏好、品牌偏好、AI模型;

- 用户填写好信息后点击“提交咨询”进行咨询生成;





进度条加载完成后会跳转到“咨询记录”界面;同时每次成功咨询会添加账户积分;
“咨询记录”界面会记录每次成功咨询给的建议,保留咨询内容的同时记录咨询时间;
每次建议包含:“推荐的车型及理由”、“不同车型对比分析”、“购车预算规划建议”、“其他相关专业建议”、“总结建议”五个部分;

- 在上方栏目点击“我的积分”进入积分查看界面;该界面会记录用户账号的总积分和每次积分的出入;

在上方栏目点击“个人信息”进入账号信息查看界面;
个人信息可以更改“姓名”、“手机号”、“购车预算”、“偏好车型”等个人信息;
点击“保存修改”可以保存对个人信息的修改;

在上方栏目点击“意见反馈”进入网站意见反馈界面;
成功提交过的反馈会在下方的“我的反馈记录”中显示并展示反馈提交时间;

在上方栏目点击“礼品兑换”进入网站礼品兑换界面;
界面会显示当前用户账号剩余的积分;
点击任意想要兑换礼品下的“立即兑换”可以兑换礼品;

- 同时“礼品兑换”和“我的积分”界面的用户账号积分都会对应减少

- 界面中有网站的使用指南、常见问题、功能说明等部分。

- 点击栏目中的“退出账号”可以退出账号回到首页

- 进入管理员后台的“数据统计”部分可以看到“用户行为统计”和“热门咨询话题”等内容块,方便管理员对网站用户使用现状有大致了解;

管理员可以通过搜索用户ID看到特定用户的咨询记录;
搜索栏为空时显示全部用户的咨询记录,按照时间排序;
- 同时点击“删除”可以删除用户的咨询记录;

点击“用户管理”可以进入用户管理界面;
界面会显示每个用户的用户ID、用户名、姓名、手机号等基本信息;
点击“删除”可以删除特定的用户账号;

- 点击“删除”可以删除特定的用户反馈;

- 点击“礼品管理”可以进入礼品管理界面;

点击任意礼品的“编辑”界面可以编辑礼品的基本信息,包括:礼品名称、礼品描述、所需积分、库存数量、图片URL;
点击任意礼品的“删除键”能够删除礼品
我组沿用之前提出的表现分的评价机制来计算此次作业的贡献度,以表现分占比分配贡献度
| 评议方向 | 权重 |
|---|---|
| 工作量 | 20% |
| 工作完成度 | 15% |
| 工作有效性 | 15% |
| 工作难度 | 15% |
| 按时完成任务 | 10% |
| 工作态度 | 5% |
| 团队互助 | 10% |
| 会议参与 | 10% |
规则说明:
- 每个评议方向的评议分值为0-10分
- 对于每个评议方向,0-3分为差,4-7分为良,8-10分为优
- 表现分=0.2×自评表现分+0.5×组员评价表现分均值+0.3 × 组长评价表现分(特别的,如果是组长则表现分=0.2×自评表现分+0.8×组员评价表现分均值)
| 学号 | 工作内容 | 贡献度 |
|---|---|---|
| 102300308 陈尚斌 | 需求分析,部署服务器,参与前端工作,撰写博客 | 14.46 |
| 102300235 林怡杰 | 主要负责前端工作和测试 | 13.67 |
| 102300328 许俊翔 | 主要负责后端工作和需求分析 | 13.73 |
| 102300322 吕东剑 | 负责后端工作 | 13.43 |
| 102300327 吴康明 | 负责后端工作和测试和需求分析 | 12.27 |
| 102300329 鄢灿 | 负责前端工作 | 11.94 |
| 102300309 陈禹帆 | 负责前端工作和测试 | 10.44 |
| 102300330 杨文渊 | 负责后端工作 | 10.06 |
Java 版本编译冲突:Maven 编译时与项目pom.xml的 Java 17 配置冲突,报 “无效的目标发行版” 错误。
部署环境类型错误:尝试用PM2 在服务器部署 Java Spring Boot 项目,因运行环境不匹配导致 Java 语法被当作 JavaScript 解析,报 “Unexpected identifier” 错误。
删除强制置顶配置:删除 Maven 全局settings.xml中强制指定corretto-23的配置,使项目继承pom.xml中 Java 17的编译规则。
使用Java环境管理器:改用 Java环境管理器,可执行Jar包命令启动 Spring Boot 项目,结合nohup实现后台运行,并配置开机自启脚本。
前端界面和管理员界面区分不明显:管理员和普通用户界面设计相似,用户很难快速区分。
筛选功能不稳定:管理员界面筛选咨询记录时,筛选条件应用后没有实时更新结果。
- 编辑操作不便捷:管理员在编辑用户信息时,界面操作不够简洁,用户体验较差。
- 前端性能问题:在加载大量数据时,页面的响应速度较慢,特别是历史咨询和积分记录加载时,造成延迟。
- 优化管理员界面与用户界面的区分:我们采用不同的布局和按钮来区分管理员和普通用户界面,确保管理员的功能和入口清晰可见。通过显眼的管理员专属导航和操作区域,使用户更易区分。
- 改进筛选功能:在管理员界面的筛选功能中,增强了数据的实时更新能力。通过确保每次筛选都能更新显示的咨询记录,并提供清晰的反馈,避免筛选结果不刷新或不一致的问题。
- 简化编辑操作:采用统一的模态框处理编辑操作,减少跳转和多步骤操作。通过简洁直观的表单设计,使得管理员可以更高效地修改用户信息,同时提供批量修改的功能,简化编辑流程。
- 前端性能优化:引入了分页加载和虚拟滚动技术,减少一次性加载的数据显示量,提升页面的加载速度和响应性能。通过缓存管理和数据懒加载策略,保证即使在大量数据情况下,页面依然保持高效运行。
积分兑换功能未能按预期工作,导致奖品数量不正确和兑换记录不生成的问题。
前端请求未能成功到达后端,以及返回数据格式不正确。
检查兑换逻辑中正确更新了奖品的库存数量,确保使用 MyBatis-Plus 的 updateById 方法进行更新。在兑换成功后,记录兑换信息到数据库。
检查前端请求的 URL 与后端的接口路径一致,确保 HTTP 方法(GET/POST)是否正确。同时使用 postman测试后端接口,确认返回数据格式符合前端需求。
数据库表结构验证错误:启动时出现
budget_max列类型不匹配(期望BIGINT,实际为INT)。重复数据插入问题:应用重启时重复插入初始数据,导致重复的积分记录。
管理员登录异常:
admin账号同时存在于users和admins表,导致登录逻辑混乱。前端界面体验不佳:管理员界面与用户界面区分不明显,编辑功能操作繁琐。
创建迁移脚本:新增
migration.sql,使用ALTER TABLE修复表结构,并在application.yml中配置自动执行。优化数据插入逻辑:在
data.sql中使用NOT EXISTS条件,并在UserServiceImpl中实现注册时自动奖励积分,避免重复插入。清理重复账号:在
migration.sql中添加逻辑,删除users表中的admin记录,确保管理员账号仅在admins表中。重构前端界面:采用深色主题区分管理员界面,使用统一的模态框进行编辑操作,优化交互体验。
- 筛选控件渲染失效:在管理员「咨询记录」页,用户 ID 筛选输入框无法渲染,导致筛选功能缺失;
- 引入缓存击穿机制:对管理员后台 HTML 片段追加版本戳 v=时间戳,强制浏览器在发布后立即拉取最新结构,增强了数据的实时更新能力。通过确保每次筛选都能更新显示的咨询记录,并提供清晰的反馈,避免筛选结果不刷新或不一致的问题。
接口兼容性问题:测试脚本中模拟的咨询请求参数与后端接口预期格式存在差异,导致部分请求因参数不识别而失败。
高并发下响应延迟:当并发线程数超过 30 时,系统响应时间显著增加,部分请求超时,尤其是在生成大量车辆推荐结果时,后端处理能力不足
统一接口参数规范:与后端团队确认接口文档,修正generate_consult_params函数中的参数名,并增加参数合法性校验,避免因参数格式错误导致的请求失败。
优化系统并发处理能力:后端引入 Redis 缓存热点数据,减少数据库查询压力;脚本中动态调整MAX_THREADS,通过梯度压测找到系统最优并发阈值,避免瞬间高负载导致的响应延迟。
- 业务代码出现循环依赖问题:在业务逻辑实现中,多个类之间形成了直接或间接的相互依赖关系。这种循环依赖会导致代码耦合度高、难以理解和维护。
- 代码重构与解耦:通过重构,消除不必要的直接依赖,降低代码耦合度,使代码结构更清晰、更易于维护和测试。
多角色状态冲突:普通用户和管理员使用不同的token存储机制,在切换登录状态时容易出现token冲突和导航栏状态异常。
页面状态持久化:页面切换时数据加载依赖DOM的class变化监听,在快速切换页面时可能出现数据加载竞争条件。
改进token管理机制:明确区分管理员和普通用户状态,优先处理管理员状态以避免导航栏状态异常。
采用更可靠的页面显示事件监听方式:使用Intersection Observer API替代传统的class变化监听,有效避免数据加载竞争条件。
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 90 | 80 |
| • Estimate | • 估计这个任务需要多少时间 | 80 | 70 |
| Development | 开发 | 600 | 580 |
| • Analysis | • 需求分析 (包括学习新技术) | 70 | 60 |
| • Design Spec | • 生成设计文档 | 60 | 50 |
| • Design Review | • 设计复审 | 50 | 40 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 40 | 35 |
| • Design | • 具体设计 | 60 | 55 |
| • Coding | • 具体编码 | 360 | 360 |
| • Code Review | • 代码复审 | 50 | 40 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 90 | 80 |
| Reporting | 报告 | 70 | 60 |
| • Test Report | • 测试报告 | 40 | 25 |
| • Size Measurement | • 计算工作量 | 15 | 15 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 25 | 20 |
| 合计 | 680 | 610 |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 80 | 72 |
| • Estimate | • 估计这个任务需要多少时间 | 80 | 72 |
| Development | 开发 | 600 | 580 |
| • Analysis | • 需求分析 (包括学习新技术) | 70 | 65 |
| • Design Spec | • 生成设计文档 | 60 | 52 |
| • Design Review | • 设计复审 | 50 | 42 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 40 | 38 |
| • Design | • 具体设计 | 60 | 55 |
| • Coding | • 具体编码 | 360 | 355 |
| • Code Review | • 代码复审 | 50 | 45 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 90 | 85 |
| Reporting | 报告 | 70 | 62 |
| • Test Report | • 测试报告 | 40 | 28 |
| • Size Measurement | • 计算工作量 | 15 | 16 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 25 | 22 |
| 合计 | 670 | 602 |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 85 | 80 |
| • Estimate | • 估计这个任务需要多少时间 | 85 | 80 |
| Development | 开发 | 620 | 600 |
| • Analysis | • 需求分析 (包括学习新技术) | 75 | 70 |
| • Design Spec | • 生成设计文档 | 58 | 52 |
| • Design Review | • 设计复审 | 48 | 42 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 38 | 36 |
| • Design | • 具体设计 | 62 | 58 |
| • Coding | • 具体编码 | 350 | 345 |
| • Code Review | • 代码复审 | 48 | 44 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 88 | 83 |
| Reporting | 报告 | 72 | 65 |
| • Test Report | • 测试报告 | 38 | 28 |
| • Size Measurement | • 计算工作量 | 18 | 17 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 28 | 25 |
| 合计 | 777 | 745 |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 90 | 85 |
| • Estimate | • 估计这个任务需要多少时间 | 90 | 85 |
| Development | 开发 | 650 | 620 |
| • Analysis | • 需求分析 (包括学习新技术) | 80 | 75 |
| • Design Spec | • 生成设计文档 | 70 | 65 |
| • Design Review | • 设计复审 | 60 | 55 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 45 | 40 |
| • Design | • 具体设计 | 70 | 65 |
| • Coding | • 具体编码 | 280 | 270 |
| • Code Review | • 代码复审 | 60 | 55 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 85 | 75 |
| Reporting | 报告 | 80 | 75 |
| • Test Report | • 测试报告 | 45 | 40 |
| • Size Measurement | • 计算工作量 | 20 | 20 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 15 | 15 |
| 合计 | 820 | 780 |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 60 | 62 |
| • Estimate | • 估计这个任务需要多少时间 | 60 | 62 |
| Development | 开发 | 540 | 517 |
| • Analysis | • 需求分析 (包括学习新技术) | 50 | 45 |
| • Design Spec | • 生成设计文档 | 50 | 42 |
| • Design Review | • 设计复审 | 30 | 32 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 28 |
| • Design | • 具体设计 | 40 | 35 |
| • Coding | • 具体编码 | 200 | 205 |
| • Code Review | • 代码复审 | 50 | 45 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 90 | 85 |
| Reporting | 报告 | 70 | 66 |
| • Test Report | • 测试报告 | 40 | 28 |
| • Size Measurement | • 计算工作量 | 15 | 16 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 25 | 22 |
| 合计 | 670 | 645 |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 80 | 71 |
| • Estimate | • 估计这个任务需要多少时间 | 80 | 71 |
| Development | 开发 | 600 | 550 |
| • Analysis | • 需求分析 (包括学习新技术) | 70 | 66 |
| • Design Spec | • 生成设计文档 | 60 | 51 |
| • Design Review | • 设计复审 | 50 | 43 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 40 | 35 |
| • Design | • 具体设计 | 60 | 59 |
| • Coding | • 具体编码 | 360 | 362 |
| • Code Review | • 代码复审 | 50 | 43 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 90 | 81 |
| Reporting | 报告 | 70 | 66 |
| • Test Report | • 测试报告 | 40 | 30 |
| • Size Measurement | • 计算工作量 | 15 | 14 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 25 | 23 |
| 合计 | 670 | 658 |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 80 | 70 |
| • Estimate | • 估计这个任务需要多少时间 | 80 | 70 |
| Development | 开发 | 860 | 780 |
| • Analysis | • 需求分析 (包括学习新技术) | 70 | 60 |
| • Design Spec | • 生成设计文档 | 60 | 50 |
| • Design Review | • 设计复审 | 50 | 40 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 40 | 35 |
| • Design | • 具体设计 | 60 | 55 |
| • Coding | • 具体编码 | 360 | 360 |
| • Code Review | • 代码复审 | 50 | 40 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 90 | 80 |
| Reporting | 报告 | 70 | 60 |
| • Test Report | • 测试报告 | 40 | 25 |
| • Size Measurement | • 计算工作量 | 15 | 15 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 25 | 20 |
| 合计 | 930 | 850 |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 60 | 55 |
| • Estimate | • 估计这个任务需要多少时间 | 60 | 55 |
| Development | 开发 | 480 | 460 |
| • Analysis | • 需求分析 (包括学习新技术) | 60 | 55 |
| • Design Spec | • 生成设计文档 | 45 | 40 |
| • Design Review | • 设计复审 | 30 | 25 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 28 |
| • Design | • 具体设计 | 45 | 42 |
| • Coding | • 具体编码 | 240 | 235 |
| • Code Review | • 代码复审 | 30 | 28 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 60 | 57 |
| Reporting | 报告 | 50 | 45 |
| • Test Report | • 测试报告 | 25 | 20 |
| • Size Measurement | • 计算工作量 | 10 | 12 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 15 | 13 |
| 合计 | 590 | 560 |