团队作业2——《需求规划说明书》
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13481 |
| 这个作业的目标 | 确认选题并进行需求分析 |
一、作业概述
本次作业为团队作业2,核心产出包括完整的需求规格说明书、详细的项目计划、Git仓库协作配置及团队分工与心得,严格按照作业评分标准要求完成,确保内容详实、格式规范。
二、需求规格说明书(基础分25分+加分5分)
1. 系统核心描述
ChatApp是一款基于TCP协议的局域网多媒体聊天系统,采用Client/Server架构,支持多用户实时文本沟通、文件传输、语音聊天及图片/视频预览功能。服务器端部署于openEuler系统(支持云端部署),客户端为Windows GUI应用,无需依赖外网即可实现局域网内高效通信,聚焦小型团队(如实验室、办公室、校园小组)的即时协作需求。
2. 面向用户分析
2.1 目标用户画像
- 核心用户:封闭网络环境下的团队成员(如实验室研究人员、无外网办公的职场人、校园小组学生)
- 用户特征:需要快速传递文本、文件、多媒体信息,对操作便捷性、传输速度和数据安全性有要求,无专业IT维护人员支持
- 使用场景:实验室数据共享、办公室文件协作、课堂小组讨论、临时团队沟通
2.2 预期用户数量
明确预期并发用户量:20-50人,支持中小型团队日常沟通场景,服务器端可通过参数调优扩展至100人并发。
3. 功能性需求(分优先级)
3.1 基础功能(P0-核心必实现)
- 多用户实时文本聊天:支持消息时间戳、发送者标识显示,消息分行排版
- 用户状态管理:用户加入/离开系统时触发全局通知,在线用户列表实时更新
- 连接管理:客户端支持自动重连(网络中断后3秒重试)、连接状态可视化显示(绿灯在线/红灯离线)
- 消息类型识别:自动区分文本、文件、语音消息,按对应格式解析处理
3.2 扩展功能(P1-重点实现)
- 文件传输:支持任意类型文件传输,单文件大小限制≤10MB,显示传输进度条(百分比+剩余时间)
- 图片传输与预览:聊天区域显示图片缩略图(默认150×100像素),点击可查看原图,支持本地保存
- 语音聊天:按住录音按钮开始录制(最长60秒),松开自动发送,接收方点击播放按钮即可收听
- 视频文件支持:生成视频文件缩略图(叠加播放图标标识),支持调用本地播放器播放、保存至本地
3.3 优化功能(P2-可选实现)
- 专用图片发送通道:独立图片选择按钮,文件选择器内置图片预览功能
- 拖拽文件发送:支持直接拖拽本地文件至聊天区域完成发送
- 聊天记录本地缓存:文本消息自动保存至本地(默认路径:C:\ChatApp\Logs),支持手动导出
- 音频设备检测:启动时自动检测麦克风、扬声器可用性,异常时给出明确提示
4. 非功能性需求
4.1 性能需求
- 文本消息延迟:局域网内≤300ms
- 文件传输速度:局域网内10MB文件传输≤5秒
- 并发支持:稳定支持50用户同时在线,消息广播无丢失
- 响应时间:界面操作(按钮点击、输入提交)响应≤500ms
4.2 安全性需求
- 数据传输:基于TCP协议的可靠传输,确保文件/消息完整性
- 本地存储:接收的文件、图片、语音默认保存至用户指定目录,无自动上传行为
- 权限控制:无非法用户接入机制,仅支持局域网内可见用户连接(基于IP限制)
4.3 易用性需求
- 界面设计:简洁直观,功能按钮图标化,支持工具提示(hover显示功能说明)
- 操作流程:连接服务器步骤≤3步(输入IP、端口、用户名),核心功能操作≤2步
- 错误提示:网络中断、设备异常、文件过大等场景给出明确中文提示,提供解决方案指引
5. 技术需求
5.1 开发环境
- 开发语言:Java 8+
- 开发工具:IntelliJ IDEA 2021.3+
- 构建工具:原生javac编译(提供编译脚本)
- 版本控制:Git(码云仓库)
5.2 运行环境
- 服务器端:openEuler 20.03 LTS及以上,2vCPU+4GB内存,开放8888端口(TCP)
- 客户端:Windows 10/11(32/64位),1GB内存以上,配备麦克风(语音录制)、扬声器(语音播放)
- 网络环境:局域网(支持TCP/IP协议),服务器与客户端网络互通
5.3 核心技术栈
- 网络通信:TCP Socket编程、Java对象序列化
- GUI框架:Java Swing、AWT
- 多媒体处理:Java Sound API(音频录制/播放)、ImageIO(图片处理)
- 辅助技术:多线程编程、文件I/O、网络工具类
6. 系统真实性、可用性及价值阐述(每项2分,共6分)
- 真实性:封闭局域网环境(如实验室、涉密办公区)的即时沟通需求真实存在,现有商业聊天软件(微信、QQ)依赖外网,且文件传输限速、广告干扰等问题突出,本系统精准匹配该场景痛点。
- 可用性:客户端支持一键启动(提供run-client.bat脚本),无需复杂配置;服务器端部署步骤简化(提供编译、启动脚本),非专业人员也可操作;核心功能(文本聊天、文件传输)操作流程≤2步,学习成本低。
- 价值所在:相比商业软件,局域网内传输速度更快(无外网路由损耗)、数据本地流转更安全(无云端上传)、无广告和功能冗余;整合文本、文件、语音、图片等多维通信方式,满足团队协作多样化需求,具备实际应用价值。
7. 系统独特设计与功能(差异化亮点)
- 智能文件类型识别:自动区分图片、视频、普通文件,提供差异化显示和操作(图片预览、视频播放、文件保存)
- 语音消息优化:支持录音时长显示(0-60秒)、播放进度条、重播功能,类似微信语音操作逻辑,降低用户学习成本
- 跨平台部署:服务器端支持openEuler(Linux),客户端支持Windows,依托Java跨平台特性,适配不同团队的服务器环境
- 轻量无依赖:无需安装额外运行库,客户端仅需JRE 8+环境,可通过脚本自动检测依赖缺失
三、Git仓库配置与协作(3分)
1. 码云仓库地址
ChatApp网络聊天系统 - 码云仓库(实际使用时替换为真实仓库地址)
2. 仓库结构设计
ChatApp/
├── doc/ # 文档目录(版本化管理)
│ ├── 需求规格说明书.md
│ ├── 项目计划.md
│ ├── 测试计划.md
│ ├── 编码规范.md
│ └── 部署指南.md
├── src/ # 源代码目录
│ ├── common/ # 公共模块
│ ├── server/ # 服务器端模块
│ ├── client/ # 客户端模块
│ └── utils/ # 工具模块
├── script/ # 脚本目录
│ ├── compile.bat # Windows编译脚本
│ ├── run-server.bat # 服务器启动脚本
│ ├── run-client.bat # 客户端启动脚本
│ └── compile.sh # Linux编译脚本
├── test/ # 测试目录
│ ├── 测试用例.xlsx
│ └── 测试数据/
└── README.md # 项目说明文档
3. 协作方式
- 分支管理:采用"master+开发分支"模式,master分支保持稳定版本,开发分支按功能模块创建(如server-dev、client-gui-dev、file-transfer-dev)
- 代码提交规范:提交信息格式为「[模块名] 操作描述(关联Issue ID)」,例如:「[客户端GUI] 实现图片预览功能(#12)」
- Issue管理:所有任务通过码云Issue创建,标注优先级(P0/P1/P2)、负责人、截止日期,关联里程碑(如"第10周-需求与基础准备")
- 代码审核:核心模块(服务器消息转发、文件传输)提交前需双人审核,通过Issue评论反馈修改意见
4. 码云Issue截图(2分)
(实际使用时替换为真实截图,包含任务列表、优先级标注、负责人分配、关联里程碑)
四、团队项目计划(8分)
1. 计划制定依据
基于《构建之法》第8-15章"软件开发完整生命周期"内容,结合词典App案例分析经验,采用"三点估计法"矫正时间安排。矫正公式:期望时间=(乐观时间+4×最可能时间+悲观时间)/6,聚焦核心场景,避免功能冗余,确保计划可行性。
2. 原有安排(3分)
| 周次 | 核心任务 | 细分任务 | 负责人 | 计划耗时 |
|---|---|---|---|---|
| 第9周 | 团队组建与初始化 | 1. 团队博客创建与发布 2. 角色分配与选题确定 3. 团队贡献分规则制定 4. Git仓库搭建 |
共同负责 | 6小时 |
| 第10周 | 需求与基础准备 | 1. 需求规格说明书编写 2. 原型设计(Axure) 3. 编码规范制定 4. 开发环境搭建 5. 初步架构搭建 |
刘浩辉(需求+原型) 努尔艾力(环境+架构) |
12小时/人 |
| 第11周 | 设计与计划完善 | 1. 原型改进(用户调研+反馈) 2. 详细架构设计 3. WBS任务分解 4. 测试计划制定 |
共同负责 | 10小时/人 |
| 第12-13周 | Alpha敏捷冲刺 | 1. 核心功能开发 2. 每日Scrum会议+博客发布 3. 代码提交与版本管理 4. 功能测试与Bug修复 |
努尔艾力(服务器端) 刘浩辉(客户端) |
56小时/人(7天×8小时) |
| 第14周 | Alpha阶段总结 | 1. 用户反馈收集+测试计划改进 2. 个人总结编写 3. 发布说明+测试报告编写 |
刘浩辉(总结文档) 努尔艾力(测试+发布) |
8小时/人 |
| 第15周 | 事后分析与复审 | 1. 事后诸葛亮分析 2. 其他团队项目复审 3. 贡献分核算 |
共同负责 | 5小时/人 |
3. 矫正后安排(3分)
| 周次 | 核心任务 | 细分任务 | 负责人 | 乐观时间 | 最可能时间 | 悲观时间 | 期望时间 | 实际分配时间 |
|---|---|---|---|---|---|---|---|---|
| 第9周 | 团队组建与初始化 | 1. 团队博客创建与发布 2. 角色分配与选题确定 3. 团队贡献分规则制定 4. Git仓库搭建 |
共同负责 | 3小时 | 5小时 | 8小时 | 5.2小时 | 6小时 |
| 第10周 | 需求与基础准备 | 1. 需求规格说明书编写 2. 原型设计(Axure) 3. 编码规范制定 4. 开发环境搭建 5. 初步架构搭建 |
刘浩辉(需求+原型) 努尔艾力(环境+架构) |
6小时 | 10小时 | 15小时 | 10.2小时 | 12小时/人 |
| 第11周 | 设计与计划完善 | 1. 原型改进(用户调研+反馈) 2. 详细架构设计 3. WBS任务分解 4. 测试计划制定 |
共同负责 | 5小时 | 8小时 | 12小时 | 8.2小时 | 10小时/人 |
| 第12-13周 | Alpha敏捷冲刺 | 1. 服务器端核心功能开发 2. 客户端核心功能开发 3. 每日Scrum会议+博客 4. 功能测试与Bug修复 |
努尔艾力(服务器端) 刘浩辉(客户端) |
35小时 | 45小时 | 55小时 | 45.8小时 | 56小时/人 |
| 第14周 | Alpha阶段总结 | 1. 用户反馈收集+测试计划改进 2. 个人总结编写 3. 发布说明+测试报告 |
刘浩辉(总结文档) 努尔艾力(测试+发布) |
4小时 | 6小时 | 10小时 | 6.3小时 | 8小时/人 |
| 第15周 | 事后分析与复审 | 1. 事后诸葛亮分析 2. 其他团队项目复审 3. 贡献分核算 |
共同负责 | 3小时 | 4小时 | 6小时 | 4.2小时 | 5小时/人 |
4. 矫正计算方法(2分)
以"第10周-需求与基础准备"任务为例,说明矫正过程:
- 刘浩辉负责"需求规格说明书编写+原型设计",乐观时间4小时,最可能时间8小时,悲观时间12小时
- 期望时间=(4 + 4×8 + 12)/6 = (4+32+12)/6 = 48/6 = 8小时
- 努尔艾力负责"编码规范+开发环境搭建+初步架构",乐观时间2小时,最可能时间2小时,悲观时间3小时
- 期望时间=(2 + 4×2 + 3)/6 = (2+8+3)/6 = 13/6 ≈ 2.2小时
- 两人合计期望时间=8+2.2=10.2小时,结合双人协作效率(1.2倍),实际分配12小时/人,确保任务充分落地
5. 关键里程碑
- 第9周末:Git仓库搭建完成,团队博客发布,Issue任务创建完毕
- 第10周末:需求规格说明书定稿,原型设计完成,开发环境搭建完成,编码规范发布
- 第11周末:详细架构设计文档定稿,WBS任务分解完成,测试计划发布
- 第13周末:Alpha版本核心功能开发完成,7篇冲刺博客发布,代码提交≥15次
- 第14周末:Alpha版本发布说明、测试报告、个人总结完成
- 第15周末:事后分析报告发布,团队项目复审完成,贡献分分配完毕
五、团队分工(5分)
1. 分工明细
| 姓名 | 角色 | 核心职责 | 第10周具体任务 | 任务完成情况 |
|---|---|---|---|---|
| 努尔艾力·司马义(组长) | PM/后端开发 | 项目管理、服务器端开发、部署运维、测试设计 | 1. 搭建开发环境(IDEA、JDK、openEuler服务器) 2. 制定编码规范(命名规则、注释要求、代码结构) 3. 完成初步架构设计(服务器-客户端通信流程) 4. 配置Git仓库权限与分支规则 |
已完成开发环境搭建、编码规范制定、架构设计初稿,Git仓库配置完毕 |
| 刘浩辉 | 前端开发/全栈支持 | 客户端GUI开发、多媒体功能实现、需求分析、文档编写 | 1. 编写需求规格说明书(完整版本) 2. 设计Axure低保真原型(登录界面、主聊天界面、文件选择界面) 3. 整理用户调研反馈,优化需求细节 4. 撰写本次作业博客初稿 |
已完成需求规格说明书终稿、Axure原型设计,用户调研反馈收集完毕,博客初稿完成 |
2. 协作机制
- 每日短会:每晚20:00召开15分钟线上会议,同步任务进度、沟通问题
- 文档共享:核心文档(需求规格说明书、设计文档)通过Git仓库同步,使用Markdown格式确保兼容性
- 问题解决:遇到技术难题时,先独立调研1小时,未解决则共同讨论,记录解决方案到项目文档
六、每个人完成情况(2分)
1. 努尔艾力·司马义
- 已完成任务:开发环境搭建(本地Windows+云端openEuler)、编码规范制定(含命名规则、注释要求、提交规范)、初步架构设计(绘制系统通信流程图)、Git仓库配置(分支管理、Issue创建、权限设置)
- 进度状态:所有分配任务100%完成,提前1天完成架构设计,编码规范已同步至Git仓库
- 产出物:编码规范.md、架构设计流程图.png、Git仓库配置说明.md
2. 刘浩辉
- 已完成任务:需求规格说明书(完整版本,含用户分析、功能需求、技术需求)、Axure低保真原型(4个核心界面)、用户调研(3名目标用户访谈+反馈整理)、本次作业博客初稿
- 进度状态:所有分配任务100%完成,需求规格说明书经过2轮优化,原型设计已根据用户反馈调整
- 产出物:需求规格说明书.md、Axure原型文件.rp、用户调研反馈.md、博客初稿.md
七、每个人的感想(10分)
1. 努尔艾力·司马义
通过本次需求规格说明书编写和项目计划制定,我深刻体会到"凡事预则立,不预则废"的道理。作为PM,不仅要把控项目整体方向,还要细致到每个任务的时间分配和风险预判。在使用"三点估计法"矫正计划时,发现最初的时间预估过于乐观,尤其是开发环境搭建和架构设计环节,需要考虑到各种异常情况(如服务器端口开放、JDK版本兼容)。Git仓库的配置让我学会了如何通过Issue和分支管理实现高效协作,编码规范的制定则为后续开发奠定了基础。后续冲刺阶段,我会重点关注服务器端多线程并发处理和消息转发功能,确保系统稳定性,同时做好项目进度监控,及时调整计划应对突发问题。
2. 刘浩辉
本次作业让我对"需求分析"有了更深入的理解,需求规格说明书不是简单的功能罗列,而是要站在用户角度思考场景和痛点。在进行用户调研时,有用户提到"希望图片能直接预览,不用单独打开文件",这让我们补充了图片缩略图功能,让产品更贴近实际使用需求。Axure原型设计过程中,我反复调整界面布局,力求操作直观,这也让我意识到GUI开发不仅要实现功能,还要注重用户体验。在协作方面,通过Git仓库同步文档和任务,避免了版本混乱问题,每日短会则让我们及时沟通进度,减少信息差。后续我会专注于客户端GUI开发和多媒体功能实现,确保界面美观、操作流畅,同时积极收集用户反馈,持续优化产品。
八、排版(3分)
本次博客采用Markdown格式编写,结构清晰,层级分明:
- 一级标题:作业核心主题
- 二级标题:核心模块(需求规格说明书、Git仓库配置、项目计划等)
- 三级标题:细分内容(面向用户分析、功能需求、原有安排等)
- 采用表格呈现分工、计划等结构化内容,截图辅助说明
- 语言简洁明了,无冗余内容,重点信息(如仓库地址、预期用户量)突出显示
九、总结
本次作业完成了需求规格说明书的详细编写、Git仓库协作配置、项目计划制定及团队分工落地,严格按照作业评分标准实现了所有要求。通过本次工作,团队明确了项目方向和技术路线,建立了高效的协作机制,为后续Alpha阶段冲刺奠定了坚实基础。后续将按照计划推进原型改进、详细架构设计和核心功能开发,确保项目按时、高质量完成。
浙公网安备 33010602011771号