团队项目-计划阶段要求

罗杰 教师 2022-04-12 19:45:51

1. 功能规格说明书

请阅读书本中有关规格说明书的部分,并在PM组织团队的所有成员一起分析你们团队项目的典型用户和场景,并写一个团队博客发布你们团队项目的功能规格说明书。

模板问题:

  1. 功能规格说明书的目标是什么?具体来说,在本说明书中
    1. 需要说明哪些问题?
    2. 叙述和讨论的范畴是什么,界限在哪里
  2. 功能规格说明书的用户和典型场景是什么?具体来说
    1. 该产品的用户是什么样的?
      1. 用户分为哪几类
      2. 每一类用户
        1. 分别具备什么样的特征(注意是用户本身的特征)?例如年龄、性别、职业、目标或其他特征等
        2. 潜在总量(即确有需求使用本产品的用户总量,但请注意,潜在用户未必实际上使用本产品)分别有多少?占总潜在用户量的多大比例?
        3. 使用习惯是怎样的?例如会在什么时间,什么地点,什么样的方式,什么样的频率,使用哪些功能等
        4. 对产品的期望是怎样的?希望本产品可以帮助用户达到怎样的效果?
        5. 愿意为产品付出多少代价?例如是否愿意为一些功能付钱可以接受以什么样的方式(买断、月付、年付、按量付等)付多少钱
    2. 该产品的典型应用场景是什么?
      1. 应用场景分为哪几类
      2. 每一类应用场景下
        1. 分别会包含哪一类或几类用户?
        2. 系统以什么样的方式为各类用户提供服务?
        3. 系统所提供的业务会让用户与用户之间产生什么样的关系?
        4. 可以给置身其中的各类用户带来什么样的好处?产生什么样的感受?
      3. 为了更加直观,在详细阐述应用场景细节的基础上,可以考虑用类似“讲故事”的方式进行应用场景的叙述
  3. 功能规格说明书用到了哪些术语,它们的定义是什么?定义的时候需要
    1. 说明术语的用词、别名、英文缩写等
    2. 尽可能用专业词汇,精确地描述术语的含义,以避免不必要的误解
    3. 对于在本计划书中进行了特殊定义,且与一般意义上的定义略有差别或讨论范畴不同的,需要进行特别说明,并高亮或加粗,以确保可见性
    4. 对于文字上较为类似、较容易“望文生义”或其他可能引起误解混淆的术语,需要结合其他类似术语,说明其区别
  4. 各种边界条件是什么,软件功能应该怎样随之变化?包括但不限于
    1. 用户数量的最大限制,如果超过最大限制则系统如何应对?
    2. 各类用户使用该产品的最大集中度限制,能承受什么样的业务高峰,如果超过则如何应对
    3. 相关业务输入输出内容的上限与下限,对于越界的情况应当如何进行响应
    4. 对于web页面来说,需要支持的浏览器类型及版本,对于不支持的浏览器该如何进行响应并进行必要的警示
    5. 其他需要在系统和业务层面上的边界条件或限制,并需要声明在触发的时候应当怎样进行响应
  5. 系统的各种功能是什么?具体来说
    1. 能实现什么样的事情?对应上述的哪种应用场景
    2. 对于其他功能或数据等,有什么显性或隐性的依赖关系
    3. 可能存在什么样的问题或副作用?打算用什么样的方式去应对或者解决
  6. 本项目在本学期课程中期望达成的的产品目标是什么样的?包括但不限于
    1. 产品应当可以实现哪些功能和效果?请精确详细地进行描述。
    2. 需要积累多少真实用户?注意请不要使用fake data。
    3. 需要达成日活跃用户多少的目标?日活跃用户数量通常统计平均每日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户)。
    4. 需要在系统内部积累多少数据资源?例如题目、做题记录、讨论数据等。
    5. 对于移动App,需要在哪些应用商店或平台上架,并达成下载量多少的目标
    6. 对于需要发布的包应用(例如pip包、gem包、maven包),需要打包成到什么样的程度?是否在一些官方平台(例如Github、Python的Pypi、Ruby的RubyGem)上正式部署发布?并达成下载安装量多少的目标?
  7. 软件发布出去之后
    1. 有哪些数据可以进行收集?有哪些数据需要进行收集
    2. 上述目标相关的数据分别代表了哪些现实意义?与之前定义的项目目标数据存在怎样的关系?如有必要可以使用数学公式进行准确定义。
    3. 为了支持上述的数据收集工作,需要做哪些准备工作

以上模板仅供参考,请各组根据实际情况进行最为合适的规格描述。

要求功能规格说明书中至少有下列内容:

  • 定义相关概念,如缩写、专有名词等
  • 定义典型用户,以及用户所对应的应用场景,
  • 定义典型应用场景,描述主流的用户/软件交互步骤
  • 给出界面原型设计(建议使用原型设计工具
  • 系统功能描述及验收验证标准,明确哪些功能是在Alpha阶段完成,哪些在Beta阶段完成,并尽可能精准地描述完成的标准是什么
  • 写出产品可能存在的问题和副作用,以及对此类问题或副作用打算如何应对或解决

示例:

2. 技术规格说明书

写一个你们项目的设计文档(技术规格说明书),并放入Git仓库的doc目录。设计文档应在实现阶段与代码实现同步更新,对于设计文档的修改应当通知到团队的每一位成员。

  1. 所选择的技术栈,包括但不限于
    1. 所选用的程序设计语言
    2. 基于上述语言,所选择的应用开发框架
    3. 为了支持上述程序设计语言的开发、测试与部署,所必须的运行环境
  2. 软件的总体架构,包括但不限于
    1. 包含的子系统
      1. 分别是什么?例如服务端、客户端、爬虫等
      2. 分别承担哪些功能任务?
      3. 之间的关系及工作模式是怎样的?请使用UML图进行表述
    2. 各个子系统内部
      1. 包含哪几个模块
      2. 分别承担哪些功能任务?
      3. 之间的关系及工作模式是怎样的?请使用UML图进行表述
  3. 功能的详细设计(暂不做要求,请在实现阶段补充完善)
  4. 数据库和API接口设计(暂不做要求,请在实现阶段补充完善)
  5. 系统的开发目标,包括但不限于
    1. 需要完成哪些代码编写
    2. 需要完成哪些单元测试
    3. 需要完成哪些系统压力测试?具体压力指标是多少
    4. 需要完成那些真实测试?具体测试细节是怎样的
    5. 需要完成哪些系统文档的编写?需要详细到什么程度

请在编写设计文档时考虑包括但不限于下列设计原则:

  • 系统层面
    • 运行环境
      • 服务端运行环境,例如需要操作系统Ubuntu、ruby 2.5.2或更高版本、rails 6框架等
      • (如果有的话)应用端运行环境,例如需要安卓10或更高版本、哪些系统组件、ROOT权限等
    • 系统设计
      • 代码设计
        • 抽象
        • 内聚/耦合/模块化
        • 信息隐藏和封装
      • 架构设计
        • 界面和实现的分离
        • 系统错误记录机制
        • 应对需求变化的灵活性
    • 系统性能
      • 对大量数据的处理能力
      • 对高并发应用场景的应对能力
  • 业务流程层面
    • 程序对于相关输入数据有什么样的假设
    • 对于不满足上述假设的情况,如何进行异常处理

示例:

以上例子仅供参考,各组请根据实际情况进行适合的技术规格描述,不要局限于上述结构。

3. Alpha阶段初始任务分配

根据功能规格说明书中明确要在Alpha阶段实现的功能,以及技术规格说明书中团队提出的软件架构设计,使用课程中所讲WBS方法等,将Alpha阶段目标分解成一系列子任务。在分解过程中,请大家注意下述要求:

  • 使用各种估计方法([1][2]),估计每个任务的预期完成时间。
  • 单个子任务的粒度控制在预期完成时间不能超过8小时。
  • 将所有子任务创建为Issue,并将第一批任务分配给个人,后续的任务也可以先进行预分配,并根据开发过程的实际情况来动态调整(PM负责协调)。
  • 创建完所有任务之后,截屏、统计你们项目到底需要多少时间做完。

示例:

...全文
870 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
0人已提交
完成率0%
暂无数据
回复
切换为时间正序
请发表友善的回复…
发表回复

65

社区成员

发帖
与我相关
我的任务
社区描述
2022年北航敏捷软件工程教学实践
软件工程 高校
社区管理员
  • clotho67
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧