这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/2021Softwarecodedevelopmenttechnology |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/2021Softwarecodedevelopmenttechnology/homework/11968 |
这个作业的目标 | 1. 帮助我们更好地掌握软件规格说明的写法 |
2. 帮助我们更好地掌握领域驱动设计分析运用 | |
3. 帮助我们更好地掌握UML建模语言 | |
4. 帮助我们更好地掌握Github使用 | |
5. 帮助我们找出自身不足,便于更好地提升和改进 |
-------------------------------------------------------------------------------------------------------------------------------------------------
个人信息
学号 | 姓名 | 班级 | 别名 |
---|---|---|---|
3118005169 | 郑政 | 软件工程五班 | Ching |
-------------------------------------------------------------------------------------------------------------------------------------------------
领域驱动设计--Domain Driven Design
1. 领域驱动研发过程
领域驱动设计关心业务中的领域划分和领域建模,开发过程以领域模型为出发点,领域模型对应的是业务实体,在程序中表现为类、聚会根和值对象,关注业务语义的显性化表达,而非存储和数据之间的关系。
2. 本案例分析建模过程
(1)寻找概念类:服务项目、自由职业者、客户、普通用户、时间表、审计日志
(2)添加关联:
(3)添加属性:
(4)制作领域模型
-------------------------------------------------------------------------------------------------------------------------------------------------
需求规格说明书
1. 问题定义
1.1 项目名称:出租服务管理系统
1.2 问题概述:
一家公司提供服务出租,公司自身有一些员工,另外还有很多自由职业者作为服务商存在。公司目前使用Excel工作表来管理他们的客户(自由职业者),时间表等。Excel解决方案无法很好地进行扩展。它无法应对多用户使用的场景,也不提供安全和审计日志。因此他们决定构建一个新的基于Web的解决方案,通过出租服务管理系统实现公司出租服务相关信息的管理以及提供公司信息的安全性。
1.3 系统需求:
(1)数据需求:
序号 | 输入数据 | 数据存储 | 输出数据 |
---|---|---|---|
(1) | 自由职业者信息 | 自由职业者信息 | 审计日志 |
(2) | 普通客户信息 | 普通客户信息 | |
(3) | 时间表 | 时间表 | |
(4) | 项目信息 | 项目信息 |
(2)功能性需求:能对自由职业者信息、普通客户信息、项目信息以及时间表进行接受处理并产生审计信息,随时更新自由职业者信息和普通用户信息以及时间表,能够搜索自由职业者分类、搜索项目分类、搜索客户分类以及维护合同中自由职业者的时间表。
(3)技术需求:
序号 | 需求 |
---|---|
(1) | 自由职业者信息、普通用户信息、项目信息、时间表必须随时更新。 |
(2) | 主存要有至少30T存储空间的数据库存储自由职业者信息、普通用户信息、项目信息、时间表 |
(3) | 通过限制用户权限,只有拥有权限的特定用户才能访问系统内的相关数据信息以保证存储信息的不外泄 |
(4) | 信息量速率为2.1Mb/s~5.2Mb/s |
2. 分析建模
2.1 数据流图
(1)首层数据流图
(2)2层数据流图
(3)3层数据流图
2.2 实体联系模型
(1)实体及属性
实体 | 属性 |
---|---|
自由职业者 | 自由职业者编号、自由职业者姓名、自由职业者电话、自由职业者类型、自由职业者地址 |
时间表 | 时间表编号,自由职业者编号,时间表时间 |
普通客户 | 普通客户编号,普通客户姓名,普通客户电话,普通客户类型、普通客户地址 |
项目 | 项目编号,项目内容,项目时间,项目类型 |
(2)实体间联系
a)一个自由职业者对应一个时间表,一个时间表对应一个自由职业者,因此自由职业者和时间表之间存在一对一关系。
b)一个自由职业者对应多个项目,一个项目对应多个自由职业者,因此自由职业者和项目之间存在多对多关系。
c)一个普通客户对应多个项目,一个项目对应多个普通客户,因此普通客户和项目之间存在多对多关系。
d)一个项目对应多个时间表,一个时间表对应多个项目。因此项目和时间表之间存在多对多关系。
(3)实体联系图
2.3 用例模型
(1)用例图
(2)用例描述
描述项 | 说明 |
---|---|
用例名称 | 出租服务管理系统 |
用例描述 | 系统管理员负责处理相关信息的添加、删除、修改和查询,审计员可以到处审计日志进行审计 |
参与者 | 系统管理员、审计员 |
前置条件 | 系统管理员输入自由职业者信息、项目信息、普通客户信息、时间表 |
后置条件 | 审计日志信息发生变动且时间达到一个星期 |
基本操作流程 | 系统管理员输入自由职业者信息、项目信息、普通客户信息、时间表,出租服务管理系统对输入信息进行处理并将处理后的信息进行存储和产生审计日志供审计员查看 |
2.4 数据字典
(1)数据项
数据项 | 名字 | 别名 | 简述 | 定义 | 位置 |
---|---|---|---|---|---|
(1) | 自由职业者编号 | 服务商编号 | 用于识别自由职业者特有的代码 | 自由职业者编号=1{数字}3 | 自由职业者信息、审计日志、时间表、项目信息 |
(2) | 普通客户编号 | 用于识别普通客户特有的代码 | 普通客户编号=1{数字}3 | 普通用户信息、审计日志、项目信息 | |
(3) | 时间表编号 | 用于识别时间表特有的代码 | 时间表编号=1{数字}3 | 时间表信息 | |
(4) | 项目编号 | 用于识别项目特有的代码 | 项目编号=1{数字}3 | 项目信息、审计日志 | |
(5) | 自由职业者姓名 | 服务商姓名 | 自由职业者特有的名称 | 自由职业者姓名=1{英文字母}6 | 自由职业者信息、时间表 |
(6) | 普通客户姓名 | 普通客户特有的名称 | 普通客户姓名=1{英文字母}6 | 普通用户信息、项目信息 | |
(7) | 项目时间 | 项目建立的时间 | 项目时间=4{数字}4+1{汉字字符年}1+1{数字}2+1{汉字字符月}1 | 项目信息 | |
(8) | 项目内容 | 项目的详细描述 | 项目内容=2{汉字字符}30 | 项目信息、审计日志 | |
(9) | 自由职业者类型 | 服务商类型 | 自由职业者特有的类别 | 自由职业者类型=[A级\B级] | 自由职业者信息 |
(10) | 普通用户类型 | 普通用户特有的类别 | 普通用户类型=[会员\非会员] | 普通用户信息 | |
(11) | 项目类型 | 项目特有的类别 | 项目类型=[紧急\一般] | 项目信息 | |
(12) | 时间表时间 | 时间表对应自由职业者的时间 | 时间表时间=4{数字}4+1{汉字字符年}1+1{数字}2+1{汉字字符月}1 | 时间表信息 | |
(13) | 自由职业者电话 | 服务商电话 | 自由职业者特有的联系号码 | 自由职业者电话=11{数字}11 | 自由职业者信息 |
(14) | 自由职业者地址 | 服务商地址 | 自由职业者特有的居住位置 | 自由职业者地址=2{中文字符}30 | 自由职业者信息 |
(15) | 普通用户电话 | 普通用户特有的联系号码 | 普通用户电话=11{数字}11 | 普通用户信息 | |
(16) | 普通用户地址 | 普通用户特有的居住位置 | 普通用户地址=2{中文字符}30 | 普通用户信息 |
(2)数据流:
数据流 | 名字 | 别名 | 简述 | 定义 | 位置 |
---|---|---|---|---|---|
(1) | 自由职业者信息 | 服务商信息 | 自由职业者特有的个人资料 | 自由职业者信息=自由职业者编号+自由职业者姓名+自由职业者电话+自由职业者地址+自由职业者类别 | 数据库、从计算机输入 |
(2) | 普通用户信息 | 普通用户特有的个人资料 | 普通用户信息=普通用户编号+普通用户姓名+普通用户电话+普通用户地址+普通用户类别 | 数据库、从计算机输入 | |
(3) | 时间表 | 自由职业者对应的特有的个人时间安排表 | 时间表=自由职业者编号+时间表编号+时间表时间 | 数据库、从计算机输入 | |
(4) | 项目信息 | 项目特有的资料信息 | 项目信息=项目编号+项目内容+项目时间+项目类别 | 数据库、从计算机输入 | |
(5) | 审计日志 | 出租服务审计信息报表 | 审计日志=自由职业者编号+普通用户编号+项目编号+项目内容 | 从打印机输出 |
(3)数据存储:
数据存储 | 名字 | 别名 | 简述 | 定义 | 更新频率 |
---|---|---|---|---|---|
(1) | 自由职业者信息 | 服务商信息 | 自由职业者特有的个人资料 | 自由职业者信息=自由职业者编号+自由职业者姓名+自由职业者电话+自由职业者地址+自由职业者类别 | 随时 |
(2) | 普通用户信息 | 普通用户特有的个人资料 | 普通用户信息=普通用户编号+普通用户姓名+普通用户电话+普通用户地址+普通用户类别 | 随时 | |
(3) | 时间表 | 自由职业者对应的特有的个人时间安排表 | 时间表=自由职业者编号+时间表编号+时间表时间 | 随时 | |
(4) | 项目信息 | 项目特有的资料信息 | 项目信息=项目编号+项目内容+项目时间+项目类别 | 随时 |
2.5 对象模型
(1)类图
3. 总体设计
3.1 系统流程图
3.2 物理元素清单
(1)硬件
·计算机一台
·打印机一台
·显示器一台
(2)软件
·两个程序
√程序1:更新自由职业者信息,更新普通用户信息,更新项目信息、更新时间表
√程序2:读取数据库信息,产生审计日志
·一个数据库
出租服务数据库:自由职业者信息、普通用户信息、项目信息、时间表
3.3 软件设计
(1)HIPO图
(2)数据库逻辑结构
序号 | 记录 | 主码 | 外码 | 码 |
---|---|---|---|---|
(1) | 自由职业者 | 自由职业者编号 | 自由职业者编号,自由职业者姓名,自由职业者电话,自由职业者地址,自由职业者类别 | |
(2) | 普通用户 | 普通用户编号 | 普通用户编号,普通用户姓名,普通用户电话,普通用户地址,普通用户类别 | |
(3) | 项目 | 项目编号 | 自由职业者编号,普通用户编号 | 项目编号,项目内容,项目时间,项目类别,自由职业者编号,普通用户编号 |
(4) | 时间表 | 时间表编号 | 自由职业者编号 | 时间表编号,时间表时间,自由职业者编号 |
-------------------------------------------------------------------------------------------------------------------------------------------------
项目时间安排
(1)项目时间安排表
所属流程 | 步骤 | 预计完成时间 | 预计开始时间 | 预计结束时间 | 矫正后完成时间 | 校正后结束时间 |
---|---|---|---|---|---|---|
需求分析 | 需求分析 | 10个工作日 | 2021/4/23 | 2021/5/3 | 6个工作日 | 2021/4/29 |
总体设计 | 框架设计完成 | 3个工作日 | 2021/5/4 | 2021/5/7 | 3个工作日 | 2021/5/2 |
总体设计 | 单元模块设计完成 | 5个工作日 | 2021/5/8 | 2021/5/13 | 5个工作日 | 2021/5/7 |
实现 | 接口设计实现 | 5个工作日 | 2021/5/14 | 2021/5/19 | 5个工作日 | 2021/5/12 |
实现 | 自由职业者信息管理模块完成 | 10个工作日 | 2021/5/20 | 2021/5/30 | 8个工作日 | 2021/5/20 |
实现 | 普通客户信息管理模块完成 | 10个工作日 | 2021/5/31 | 2021/6/9 | 6个工作日 | 2021/5/26 |
实现 | 项目信息管理模块完成 | 10个工作日 | 2021/6/10 | 2021/6/20 | 6个工作日 | 2021/5/31 |
实现 | 时间表管理模块完成 | 10个工作日 | 2021/6/21 | 2021/6/30 | 6个工作日 | 2021/6/6 |
实现 | 打印审计日志模块完成 | 5个工作日 | 2021/7/1 | 2021/7/6 | 5个工作日 | 2021/6/11 |
测试 | 集成测试完成 | 3个工作日 | 2021/7/7 | 2021/7/10 | 3个工作日 | 2021/6/14 |
测试 | 系统测试完成 | 3个工作日 | 2021/7/11 | 2021/7/14 | 3个工作日 | 2021/6/17 |
测试 | 测试总结完成 | 1个工作日 | 2021/7/15 | 2021/7/16 | 1个工作日 | 2021/6/18 |
测试 | 测试完成 | 0个工作日 | 2021/7/16 | 2021/7/16 | 0个工作日 | 2021/6/18 |
交付 | 验收测试完成 | 3个工作日 | 2021/7/17 | 2021/7/20 | 3个工作日 | 2021/6/21 |
(2)矫正计算方法
需求分析时间按60%时间计算,接口和单元模块设计约定等于预计时间,根据模块之间功能相似性,在完成自由职业者信息模块后可以缩减普通用户信息管理、项目信息管理和时间表管理模块80%时间,打印模块则近似看成等于预计时间,测试时间根据系统复杂度约等于预计时间。
-------------------------------------------------------------------------------------------------------------------------------------------------
Github地址
https://github.com/Chingzz99/ServiceSystem
-------------------------------------------------------------------------------------------------------------------------------------------------
Github--Issue截图
-------------------------------------------------------------------------------------------------------------------------------------------------