项目名称: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作为主要的系统开发平台,并且使用谷歌官方推荐的Android studio作为主要的开发工具,租用腾讯的提供的虚拟主机搭建服务器后台。
软件开发生命周期模型:我们采用瀑布模型作为软件生命周期模型,因为瀑布模型适用于需求比较固定的情形,并且实行起来较为简单。
法律:我们提供的这些电子书资源有可能会侵犯那些著作者的版权,并且为那些提供正版书籍的电子书阅读器的开发商的利益造成一定的损害。
因此为了不侵犯著作者的知识产权,我们打算开发聚合类的网站,只是提供这些资源的位置,以及下载链接。
技术:我们目前所学的知识比较浅薄,许多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.2 CSCI能力需求本软件为阅读器软件,可以进行电子书的阅读,电子书为PDF格式。
功能:1.登录、注册2.图书界面3.图书分类4.图书收藏5.图书下载6.在线阅读主题:目前为电脑技术类书籍对象:全体人群3.3 CSCI内外部接口需求1.搜索图书请求方式:get 请求参数content2.获取大分类列表请求方式:get 请求参数无3.获取小分类列表请求方式:get 请求参数id4.获取小分类书本列表请求方式:get 请求参数sub_categoryid5.注册请求方式:post 请求参数name,password,phone6.登录请求方式::post 请求参数name,password7.设置收藏状态请求方式:get 请求参数userid,booid,status8.获取用户收藏书本列表请求方式:get 请求参数userid9.推荐书本列表请求方式: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) 保密性约束;MD58) 来源设置/发送实体接收者使用/接收实体。
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.8 CSCI环境需求安卓端或安卓模拟器。
3.9计算机资源需求3.9.1计算机硬件需求处理机、存储器、输入/输出设备、辅助存储器、通信/网络设备。
3.9.2 计算机软件需求LINUX操作系统,数据库管理系统,通信、网络软件、JAVA编程软件。
3.10 软件质量因素有关CSCI功能性、可靠性、易用性、效率、维护性、可移植性和其它属性的定量要求。
3.11人员需求前端工程师*5后台工程师*5测试*24. 内部数据需求4.1 ER图4.1.1 IT Book app 数据模型:用户:用户名,密码书籍:书籍名,书籍编号,作者,出版日期,出版社杂志:杂志名,杂志编号,出版日期,杂志社,主编书架:书籍分类导航,图书展示每个用户只有一个书架,每个书架只属于一个用户;一个用户可以阅读多本书籍和杂志并收藏,分享并且搜索,每本书籍和杂志都可以被多个用户搜索,阅读,分享,每本书籍和杂志可以被多个用户同时阅读并收藏;收藏完有收藏书籍和收藏时间。
4 ITBook系统ER图4.2 数据字典公用表名字段名数据类型中文名称适适用范围user id int 用户编号注册登录模块name Varchar(32) 用户名password Varchar(32) 密码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_categoryHTTP请求方式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_statusHTTP请求方式GET请求参数userid,bookid,statususerid true int 用户idbookid true int 书本idstatus true int status=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"}]}。