一、引言
1.1 项目背景
一家公司提供服务出租,自身有一些员工,另外还有很多自由职业者作为服务商存在。公司目前使用Excel工作表来管理他们的客户(自由职业者),时间表等。Excel解决方案无法很好地进行扩展。它无法应对多用户使用的场景,也不提供安全和审计日志。
1.2 定位与目标
该系统主要服务于此类提供服务出租的公司,为他们提供统一的自由职业者管理平台以及服务提供和管理查看平台,同时向有该类需求的客户提供更加完善和清晰的合同流程和服务查询功能。
二、需求概述
2.1 需求概述
为该类服务出租公司提供新的基于 Web 的解决方案,包括以下需求:
- 搜索自由职业者分类的功能
- 用于存储联系自由职业者的不同渠道的解决方案
- 搜索项目分类的功能
- 搜索客户分类的功能
- 维护合同中自由职业者的时间表
2.2 系统结构
系统采用前后端分离以及领域驱动设计的思想,将系统分为如下图所示的层次:
- Web 页面:也即项目的网页界面,UI界面,提供给用户的操作界面。
- 服务 API 接口:前后端分离的背景下,界面主要的功能通过请求后端暴露出来的 API 进行操作。该层即对界面提供的功能接口。
- 域服务场景编排层:主要功能的根据实际场景的需求,对下层核心域进行组合,配合达到某个功能的目的。
- 核心域:该层主要是对项目基于领域进行建模,主要的领域编码实现在此层。
- 基础设施层:为整个项目进行基础功能的能力提供。
三、系统功能需求
3.1 功能概述
- 自由职业者注册服务提供者身份,编辑个人信息以及工作能力,编辑个人时间表,接受或拒绝工作
- 客户可以发布服务需求,查询服务提供者
- 系统管理员进行安全和审计,系统进行对应的日志记录
- 合同签署和统一管理认证
3.2 领域建模
- 自由职业者:系统内服务提供者,管理时间表
- 客户:系统内的获取服务者,发布项目,寻求联系服务提供者
- 项目:由客户发布的项目,也即需求的服务
- 时间表:归属于自由职业者的个人时间表
- 合同:系统内合同的集合,主要是客户和自由职业者之间签署的服务合同
- 日志:系统内日志的集合,主要是记录项目和合同的安全和审计日志
3.2.1 领域具体设计
领域相关建模涉及到系统内两层。
核心层:该层定义领域核心类 xxxDomain,定义领域的核心属性以及领域本身拥有的一些能力,以类方法的形式实现领域能力。通过领域能力接口定义的形式将能力暴露给上一层调用。
服务编排层:仅有领域对象和领域能力是不够的,一个具体的业务需要多个领域互相配合才能实现,因此服务编排层就需要针对业务需要,去整合利用领域,相互配合完成某个具体的业务场景。其利用领域暴露出来的能力接口配合实现其业务逻辑,封装成一个个对应的方法,再向上提供服务调用。
3.3 业务流程图
主要的业务流程为自由职业者发布自身时间表和个人提供的服务类型,客户发布项目或直接查询对应的自由职业者,并联系,最后双方签署合同达成服务协议。
3.4 用例图
3.5 E-R 图
四、非功能性需求
4.1 性能需求
- 至少能承受 1000 QPS
- 请求响应时间控制在 1s 内
- 服务需要容灾和可用性保证
4.2 安全性需求
- 系统需要进行必要的权限控制
- 系统需要对所有数据进行持久化存储和备份
- 系统需要对所有数据进行安全审计
- 系统需要对重要数据进行加密处理,需要对外显示时需要进行脱敏处理
5. 测试计划
该项目主要是开发一个 Web 应用,其最终产品就是一个页面平台。因此在这个项目过程中,需要做的测试包括基于应用的黑盒测试,基于开发过程中的接口单元测试,性能测试等。最终的目标即全部业务逻辑正常跑通,无巨大逻辑错误的异常,无明显BUG,能考虑到大多数异常操作和参数并给予正确的反馈,能保持一定的可用性和稳定性。
整个测试任务和开发任务由于是一个人完成的,因此测试任务时间安排需要有所兼顾。需求和接口定义需要在一开始确定确定,基于接口和功能需求可以编写测试用例。单元测试则需要在代码开发完成后再进行相关的测试代码开发的测试运行。性能测试也需要在应用开发完成之后进行部署,性能压测。
1. (1~2天)需求以及接口梳理
2. (1~2天)测试用例设计
3. (3~4天)单元测试开发
4. (1天)性能测试
5. (1天)黑盒测试
任务计划
活动 |
任务 |
预计开始时间 |
预计结束时间 |
校正后任务工期 |
校正后结束时间 |
需求分析 |
需求获取、分析、整理 |
2021/4/23 |
2021/5/1 |
9个工作日 |
2021/5/1 |
需求建模 |
2021/5/1 |
2021/5/4 |
4个工作日 |
2021/5/4 |
|
总体设计 |
系统设计 |
2021/5/5 |
2021/5/10 |
4个工作日 |
2021/5/9 |
软件设计 |
2021/5/10 |
2021/5/12 |
2个工作日 |
2021/5/11 |
|
详细设计 |
数据库设计 |
2021/5/13 |
2021/5/14 |
3个工作日 |
2021/5/13 |
界面设计 |
2021/5/15 |
2021/5/20 |
7个工作日 |
2021/5/20 |
|
开发 |
数据库实现 |
2021/5/21 |
2021/5/21 |
1个工作日 |
2021/5/21 |
环境搭建,系统架构搭建 |
2021/5/22 |
2021/5/22 |
1个工作日 |
2021/5/22 |
|
自由职业者功能实现 |
2021/5/23 |
2021/5/26 |
4个工作日 |
2021/5/26 |
|
客户功能实现 |
2021/5/27 |
2021/5/31 |
5个工作日 |
2021/5/31 |
|
系统功能实现 |
2021/6/1 |
2021/6/3 |
3个工作日 |
2021/6/3 |
|
测试 |
单元测试 |
2021/6/4 |
2021/6/6 |
3个工作日 |
2021/6/6 |
压力测试 |
2021/6/7 |
2021/6/8 |
2个工作日 |
2021/6/8 |
|
交付 |
系统交付 |
2021/6/9 |
2021/6/9 |
1个工作日 |
2021/6/9 |
- 系统具体开发任务细分:
- 1. 系统设计:项目环境搭建,系统架构搭建,模块搭建,数据库实现
- 2. 基础设施层开发:底层框架配置,基础设施代码开发
- 3. 核心层开发:领域定义和实现,领域能力接口实现,领域具体代码开发
- 4. 服务编排层:功能接口定义,具体业务能力实现
- 5. 界面:基础页面框架搭建,UI设计,交互设计
- https://github.com/ChavyX/serviceProvideSystem
-
issues截图