作业三——综合系统开发:需求分析
这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/2022softwarecodedevelopmenttechnology
这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/2022softwarecodedevelopmenttechnology/homework/12494
这个作业的目标 1、用实践巩固知识
2、掌握软件规格说明的写法
3、加深对领域驱动设计方法、软件设计模式等知识的理解
项目背景
一家公司提供服务出租,自身有一些员工,另外还有很多自由职业者作为服务商存在。公司目前使用Excel工作表来管理他们的客户(自由职业者),时间表等。Excel解决方案无法很好地进行扩展。它无法应对多用户使用的场景,也不提供安全和审计日志。因此他们决定构建一个新的基于Web的解决方案。以下是核心要求:
搜索自由职业者分类的功能
用于存储联系自由职业者的不同渠道的解决方案
搜索项目分类的功能
搜索客户分类的功能
维护合同中自由职业者的时间表
功能需求
本系统中,公司在系统中发布项目并提供对应的时间结点,自由职业者(员工和自由职业者在下文统称为自由职业者)需要根据对应的时间段提交解决方案。自由职业者不能在时间点开始前和结束后提交解决方案,从而实现利用时间表对自由职业者的管理。
公司或者客户(下文统称为公司)发布项目信息时除了时间点,还包括项目具体信息,简介,发布公司的基本信息(公司类型(医药公司、互联网公司等),解决方案的报酬,公司规模)。同时会对项目有一个基本的分类,发布时公司选择分类,那么该项目只能在对应的分类被查看到从而实现对客户和项目的分类。公司能在项目的对应时间点下载到当前自由职业者所提交的解决方案,并能获取提交者的基本信息(姓名,年龄,分类)
在账号登录时如果账号不存在的话就会要求注册,存在检查成功后登录到对应的界面。公司能发布项目和下载解决方案,自由职业者能查看项目和提交解决方案。管理员能管理发布的项目信息,账号信息。管理账号时需要能够查看审计日志,同时根据自由职业者分类、公司分类找到对应账号。
系统特性
SF1: 账号登陆
SF2:发布项目招标信息
SF3: 查看投标的解决方案
SF4:提交解决方案
SF5: 查看公司招标信息及时间表
SF6: 管理发布信息
SF7: 管理账号
用户和任务以及用例图:
自由职业者
SF1: 账号登陆
SF4:提交解决方案
SF5: 查看公司招标信息及时间表
公司
SF1: 账号登陆
SF2:发布项目招标信息及项目时间表
SF3: 查看投标的解决方案
管理员
SF1: 账号登陆
SF5: 查看公司招标信息及时间表
SF6: 管理发布信息
SF7:管理账号
用例图

用例描述
ID 1.1
名称 账号登陆
优先级 高
参与者 公司,自由职业者
触发条件 用户登录账号
前置条件 当前存在该用户账号
后置条件 用户成功登录账号
正常流程 1.用户输入账号
2.用户输入密码
3.系统根据账号密码登录到对应的公司端或自由职业者端或管理员端
4.系统将该账号记入审查日志
扩展流程
1.1a 1.不存在该账号
2.系统跳转注册界面
2.1a 1.密码错误
2.系统提示密码错误
ID 1.2
名称 发布项目招标信息及项目时间表
优先级 高
参与者 公司
触发条件 公司发起发布请求
前置条件 公司发布项目非重复
后置条件 项目成功发布
正常流程 1.公司填写项目名字
2.公司填写项目简介
3.公司填写项目时间表
4.系统根据项目分类发布项目信息到对应界面
扩展流程 1.1a 1.存在重复的项目名称
2.提示重新输入
ID 1.3
名称 查看投标的解决方案
优先级 中
参与者 公司
触发条件 公司选择已发布的项目
前置条件 存在已经提交的解决方案
后置条件 公司成功下载选择解决方案
正常流程 1.公司选择已发布的项目
2.公司选择时间表中的时间点
3.系统展示当前已提交的解决方案
4.公司从该时间点中下载对应的解决方案及提供者信息
扩展流程
1.1a
1.不存在已发布的项目
2.系统提示当前无已发布的项目
2.1a
1.所选时间点未到开始时间
2.此时无法选中
3.1a
1.不存在解决方案
2.提示为空
ID 1.4
职业者提交解决方案
优先级 高
参与者 自由职业者
触发条件 职业者提交解决方案
前置条件 此时系统项目已开始
后置条件 成功提交解决方案
正常流程 1.自由职业者选中某项目
2.自由职业者选中该项目的某个时间点
3.自由职业者在该时间点提交解决方案
3.系统自动完成安全审计(如提交文件格式审查)
4.系统成功提交解决方案
扩展流程 2.1a
1.选中时间点未到开始时间
2.该时间点不可选
扩展流程 3.1a
1.审查未通过
2.提示用户重新上传
ID 1.5 名称
查看公司招标信息及时间表
优先级 高
参与者 自由职业者
触发条件 用户查看某分类下的项目
前置条件 当前分类存在项目
后置条件 用户查看完成
正常流程 1.用户进入该分类当前项目界面
2.系统判断项目是否结束
3.系统展示项目相关信息
扩展流程
1.1a
1.该分类无项目
2.提示分类为空
2.1a
1.项目已经结束
2.提示用户项目已结束
ID 1.6
名称:管理项目信息
优先级 低
参与者 管理员
触发条件 管理员要管理某一发布信息
前置条件 管理员进入管理界面
后置条件 管理员完成管理操作
正常流程 1.管理员选中某一已发布项目
2.管理员发出管理命令(删除/要求重新修改)
3.管理员填写管理理由
4.系统记录理由
5.系统发送该理由到对应公司
6.系统将对发布该项目的用户的管理信息计入审计日志
3.1a
1.理由为空
2.提示管理员输入
ID 1.7
名称:账号管理
优先级 低
参与者 管理员
前置条件 当前系统存在账号
后置条件 管理员完成账号管理
正常流程 1.管理能查看审计日志
2.管理员根据分类查看账号信息列表
3.管理员查看某账号的基本信息
4.管理员发出管理命令(删除)
5.系统执行管理员的命令
系统分层结构图

数据需求
根据需求可得ER图

系统0层图

1层图

技术需求
编程语言:由于项目较小,并且前后端联系紧密,需要快速实现功能。因此本项目需基于JAVA实现,使用tomcat等库。
关系数据库软件:使用mysql作为处理数据的部分
Ui风格:参考officer网页版
非功能需求
硬件需求
基于英特尔E5CPU运行,能支持同时万人访问的需求量
客户端需求
支持包括IE在内的主流浏览器
时延需求
最高时延不得高于5MS
系统设计
而从DDD角度进行系统设计如下所示
首先寻找概念类,本文的领域对象有自由职业者、公司、项目、时间表。其中公司和自由职业者为外部实体,即为领域服务的对象。
基于定义的实体得出实体和值对象

其中一个公司管理多个项目和时间表,一个自由职业者同时被多个时间表管理,一个时间表也管理多个自由职业者
基于上述功能可进一步对项目进行领域划分
用户领域:实现账号管理相关功能
项目领域:实现发布项目、上传/下载解决方案的有关功能
系统领域:管理系统
子域划分
用户领域:账号登录子领、账号注册子域、账号管理子域
项目领域:项目发布子域、项目查询子域、解决方案子域
系统领域:安全性审查子域、审查子域
限界上下文
账号登录子领:完成对账号的登录功能(支撑)
账号注册子域:完成对账号的注册功能(支撑)
账号管理子域:完成对账号的管理功能(通用)
项目发布子域:完成对项目的发布功能(核心)
解决方案子域:完成对解决方案的上传/下载功能(核心)
项目查询子域:完成已发布项目的查询功能(通用)
审查子域:对用户上传的文件进行安全审查功能(支撑)
安全性审查子域:对审计日志的完善功能(通用)
基于限界上下文进一步得出不同子域的聚合根和边界对象
| 子域 | 聚合根 | 聚合对象 |
|---|---|---|
| 账号登录子领 | 用户账号 | 账号信息 |
| 账号注册子域 | 用户账号 | 用户信息 |
| 账号管理子域 | 用户账号 | 用户信息,管理员信息 |
| 项目发布子域 | 项目信息 | 公司信息 |
| 解决方案子域 | 项目信息 | 公司信息、自由职业者信息 |
| 项目查询子域 | 项目类别 | 项目信息 |
| 审查子域 | 项目信息 | 账号信息,管理员信息 |
| 安全性审查子域 | 审查日志 | 管理员信息 |
时间安排
| 流程 | 预计工作日(单位:日) | 矫正工作日(单位:日) | 开始时间 |
|---|---|---|---|
| 需求分析 | 5 | 8 | 2022.4.11 |
| 总体设计 | 5 | 6 | 2022.4.19 |
| Ui设计 | 5 | 5 | 2022.4.23 |
| 数据库设计 | 3 | 5 | 2022.4.23 |
| 服务器设计 | 5 | 10 | 2022.4.23 |
| 编码 | 10 | 15 | 2022.5.3 |
| 单元测试 | 3 | 4 | 2022.5.18 |
| 集成测试 | 4 | 4 | 2022.5.21 |
| 黑盒测试 | 3 | 3 | 2022.5.25 |
| 压力测试 | 2 | 3 | 2022.5.28 |
| 交付 | 1 | 1 | 2022.5.29 |
矫正思路:给开发留出冗余时间,避免因时间过赶而导致不必要的错误
甘特图如下所示

相关链接及截图

https://github.com/pass-lin/linqw-blog/issues
随笔截图


浙公网安备 33010602011771号