需求改进&系统设计

这个作业属于哪个课程 <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 测试人员

职务 姓名 E-mail 电话
测试人员 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

后台编辑截图

posted @   Chen-Jane  阅读(70)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示