需求改进&系统设计
这个作业属于哪个课程 | <2022软件代码开发技术> |
---|---|
这个作业要求在哪里 | <需求改进&系统设计> |
这个作业的目标 | 1.进一步完善需求分析 2.熟悉代码开发和测试阶段 3.熟悉运用面向领域建模的方法 4.运用DDD战略设计进行系统设计 |
需求规格说明书
1 引言
1.1 项目背景
一家公司提供服务出租,自身有一些员工,另外还有很多自由职业者作为服务商存在。公司目前使用Excel工作表来管理他们的客户(自由职业者),时间表等。Excel解决方案无法很好地进行扩展。它无法应对多用户使用的场景,也不提供安全和审计日志。因此他们决定构建一个新的基于Web的解决方案。
1.2 项目概述
本项目拟开发一个基于Web的服务出租管理系统,用以管理某服务出租公司的客户(自由职业者),时间表等,提供安全和审计日志。系统需存储相关信息,应对多用户使用的场景。系统核心功能如下:
- 搜索自由职业者分类的功能
- 用于存储联系自由职业者的不同渠道的解决方案
- 搜索项目分类的功能
- 搜索客户分类的功能
- 维护合同中自由职业者的时间表
2 需求分析
2.1 面向用户分析
本系统面向的用户分三类,分别是普通客户,自由职业者和系统管理员。以下是涉众分析:
涉众 | 描述 |
---|---|
系统管理员 | 系统管理者,管理系统信息,导出审计日志 |
普通客户 | 服务请求者,可发布项目,等待服务供应商前来协商并签订合同 |
自由职业者 | 服务供应商,向普通客户提供服务出租,可应征已发布且未完结的项目并签订合同 |
2.2 功能需求
-
用户
- 管理个人信息,提供存储自由职业者的不同联系方式的功能。
- 搜索信息,包括系统中公开的自由职业者信息、客户信息、时间表信息。
-
自由职业者
- 对时间表进行管理,包括对时间表信息的增删改查。
- 处理合同签订申请,事先应与客户就合同内容进行协商。
-
客户
- 发布项目并管理已有项目,包括浏览,删除和修改。
- 发起合同签订申请,需录入合同相关项目信息、自由职业者信息。
-
系统管理员
- 管理系统信息,包括对账户信息和合同信息的核实与修改。
- 每日按时检索系统更新数据,输出今日审计日志。
2.3 技术需求
- 为保证良好的用户体验,系统必须在3秒内对用户的操作做出回应。
- 数据库存储的信息要及时更新。系统是即时服务的,更新完信息后,要能立即看到更新后的结果并将更新信息及时储存起来。
2.4 安全性需求
通过网络安全、数据加密等手段保证用户隐私数据的安全性,通过数据备份与还原、数据软件完备文件等手段来保证系统的数据可靠性,使系统能够抵御病毒入侵或者非法人员进入系统,盗取重要数据。
3 面向领域建模
3.1 用例模型
根据面向用户分析和功能需求,对系统建立功能模型如下:
3.2 用例描述
根据用例模型,对系统主要功能用例作出用例描述如下:
3.2.1 管理时间表
描述项 | 说明 |
---|---|
用例名称 | 管理时间表 |
参与者 | 自由职业者 |
前置条件 | 自由职业者已被识别并授权 |
后置条件 | 自由职业者相应时间表信息成功保存 |
基本操作流程 | 1.自由职业者点击管理时间表,系统显示自由职业者的时间表详情; 2.自由职业者输入时间表信息并提交,系统显示输入后时间表记录; 3.自由职业者确认时间表录入正确,系统存储时间表信息。 |
扩展流程 | 2a 自由职业者删除时间表记录 1.系统将该时间表记录从时间表中删除 |
3.2.2 管理个人信息
描述项 | 说明 |
---|---|
用例名称 | 管理个人信息 |
参与者 | 自由职业者、客户,以下统称用户 |
前置条件 | 用户已被识别并授权 |
后置条件 | 用户相应个人信息成功保存或提交个人信息更新申请 |
基本操作流程 | 1.用户点击管理个人信息,系统显示用户的个人信息详情; 2.用户输入个人信息并提交,系统显示输入后个人信息; 3.用户确认个人信息录入正确,系统存储用户个人信息。 |
3.2.3 管理项目
描述项 | 说明 |
---|---|
用例名称 | 管理项目 |
参与者 | 客户 |
前置条件 | 客户已被识别并授权 |
后置条件 | 客户相应项目信息成功保存 |
基本操作流程 | a.发布项目 1.客户点击新建项目,系统显示项目信息录入页面; 2.客户输入项目信息并提交,系统显示输入后项目信息; 3.客户确认项目信息录入正确,系统存储项目信息。 4.客户发起项目发布申请,系统发布项目。 b.编辑项目 1.客户点击查看已有项目,系统显示已有项目信息。 2.客户修改项目信息,系统存储项目信息。 |
3.2.4 管理账户
描述项 | 说明 |
---|---|
用例名称 | 管理账户 |
参与者 | 管理员,目的是对自由职业者和客户进行管理 |
前置条件 | 管理员已被识别并授权 |
后置条件 | 相应账户信息成功修改 |
基本操作流程 | 1.管理员点击管理账户,系统按类别显示账户列表; 2.管理员输入相应账户编号或搜索分类,系统检索并显示账户数据。 3.管理员点击查看账户信息,系统显示账户信息详情; 4.管理员核验账户信息并设置账户状态,系统存储账户信息。 |
3.2.5 审计日志
描述项 | 说明 |
---|---|
用例名称 | 审计日志 |
参与者 | 管理员 |
前置条件 | 管理员已被识别并授权 |
后置条件 | 生成审计日志文件 |
基本操作流程 | 1.管理员查看审计日志,系统显示审计日志; 2.管理员点击生成审计日志文件,系统导出日志并生成文件; |
3.2.6 搜索信息
描述项 | 说明 |
---|---|
用例名称 | 搜索信息 |
参与者 | 用户,包括自由职业者、客户、管理员 |
前置条件 | 用户已被识别并授权 |
后置条件 | 显示搜索结果 |
基本操作流程 | 1.用户选择信息类别,系统显示信息类别,包括:项目、自由职业者、客户; 2.用户输入搜索关键字,系统检索并显示搜索结果; |
3.2.7 签订合同
描述项 | 说明 |
---|---|
用例名称 | 签订合同 |
参与者 | 客户、自由职业者 |
前置条件 | 客户、自由职业者已被识别并授权 |
后置条件 | 生成合同记录并保存 |
基本操作流程 | 1.客户录入合同信息,系统保存合同信息; 2.客户发起合同签订申请,系统通知相关职业者; 2.自由职业者同意合同内容,系统提交合同信息到后台; |
3.2.8 管理合同
描述项 | 说明 |
---|---|
用例名称 | 管理合同 |
参与者 | 管理员 |
前置条件 | 合同已由客户、自由职业者双方确定 |
后置条件 | 合同生效 |
基本操作流程 | 1.管理员点击管理合同,系统显示未生效合同信息列表; 2.管理员查看合同,系统显示合同内容 2.管理员同意合同内容,系统标识合同生效; |
3.3 领域模型
-
从用例描述中识别概念类:项目、自由职业者、客户、时间表、合同,其中客户和自由职业者归类为用户。
-
添加关联:
-
添加属性得领域模型:
系统设计
1 分层式结构
基于领域驱动设计理念,运用依赖倒置原则,将系统分为四层:
-
interfaces(用户接口层)
- dto:请求传入的数据载体
-
application(应用层)
- service:应用服务
-
domain(领域层)
- model:实体(Entity)和值对象(Value Object)
- domainService:领域服务定义
- repository:仓储接口定义
-
Infrastructure(基础设施层)
- util:工具包
- repositoryImpl:仓储接口实现
2 领域划分
2.1 子域
根据需求分析结果,从产品价值出发,将问题域分解为内聚性高的几个子领域:
2.2 限界上下文
子域 | 限定上下文 |
---|---|
服务交易子域 | 实现签订合同、合同管理的功能 |
用户子域 | 实现用户注册登录、对用户信息进行编辑的功能 |
项目子域 | 实现对项目信息进行“增、删、改、查”并发布的功能 |
搜索子域 | 实现对客户、项目、自由职业者的搜索功能 |
审计子域 | 实现审计合同、审计用户信息、生成审计日志的功能 |
时间表子域 | 实现对时间表信息进行“增、删、改、查”的功能 |
3 实体和值对象
3.1 实体
本系统中主要实体有客户(Client)、项目(Project)和自由职业者(Freelancer)、时间表(Schedule)、合同(Contract),它们由属性和行为组成,具有唯一标识,定义如下:
3.2 值对象
系统需提供用于存储联系自由职业者的不同渠道的解决方案,将联系方式(Contact)定义为值对象:
4 领域服务
服务交易子域的签订合同功能发生在自由职业者和客户之间,关联项目实体,但无法归属于这三种实体中的一个,所以将其定义为领域服务ContractSignDomainService,以下是其定义:
public interface ContractSignDomainService {
@Repository
private ClientRepository clientRepository;
private projectRepository projectRepository;
private ContractRepository ContractRepository;
private FreelancerRepository freelancerRepository;
......
public Contract sign(String freelancerID,String projectID,String clientID);
}
代码开发任务计划
1 模块层次图
2 各模块的开发时间和开发顺序
依据功能模块的优先级以及模块之间的依赖关系,列出各模块的开发时间和开发顺序。
模块编号 | 模块名称 | 开发顺序 | 预计开始时间 | 预计结束时间 | 预期工期 |
---|---|---|---|---|---|
1 | 用户模块 | 第一位 | 2022/05/05 | 2022/05/07 | 03个工作日 |
2 | 项目模块 | 第二位 | 2022/05/08 | 2022/05/09 | 02个工作日 |
3 | 搜索模块 | 第三位 | 2022/05/10 | 2022/05/12 | 03个工作日 |
4 | 服务交易模块 | 第四位 | 2022/05/13 | 2022/05/14 | 02个工作日 |
5 | 信息审计模块 | 第五位 | 2022/05/15 | 2022/05/17 | 03个工作日 |
3 对各模块进一步分解为1-8小时左右的任务
任务编号 | 任务名称 | 开发顺序 | 预计开始时间 | 预计结束时间 | 预期工期(小时) |
---|---|---|---|---|---|
1 | 用户模块 | 第一位 | 2022/05/05 | 2022/05/07 | 24 |
1.1 | 用户注册 | 2022/05/05 | 2022/05/05 | 8 | |
1.2 | 用户登录 | 2022/05/06 | 2022/05/06 | 8 | |
1.3 | 管理个人信息 | 2022/05/07 | 2022/05/07 | 8 | |
2 | 项目模块 | 第二位 | 2022/05/08 | 2022/05/09 | 16 |
2.1 | 发布项目 | 2022/05/08 | 2022/05/08 | 8 | |
2.2 | 管理项目 | 2022/05/09 | 2022/05/09 | 8 | |
3 | 搜索模块 | 第三位 | 2022/05/10 | 2022/05/12 | 24 |
3.1 | 搜索项目 | 2022/05/10 | 2022/05/10 | 8 | |
3.2 | 搜索客户 | 2022/05/11 | 2022/05/11 | 8 | |
3.3 | 搜索自由职业者 | 2022/05/12 | 2022/05/12 | 8 | |
4 | 服务交易模块 | 第四位 | 2022/05/13 | 2022/05/14 | 16 |
4.1 | 签订合同 | 2022/05/13 | 2022/05/13 | 8 | |
4.2 | 管理时间表 | 2022/05/14 | 2022/05/14 | 8 | |
5 | 信息审计模块 | 第五位 | 2022/05/15 | 2022/05/17 | 24 |
5.1 | 管理账户 | 2022/05/15 | 2022/05/15 | 8 | |
5.2 | 审计合同 | 2022/05/16 | 2022/05/16 | 8 | |
5.3 | 审计日志 | 2022/05/17 | 2022/05/17 | 8 |
4 以甘特图的方式记录开发进程
测试计划
1 测试项目
本次测试面向的产品是服务出租管理系统,用以管理某服务出租公司的客户(自由职业者),时间表等,同时可提供安全和审计日志。本系统主要是面向提供服务出租的自由职业者和寻求服务的客户,帮助他们进行服务交易。系统主要功能包括项目管理、签订合同、时间表管理、信息搜索等,详见前文需求规格说明书。
2 测试策略
测试主要根据需求规格说明书,整个过程采用自底向上,逐个集成的办法,依次进行单元测试、集成测试和系统测试,其中单元测试和集成测试贯穿整个开发过程,系统测试在确定系统功能基本实现的情况下进行。
3 测试环境与配置
资源名称/类型 | 配置 |
---|---|
测试PC | 主频 2.3GHz,硬盘 40GB,内存 12GB |
应用服务器 | Tomcat 服务器 |
数据库管理系统 | MySQL |
应用软件 | IntelliJ IDEA |
4 测试人员
职务 | 姓名 | 电话 | |
---|---|---|---|
测试人员 | 陈 | 22****2974@qq.com | 199****0984 |
开发人员 | 江 | 21****7492@163.com | 199****0941 |
5 测试阶段计划
测试阶段 | 测试内容 | 测试方法 | 负责人员 |
---|---|---|---|
单元测试 | 在软件开发过程中测试各个模块内的子单元,包括用户注册、登录等 | 白盒测试 | 开发人员 |
集成测试 | 需求规格说明书中划分的系统子模块 | 灰盒测试 | 开发人员 |
系统测试 | 功能测试、用户界面测试、安全测试、兼容性测试 | 黑盒测试 | 测试人员 |
6 测试安排
6.1 单元测试
任务编号 | 任务名称 | 预计测试时间 | 预期工期(时) |
---|---|---|---|
1.1 | 用户注册 | 2022/05/05 | 1 |
1.2 | 用户登录 | 2022/05/06 | 1 |
1.3 | 管理个人信息 | 2022/05/07 | 2 |
2.1 | 发布项目 | 2022/05/08 | 1 |
2.2 | 管理项目 | 2022/05/09 | 2 |
3.1 | 搜索项目 | 2022/05/10 | 1 |
3.2 | 搜索客户 | 2022/05/11 | 1 |
3.3 | 搜索自由职业者 | 2022/05/12 | 1 |
4.1 | 签订合同 | 2022/05/13 | 2 |
4.2 | 管理时间表 | 2022/05/14 | 2 |
5.1 | 管理账户 | 2022/05/15 | 2 |
5.2 | 审计合同 | 2022/05/16 | 1 |
5.3 | 审计日志 | 2022/05/17 | 1 |
6.2 集成测试
编号 | 测试项目 | 预计测试时间 | 预期工期(时) |
---|---|---|---|
1 | 用户模块 | 2022/05/07 | 2 |
2 | 项目模块 | 2022/05/09 | 2 |
3 | 搜索模块 | 2022/05/12 | 2 |
4 | 服务交易模块 | 2022/05/14 | 2 |
5 | 信息审计模块 | 2022/05/17 | 2 |
6.3 系统测试
编号 | 测试类型 | 测试内容 | 预计测试时间 | 预期工期(时) |
---|---|---|---|---|
1 | 功能测试 | 产生审计信息,项目管理和时间表管理以及用户管理,搜索自由职业者、搜索项目、搜索客户以及合同签订 | 2022/05/20 | 8 |
2 | 用户界面测试 | 页面结构包括菜单、背景、颜色、字体、按钮、提示信息的一致性等 | 2022/05/20 | 8 |
3 | 安全测试 | 权限限制、SQL注入 | 2022/05/20 | 8 |
4 | 兼容性测试 | 用不同版本的不同浏览器:Edge、火狐、搜狗、360浏览器等访问系统 | 2022/05/20 | 8 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具