分毫不差·同账——原型设计&需求分析

分毫不差. 分毫不差. 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

img

这个作业属于哪个课程2601_CS_SE_FZU
这个作业要求在哪里软件工程实践团队作业第二次——原型设计与需求分析
团队名称分毫不差
这个作业的目标排好组队之后到学期结束的节点;写清关键点、难点和风险;算出这次的分工和贡献度;写明 QQ 和 GitHub 上怎么协作。同时交需求规格说明书、界面原型、两份 PPT 和两份评审表
其他参考文献邹欣《构建之法》第 17 章;GB/T 9385—2008《计算机软件需求规格说明规范》

目录

  • 一、团队项目计划
  • 1.1 时间以哪一天为准
  • 1.2 八个节点对照
  • 1.3 选题:10 月 8 日前后,已完成
  • 1.4 原型与需求:博客 10 月 15 日 23:59,答辩 10 月 16 日
  • 1.5 概要设计与数据库:约 10 月 23 日
  • 1.6 支线:约 10 月 30 日
  • 1.7 Alpha:约 11 月 6 日
  • 1.8 换组:Alpha 之后,到下一次课前
  • 1.9 极限编程:约 11 月 13 日当天,加 11 月 14 日
  • 1.10 Beta:极限编程结束后大约一周,约 11 月 20 日前后
  • 1.11 一个节点怎样算过去
  • 1.12 组队后的整体计划安排
  • 1.13 里程碑
  • 二、关键点、难点与风险
  • 2.1 分摊和净额
  • 2.2 最少转账笔数
  • 2.3 从预览到结清
  • 2.4 谁能操作
  • 2.5 邀请和人数
  • 2.6 归档
  • 2.7 真机、图片和断网
  • 2.8 排期
  • 三、组员分工与工作量比例
  • 3.1 本轮的 8 条任务
  • 3.2 五个维度
  • 3.2.1 记 60 的理由
  • 3.2.2 记 100 的项
  • 3.2.3 解开阻塞,各加 2 分
  • 3.3 个人分
  • 3.4 贡献系数
  • 3.5 本次贡献度
  • 四、成员协作方式
  • 4.1 沟通工具
  • 4.1.1 一条消息怎样算数
  • 4.1.2 群里谁发什么
  • 4.1.3 催交
  • 4.1.4 怎样算完成
  • 4.1.5 两种说法不一样时
  • 4.1.6 这一轮群里的安排
  • 4.2 版本仓库怎么协作
  • 4.2.1 GitHub 上怎么一起写
  • 4.2.2 新人怎么把仓库跑起来
  • 4.2.3 文件放在哪
  • 4.2.4 分支和 PR
  • 4.2.5 华为云
  • 4.2.6 Figma
  • 4.3 冲突怎么处理
  • 4.4 任务怎么同步
  • 4.4.1 这一轮按天同步
  • 4.4.2 每个人交回什么
  • 4.4.3 交接顺序
  • 4.5 协作的四个做法总结
  • 4.5.1 沟通工具
  • 4.5.2 版本仓库怎么协作
  • 4.5.3 冲突怎么处理
  • 4.5.4 任务怎么同步
  • 五、软件需求规格说明书
  • 六、界面原型设计
  • 七、界面原型设计答辩 PPT
  • 八、需求分析PPT链接
  • 九、评审表

一、团队项目计划

组队之后到学期结束,同账按八个节点往前走。每个节点写明时间、这次要交的材料、产品本身要做到哪一步。

八个人,队名分毫不差。十月初组队,题目定成同账:一起吃饭、一起出门,记下谁先垫钱、谁该摊,结束时算出最少要转几笔。

选题时技术栈已经定下,后面的排期沿用这一套。

  • 手机端:React Native、Expo
  • 服务端:Fastify
  • 数据库:PostgreSQL
  • 语言:前后端都写 TypeScript

手机端发出请求,Fastify 处理,PostgreSQL 存账。前后端都写 TypeScript。

img

进度参考上一届的实践来排。上一届把这门课从组队写到成品,主线大约一周一个节点,落在十月和十一月。前几次答辩,规格书和 PPT 交齐就能上课讲。要在设备上点给老师看,是 Alpha 那一周,那一周还要每天写一篇博客。写代码的时间留在那之前。

编码完成度我们自己卡在这些区间:原型这一周 20%–30%,数据库那一周 40%–60%,支线那一周 70%–90%。每一周都用同一笔账来对。

1.1 时间以哪一天为准

10 月 16 日之前的日期是已经发生的。16 日之后按「大约七天一节」来估。

助教把截止日期写上作业页面之后,以页面上的时间为准。节点里要做的事保持不动。

同账这学期的节点。曲线是编码该到的程度,橙点是 10 月 16 日我们目前所在的节点。

img

1.2 八个节点对照

节点大致时间这次要交的同账要做到
选题10 月 8 日前后,已完成团队博客、选题 PPT、评审表划定首版模块;排除支付、离线同步与 Web 端
原型与需求博客 10 月 15 日 23:59;答辩 10 月 16 日需求规格说明书、原型、两份 PPT、博客、两份评审表原型覆盖账本、分摊、结算、结清与归档
概要设计与数据库约 10 月 23 日数据库设计说明书、系统设计说明书、博客、PPT账本至转账落成表;金额以分入库,刷新后净额仍可查询
支线约 10 月 30 日支线博客和 PPT,题目以当年布置为准消费与结算接口可用;正式结算后消费只读;服务端可访问
Alpha约 11 月 6 日每日博客、代码规范、冲刺计划、测试、总结、资源汇总、PPT接通账号、邀请、记账、结算、还款登记、结清与归档
换组Alpha 之后,到下一次课前复盘、后续规划、交接博客交接已完成模块、数据表与未接通页面
极限编程约 11 月 13 日、14 日一篇博客,每人至少 3 次自己的提交同账不新增模块
Beta约 11 月 20 日前后,地点听老师安排每日博客、用户使用调查、总结、PPT交付可安装客户端;独立完成建账、记账与结算预览

下面按节点写全。对照表只列结果,每一节写这一周完成哪些模块、交哪些材料。

1.3 选题:10 月 8 日前后,已完成

这一节点在组队展示那次收口。

  • 队名定为分毫不差,产品定为同账。
  • 用户是一起聚餐、一起短途的人。
  • 技术栈定为上面那四行。
  • 首版模块定为账号与登录、账本管理、成员与邀请、消费记录、分摊设置、成员余额、结算与还款、结清与归档。
  • 排除真实支付、到账校验、离线同步、Web 端、OCR、即时通讯、多币种换算,以及预算、导出、成员移除和取消结算。

当时交了团队博客、选题 PPT 和评审表。界面原型留到下一周再定稿。

1.4 原型与需求:博客 10 月 15 日 23:59,答辩 10 月 16 日

这是现在所在的节点。原型在 10 月 12 日已经能点,16 号上课就用这一版。

同账这一周交付原型与规格,不交付可运行模块:

  • 界面原型覆盖账本管理、成员邀请、消费录入、分摊设置、成员余额、支出统计、结算预览、还款登记、整本结清与个人归档。
  • 需求规格写清账本状态:进行中、结算中、已结清。
  • 写清创建者与普通成员的权限。
  • 金额以整数分表示。

这一周要交齐:

  • 需求规格说明书,传到华为云,博客里给链接。推荐 PDF。
  • 界面原型。Figma 可点击原型的链接写进博客。
  • 界面原型答辩 PPT、需求分析 PPT,同样上传华为云,博客里给链接。
  • 这篇博客,开头有目录。
  • 界面原型设计评审表、需求分析评审表,用腾讯共享文档。

16 号答辩前,原型停在 10 月 12 日这版,不再加页。

1.5 概要设计与数据库:约 10 月 23 日

第二次答辩结束到下一次课。要交数据库设计说明书、系统设计说明书、博客和 PPT。

同账在这一周把类落到库里:

  • 用户、账本、成员、邀请、消费、分摊、图片、结算批次、转账各一张表,类名与表名一致。
  • 金额以整数分持久化。
  • 消费与分摊在同一事务中提交,分摊未写入则整笔回滚。
  • 成员余额由消费与已登记转账派生,刷新后净额仍可查询。

编码按我们自己的区间,这一周走到 40%–60%。样本消费从这一周起以数据库记录为准。

1.6 支线:约 10 月 30 日

第三次答辩结束到下一次课。支线题目每届会变,上一届是大模型评测,我们以老师当年布置的为准。

材料上,这一周交支线的博客和 PPT。主线不再交一份新的规格书。文档做支线,写代码的人把同账往前推。

同账这一周完成这些模块:

  • 消费记录与分摊守恒的写入接口。
  • 结算模块按当前净额生成最少转账方案并持久化;全员净额为 0 时返回空方案。
  • 正式结算后账本进入结算中,消费与成员变更为只读。
  • 服务端完成一次可访问部署。成员邀请、还款登记、归档的界面可以尚未接通。

参考上一届的实践,「第一次部署留到 Beta」是后面最容易卡住的地方。打包、地址、老师打不开,会全堆在最后一周。所以这一周先走通部署,页面少几张也可以。编码按我们自己的区间,这一周走到 70%–90%。

1.7 Alpha:约 11 月 6 日

第四次答辩结束到下一次课。上一届这一周的材料很多,我们按那个清单准备:

  • 冲刺阶段每天一篇博客
  • 团队代码规范、冲刺计划
  • 测试、阶段总结、资源汇总
  • 答辩 PPT、评审表

演示在自己的手机上完成,请求打到自己的服务端。接通账号与登录、账本管理、邀请加入、消费记录、分摊设置、成员余额、结算预览与正式结算、还款登记、整本结清、个人归档。只演示已经通过的模块。

权限由服务端校验:普通成员不可修改他人消费,不可重置邀请或执行整本结清。收据每笔至多一张。预算、导出、成员移除、取消结算不纳入本阶段。

1.8 换组:Alpha 之后,到下一次课前

上一届在 Alpha 答辩结束到下一次上课之间,要交三篇:

  • Alpha 阶段复盘
  • 后续规划
  • 换组交接

交接写清已实现模块、数据表,以及尚未接通的页面,包括扫码加入、按份分摊、按金额分摊、收据与流水筛选。只修复阻断主路径的缺陷,不新增模块。

1.9 极限编程:约 11 月 13 日当天,加 11 月 14 日

上一届是第六次上课当天再加第二天,和主线项目分开。题目以老师当年布置的为准。

一篇博客里写清这些:

  • 项目跑起来的截图
  • 仓库地址
  • 运行环境
  • 分工
  • 功能是怎么做的
  • 遇到的问题和解决办法
  • 提交记录。每人至少 3 次,提交记在这个小项目上

同账不新增模块,功能集保持在 Alpha 已完成的范围。

1.10 Beta:极限编程结束后大约一周,约 11 月 20 日前后

时间和地点由老师安排。材料和 Alpha 同类,再加一份用户使用调查:每天一篇冲刺博客、代码规范、阶段总结、资源汇总、答辩 PPT、评审表。

交付可安装的移动端与可访问的接口。外部用户在自己的设备上独立完成三步,中间不需要我们代点:

  1. 账本创建。
  2. 消费录入。
  3. 结算预览,得到付款人、收款人与转账金额。

演示范围限于已通过验收的模块。真实支付、离线同步、预算、导出、取消结算不进入本阶段。

1.11 一个节点怎样算过去

每个节点按该阶段的模块验收。金额以整数分守恒,成员净额加总为 0。

入口可进入,操作完成,刷新后数据仍在,净额仍可查询。四条都对上,才进入下一个节点。

1.12 组队后的整体计划安排

十月初组队定题之后,同账沿用 React Native、Expo、Fastify、PostgreSQL。十月到十一月按上一届的间隔排:先划定首版模块并完成原型与需求,再把用户到转账落成表,支线周接通消费与结算接口并完成一次部署,Alpha 接通账号到归档,换组交接已完成模块和未接通页面,极限编程不新增模块,Beta 交付可安装客户端。16 日之后的具体日期以作业页面为准,每周要完成的模块按上面各节执行。

1.13 里程碑

每个节点写同账这一阶段完成的模块。要交的材料见上面的对照表。

节点时间完成的模块
选题10 月 8 日前后,已完成确定产品范围与技术栈。首版模块定为账号与登录、账本管理、成员与邀请、消费记录、分摊设置、成员余额、结算与还款、结清与归档。排除真实支付、到账校验、离线同步、Web 端、OCR、即时通讯、多币种换算,以及预算、导出、成员移除和取消结算。
原型与需求博客 10 月 15 日 23:59;答辩 10 月 16 日界面原型覆盖账本管理、成员邀请、消费录入、分摊设置、成员余额、支出统计、结算预览、还款登记、整本结清与个人归档。需求规格写清账本状态(进行中、结算中、已结清)、创建者与普通成员的权限,以及金额以整数分表示。本阶段交付原型与规格,不交付可运行模块。
概要设计与数据库约 10 月 23 日用户、账本、成员、邀请、消费、分摊、图片、结算批次、转账落成表,类名与表名一致。金额以整数分持久化。消费与分摊在同一事务中提交,分摊未写入则整笔回滚。成员余额由消费与已登记转账派生,刷新后净额仍可查询。
支线约 10 月 30 日完成消费记录与分摊守恒的写入接口。结算模块按当前净额生成最少转账方案并持久化;全员净额为 0 时返回空方案。正式结算后账本进入结算中,消费与成员变更为只读。服务端完成一次可访问部署。成员邀请、还款登记、归档的界面可以尚未接通。
Alpha约 11 月 6 日移动端与服务端接通。完成账号与登录、账本管理、邀请加入、消费记录、分摊设置、成员余额、结算预览与正式结算、还款登记、整本结清、个人归档。权限由服务端校验:普通成员不可修改他人消费,不可重置邀请或执行整本结清。收据每笔至多一张。预算、导出、成员移除、取消结算不纳入本阶段。
换组Alpha 之后,到下一次课前交接已实现模块、数据表与尚未接通的页面,包括扫码加入、按份分摊、按金额分摊、收据与流水筛选。只修复阻断主路径的缺陷,不新增模块。
极限编程约 11 月 13 日、14 日另交独立小项目。同账不新增模块,功能集保持在 Alpha 已完成的范围。
Beta约 11 月 20 日前后交付可安装的移动端与可访问的接口。外部用户独立完成账本创建、消费录入和结算预览,得到付款人、收款人与转账金额。演示范围限于已通过验收的模块。真实支付、离线同步、预算、导出、取消结算不进入本阶段。

二、关键点、难点与风险

每项都标出关键点、难点和风险。

往后卡住进度的,主要是算账、冻账,以及几个人同时改同一本账。鼓山一日在原型里能点通,是因为金额和成员是预设的。真做的时候要按当时的数据重算。个人归档、邮箱不换绑、结算不能取消已经定了,下面只写做的时候还会踩的地方。

2.1 分摊和净额

关键点 金额按分存。一笔消费的分摊合计必须等于这笔金额,全本成员净额加总必须是 0。

难点 人均和按份的零头用最大余数法,余数相同按成员 ID 的固定顺序分。100 元三人均分得到 33.34、33.33、33.33 元。按金额可以有人摊 0 分,合计仍要等于消费总额。界面显示元,库存和接口用整数分,120 元传 "12000"。鼓山一日要对上这组数:

成员已付应摊净额
小安12000 分9000 分+3000 分
小白12000 分6000 分+6000 分
小陈6000 分9000 分−3000 分
小丁06000 分−6000 分

总支出 30000 分,待转账 9000 分。

风险 差 1 分,净额加总不再是 0,结算方案整份不能用,验收过不了。

2.2 最少转账笔数

关键点 12 人以内给出真正的最少转账笔数。全员净额为 0 时返回空方案。

难点 去掉净额为 0 的人以后,设还剩 n 人,最多能拆成 k 个互不重叠、各自能结清的组,最少笔数就是 n−k。同一组里,应付的人可以向多名应收的人转账。

三人例子和鼓山一日不是同一组数。A 净额 −100 元,B +20 元,C +80 元。最少是两笔:A 付给 C 80 元,再付给 B 20 元。用来核对一个人要付给两个人的结果。

风险 人数一多,计算时间会明显变长,12 人的最坏情况要在测试环境里测过。算不完或算失败时,如果仍展示一份凑出来的方案并写成“最少”,正式结算会按错误结果冻结。本次没有取消结算,冻住以后退不回进行中。

2.3 从预览到结清

关键点 预览只给出方案,账本保持原样。创建者确认后方案固定,消费和成员冻结。再次打开读已保存的转账,不再重新配对收款人。

预览不改账本。创建者确认后冻结,登记已还,再确认才结清。归档记在每个成员自己身上。

img

难点 确认时要在同一个事务里依次做完:

  1. 核对当时的账本版本。
  2. 停止继续改消费、改变成员。
  3. 写入结算批次和每一笔转账。
  4. 把状态改为结算中。

登记已还只更新这一笔的状态和剩余净额,总支出、类别占比和原始应摊保持原样。全部登记完,创建者再确认一次,才变成已结清。进行中两人同时改同一笔时,后保存的请求带上打开时看到的版本;版本已经变了就拒绝,表单上已填的内容留着。新增消费、正式结算、登记已还带请求标识,同一次请求只保留一个结果。

风险 预览之后又有人改了一笔,仍用旧方案冻结,转账和真实净额会对不上。保存连点两次,会多出一笔消费,或把同一笔还款登记两遍。进度页如果重新跑算法,小陈付给小安 30 元、小丁付给小白 60 元,可能换成另一对。

2.4 谁能操作

关键点 创建者和普通成员的权限由服务端判定。邀请码只打开加入确认,确认前看不到账本内容。

难点

操作创建者普通成员
改、删进行中的消费全部只限自己记下的
登记已还全部转账只限自己要付出的
邀请、重置邀请码、正式结算、整本结清可以不可以
查看账本、收据、结算可以可以;非成员不可以

当前原型主要是小安的视角,四个账号的权限没有分开演。

风险 按钮藏了、接口没查,成员仍能改别人的消费、重置邀请码,或凭图片编号打开收据。若只按原型把创建者路径做通,普通成员登记自己那一笔、不能整本结清,要到多人联调才看得到。

2.5 邀请和人数

关键点 邀请、加入和 12 人上限在服务端再查一次。

难点

  • 6 位邀请码和二维码是同一条记录,默认 7 天。
  • 重置以后,旧码和旧二维码一起失效。
  • 只有进行中的账本可以加人。确认加入时,服务端再查一次人数和状态。
  • 已在账里的人直接进入,不建第二条成员关系。
  • 加入发生在应用内部。系统相机扫到码不会打开应用;相机未授权时,仍可以用手输。
  • 上限 12 人,含创建者。

风险 两人同时加入,可能超过 12 人。重置邀请和别人正在输入旧码撞在一起,会加入失败,失败时还可能提示成功。四人一起记账依赖邀请可用。这一环断了,后面的分摊和结算没有真实成员可测。

2.6 归档

关键点 归档记在成员身上。财务状态只有进行中、结算中、已结清。

难点 归档时间写在该成员身上,只把自己的当前列表挪空,而且只能归档已经结清的账。

小安把已结清的账归档以后,自己的当前列表里没有了。小白的当前列表里还应该看得到这本账。原型没有把这个差别演出来。

风险 若把归档做成整本移走,一个人整理列表,其他人就找不到这本已结清的账。未结清的账也被归档时,结算中的账会从列表消失,登记已还的入口一起没了。

2.7 真机、图片和断网

关键点 安装包、图片和联网要在真机上先走通。业务必须联网。断网时,当前页已经填写的内容留着,以便重试。

难点风险
先定 Android 或 iOS 里的一个必达平台,在真机上打包,并试相机、相册、复制邀请码临近答辩才试,容易白屏、扫不了码,或复制没有进剪贴板。两个平台都承诺必达,时间会耗在打包上,主路径没有在一台机器上走完
封面和收据放进独立表的二进制字段。创建前的封面先不挂账本,创建成功再绑定,没用上的图清掉。读图核对是不是本账成员。收据最多一张,检查实际类型、字节数和像素图片塞进消费记录,或只凭编号就能下载,库会过大,收据也会被账本外的人看到

2.8 排期

关键点 结算前面是分摊守恒,后面是登记、结清和归档。统计图、关于页和协议正文放在这条链之后。

难点 分摊差额没测过,结算页就没有可信数据。结算事务没合进去,结清和归档只能对着假状态做。

风险 顺序反了,后面几步都在假数上做,返工会叠在一起。

三、组员分工与工作量比例

这次是第二次作业,从这次起按我们团队的考核方案(具体方法在上一次选题博客内)算贡献系数。

(1) 不数代码行,不数提交次数,也不看谁先交。
(2) 代码是否完成,以组长风车在群里确认为准。
(3) 文稿和 PPT 以风车确认可以发出为准。

3.1 本轮的 8 条任务

一条任务一个负责人。点数只用 1、2、3、5、8。

难度和时效各两档,相乘,不组成四种情况。本轮全部按时,时效都是 1.00。普通难度 1.00。认领时写明要先验证技术方案的,难度 1.25。

任务得分 = 点数 × 难度 × 时效。

编号学号昵称任务做完的标准点数难度时效任务得分
T1072403324whisper可点击原型和跳转从欢迎页走到结清归档,链接能打开81.001.008.00
T2072403123饶恩哲四张类图和字段边界账本与成员、支出与分摊、结算转账、成员余额能对上鼓山手算81.251.0010.00
T3102400307风车页面清单说明书、原型、清单是同一套功能点31.001.003.00
T4102400201陈林祺引言、用户场景、功能描述不看代码能知道同账要做什么31.001.003.00
T5102400103李润君验收标准和鼓山手算300 元抵成两笔、90 元,对不上就判不通过31.001.003.00
T6102400109circlexx页面跳转和输入保留记账、分摊、结算、登记已还能沿着原型走31.001.003.00
T7102400202G_bamboopole华为云仓库和链接位置说明书、PPT、原型链接放在约定位置31.001.003.00
T8052406103叶银珍视觉规范落到页面颜色、字号、按钮、卡片、底部栏是同一套31.001.003.00

全组任务得分 = 8 + 10 + 3 + 3 + 3 + 3 + 3 + 3 = 36.00。

本期人均 = 36.00 / 8 = 4.50。一半是 2.25。

规模只看任务得分够不够这条线,不看单笔高低。

  • 达到人均,记 100
  • 达到一半、还没到人均,记 60
  • 不到一半,记 0
昵称任务得分和 4.50 比规模分
whisper8.00达到人均100
饶恩哲10.00达到人均100
风车3.00过半,未到人均60
陈林祺3.00过半,未到人均60
李润君3.00过半,未到人均60
circlexx3.00过半,未到人均60
G_bamboopole3.00过半,未到人均60
叶银珍3.00过半,未到人均60

T2 的难度是 1.25,因为认领时写了要先把分摊、结算和鼓山手算对上。对上之后规模分到顶仍是 100,不会因为单笔 10 分再往上加。T1、T2 记 8 点,因为本阶段看原型和验收能不能检查,这两条是关键路径。T3 到 T8 各记 3 点,都过了人均的一半,规模没有人记 0。

3.2 五个维度

交付、协作、规范、文档也只打三档:达标 100,能用但有缺陷 60,打不开或对不上任务 0。60 分写明理由。

学号昵称交付规模协作规范文档
072403324whisper10010010010060
072403123饶恩哲10010010010060
102400307风车10060100100100
102400201陈林祺60606010060
102400103李润君60606010060
102400109circlexx60606010060
102400202G_bamboopole6060606060
052406103叶银珍6060606060

3.2.1 记 60 的理由

一项一行。分数仍是 60,只把原来挤在一段里的话拆开。

昵称哪一项理由
whisper文档走查页能看,整份答辩还不能按清单讲完
饶恩哲文档四张类图能核对,整份答辩还不能按清单讲完
风车规模任务得分 3.00,过了 2.25,没有到 4.50
陈林祺交付引言、用户场景、功能描述能读,组长还没确认可以发出
陈林祺协作文稿在,没有留下一条指出具体下一句该怎么改的记录
陈林祺文档场景能检查,整份演示还不能按清单走完
李润君交付鼓山手算能复算,独立验收表还没到可以发出的版本
李润君协作例子在,没有留下一条指出说明书哪一行要改的记录
李润君文档300 元抵成两笔、90 元可以复算,整份演示还不能按清单走完
circlexx交付记账、分摊、结算、登记已还的跳转已经写了,还有控件没有接通
circlexx协作跳转写了,没有留下一条指出原型哪一根线要改的记录
circlexx文档跳转可以照着走,整份演示还不能按清单走完
G_bamboopole交付仓库位置写了,华为云上的 PDF 还不是可以发出的终稿
G_bamboopole协作目录在,没有留下一条指出哪个文件该放到哪的记录
G_bamboopole规范还没有对上任务编号的提交
G_bamboopole文档链接位置能看,演示还不能按清单走完
G_bamboopole规模任务得分 3.00,过了 2.25,没有到 4.50
叶银珍交付颜色、字号、按钮、卡片、底部栏已经是一套,还有状态页没有套完
叶银珍协作规范在,没有留下一条指出哪一页偏离了这套变量的记录
叶银珍规范视觉变量还没有对上任务编号的仓库提交
叶银珍文档主路径能看,整份演示还不能按清单走完
叶银珍规模任务得分 3.00,过了 2.25,没有到 4.50

3.2.2 记 100 的项

谁哪些是 100因为
陈林祺、李润君、circlexx规范各自那一块的章节、手算例子、跳转和任务编号对得上
风车交付、协作、规范、文档清单把说明书、原型、功能点收成同一套,八条任务也在这张表里

3.2.3 解开阻塞,各加 2 分

昵称加分做了什么
陈林祺+2把用户场景写成可以检查的条目,解开了验收没法落笔的阻塞
李润君+2鼓山手算是当时别人接不了的验证
circlexx+2跳转把原型和说明书的路径对齐,解开了对不齐的阻塞

3.3 个人分

R = 0.35 × 交付 + 0.25 × 规模 + 0.20 × 协作 + 0.12 × 规范 + 0.08 × 文档。

昵称计算五项结果加 2 分后计入 W
whisper0.35×100 + 0.25×100 + 0.20×100 + 0.12×100 + 0.08×60 = 35 + 25 + 20 + 12 + 4.896.8不加96
饶恩哲0.35×100 + 0.25×100 + 0.20×100 + 0.12×100 + 0.08×60 = 35 + 25 + 20 + 12 + 4.896.8不加96
风车0.35×100 + 0.25×60 + 0.20×100 + 0.12×100 + 0.08×100 = 35 + 15 + 20 + 12 + 890不加90
陈林祺0.35×60 + 0.25×60 + 0.20×60 + 0.12×100 + 0.08×60 = 21 + 15 + 12 + 12 + 4.864.866.866
李润君0.35×60 + 0.25×60 + 0.20×60 + 0.12×100 + 0.08×60 = 21 + 15 + 12 + 12 + 4.864.866.866
circlexx0.35×60 + 0.25×60 + 0.20×60 + 0.12×100 + 0.08×60 = 21 + 15 + 12 + 12 + 4.864.866.866
G_bamboopole0.35×60 + 0.25×60 + 0.20×60 + 0.12×60 + 0.08×60 = 21 + 15 + 12 + 7.2 + 4.860不加60
叶银珍0.35×60 + 0.25×60 + 0.20×60 + 0.12×60 + 0.08×60 = 21 + 15 + 12 + 7.2 + 4.860不加60

whisper、饶恩哲的五项结果是 96.8,比 96 多 0.8。陈林祺、李润君、circlexx 加完 2 分是 66.8,也比 66 多 0.8。这 0.8 不进入 W。风车的 90、G_bamboopole 的 60、叶银珍的 60 没有这 0.8。

计入 W 的个人分之和 = 96 + 96 + 90 + 66 + 66 + 66 + 60 + 60 = 600。

3.4 贡献系数

W = 这个人计入 W 的个人分 / 600。

  • 先得到百分数,再保留两位。
  • 两位之后加起来要是 100%。
  • 小数部分从大到小,每个加 0.01,直到补齐。
  • 小数相同,按封面学号从小到大。
学号计算未补余数贡献度
07240332496 / 600 = 16.00%16.00%16.00%
07240312396 / 600 = 16.00%16.00%16.00%
10240030790 / 600 = 15.00%15.00%15.00%
10240020166 / 600 = 11.00%11.00%11.00%
10240010366 / 600 = 11.00%11.00%11.00%
10240010966 / 600 = 11.00%11.00%11.00%
10240020260 / 600 = 10.00%10.00%10.00%
05240610360 / 600 = 10.00%10.00%10.00%

这八个百分数已经是两位,加起来是 100.00%,没有余数要补。

3.5 本次贡献度

学号工作内容贡献度
102400307组长。功能点收进页面清单,核对说明书、原型和清单是同一套;排期、风险和这次贡献度15.00%
072403123主程序员。四张类图和功能边界:账本与成员、支出与分摊、结算转账、成员余额;前后端字段对齐,按功能点留目录16.00%
072403324原型。整套可点击原型和跳转,从欢迎页到结清归档;设计条目和界面答辩走查页16.00%
052406103视觉规范落到原型:颜色、字号、按钮、卡片、底部栏同一套10.00%
102400103验收标准。鼓山一日主路径和手算(300 元抵成两笔、90 元),对不上的步骤写成不通过11.00%
102400109页面结构和交互:记账、分摊、结算、登记已还的跳转,输入出错时留在当前页11.00%
102400201需求规格说明书:引言、用户场景、功能描述,目录和章节按规格文本排11.00%
102400202华为云仓库和提交路径,说明书、PPT、原型链接放在约定位置并能打开10.00%

16.00 + 16.00 + 15.00 + 10.00 + 11.00 + 11.00 + 11.00 + 10.00 = 100.00%。

四、成员协作方式

沟通在 QQ 群,代码在 GitHub,要交的说明书和 PPT 在华为云,视觉和原型在 Figma,两份评审表在腾讯共享文档。

这一节写交接实际怎么做。学号和这次要交回去的东西先对照在这里,后面的规矩都按这张表认人。

学号这次要交回去的东西
102400307页面清单;收口说明书;汇总博客;在群里说可以发出
072403123四张类图;GitHub 仓库、基础设施和架构;review PR
072403324这次先交可点击原型和跳转,从欢迎页走到结清归档
052406103Figma 上的颜色、字号、按钮、卡片、底部栏
102400109记账、分摊、结算、登记已还的跳转;输错留在当前页
102400103鼓山手算和验收。300 元抵成两笔、90 元,对不上写成不通过
102400201引言、用户场景、功能描述
102400202华为云上的说明书、两份 PPT,以及博客里的链接位置

4.1 沟通工具

同账的日常协作在一个 QQ 群里。

截止、催交、点名、链接、确认可以发出,都发在这个群里。私聊只用来看还没定稿的内容。只在私聊里说过的截止和分工,全组按没通知到来处理。

4.1.1 一条消息怎样算数

要同时满足这三条:

(1) 发在群里,不是私聊。
(2) 需要别人做的,点到具体的人,写清要交什么、什么时候交。
(3) 被点到的人在群里回一句。没有回复,就当没看到,风车再点一次名字。

4.1.2 群里谁发什么

谁发发什么别人怎么接
风车本轮要交的东西、谁做、内部截止、可以发出被点到的人当天回复
饶恩哲代码组怎么排、哪条 PR 在等 review、main 合并了哪一块写功能的人按自己的分支做,做完把 PR 链接发回群里
whisper可点击原型的链接,并写明从欢迎页走到归档做 PPT 和写博客的人换成这一条。打不开就在群里说,他重发一条当时能打开的
叶银珍视觉规范改了哪些变量、哪一页已经套上whisper 按这一套改原型
circlexx记账、分摊、结算、登记已还的路径,输错留在哪一页whisper 对原型,陈林祺对说明书
陈林祺引言、用户场景、功能描述交到哪一稿风车收口成需求规格说明书
李润君鼓山手算。总支出 300 元,两笔转账,待转账 90 元。对不上就写不通过饶恩哲改类图,陈林祺改正文里的数字
G_bamboopole华为云上的文件名、目录、打开后的链接风车打开,确认是终稿,再写进博客

4.1.3 催交

  • 催交发在群里。
  • 到了内部截止还没回「请看」的,风车再点一次名字。
  • 点过之后仍然没有稿,这一项按未交记,不用旧稿顶上。

4.1.4 怎样算完成

文稿和 PPT:风车在群里回复可以发出。
代码:饶恩哲把 PR 合并进 main,并且风车在群里确认。

只在群里说写完了、PR 还开着,不算完成。只合并了、群里没说,文档组和做 PPT 的人先不改博客里的完成度。

4.1.5 两种说法不一样时

(1) 以后发的那条为准。
(2) 前一条还要不要,风车在同一条消息里写明。
(3) 两份 PPT 选三个人、两份审核表选一个人,也在群里点,不在私聊里定。
(4) 审核表用腾讯共享文档,写完把链接发回群里。

4.1.6 这一轮群里的安排

周五先把文档组要的三样发在群里。

  • 原型和使用说明。 用鼓山一日走完:建账本、记三笔、看到谁转给谁。
  • 类图。 写类名、主要属性和关系,金额用「分」。
  • 功能说明。 写操作、输入、输出、做完之后账本变成什么样、输入不对时看到什么。

周末两天把这三样交给文档组。周一到周四写功能,文档组同时写说明书、做 PPT。文档不干等功能做完。

周一再把要交的总数发在群里:

(1) 需求使用说明 1 份,由风车收口。
(2) 原型设计 PPT、需求分析 PPT 各 1 份,选三个人一起做,做的人要能打开原型。
(3) 审核表 2 份,选一个人写。
(4) 内部截止周三。博客由风车汇总。

陈林祺、G_bamboopole、李润君已在群里回复接到。

QQ 群里发出的文档安排和代码组、文档组的分工

img

QQ 群里发出的交付物、人选和内部截止

img

作业页面上的博客截止仍是 10 月 15日 23:59。周三是内部截止,用来留出汇总、上传和改链接的时间。

4.2 版本仓库怎么协作

地方谁收放什么什么时候更新
GitHub饶恩哲工程骨架、基础设施、架构、参考文档;之后的功能代码骨架先放进 main。功能写完开 PR,review 通过再合并
华为云G_bamboopole需求规格说明书、原型答辩 PPT、需求分析 PPT。推荐 PDF风车说可以发出之后再传。博客里的链接指向这里
Figma叶银珍改视觉,whisper 改跳转和链接颜色、字号、按钮、卡片、底部栏;可点击原型链接有变就发到 QQ 群。风车确认后再写进博客
腾讯共享文档群里点到的那一个人写两份评审表界面原型设计评审表、需求分析评审表写完把链接发到群里,风车看过再放进博客

4.2.1 GitHub 上怎么一起写

饶恩哲先开仓库,把基础设施、架构、参考文档和基本技能放上 main。别人不在空目录里各自起一套工程。技术栈和选题时定的一样:React Native、Expo、Fastify、TypeScript、PostgreSQL。

main 上先有的:

  • 移动端联调页
  • API 健康检查和接口文档
  • 共享包
  • 数据库连接
  • 开发配置和 CI

还没进 main 的:

  • 登录
  • 账本
  • 邀请
  • 记账
  • 结算

图标和启动图仍用 Expo 模板,不当成已经做好的界面。

tongzhang 仓库,协作都在这一份 main 上进行

img

README:新人按这份说明把骨架在本机跑起来

img

4.2.2 新人怎么把仓库跑起来

按 README 起环境,不在 QQ 里另传一份安装步骤。

  • 环境:Node.js 24、pnpm 12.6.0,Docker Desktop 先开着
  • 移动端默认用 Development Build
  • 第一次装开发客户端、配置真机 IP、用 Expo Go 临时预览,写在仓库里的开发说明里

先起 API:

pnpm install
pnpm env:setup
pnpm db:up
pnpm db:migrate
pnpm dev:api

另一个终端再跑 pnpm dev:mobile。

API 默认 http://localhost:3300。本地这四条都通,才开始在自己的分支上写功能。

  • /health/live:只看进程,不连数据库
  • /health/ready:查真实的 PostgreSQL,失败返回 503
  • /api/v1/system/info:对两端的基础约定
  • /docs:开发环境的 Swagger

4.2.3 文件放在哪

review 时先看目录放对没有。

目录放什么
apps移动端和 API
packages前后端共用的类型和字段名。两套字段名不能并存
infra数据库和本地依赖
docs参考文档和基本技能
scripts安装、起库、迁移
.github/workflowsCI。合进 main 之前,这条要能过

4.2.4 分支和 PR

不直接往 main 上推。

(1) 从 main 用 worktree 开自己的分支。一个人一块功能,一条分支。
(2) 后端功能由开发同学写。风车自己写的服务端也走分支。这次作业 whisper 先交原型,之后写的服务端同样开 PR。circlexx 的页面和接口调用也开 PR。
(3) 写完在 GitHub 上开 PR,指定饶恩哲 review。PR 说明里写改了哪一块、用鼓山一日的哪几个数验过。某一行要改,写在 PR 的评论里。diff 不贴进 QQ。
(4) QQ 里只回一句:PR 开了,或者已经合并。群里不代替 review。
(5) 下面任何一条对不上,PR 先不合。main 保持现在这份能跑的骨架。

看什么对不上就退回
目录新文件没有放进上表对应的目录
分支功能直接提交到 main,没有 PR
金额用了小数。120 元存 12000 分,接口传 "12000"
鼓山手算四人净额加总不是 0,或两笔转账不是小陈付给小安 30 元、小丁付给小白 60 元
类图字段名和饶恩哲四张图、packages 里的共享类型不是一套
完成度README 写成登录、账本、记账、结算已经做完,main 上还没有这些接口

4.2.5 华为云

G_bamboopole 上传之前,在群里写文件名和目录。上传之后把链接发回群里。风车打开,确认是终稿,再让链接进入博客。

华为云上只放这三份:

  • 需求规格说明书
  • 原型答辩 PPT
  • 需求分析 PPT

4.2.6 Figma

两处分开改。

  • 叶银珍改全组共用的颜色、字号、按钮、卡片、底部栏。
  • whisper改可点击原型和按钮跳转,从欢迎页走到结清归档。

做 PPT 的人打不开链接,就在群里说。whisper 重发一条当时能打开的,不各自留一份旧稿。

4.3 冲突怎么处理

先分清是哪一种,再决定在哪改。

  • 文件撞在一起:在 PR 里解决。
  • 内容对不上:按下表听谁的,改完在 QQ 群里回一句。
情况以什么为准谁改怎样算解决
两个分支改了同一处代码饶恩哲 review 通过的那一版开 PR 的人先把 main 上的新提交接进自己的分支,冲突在分支里解决,再请他看 diff合并进 main。main 上不留冲突标记
原型按钮和说明书路径不一致whisper 当时的可点击原型circlexx 改说明书里的路径。功能点要增减时,先改风车的页面清单,再改原型和说明书清单、原型、说明书是同一套功能点
类图、正文和手算差了金额李润君的鼓山手算。总支出 30000 分,待转账 9000 分,四人净额加总为 0饶恩哲改类图或计算说明,陈林祺改功能描述里的数字差 1 分,这版不能发出
某一页的颜色、字号和规范不一致叶银珍的视觉规范做那一页的人改回规范里的变量群里写明是哪一页
群里有人还在用旧的原型链接whisper 最新发在群里、并且有人回复打得开的那条做 PPT 和写博客的人换成新链接风车打开博客里的链接,看到的是这一版
华为云上的 PDF 和群里确认的稿不是同一份风车回复可以发出的那一稿G_bamboopole 重新上传,替换链接博客链接打开的是终稿
README 写成业务已完成,main 上还没有README 里「尚未实现」那一句饶恩哲改 README,或等 PR 合并后再改「已完成」README 的边界和 main 上的代码一致
群里前后两种说法风车后发的那一句按后一句做前一句还要不要,他在同一条消息里写明

PR 里意见不一致,也是风车定。他定的那一句发回 QQ 群,饶恩哲按那一句决定合还是不合。不合的 PR 留在分支上,main 保持能跑的那一版。

4.4 任务怎么同步

一条任务一个负责人,对应贡献度表里的 T1 到 T8。进度只在 QQ 群里同步。GitHub 上的同步只发生在 PR 和 main 上:开了 PR 是请看,合并进 main 才进入可以确认完成的那一步。

状态只用三句。

  • 接到了,被点到的人回。
  • 请看,稿或 PR 交出来,等人看。
  • 可以发出,只有风车能说。

4.4.1 这一轮按天同步

时间群里在同步什么接到之后要交回什么
10 月 9 日文档三样;饶恩哲当晚排代码组;周末给齐材料;周一到周四写功能,文档组同时写文档和 PPT饶恩哲把代码组安排发回群里。骨架先落在 main 上
10 月 10 日、11 日周末原型说明、类图、功能说明给到写文档和做 PPT 的人
10 月 12 日五类交付物。说明书风车收口。PPT 点三个人。评审表点一个人。内部截止周三陈林祺、G_bamboopole、李润君已在群里回复接到
10 月 13 日开始两份 PPT三个人打开原型。打不开就在群里说,whisper 重发链接
10 月 14 日周三内部截止章节、PPT、评审表、原型链接交到风车
10 月 15 日 23:59博客作业截止风车汇总并发出。此前 G_bamboopole 已把 PDF 传到华为云
10 月 16 日原型答辩用已经在群里发过、并且有人打得开的那版可点击原型。main 上还没有的登录、记账、结算,答辩不说成已经做完

4.4.2 每个人交回什么

谁发到群里的东西谁来看完成
whisper可点击链接,并写明从欢迎页走到归档风车,以及做 PPT 的三个人群里有人回复打得开
饶恩哲四张类图;GitHub 上待 review 的 PR李润君对金额,风车对功能点手算对上,并且 PR 已合并。现在 main 上还只有骨架,功能 PR 还没算完成
叶银珍视觉规范改了哪些变量,哪一页已经套上whisper原型页面用的是这一套
circlexx记账、分摊、结算、登记已还的跳转whisper 对原型,陈林祺对说明书路径和原型一致,输错留在当前页
陈林祺引言、用户场景、功能描述风车风车回复可以发出
李润君鼓山手算,以及对不上就判不通过的步骤饶恩哲、陈林祺300 元、两笔、90 元写进说明书
G_bamboopole华为云目录、文件名、打开后的链接风车链接打开的是可以发出的 PDF
风车页面清单的增删;博客汇总稿全组他在群里说可以发出,博客才交

4.4.3 交接顺序

跳过前面的人直接改后面的稿,群里先说,等清单改完再改。

(1) 功能点先改页面清单。
(2) 再改原型和类图。
(3) 陈林祺改功能描述。
(4) 李润君用鼓山手算核一遍。
(5) PPT 用已经能打开的原型。
(6) G_bamboopole 上传风车点过头的 PDF。
(7) 风车把链接写进博客。
(8) GitHub 上的功能要等 PR 合并,再改 README 里的「尚未实现」。

4.5 协作的四个做法总结

4.5.1 沟通工具

通过QQ 群沟通。截止、催交、点名、链接和可以发出的都发在群里。点到人、人在群里回复,这条才算数。文稿要看是否可以发出,代码要看 PR 合并再加上群里确认。

4.5.2 版本仓库怎么协作

代码在 GitHub 的 main 和 PR 上协作:骨架先放上 main,功能用 worktree 开分支,饶恩哲 review。说明书和两份 PPT 在华为云,视觉和原型在 Figma,评审表在腾讯共享文档。

4.5.3 冲突怎么处理

代码冲突留在分支里,合进 main 之前清掉。金额、路径、链接和终稿各有一份为准的稿。PR 里意见不一致,风车在群里定一句,饶恩哲按那一句决定合还是不合。

4.5.4 任务怎么同步

一条任务一个负责人。状态只有接到了、请看、可以发出。每天在群里对进度,交回的东西按上面的人和顺序走。

五、软件需求规格说明书

说明书上传到华为云。

需求规格说明书

六、界面原型设计

界面原型

七、界面原型设计答辩 PPT

课堂讲述用,上传到华为云。

界面原型设计答辩 PPT

八、需求分析PPT链接

课堂讲述用,上传到华为云。

需求分析报告 PPT

九、评审表

界面原型设计评审表

需求分析评审表

...全文
评论
收藏 已收藏
分享
返回顶部