需求类型分类
上课也讲过了,对于需求类型,课件上分为如下几种:
但是在其他的软件工程著作中\(^{[1]}\),我们可以有其他的划分,比如把设计约束和过程约束合并为约束,添加对外接口需求和数据需求等等。在这个例子中我决定把设计约束和过程约束合并起来,方便我们的分析。
功能需求(分为读者端和作者端)
作者端
- 作者可以编排图书的目录结构、章节内容,章节内容中包括图片、视频、文字、和集成第三方软件边学边练,能定义常见练习题比如问答题、选择题
- 作者编辑时可以预览读者端的效果,手机效果、Web和桌面软件效果,作者可以限制只在某一种或几种终端上使用。
- 作者可设定自己的图书章节的阅读顺序,有顺序解锁阅读,随意跳跃阅读,部分章节内部必须顺序阅读等几种不同的模式。
- 软件在打开时要有功能导航提示,带用户了解作者端的主要功能
- 作者编辑完书籍后可以将书籍上传到Master服务器的数据库中,供读者下载,上传失败时,作者端要给出用户提示,并且实现与Master服务器的断点传输
读者端
- 读者端可以通过手机、浏览器或桌面软件使用交互式多媒体图书,可以搜索图书,查看图书目录,根据作者设定可以顺序解锁阅读,或随意跳跃阅读,或部分章节内部必须顺序阅读
- 软件能集成或调用第三方软件,通过统一的插件模型调用,插件在master服务器上下载,第三方软件与图书之间的交互要自动完成,只给读者暴露简单的接口。(个人感觉作业需求中的例子不好,重新举一个,比如有一个插件开发者开发了翻译插件,发布到软件的读者端上,读者安装这个插件并且用鼠标选中相应文本后点击翻译按钮,该插件就可以自动作其他语言到汉语的翻译。如果例子不恰当还请老师/助教指正)
- 软件在打开时要有功能导航提示,带用户了解读者端的主要功能
- 读者可以访问图书商城,从Master服务器上下载新图书,下载失败时,读者端要给出用户提示,并且实现下载断点传输功能
- 读者可以访问插件商城,从Master服务器上下载插件,下载失败时,读者端要给出用户提示,并且实现下载断点传输功能
运营商端
- 能够对图书商城的上架书籍进行管理,提供下架功能
- 能够上架各种读者端使用的使用插件
服务器端
- 当下载或上传操作发生时,能够根据读者或作者提供的密钥来判断是否为合法用户
质量需求(个人补充一些)
- 插件的运行要在0.5秒之内返回给用户结果
- 易用性方面,界面设计要精简,让各类用户在试用一天后即能掌握该软件的核心功能(功能需求部分)
- 访问图书商城的时间不能超过5秒,如果超过五秒仍然访问失败,则在读者端给出提示
约束
- 读者端的手机App、Web或桌面软件使用统一的代码实现
- 对于读者端,前后端为js+nodejs+mongodb
- 作者端独立部署
- Master服务器的数据库采取mongodb
用例
作者端用例图

读者端用例图

运营商端用例图

Master服务器端用例图

数据模型


深入分析和设计
接下来就读者在书城浏览并且下载一本书这个用例进行详细分析
剧情描述
- 读者点击图书商城。
- 图书商城显示自己所用拥有的书籍。
- 读者选中某本书
- 服务器返回该书给读者。(接下来陷入阅读循环)
- 读者选中想阅读的章节/页数。(可选)
- 书籍返回对应的文本。(可选)
- 读者进行文本的阅读(可选)
- 期间读者可能点击翻页。(可选)
- 这时书籍应当实时返回相应数据。(可选)
- 读者拿到数据后阅读(可选)
- 读者返回书籍章节目录(可选)
- 书籍返回书的章节(可选)
- 在阅读过程中读者使用本地翻译插件进行个别单词的翻译。(可选)
- 翻译插件返回相应的结果。(可选)
- 读者决定缓存某本书到数据库。(可选)
- 读者点击退出阅读该书
- 服务器重新返回图书商城拥有的书籍给读者
剧情描述表
phase |
subject |
Action of Subject |
Other Data/Object |
Object Acted Upon |
1 |
读者 |
进入图书商城 |
|
Master服务器 |
1.1 |
Master服务器 |
返回现有书籍列表 |
书籍列表 |
读者 |
1.2 |
读者 |
选中某本书 |
书名 |
Master服务器 |
1.2.1 |
Master服务器 |
返回该书 |
书籍 |
读者 |
1.3 |
while 读者不点击退出该书 |
|
|
|
1.3.2 |
读者 |
选择章节 |
章节名称 |
书籍 |
1.3.3 |
书籍 |
返回对应的文本 |
章节文本 |
读者 |
1.3.4.1 |
if 读者点击了返回目录 |
|
|
|
1.3.4.1.2 |
读者 |
点击返回该书该书目录 |
|
书籍 |
1.3.4.1.3 |
书籍 |
返回该书目录 |
书籍目录 |
读者 |
1.3.4.2 |
if 读者点击了下一页 |
|
|
|
1.3.4.2.1 |
读者 |
点击下一页 |
页数 |
书籍 |
1.3.4.2.2 |
书籍 |
返回下一页书籍的内容 |
书籍文本 |
读者 |
1.3.4.3 |
if 读者使用某些插件 |
|
|
|
1.3.4.3.1 |
读者 |
使用插件功能 |
待处理参数 |
插件 |
1.3.4.3.2 |
插件 |
计算结果 |
结果 |
插件 |
1.3.4.4 |
if 读者缓存该书 |
|
|
|
1.3.4.4.1 |
读者 |
缓存该书 |
书籍 |
本地数据库 |
1.3.4.4.2 |
本地数据库 |
存储 |
success/false |
读者 |
1.3.5 |
读者 |
退出阅读 |
|
Master服务器 |
1.3.6 |
Master服务器 |
返回书籍列表 |
书籍列表 |
读者 |
设计序列图(由分析序列图改进而来,故略去分析序列图)

设计类图

支持第三方插件的多媒体图书平台的设计与实现
原文:https://www.cnblogs.com/ustcwz/p/12659965.html