版本记录
日期 | 版本 | 描述 | 作者 |
---|---|---|---|
2021-3-27 | V0.10 | 选题与需求分析 | XXX |
1. 引言
1.1. 编写目的
该文档首先给出了整个系统的整体结构和功能结构的概貌,试图从总体架构上描绘出整个系统的轮廓,然后又对功能需求、外部接口需求和其它非功能性需求进行了详细的描述。其中对功能需求的描述采用了 UML 的用例模型方式,而且还给出了非常直观的用例图。这些文字和图形都为了本文档能详细准确地描述用户的需求,同时也为用户更容易地理解这些需求的描述创造了条件。 该文档详尽说明了这一软件产品的需求和规格,这些规格说明是进行设计的基础,也是编写测试用例和进行系统测试的主要依据。同时,该文档也是用户确定软件功能需求的主要依据。
1.2. 选题背景
近年来,随着互联网技术的快速发展,通过网络获取新知逐渐成为很多人的第一选择。一方面,相较于传统纸质书籍,在网上搜索资料更加快捷、直观、高效;另一方面,技术人员书写博客不仅是对自己知识体系结构的梳理,更能够有效提升自我。在博客平台上,人们可以通过浏览文章列表获取最新的技术;技术人员通过发布博客分享自己的;通过评论区的友好交流与互动,分享自己的见解,能有效促进技术的提升。基于以上几点,我们的博客系统应运而生。
1.3. 读者对象和阅读建议
本文档的主要内容共分 4 部分:项目总体概述、系统功能、外部接口需求和其他非功能性需求。项目总体概述部分主要对系统的整体结构进行了大致的介绍;系统特性部分对系统的功能需求进行了详细描述,是本文的主要部分;非功能性需求部分对非功能需求进行了详细的描述;外部接口需求部分对用户界面、软件接口、硬件接口和通讯接口等进行了描述。
本文档面向多种读者对象:
- 项目经理:项目经理可以根据该文档了解预期产品的功能,并据此进行系统设计、项目管理。
- 设计员:对需求进行分析,并设计出系统,包括数据库的设计。
- 程序员:根据《SRS规格说明文档》,了解系统功能,编写《用户手册》。
- 测试员:根据本文档编写测试用例,并对软件产品进行功能性测试和非功能性测试。
- 用户:了解预期产品的功能和性能,并与分析人员一起对整个需求进行讨论和协商。
1.4. 参考资料
-
软件工程:面向对象和传统的方法(原书第8版),(美)Stephen R. Schach著,邓迎春、韩松等译,机械工业出版社,2018.
-
软件工程(原书第10版),(英)Ian Sommerville著,彭鑫、赵文耘等译,机械工业出版社,2019.
-
IEEE Software Requirements Specification Template
2. 项目总体概述
2.1. 项目描述
2.1.1. 项目介绍
我们通过开发一个基于 Web 的博客系统,为技术人员提供一个分享技术与互相交流的平台。
2.1.2. 项目环境介绍
博客系统为B/S架构。以下为系统的运行环境:
- 项目部署操作系统:Linux
- 数据库访问:Node 中的 mysql 模块
- 数据库系统:MySQL 5.7
2.2. 软件功能
2.2.1. 功能列表
2.2.2. 用例图
2.2.3. 顶层数据流图
2.3. 用户类及特征
用户类 | 描述 |
---|---|
用户 | 游客经注册之后变成用户,用户可以登录登出博客系统,在系统中修改个人信息,发表文章,修改文章,删除文章,回复评论等。 |
管理员 | 管理员在登录系统之后,可以管理用户,删除文章和评论,管理文章分类,修改轮播图内容等。 |
2.4. 假设和约束
本项目是否能够成功实施,主要取决于以下的条件:
-
为了项目的开发和实施,在必要时对现有的软件开发流程进行详细的了解。
-
具有相对稳定的项目团队,不稳定的团队将影响项目的进度和质量。
-
团队成员对软件开发过程使用的性能良好的软件有较好的了解,明确其中必要的功能,为本项目提供完整的功能和性能需求资料,以便于对其进行分析,从而形成完善的软件需求。
-
团队拥有软件系统的运行必要的且能够满足系统运行条件的硬件环境和通讯环境,不合适的硬件环境和通讯环境将会影响系统的性能。
-
项目团队掌握先进的能够适用于该项目的技术,这是系统的性能是否优化和项目能否成功的保证。
3. 系统功能
3.1. 功能需求
3.1.1. 游客
游客是指未经注册直接访问博客系统的人。游客可以浏览博客首页的各种文章和轮播图。查看文章的详细信息,也可在注册页面注册,变成用户。
- 搜索
搜索也是浏览文章的一部分,游客可以在搜索框内输入关键字,搜索与之匹配的文章。
- 注册
游客在注册页面填写完整的个人信息完成注册,成为用户。
3.1.2. 用户
- 登录
在首页的登录页面填写用户名和密码,进行登录。
- 登出
用户点击登出按钮,系统清除 session 信息,用户退出登录。
- 修改个人信息
用户可以修改自己的用户名及密码等信息。
- 发布文章
用户在文章发表页面拟定适当的标题,书写内容,并选择文章的类别,然后发布文章。
- 修改文章
用户可以修改自己的文章标题、内容分类等信息。
- 评论管理
用户可以在自己文章评论区里进行回复。
3.1.3. 管理员
- 管理用户
如果用户多次违反博客系统的有关规定,管理员可以注销该用户的账号。
- 管理文章
管理员可以审核用户发表的文章,如果发现有涉及违反法律法规、道德规范等内容时,可以对其文章作删除处理。
- 管理评论
管理员如果发现在一篇文章下面出现不友好(如引战、对骂、违反法律法规等)的评论,可以对其进行删除处理。
- 修改轮播图
管理员可以修改轮播图显示的内容,以及各个图片之间显示的顺序。
- 文章分类
管理员可以根据文章附带的关键词进行分类,并添加分类描述。
4. 外部接口需求
4.1. 用户接口
本系统基于 B/S 架构,采用REST设计风格,实现前后端分离,保证各个页面的设计风格美观统一。
4.2. 硬件接口
服务器端设置服务器分布式处理请求。
4.3. 软件接口
需要连接MySQL数据库实现用户各种信息的存储,通过NodeJS中的 mysql 模块实现。
4.4. 通信接口
浏览器端和服务器端采用 Http 协议通信。通知部分使用轮询。
5. 其他非功能性需求
5.1. 性能需求
用户提交不同请求之后,对请求的响应时间不能超过 5 秒,在此时间内将完成请求,并返回确认信息。
5.2. 安全性需求
- 权限控制
根据不同用户角色,设置相应权限,用户的重要操作都做相应的日志记录以备查看,没有登录注册的用户禁止使用系统,不同权限的用户可以使用不同的功能。
- 记录日志
本系统应该能够记录系统运行时所发生的所有错误,包括本机错误和网络错误。这些错误记录便于查找错误的原因。日志同时记录用户的关键性操作信息。
- 数据备份
定时进行数据的备份和恢复,以弥补数据的破坏和丢失。
- 重要数据加密
本系统对一些重要的数据按一定的算法进行加密,如用户口令、重要参数等。
6. 软件质量特性
6.1. 可靠性
要求系统能够长时间正常运行,并且支持多用户同时访问。在任何时间用户均可通过登录进入系统,进行操作。
6.2. 易用性
具有友好易用的用户界面及简单的操作方法,提供用户操作指南,保证用户上手简单。
6.3. 可维护性
能够满足系统管理员对系统维护的需求,能够实现软件开发者对软件的进一步维护。
6.4. 扩展性
能够满足软件开发者对软件功能进一步扩展的需求。
6.5. 可测试性
能够通过一些列的白盒和黑盒测试集。在需要时,能够通过配置文件来控制内部关键信息的输出,输出目标也可通过配置文件配置。
6.6. 健壮性
系统不会产生数据的冗余、不匹配等情况。如果用户在操作过程中与系统中断,只需刷新界面,重新连接系统,系统即可恢复修改未保存的状态。
7. 数据库
首先通过 Node 命令安装 mysql 模块,然后导入 mysql 模块,进行数据库的连接,之后执行 CRUD 操作。
6.5. 可测试性
能够通过一些列的白盒和黑盒测试集。在需要时,能够通过配置文件来控制内部关键信息的输出,输出目标也可通过配置文件配置。
6.6. 健壮性
系统不会产生数据的冗余、不匹配等情况。如果用户在操作过程中与系统中断,只需刷新界面,重新连接系统,系统即可恢复修改未保存的状态。
7. 数据库
首先通过 Node 命令安装 mysql 模块,然后导入 mysql 模块,进行数据库的连接,之后执行 CRUD 操作。