
需求改进&系统设计
-------------------------------------------------------------------------------------------------------------------------------------------------
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/2021Softwarecodedevelopmenttechnology |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/2021Softwarecodedevelopmenttechnology/homework/11997 |
这个作业的目标 | 1. 帮助我们进一步完善系统需求 |
2. 帮助我们更好地掌握领域驱动设计分析运用 | |
3. 帮助我们更好地体会系统开发和测试的过程 | |
4. 帮助我们更好地运用领域建模 |
-------------------------------------------------------------------------------------------------------------------------------------------------
个人信息
学号 | 姓名 | 班级 | 别名 |
---|---|---|---|
3118005169 | 郑政 | 软件工程五班 | Ching |
-------------------------------------------------------------------------------------------------------------------------------------------------
1.领域建模
1.1 架构分层
(1)使用依赖倒置,使细节依赖于抽象
(2)抽象和细节解耦
(3)降低系统内部不同模块的耦合性
1.2 领域实体
(1)*职业者
(2)普通客户
(3)服务项目
(4)时间表
1.3 添加实体属性、行为及关联:
-------------------------------------------------------------------------------------------------------------------------------------------------
2.需求改进
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. 业务建模
(1)角色责任表
角色 | 责任 | 协助者 |
---|---|---|
信息管理员 | *职业者信息管理 | 数据管理员 |
普通客户信息管理 | 数据管理员 | |
时间表管理 | 数据管理员 | |
项目信息管理 | 数据管理员 | |
审计员 | 获取审计信息 | 信息管理员 |
(2)责任脚本
3. 分析建模
3.1 数据流图
(1)首层数据流图
(2)2层数据流图
(3)3层数据流图
3.2 实体联系模型
(1)实体及属性
实体 | 属性 |
---|---|
*职业者 | *职业者编号、*职业者姓名、*职业者电话、*职业者类型、*职业者地址 |
时间表 | 时间表编号,*职业者编号,时间表时间 |
普通客户 | 普通客户编号,普通客户姓名,普通客户电话,普通客户类型、普通客户地址 |
项目 | 项目编号,项目内容,项目时间,项目类型 |
(2)实体间联系
a)一个*职业者对应一个时间表,一个时间表对应一个*职业者,因此*职业者和时间表之间存在一对一关系。
b)一个*职业者对应多个项目,一个项目对应多个*职业者,因此*职业者和项目之间存在多对多关系。
c)一个普通客户对应多个项目,一个项目对应多个普通客户,因此普通客户和项目之间存在多对多关系。
d)一个项目对应多个时间表,一个时间表对应多个项目。因此项目和时间表之间存在多对多关系。
(3)实体联系图
3.3 用例模型
(1)用例图
(2)用例描述
描述项 | 说明 |
---|---|
用例名称 | 出租服务管理系统 |
用例描述 | 系统管理员负责处理相关信息的添加、删除、修改和查询,审计员可以到处审计日志进行审计 |
参与者 | 系统管理员、审计员 |
前置条件 | 系统管理员输入*职业者信息、项目信息、普通客户信息、时间表 |
后置条件 | 审计日志信息发生变动且时间达到一个星期 |
基本操作流程 | 系统管理员输入*职业者信息、项目信息、普通客户信息、时间表,出租服务管理系统对输入信息进行处理并将处理后的信息进行存储和产生审计日志供审计员查看 |
(3)交互图
3.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) | 项目信息 | 项目特有的资料信息 | 项目信息=项目编号+项目内容+项目时间+项目类别 | 随时 |
3.5 对象模型
(1)类图
4. 总体设计
4.1 系统流程图
4.2 物理元素清单
(1)硬件
·计算机一台
·打印机一台
·显示器一台
(2)软件
·两个程序
√程序1:更新*职业者信息,更新普通用户信息,更新项目信息、更新时间表
√程序2:读取数据库信息,产生审计日志
·一个数据库
出租服务数据库:*职业者信息、普通用户信息、项目信息、时间表
4.3 软件设计
(1)HIPO图
(2)数据库逻辑结构
序号 | 记录 | 主码 | 外码 | 码 |
---|---|---|---|---|
(1) | *职业者 | *职业者编号 | *职业者编号,*职业者姓名,*职业者电话,*职业者地址,*职业者类别 | |
(2) | 普通用户 | 普通用户编号 | 普通用户编号,普通用户姓名,普通用户电话,普通用户地址,普通用户类别 | |
(3) | 项目 | 项目编号 | *职业者编号,普通用户编号 | 项目编号,项目内容,项目时间,项目类别,*职业者编号,普通用户编号 |
(4) | 时间表 | 时间表编号 | *职业者编号 | 时间表编号,时间表时间,*职业者编号 |
3.系统设计
1.1 架构分层
(1)分层思路
a)使用依赖倒置,使细节依赖于抽象
b)抽象和细节解耦
c)降低系统内部不同模块的耦合性
d) 业务逻辑和技术细节相互分离
(2)结构分层示意图
(3)领域实体
a)*职业者
b)普通客户
c)服务项目
d)时间表
(4)领域服务
领域服务 | 描述 |
---|---|
信息验证 | 检验更新信息是否符合限制要求 |
安全验证 | 检验操作以及操作环境是否安全 |
身份验证 | 检验操作者身份是否具有操作权限 |
(5)领域事件
领域事件 | 描述 |
---|---|
成功修改信息事件 | 表示信息修改成功的事件 |
成功添加信息事件 | 表示信息添加成功的事件 |
成功删除信息事件 | 表示信息删除成功的事件 |
失败修改信息事件 | 表示信息修改失败的事件 |
失败添加信息事件 | 表示信息添加失败的事件 |
失败删除信息事件 | 表示信息删除失败的事件 |
失败查询信息事件 | 表示信息查询失败的事件 |
成功查询信息事件 | 表示信息查询成功的事件 |
身份符合事件 | 表示操作者具有相应操作权限的事件 |
身份不符合事件 | 表示操作者不具有相应操作权限的事件 |
安全事件 | 表示操作及操作环境安全的事件 |
不安全事件 | 表示操作及操作环境不安全的事件 |
(6)添加实体属性、行为及关联:
(7)战略设计
领域 | 子域 | 限定上下文 | 领域服务 |
---|---|---|---|
信息管理域 | *职业者信息管理子域 | 实现对*职业者的信息进行“增、删、改、查”的功能 | 信息验证、安全检验 |
信息管理域 | 普通客户信息管理子域 | 实现对普通客户的信息进行“增、删、改、查”的功能 | 信息验证、安全检验 |
信息管理域 | 时间表管理子域 | 实现对时间表的信息进行“增、删、改、查” 的功能 | 信息验证、安全检验 |
信息管理域 | 项目信息管理子域 | 实现对项目的信息进行“增、删、改、查”的功能 | 信息验证、安全检验 |
权限域 | 管理员权限子域 | 实现管理员所拥有系统功能的权限 | 身份验证、安全检验 |
权限域 | 审计员权限子域 | 实现审计员所拥有系统功能的权限 | 身份验证、安全检验 |
审计日志域 | 打印审计日志子域 | 实现打印审计日志功能 | 身份验证、安全检验 |
审计日志域 | 查看审计日志子域 | 审计员所拥有系统功能的权限 | 身份验证、安全检验 |
-------------------------------------------------------------------------------------------------------------------------------------------------
4.代码开发任务计划
(1)任务计划表
模块 | 开发时间 | 开发循序 | 优先级 | 任务 | 任务具体时间 |
---|---|---|---|---|---|
前端页面 | 24小时 | 第一位 | 最高 | 颜色搭配方案设计 | 8小时 |
前端页面 | 24小时 | 第一位 | 最高 | 控件样式设计 | 8小时 |
前端页面 | 24小时 | 第一位 | 最高 | 页面总体设计 | 8小时 |
信息管理模块 | 26小时 | 第二位 | 高 | *职业者信息管理功能实现 | 8小时 |
信息管理模块 | 26小时 | 第二位 | 高 | 普通客户信息管理功能实现 | 6小时 |
信息管理模块 | 26小时 | 第二位 | 高 | 时间表管理功能实现 | 6小时 |
信息管理模块 | 26小时 | 第二位 | 高 | 项目信息管理功能实现 | 6小时 |
后台存储模块 | 17小时 | 第三位 | 较高 | 数据库逻辑设计 | 8小时 |
后台存储模块 | 17小时 | 第三位 | 较高 | 数据库创建 | 6小时 |
后台存储模块 | 17小时 | 第三位 | 较高 | 数据库连接 | 3小时 |
打印审计日志模块 | 8小时 | 第四位 | 较高 | 打印审计日志功能实现 | 8小时 |
(2)开发计划甘特图
-------------------------------------------------------------------------------------------------------------------------------------------------
5.测试计划
(1)测试项目
项目名称 | 版本 | 项目负责部门 | 完成日期 | 攥写人 |
---|---|---|---|---|
出租服务管理系统 | Ver 2.0 | 软件工程五班 | 2021/5/11 | 郑政 |
(2)测试总纲及人员安排
编号 | 测试类型 | 测试内容 | 测试目的 | 测试人员 | 测试人员电话 | 测试工具及方法 |
---|---|---|---|---|---|---|
1 | 功能测试 | 产生审计信息,*职业者信息和普通用户信息以及时间表管理,搜索*职业者分类、搜索项目分类、搜索客户分类以及维护合同中*职业者的时间表 | 核实所有功能均已正常实现 | 郑政 | 700823823 | 黑盒测试,手工测试 |
2 | 用户界面测试 | 页面结构包括菜单、背景、颜色、字体、按钮、提示信息的一致性等 | 核实网站风格符合可接受标准 | 郑政 | 700823823 | 手工测试 |
3 | 安全测试 | 权限限制、SQL注入 | 核实只能具备系统访问权限的用户才能访问系统 | 郑政 | 700823823 | 黑盒测试、手工测试 |
4 | 兼容性测试 | 用不同版本的不同浏览器:IE6.0、IE8.0、火狐、遨游、搜狗、360浏览器等访问系统 | 核实系统在不同的软件和硬件配置中运行稳定 | 郑政 | 700823823 | 黑盒测试、手工测试 |
(3)测试环境及配置
资源名称、类型 | 配置 |
---|---|
测试PC硬盘容量 | 1T |
测试PC处理器 | Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz 1.99 GHz |
操作系统 | Windows10 |
应用服务器 | Tomcat服务器 |
数据库管理系统 | MySQL |
应用软件 | IDEA |
(4)测试进度安排
阶段 | 任务号 | 任务名称 | 前序任务号 | 工时(人日) | 提交结果 | 负责人 |
---|---|---|---|---|---|---|
测试计划 | 1 | 制定测试计划 | 1 | 测试计划文档 | 郑政 | |
测试系统开发配置 | 2 | 人员安排 | 1 | 0.5 | 任务分配 | 郑政 |
测试系统开发配置 | 3 | 测试环境配置 | 1,2 | 1.5 | 可运行系统环境 | 郑政 |
测试系统开发配置 | 4 | 测试用例设计 | 1,2 | 2 | 测试用例文档 | 郑政 |
测试执行 | 5 | 第一阶段通过 | 1,2,3,4 | 2 | 测试结果记录 | 郑政 |
测试执行 | 6 | 第二阶段通过 | 5 | 2 | 测试结果记录 | 郑政 |
测试执行 | 7 | 第三阶段通过 | 6 | 2 | 测试结果记录 | 郑政 |
测试总结分析 | 8 | 退出系统测试 | 7 | 0.5 | 测试分析报告 | 郑政 |
(5)测试时间安排表
步骤 | 预计完成时间 | 预计开始时间 | 预计结束时间 | 矫正后完成时间 | 校正后结束时间 |
---|---|---|---|---|---|
集成测试完成 | 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 |
-------------------------------------------------------------------------------------------------------------------------------------------------