软件工程需求分析.docx
《软件工程需求分析.docx》由会员分享,可在线阅读,更多相关《软件工程需求分析.docx(20页珍藏版)》请在冰豆网上搜索。
软件工程需求分析
项目名称:
ITBook阅读器(APP)
组长:
计算机1405010332叶岚清
小组成员人:
(班级学号、姓名、负责的主要工作)
ITBook阅读器需求规格说明书
1.需求概述
1.1目标
随着科学技术的发展人民的生活水平得到了不断的提高,智能手也被人们接受且普遍使用。
现今更是人手一部智能手机,并且以Android系统作为智能手机运行平台的手机市场占有率已高达一半。
随着近些年来网络通信基础设施的日渐完善,流量费用已经有了大幅的下降,并且伴随着4G网络的发展,电脑能做的事情都能在手机上完成。
所以面向Android系统平台的应用程序也日臻完善,流入市场的应用程序总量已达到几千万个。
因此手机阅读领域的应用数量也是极其的庞大,但是现在市面上所存有的阅读器的功能主要是面向娱乐类的小说领域。
虽然有部分阅读器包含技术类书籍,但其数量少、收费高,无法满足用户的需求。
所以我们想做一个it类书籍阅读器,为技术人员提供强有力的资源支持。
在这里我们使用爬虫从网上爬取相关的技术类书籍的信息存到数据库中,并用爬虫技术将书籍批量下载到服务器内部。
这样就可以为用户提供大量的书籍种类,以满足他们的学习需求。
1.2运行环境
本软件运行于Android4.0及以上的系统平台上,要求手机内存运行内存在1G以上且支持无线上网功能,手机扩展存储空间在4G以上,cpu频率在1Ghz以上。
1.3用户的特点
该APP的目标用户人群主要为一下几类:
1.在校大学生,并且具有一定的英语基础阅读能力,学习的是与计算机相关的专业
2.在校学生,但是所学的专业不是计算机,但是有兴趣在毕业或者以后从事与计算机相关的工作。
3.已经毕业的并且在职工作的从事计算机行业的技术人员,有业余时间想进一步学习计算机技能,提升自我的能力。
4.社会上自学计算机技术的人群。
对于用户的经验要求:
能够熟练的操作与使用Android系统,具有较强的自我学习与约束能力,具有一定的计算机学科基础知识。
1.4约束条件
开发期限限制:
时间只有三个月,相对而言还是比较紧迫的。
开发平台与工具:
我们使用Windows10作为主要的系统开发平台,并且使用谷歌官方推荐的Androidstudio作为主要的开发工具,租用腾讯的提供的虚拟主机搭建服务器后台。
软件开发生命周期模型:
我们采用瀑布模型作为软件生命周期模型,因为瀑布模型适用于需求比较固定的情形,并且实行起来较为简单。
法律:
我们提供的这些电子书资源有可能会侵犯那些著作者的版权,并且为那些提供正版书籍的电子书阅读器的开发商的利益造成一定的损害。
因此为了不侵犯著作者的知识产权,我们打算开发聚合类的网站,只是提供这些资源的位置,以及下载链接。
技术:
我们目前所学的知识比较浅薄,许多Android开发的知识并没有学习到或者掌握到,我们也缺少UI设计师,因此在软件开发的过程中可能会遇到各种各样的难题,因此许多问题我们会采用别人已经写好的发布到github上面的框架来实现我们想要实现的功能。
经费:
开发初期,我们的经费是比较少的,比如说租用虚拟主机的费用以及进行市场调研的开支,对于我们这样一群学生来说也是一笔比较大的负担。
1.5编写目的
本文针对该ITBook阅读器的运行环境以及用户群体进行了详尽的分析,同时将它作为产品设计和开发的依据,从而编制出来该需求规格说明书。
编写本说明书的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理。
同时提出了该App的软件开发过程,便于程序员与客户之间的交流、协作,并作为工作成果的原始依据。
此文档进一步定制软件开发的细节问题,明确软件需求、安排项目规划与进度、组织软件开发与测试,便于用户与开发商协调工作。
本文档面向的读者主要是项目委托单位的管理人员、设计人员和开发人员,希望能使本软件开发工作更具体。
1.6目标读者
软件开发和测试人员,以及指导老师,以及目标用户
2.功能需求
2.1.1登录注册功能
为了使阅读器具有阅读记忆功能,用户在进入app后需要进行注册登录,用户便可以拥有一个独立的空间将适合自己的书籍放入书架或加入收藏。
2.1.2书籍搜索功能
为了便捷用户寻找自己想要的书籍,本阅读器设置了搜索功能。
用户只需在搜索栏中打入书名便可查找出该书信息。
在这里主要是运用数据库中的like语句进行书名匹配,并将匹配到的书籍返回给用户。
2.1.3用户收藏功能
当用户发现适合自己阅读的书籍之时为了不遗失该书,可以将其加入收藏。
除此之外,ITBook阅读器采用云端同步收藏功能,收藏的图书不会随着硬件的更换而遗失,以此来方便用户的阅读。
2.2分层数据流图描述
ITBook阅读系统分层数据流图如下所示,在这里我们由三张图来显示,展现了我们分析这个系统时从简到难的思想。
1阅读系统顶层图
2阅读系统0层图
3阅读系统1子图
3.能力需求
3.1要求的状态和方式
a.说明
软件为IT技术类阅读器。
b.输入
1.用户名、密码
c.处理
定义对输入数据、中间参数进行处理以获得预期输出结果你的全部操作。
包括:
1.输入数据的有效性检查。
2.操作的顺序,包括事件的时间设定。
3.异常情况的响应,例如溢出、通信故障、错误处理等。
4.受操作影响的参数。
5.用于把输入转换成相应输出的方法。
6.输出数据的有效性检查。
d.输出
输出数据为PDF,目的地为用户。
3.2CSCI能力需求
本软件为阅读器软件,可以进行电子书的阅读,电子书为PDF格式。
功能:
1.登录、注册
2.图书界面
3.图书分类
4.图书收藏
5.图书下载
6.在线阅读
主题:
目前为电脑技术类书籍
对象:
全体人群
3.3CSCI内外部接口需求
1.搜索图书请求方式:
get请求参数content
2.获取大分类列表请求方式:
get请求参数无
3.获取小分类列表请求方式:
get请求参数id
4.获取小分类书本列表请求方式:
get请求参数sub_categoryid
5.注册请求方式:
post请求参数name,password,phone
6.登录请求方式:
:
post请求参数name,password
7.设置收藏状态请求方式:
get请求参数userid,booid,status
8.获取用户收藏书本列表请求方式:
get请求参数userid
9.推荐书本列表请求方式:
get请求参数无
3.4接口的项目唯一的标识符
a)CSCI必须分配给该接口的优先级;
登录注册优先。
b)对要实现的接口类型的要求:
实时数据传送、数据的储存和检索;
c)CSCI必须提供、储存、发送、存取、接收的各个数据元素所要求的特性:
1)
(1)名称/标识符:
(2)项目唯一的标识符;
(3)非技术(自然语言)名称;
(4)数据元素名称;
(5)技术名(如在代码或数据库中的变量名或字段名);
(6)缩略名或同义名。
2)数据类型
字母数字、整数文字;
3)大小和格式
字符串的长度和标点符号;
4)计量单位
字节;
5)可能值的范围或枚举
0-99;
6)准确性
正确程度
精度
4位有效数字
7)优先级别、定时、频率、容量、序列以及其他约束条件:
元素可以被更新、业务规则适用;
8)保密性约束;
MD5加密
9)来源
设置/发送实体
接收
使用/接收实体。
d)CSCI必须提供、存储、发送、访问、接收的数据元素组合体(记录、消息、文件、数组、显示、报表等)所要求的特性:
1)名称/标识符:
(1)项目唯一的标识符;
(2)非技术(自然语言)名称;
(3)技术名称;
(4)缩略名或同义名。
2)介质
磁盘PHP开发工具
4)显示和其它输出的视听特性
颜色、布局、字体、图标和其它显示元素、峰鸣音和亮度;
5)包之间的关系:
排序/存取特性;
6)优先级、时序、频率、容量、序列及其它约束:
包可以被更新、业务规则适用;
7)保密性约束;
MD5
8)来源
设置/发送实体
接收者
使用/接收实体。
e)CSCI必须使用的接口的通信方法所要求的特性:
1.项目唯一的标识符;
2.通信链接/带宽/频率/介质及其特性;
3.消息格式;
4.流控制;
5.序列编号和缓冲区分配;
6.周期/非周期传送的数据传送速率,传输间隔;
7.路由、寻址、命名约定;
8.传输服务,包括:
优先权和等级;
9.安全性/保密性考虑;
10.加密、用户鉴别、隔离和审核;
f)CSCI必须使用的接口的协议所要求的特性:
11.项目唯一的标识符;
12.协议的优先级别/层次;
13.打包,包括拆包和重新打包、路由和寻址;
14.合法性检查、错误控制和恢复过程;
15.同步,包括建立连接、保持和终止;
16.状态、标识及任何其它报告的特性。
g)其它所需要的特性,接口实体的物理兼容性:
尺寸、公差、负载和接插件的兼容性、电压等。
3.5适应性需求
目前仅支持安卓端,后续会有IOS以及PC端。
3.6安全性需求
防止散播非法信息。
3.7保密性需求
MD5加密,保证用户信息安全。
3.8CSCI环境需求
安卓端或安卓模拟器。
3.9计算机资源需求
3.9.1计算机硬件需求
处理机、存储器、输入/输出设备、辅助存储器、通信/网络设备。
3.9.2计算机软件需求
LINUX操作系统,数据库管理系统,通信、网络软件、JAVA编程软件。
3.10软件质量因素
有关CSCI功能性、可靠性、易用性、效率、维护性、可移植性和其它属性的定量要求。
3.11人员需求
前端工程师*5
后台工程师*5
测试*2
4.内部数据需求
4.1ER图
4.1.1ITBookapp数据模型:
用户:
用户名,密码
书籍:
书籍名,书籍编号,作者,出版日期,出版社
杂志:
杂志名,杂志编号,出版日期,杂志社,主编
书架:
书籍分类导航,图书展示
每个用户只有一个书架,每个书架只属于一个用户;一个用户可以阅读多本书籍和杂志并收藏,分享并且搜索,每本书籍和杂志都可以被多个用户搜索,阅读,分享,每本书籍和杂志可以被多个用户同时阅读并收藏;收藏完有收藏书籍和收藏时间。
4ITBook系统ER图
4.2数据字典
公用表名
字段名
数据类型
中文名称
适适用范围
user
id
int
用户编号
注册登录模块
name
Varchar(32)
用户名
password
Varchar(32)
密码
book
id
int
书籍的编号
书籍展示,搜索,阅读模块
Sub_categoryd
int
书籍所属子主分类编号
name
Varchar(512)
书籍名称
author
Varchar(512)
作者
information
text
简介
Url
Varchar(512)
书籍所在地址
Category
id
int
书籍分类的编号
书籍分类导航模块
name
Varchar(32)
主分类名称
Sub_category
id
int
子分类名称
categoryid
int
主分类id
name
Varchar(32)
书籍子分类名称
User_collection
id
int
用户收藏编号
用户收藏模块
userid
int
用户编号
bookid
int
书籍编号
Status
Int
(1)
收藏状态
5.公用接口程序设计说明
1.公用函数过程说明
1.搜索图书
URL:
http:
//123.206.16.78/index.php/Home/Request/search_book
HTTP请求方式GET
请求参数content
返回结果示例
{
"state":
1,
"data":
[
{
"id":
"1"
"sub_categoryid":
"1"
"name":
"标题1"
"author":
"作者1"
"information":
"简介1"
"pic_url":
"封面"
"url":
"pdf下载链接1"
},
{
"id":
"2"
"sub_categoryid":
"2"
"name":
"标题2"
"author":
"作者2"
"information":
"简介2"
"pic_url":
"封面"
"url":
"pdf下载链接2"
},
{
"id":
"3"
"sub_categoryid":
"3"
"name":
"标题3"
"author":
"作者3"
"information":
"简介3"
"pic_url":
"封面"
"url":
"pdf下载链接3"
},
{
"id":
"4"
"sub_categoryid":
"4"
"name":
"标题4"
"author":
"作者4"
"information":
"简介4"
"pic_url":
"封面"
"url":
"pdf下载链接4"
}
]
}
2.获取大分类列表
URL:
http:
//123.206.16.78/index.php/Home/Request/query_category
HTTP请求方式GET
请求参数无
返回结果示例
{
"state":
1,
"error_msg":
"未知错误",
"data":
[
{
"id":
"1"
"name":
"大分类1"
},
{
"id":
"2"
"name":
"大分类2"
},
{
"id":
"3"
"name":
"大分类3"
},
{
"id":
"4"
"name":
"大分类4"
}
]
}
3.获取小分类列表
URL:
http:
//123.206.16.78/index.php/Home/Request/query_sub_category
HTTP请求方式GET
请求参数id
返回结果示例
{
"state":
1,
"error_msg":
"未知错误",
"data":
[
{
"id":
"1"
"sub_categoryid":
"1"
"name":
"小分类1"
},
{
"id":
"2"
"sub_categoryid":
"2"
"name":
"小分类2"
},
{
"id":
"3"
"sub_categoryid":
"3"
"name":
"小分类3"
},
{
"id":
"4"
"sub_categoryid":
"4"
"name":
"小分类4"
}
]
}
4.获取小分类书本列表
URL:
http:
//123.206.16.78/index.php/Home/Request/query_book
HTTP请求方式GET
请求参数sub_categoryid,start_pos
返回结果示例
{
"state":
1,
"error_msg":
"未知错误",
"data":
[
{
"id":
"1"
"sub_categoryid":
"1"
"name":
"标题1"
"author":
"作者1"
"information":
"简介1"
"pic_url":
"封面"
"url":
"pdf下载链接1"
},
{
"id":
"2"
"sub_categoryid":
"2"
"name":
"标题2"
"author":
"作者2"
"information":
"简介2"
"pic_url":
"封面"
"url":
"pdf下载链接2"
},
{
"id":
"3"
"sub_categoryid":
"3"
"name":
"标题3"
"author":
"作者3"
"information":
"简介3"
"pic_url":
"封面"
"url":
"pdf下载链接3"
},
{
"id":
"4"
"sub_categoryid":
"4"
"name":
"标题4"
"author":
"作者4"
"information":
"简介4"
"pic_url":
"封面"
"url":
"pdf下载链接4"
}
]
}
5.注册
URL:
http:
//123.206.16.78/index.php/Home/Request/register
HTTP请求方式POST
请求参数name,password,phone
返回结果示例
{
"state":
1,
“error_msg”:
"未知错误"
"data":
{
"id":
"10"
}
}
6.登陆
URL:
http:
//123.206.16.78/index.php/Home/Request/login
HTTP请求方式POST
请求参数name,password
返回结果示例
{
"state":
1,
“error_msg”:
"未知错误"
"data":
{
"id":
"10"
}
}
7.设置收藏状态
URL:
http:
//123.206.16.78/index.php/Home/Request/set_user_collection_status
HTTP请求方式GET
请求参数userid,bookid,status
useridtrueint用户id
bookidtrueint书本id
statustrueintstatus=1是收藏,status=0是取消收藏(时间不够的话,取消收藏可以不做)
8.获取用户收藏书本列表
URL:
http:
//123.206.16.78/index.php/Home/Request/get_user_collection
HTTP请求方式GET
请求参数用户id
返回结果示例
{
"state":
1,
"error_msg":
"未知错误",
"data":
[
{
"id":
"1"
"title":
"标题1"
"author":
"作者1"
"info":
"简介1"
"url":
"pdf下载链接1"
},
{
"id":
"2"
"title":
"标题2"
"author":
"作者2"
"info":
"简介2"
"url":
"pdf下载链接2"
},
{
"id":
"3"
"title":
"标题3"
"author":
"作者3"
"info":
"简介3"
"url":
"pdf下载链接3"
},
{
"id":
"4"
"title":
"标题4"
"author":
"作者4"
"info":
"简介4"
"url":
"pdf下载链接4"
}
]
}
9.推荐书本列表
URL:
http:
//123.206.16.78/index.php/Home/Request/query_recommend
HTTP请求方式GET
请求参数(无)
返回结果示例
{
"state":
1,
"error_msg":
"未知错误",
"data":
[
{
"id":
"1"
"title":
"标题1"
"author":
"作者1"
"information":
"简介1"
"pic_url":
"图片链接"
"url":
"pdf下载链接1"
},
{
"id":
"2"
"title":
"标题2"
"author":
"作者2"
"info":
"简介2"
"url":
"pdf下载链接2"
},
{
"id":
"3"
"title":
"标题3"
"author":
"作者3"
"info":
"简介3"
"url":
"pdf下载链接3"
},
{
"id":
"4"
"title":
"标题4"
"author":
"作者4"
"info":
"简介4"
"url":
"pdf下载链接4"
}
]
}