综合系统开发----需求分析
前言
这个作业属于哪个课程 | 2021软件代码开发技术 |
---|---|
这个作业要求在哪里 | 综合系统开发----需求分析 |
这个作业的目标 | 结合领域驱动设计方法、软件设计模式等知识对需求进行建模,并撰写需求规格说明书 |
需求规格说明书
一、引言
1. 编写目的
为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档。
2. 软件需求分析理论
软件需求分析(Software Reguirement Analysis)是研究用户需求得到的东西,完全理解用户对软件需求的完整功能,确认用户软件功能需求,建立可确认的、可验证的一个基本依据。
软件需求分析是一个项目的开端,也是项目实施最重要的关键点。据有关的机构分析结果表明,设计的软件产品存在不完整性、不正确性等问题80%以上是需求分析错误所导致的,而且由于需求分析错误造成根本性的功能问题尤为突出。因此,一个项目的成功软件需求分析是关键的一步。
3. 软件需求分析目的
软件需求分析应尽量提供软件实现功能需求的全部信息,使得软件设计人员和软件测试人员不再需要需求方的接触。这就要求软件需求分析内容应正确、完整、一致和可验证。此外,为保证软件设计质量,便于软件功能的休整和验证,软件需求表达无岔意性,具有可追踪性和可修改性。
4. 参考文献
- 《需求工程—软件建模与分析(第2版)》 丁二玉(著者),骆斌(编者) 高等教育出版社
- 《代码精进之路:从码农到工匠》 张建飞 人民邮电出版社
二、需求概述
1. 项目背景
现有一家公司提供服务出租,自身有一些员工,另外还有很多自由职业者作为服务商存在。公司目前使用Excel工作表来管理他们的客户(自由职业者),时间表等。Excel解决方案无法很好地进行扩展。它无法应对多用户使用的场景,也不提供安全和审计日志。因此他们决定构建一个新的基于Web的解决方案。
2. 需求概述
- 搜索自由职业者分类的功能
- 用于存储联系自由职业者的不同渠道的解决方案
- 搜索项目分类的功能
- 搜索客户分类的功能
- 维护合同中自由职业者的时间表
3. 面向用户分析
针对出租服务管理系统的使用对象不同来进行分析:
- 自由职业者:可以登入系统,查看/接受客户发布的项目,修改个人信息,维护时间表
- 客户:可以登入系统,发布项目,修改个人信息,查询自由职业者的时间表
- 管理员:可以登入系统,管理项目,管理客户信息,管理自由职业者信息,查看安全日志和审计日志
三、系统功能需求
1. 领域驱动设计
领域驱动设计中的“领域”是指“应用程序逻辑所围绕的知识和活动领域”,即在软件领域中被称为“业务逻辑”的东西。在领域驱动设计中,业务逻辑被视为软件的心脏。
领域对象模型构建
- 概念类:客户(User)、自由职业者(Professional)、项目(Project)、时间表(Schedule)
- 添加属性和方法:
- 关联领域对象模型:
2. 构造E-R图
3. 业务逻辑流程
4. 用例图
四、软硬件或其他外部系统接口需求
1. 用户界面
- 界面美观清晰,图标识别性高
- 操作舒适简单,交互性高,易用性强
2. 技术需求
- 开发模式:出租服务管理系统采用前后端分离的开发模式 —— 后端仅返回前端所需的数据,前端负责渲染HTML页面。在这种模式中,后端将每个功能块划分为多个接口;前端通过访问接口来获取数据,并将数据展示给用户。
- 开发语言:前端(html+css+javascript)、后端(Java)
3. 运行环境
- 出租服务管理系统基于web端开发,适配于Chrome浏览器、Firefox浏览器、Microsoft Edge等多种主流浏览器
五、其他非功能需求
1. 性能需求
- 请求响应时间控制在1-2秒内
- 考虑服务器并发量,至少支持1000名用户并发使用本系统且系统不崩溃、运行速度不受影响
2. 安全性需求
- 权限控制:设置用户角色权限,限制用户访问的页面
- 重要数据加密:如密码等数据需进行加密处理
- 数据备份:支持数据备份的功能,防止数据丢失或损毁
3. 扩展性需求
- 支持导出数据
- 支持数据统计
制定计划
1. git仓库链接
2. 时间安排表
任务名称 | 活动名称 | 工期(单位天) | 开始时间 | 结束时间 | 矫正后工期(单位天) | 矫正后开始时间 | 矫正后结束时间 |
---|---|---|---|---|---|---|---|
需求管理 | 8 | 2021/4/25 | 2021/5/3 | 8 | 2021/4/25 | 2021/5/3 | |
需求获取 | 2 | 2021/4/25 | 2021/4/27 | 2 | 2021/4/25 | 2021/4/27 | |
需求分析 | 2 | 2021/4/27 | 2021/4/29 | 2 | 2021/4/27 | 2021/4/29 | |
需求规格编写 | 3 | 2021/4/29 | 2021/5/2 | 3 | 2021/4/29 | 2021/5/2 | |
需求验证 | 1 | 2021/5/2 | 2021/5/3 | 1 | 2021/5/2 | 2021/5/3 | |
总体设计 | 6 | 2021/5/3 | 2021/5/9 | 6 | 2021/5/3 | 2021/5/9 | |
系统设计 | 2 | 2021/5/3 | 2021/5/5 | 2 | 2021/5/3 | 2021/5/5 | |
数据库设计、模块设计 | 4 | 2021/5/2 | 2021/5/9 | 4 | 2021/5/2 | 2021/5/9 | |
软件开发 | 20 | 2021/5/9 | 2021/6/1 | 16 | 2021/5/9 | 2021/5/29 | |
接口设计 | 3 | 2021/5/9 | 2021/5/12 | 3 | 2021/5/9 | 2021/5/12 | |
数据库实现 | 2 | 2021/5/12 | 2021/5/14 | 2 | 2021/5/12 | 2021/5/14 | |
环境搭建 | 1 | 2021/5/14 | 2021/5/15 | 1 | 2021/5/14 | 2021/5/15 | |
项目管理 | 4 | 2021/5/15 | 2021/5/19 | 3 | 2021/5/15 | 2021/5/18 | |
客户管理 | 4 | 2021/5/19 | 2021/5/23 | 3 | 2021/5/18 | 2021/5/21 | |
自由职业者管理 | 4 | 2021/5/23 | 2021/5/27 | 3 | 2021/5/21 | 2021/5/25 | |
系统设置 | 5 | 2021/5/27 | 2021/6/1 | 4 | 2021/5/25 | 2021/5/29 | |
软件测试 | 10 | 2021/6/1 | 2021/6/11 | 10 | 2021/5/29 | 2021/6/8 | |
单元测试 | 3 | 2021/6/1 | 2021/6/4 | 3 | 2021/5/29 | 2021/6/1 | |
集成测试 | 3 | 2021/6/4 | 2021/6/7 | 3 | 2021/6/1 | 2021/6/4 | |
系统测试 | 2 | 2021/6/7 | 2021/6/9 | 2 | 2021/6/4 | 2021/6/6 | |
压力测试 | 2 | 2021/6/9 | 2021/6/11 | 2 | 2021/6/6 | 2021/6/8 | |
软件交付 | 3 | 2021/6/11 | 2021/6/14 | 3 | 2021/6/8 | 2021/6/11 | |
验收测试 | 2 | 2021/6/11 | 2021/6/13 | 2 | 2021/6/8 | 2021/6/10 | |
系统上线 | 1 | 2021/6/13 | 2021/6/14 | 1 | 2021/6/10 | 2021/6/11 |
矫正方法:模块和接口的开发流程类似,可以减少开发时间