这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/2021Softwarecodedevelopmenttechnology/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/2021Softwarecodedevelopmenttechnology/homework/11968 |
这个作业的目标 | (1)学会运用UML,并结合领域驱动设计方法、软件设计模式等知识,对系统需求进行建模 |
(2)学会撰写需求规格说明书,完成项目后续的开发计划 | |
(3)学会通过git增量式管理来管理项目后续的代码、文档,实现文档的版本化和增量式管理 |
1 领域驱动设计
1.1 概念类
自由职业者:Professional
客户:Customer
项目:Project
时间表:Schedule
1.2 领域模型
2 需求规格说明书
2.1 问题描述
一家公司提供服务出租,自身有一些员工,另外还有很多自由职业者作为服务商存在。公司目前使用Excel工作表来管理他们的客户(自由职业者),时间表等。Excel解决方案无法很好地进行扩展。它无法应对多用户使用的场景,也不提供安全和审计日志。因此他们决定构建一个新的基于Web的解决方案。以下是核心要求:
- 搜索自由职业者分类的功能
- 用于存储联系自由职业者的不同渠道的解决方案
- 搜索项目分类的功能
- 搜索客户分类的功能
- 维护合同中自由职业者的时间表
2.2 需求分析
2.2.1 系统需求
2.2.1.1 功能需求
输入数据 | 数据存储 |
---|---|
项目 | 能搜索项目分类,可对项目信息进行增删改查 |
客户 | 能搜索客户分类,可对项目信息进行增删改查 |
时间表 | 可对项目信息进行增删改查 |
自由职业者 | 能搜索自由职业者分类,可对项目信息进行增删改查 |
2.2.1.2 数据需求
输入数据 | 数据存储 |
---|---|
项目信息 | 项目信息,包含项目编号、项目名称、项目类型、项目周期、内容 |
客户信息 | 客户信息,包含客户编号、姓名、客户类型、手机号 |
时间表信息 | 时间表信息,包含时间表编号、对应自由职业者的编号、开始时间、结束时间 |
自由职业者信息 | 自由职业者信息,包含自由职业者编号、姓名、自由职业者类型、手机号 |
2.2.1.3 技术需求
四种信息的数据必须可以随时更新
登录的时候需要输入账号和密码
数据库需要有50T以上的内存空间来存储上述四种信息
2.2.2 分析建模
2.2.2.1 数据流图
2.2.2.2 用例图及用例描述
(1)用例图
(2)用例描述
描述项 | 描述 |
---|---|
用例名称 | 修改客户信息 |
用例描述 | 接收到修改客户信息操作进而修改其信息 |
前置条件 | 数据库中存在该客户的信息且管理员发起了修改操作 |
后置条件 | 对应客户信息发生改变 |
事件流 | (1)管理员发起了修改操作(2)服务器根据选中的客户编号调用相关信息(3)管理员输入修改后的信息(4)后台对对应位置的信息进行更新 |
2.2.2.3 ER图及相关定义
(1)实体以及属性
实体 | 属性 |
---|---|
项目 | 项目编号、项目名称、项目类型、项目周期、内容 |
客户 | 客户编号、姓名、客户类型、手机号 |
时间表 | 时间表编号、自由职业者编号、开始时间、结束时间 |
自由职业者 | 自由职业者编号、姓名、自由职业者类型、手机号 |
(2)实体间的联系
一个自由职业者对应一个时间表,一个时间表对应一个自由职业者,因此自由职业者和时间表之间存在一对一关系。
一个自由职业者对应多个项目,一个项目对应多个自由职业者,因此自由职业者和项目之间存在多对多关系。
一个客户对应多个项目,一个项目对应多个客户,因此客户和项目之间存在多对多关系。
一个项目对应多个时间表,一个时间表对应多个项目,因此项目和时间表之间存在多对多关系。
(3)ER图
2.2.2.4 类图
2.2.2.5 数据字典
(1)数据项
名字 | 描述 | 定义 | 位置 | 数据类型 |
---|---|---|---|---|
rid | 指定项目的唯一编号 | 项目编号=001(数字) | 项目信息 | varchar(20) |
cid | 指定客户的唯一编号 | 客户编号=002(数字) | 客户信息 | varchar(20) |
sid | 指定时间表的唯一编号 | 时间表编号=003(数字) | 时间表信息 | varchar(20) |
pid | 指定自由职业者的唯一编号 | 自由职业者编号=004(数字) | 自由职业者信息、时间表信息 | varchar(20) |
cycle | 项目预期花费的时间 | 周期=(数字)天 | 项目信息 | varchar(20) |
begin | 自由职业者预计的时间段的初值 | 开始时间=日期 | 时间表信息 | datetime |
end | 自由职业者预计的时间段的终值 | 结束时间=日期 | 时间表信息 | datetime |
(2)数据流
名字 | 描述 | 定义 | 位置 |
---|---|---|---|
项目信息 | 项目的资料信息 | 项目信息=项目编号+项目名称+项目分类+周期+内容 | 存储在数据库 |
客户信息 | 客户的详情信息 | 客户信息=客户编号+姓名+客户分类+手机 | 存储在数据库 |
时间表 | 自由职业者预计时间段详情表 | 时间表=时间表编号+自由职业者编号+开始时间+结束时间 | 存储在数据库 |
自由职业者信息 | 自由职业者的详情信息 | 自由职业者信息=自由职业者编号+姓名+自由职业者分类+姓名 | 存储在数据库 |
3 任务计划
3.1 项目时间安排表
活动 | 任务 | 预期任务工期 | 预计开始时间 | 预计结束时间 | 校正后任务工期 | 校正后结束时间 |
---|---|---|---|---|---|---|
需求开发 | 10个工作日 | 2021/4/23 | 2021/5/2 | 10个工作日 | 2021/5/2 | |
需求获取 | 2个工作日 | 2021/4/23 | 2021/4/24 | 2个工作日 | 2021/4/24 | |
需求分析 | 3个工作日 | 2021/4/25 | 2021/4/27 | 3个工作日 | 2021/4/27 | |
撰写需求规格说明书 | 5个工作日 | 2021/4/28 | 2021/5/2 | 5个工作日 | 2021/5/2 | |
设计 | 5个工作日 | 2021/5/3 | 2021/5/7 | 5个工作日 | 2021/5/7 | |
框架设计 | 2个工作日 | 2021/5/3 | 2021/5/4 | 2个工作日 | 2021/5/4 | |
单元模块设计 | 2个工作日 | 2021/5/5 | 2021/5/6 | 2个工作日 | 2021/5/6 | |
界面设计 | 1个工作日 | 2021/5/7 | 2021/5/7 | 1个工作日 | 2021/5/7 | |
实现 | 20个工作日 | 2021/5/8 | 2021/5/27 | 12个工作日 | 2021/5/19 | |
数据库实现 | 2个工作日 | 2021/5/8 | 2021/5/9 | 1个工作日 | 2021/5/8 | |
登录模块实现 | 2个工作日 | 2021/5/10 | 2021/5/11 | 1个工作日 | 2021/5/9 | |
项目信息模块实现 | 4个工作日 | 2021/5/12 | 2021/5/15 | 4个工作日 | 2021/5/13 | |
客户信息模块实现 | 4个工作日 | 2021/5/16 | 2021/5/19 | 2个工作日 | 2021/5/15 | |
时间表信息模块实现 | 4个工作日 | 2021/5/20 | 2021/5/23 | 2个工作日 | 2021/5/17 | |
自由职业者信息模块实现 | 4个工作日 | 2021/5/24 | 2021/5/27 | 2个工作日 | 2021/5/19 | |
测试 | 6个工作日 | 2021/5/28 | 2021/6/3 | 6个工作日 | 2021/5/25 | |
单元测试 | 2个工作日 | 2021/5/29 | 2021/5/30 | 2个工作日 | 2021/5/21 | |
集成测试 | 2个工作日 | 2021/5/31 | 2021/6/1 | 2个工作日 | 2021/5/23 | |
系统测试 | 2个工作日 | 2021/6/2 | 2021/6/3 | 2个工作日 | 2021/5/25 | |
交付 | 系统交付 | 2个工作日 | 2021/6/4 | 2021/6/5 | 2个工作日 | 2021/5/27 |
3.2 矫正计算方法
- 在实际开发中,实现过程中的数据库和登录模块功能较单一简单,所以实现这两个部分的时间按50%计算。
- 在实际开发中,实现过程中的数据库的项目信息模块和其他三个信息模块的功能具有相似性,部分代码可以复用,所以实现后面三个信息模块所用的时间的按50%计算。
- 在实际开发中,其他三个过程所需时间与计划大致相同,所以需求开发时间按100%计算。
4 Github地址
https://github.com/1952168900/------.git
5 项目issues截图
6 博客后台编辑截图