| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/2022softwarecodedevelopmenttechnology |
|---|---|
| 这个作业要求在哪里 | https://edu.cnblogs.com/campus/gdgy/2022softwarecodedevelopmenttechnology/homework/12495 |
| 这个作业的目标 | 1.运用面向领域建模的方法,修改完善上一次作业提交的需求规格说明书。 2.运用DDD战略设计的核心概念,进行系统设计。 3.撰写代码开发任务计划。 4.撰写测试计划。 |
一、需求改进
1.1 问题发现
回顾上一次作业,发现了如下问题:
- 1.对“订单”这一实体类的定义不够明晰,容易造成混淆。
- 2.对用户的“分类”这一属性的定义不够明晰,需要准确定义。
- 3.“时间表”和“审计日志”的属性没有进行定义。
1.2 改进方案
增加类图

二、系统设计
在构建任何系统时都是为了解决特定的问题,如:构建电商系统销售所有数码产品。对于问题的处理最常用到的办法是分而治之,将问题域分解成多个子域,子域解决一个或多个小问题,上图中的系统关键元素就是小问题的解决方案,这些元素我们称之为聚合。分而治之后,需要粘合这些方案协作解决整个系统要解决的问题。这时应该跳出单因思考方式,从全局看问题,透过现象看本质,分析事物之间的关系。
对于复杂的子域,有一些相似的问题与模型,为了保证模型的整洁度,让设计元素职责单一并有效的分离模型的关注点,限定解决问题的边界可以帮助我们解决这个问题。例如:对于商品目录边界内商品的关注的属性与物流边界内商品关注的属性是不一样,把它们建模成一个商品对象,会增加模型的耦合度,语义上也会存在二义性,在语义边界内建模会简化与解耦对象模型,将这种边界与语义的限定称为限界上下文。
作者:cnhuangliang
链接:https://www.jianshu.com/p/94b9ce92e2af
来源:简书
2.1 架构分层

-
用户接口层:
主要负责向用户显示信息和解释用户指令。这里的用户可能是:用户、程序、自动化测试和批处理脚本等等。 -
应用层:
主要面向用例和流程相关的操作。它可以协调多个聚合的服务和领域对象完成服务编排和组合,协作完成业务操作。
需要注意的是,本层虽然列出了许多业务操作,但实际上各类业务逻辑的实现将在领域层实现,而不是在应用层。 -
领域层:
领域层的作用是实现企业核心业务逻辑,通过各种校验手段保证业务的正确性,主要体现领域模型的业务能力,用来表达业务概念、业务状态和业务规则。它可以组合聚合内的多个实体,实现复杂的业务逻辑。 -
基础层:
基础层是贯穿所有层的,主要存放基础资源服务相关的代码,为其它各层提供通用的技术和基础服务。第三方工具、数据库服务、配置和基础资源服务等代码都会放在这一层里。
2.2 领域划分

| 子域名 | 子域内容 |
|---|---|
| 管理员子域 | 完成管理员对系统内各类信息的增加、删除、修改、查询等操作 |
| 用户子域 | 完成用户的信息管理,以及用户列表的更新操作 |
| 服务商子域 | 完成服务商的信息管理,以及服务商列表的更新操作 |
| 服务子域 | 完成服务的增加、删除、修改、查询等管理操作,以及对服务列表的更新操作 |
| 订单子域 | 完成订单的增加、删除、修改、查询等管理操作,以及对订单列表的更新操作 |
| 时间表子域 | 完成时间表的增加、删除、修改、查询等管理操作 |
| 审计日志子域 | 完成审计日志的查询、打印等管理操作 |
2.3 实体和值对象
实体
| 实体 | 属性 |
|---|---|
| 管理员 | id、姓名、密码、联系方式 |
| 用户 | id、姓名、密码、联系方式、类型 |
| 服务商 | id、姓名、密码、联系方式、类型 |
| 服务 | id、服务名、服务商id、类型、备注 |
| 订单 | id、订单名、服务商id、用户id、创建时间、结束时间、备注 |
| 时间表子域 | id、日期、服务名、开始时间、结束时间 |
| 审计日志 | id、日期、活动、开始时间、结束时间、备注 |
值对象
| 值对象 | 属性 |
|---|---|
| 名称 | 管理员姓名、用户姓名、服务商姓名、订单名、服务名 |
| 联系方式 | 管理员联系方式、用户联系方式、服务商联系方式 |
| 密码 | 管理员密码、用户密码、服务商密码 |
| 类型 | 用户类型、服务商类型 |
| 备注 | 服务备注、订单备注、审计日志备注 |
| 时间 | 订单创建时间、订单结束时间、时间表服务开始时间、时间表服务结束时间、审计日志活动开始时间、审计日志活动结束时间、时间表日期、审计日志日期 |
| 活动 | 时间表活动 |
2.4 领域服务和领域事件
- 1.管理员、用户、服务商登录、注册、管理信息、注销功能
- 2.管理员管理用户、订单、服务、时间表、审计日志功能
- 3.服务商管理服务、时间表,查询用户列表功能
- 4.用户管理订单,查询服务、服务商功能
- 5.生成审计日志功能
三、代码开发任务计划
3.1 模块开发时间与顺序
开发任务
| 模块 | 开发优先级 | 任务 | 耗时(小时) |
|---|---|---|---|
| 系统框架搭建 | 最高 | 进行项目初始化及各类第三方工具的搭载,搭建系统的大体框架,分出SSM框架的具体层并初始化 | 6h,2h,6h |
| 实体类、单元模块实现 | 最高 | 实现各实体类和属性的定义,进行各单元模块的初始化,进行各单元模块的详细编写 | 8h,8h,8h |
| 数据库实现 | 高 | 进行数据库的初始化及搭载,进行数据库的详细编写 | 2h,8h |
| 接口、方法实现 | 高 | 进行各接口的编写,进行各方法的编写 | 8h,8h |
| 前端页面实现 | 较高 | 进行前端页面的设计,进行前端页面的编写,进行前端传输的实现 | 2h,8h,6h |
| 单元测试 | 较高 | 进行各单元的单元测试 | 8h |
| 集成测试 | 较高 | 进行系统的整体集成测试 | 8h |
甘特图

四、测试计划
4.1 测试计划表
| 编号 | 测试项目 | 预计测试时间 |
|---|---|---|
| 1 | 单元测试 | 2023/4/21-2023/4.22 |
| 1.1 | 用户注册 | 2023/4/21 |
| 1.2 | 用户登录 | 2023/4/21 |
| 1.3 | 用户信息修改 | 2023/4/21 |
| 1.4 | 服务商注册 | 2023/4/21 |
| 1.5 | 服务商登录 | 2023/4/21 |
| 1.6 | 服务商信息修改 | 2023/4/21 |
| 1.7 | 管理员登录 | 2023/4/21 |
| 1.8 | 管理用户 | 2023/4/21 |
| 1.9 | 增加服务 | 2023/4/21 |
| 1.10 | 删除服务 | 2023/4/21 |
| 1.11 | 修改服务 | 2023/4/21 |
| 1.12 | 查找服务 | 2023/4/21 |
| 1.13 | 增加订单 | 2023/4/21 |
| 1.14 | 删除订单 | 2023/4/21 |
| 1.15 | 修改订单 | 2023/4/21 |
| 1.16 | 查询订单 | 2023/4/21 |
| 1.17 | 添加时间表 | 2023/4/22 |
| 1.18 | 删除时间表 | 2023/4/22 |
| 1.19 | 修改时间表 | 2023/4/22 |
| 1.20 | 查询时间表 | 2023/4/22 |
| 1.21 | 查询服务列表 | 2023/4/22 |
| 1.22 | 查询服务商列表 | 2023/4/22 |
| 1.23 | 查询用户列表 | 2023/4/22 |
| 1.24 | 查看审计日志 | 2023/4/22 |
| 1.20 | 导出审计日志 | 2023/4/22 |
| 2 | 集成测试 | 2023/4/23-2023/4/24 |
| 2.1 | 管理员模块 | 2023/4/23 |
| 2.2 | 服务商模块 | 2023/4/23 |
| 2.3 | 用户模块 | 2023/4/23 |
| 2.4 | 服务模块 | 2023/4/23 |
| 2.5 | 订单模块 | 2023/4/23 |
| 2.5 | 时间表模块 | 2023/4/24 |
| 2.6 | 审计日志模块 | 2023/4/24 |
| 3 | 系统测试 | 2023/4/24 |
| 4 | 交付测试总结 | 2023/4/24 |
4.2 软件环境
1、CPU:64位4核处理器
2、内存:4GB
3、屏幕分辨率:1920*1080
4、操作系统:Window10
5、JAVA版本:JDK1.8
7、数据库版本:MySql 5.x
8、开发工具:IDEA
五、博客园截图
