软件工程 需求分析
一、实验目的
● 掌握软件需求结构化分析方法;
● 掌握使用Visio建立分析模型;
● 掌握软件需求说明书的撰写。
二、实验原理
⑴需求分析的基本要点
● 需求分析是发现、求精、建模、规格说明和复审的过程。
● 需求分析的第一步是进一步了解用户当前所处的情况,发现用户所面临的问题和对目标系统的基本需求;接下来应该与用户深入交流,对用户的基本需求反复细化逐步求精,以得出对目标系统的完整、准确和具体的需求。
● 具体地说,应该确定系统必须具有的功能、性能、可靠性和可用性,必须实现的出错处理需求、接口需求和逆向需求,必须满足的约束条件,并且预测系统的发展前景。
⑵分析建模与规格说明
● 逻辑模型由一组图形符号和组织这些符号的规则组成。
● 通过需求分析除了创建分析模型之外,还应该写出软件需求规格说明书,它是需求分析阶段得出的最主要的文档。
● 通常用自然语言完整、准确、具体地描述对目标系统的需求,这样的规格说明书具有容易书写、容易理解的优点。
三、实验内容与步骤
⑴问题背景及描述
⑵功能分析
⑶建立系统流程图
⑷建立数据流图
⑸建立数据字典
⑹算法描述
⑺建立E-R图
⑻建立状态图
⑼撰写软件需求规格说明书
⑽验证软件需求
四、实验要求
● 需求分析报告中必须有分析过程中建立的功能模型、动态模型和数据模型
图书馆管理系统
B.系统需求分析
2.1 问题背景及描述
经过对我校详细调查,并多次与负责图书管理的老师进行研讨后,加深了对现行图书管理业务的深刻了解,与此同时,将整个图书管理的业务流程抽象描述如下:
1.新的图书购进后,分门别类地进行归并并汇总,加以编号。
2.新书编号后,上到书架以备学生借阅。
3.如某学生需要借阅图书,则在其本人的借阅登记表上进行登记,记录相关借阅信息与借阅日期。
4.学生借阅图书后,应及时归还图书,并在本人的借阅登记表上注明还书日期和时间。
根据以上调查分析,可以给出其现行业务流程图如图2.1所示。
图2.1 现行图书管理业务流程图
2.2 功能分析
在现行业务流程和数据分析的基础上,基本可以确定系统设计必须达到的目标。
以下是图书管理系统必须具备的功能:
1.新进图书的登记功能:对于购进的新书,系统必须具备图书信息资料的录入功能。
2.图书的查询修改功能:当图书资料发生变化,如图书丢失或有错误信息输入时,则应能够及时对数据进行修改和补充。
3.借阅的登记,归还的登记功能:系统的主要功能之一,供本校学生借阅图书、归还图书,并进行登记。
4.学生信息的增加、删除和修改功能:系统主要功能之一,建立学生信息,并对其进行维护。
2.3 数据描述(数据流图+数据字典)
A:购入的新书 J:借书证号
B:采购计划 K:旧图书访问记录
C:图书编码 L:新图书访问记录
D:新书 M:注册信息
E:图书信息 N:借阅信息
F:日期 O:图书信息
G:图书信息 P:图书
H:图书信息 Q:检验
I:读者信息
1、第0层数据流图:
第0层数据字典:
(1)、数据源点及汇点描述:
①名称:采购部
简要描述:按照采购计划采购新书并加入到系统中
有关数据流:采购的新书、采购计划
②名称:编目部
简要描述:将采购回来的图书编码
有关数据流:图书、图书编码
③名称:日历
简要描述:当前日期
有关数据流:年月日
④名称:图书
简要描述:图书名称及图书编码
有关数据流:图书信息
⑤名称:读者
简要描述:读者姓名,借书证号
有关数据流:读入读者的身份信息,返回的借阅信息
(2)、转换数据流的处理过程描述:
名称:图书管理信息系统
简要描述:实现读者管理、编目管理、借、还书管理、各种统计、查询、打印功能、能够提
供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息。
输入数据流:A:购入的新书;C:图书编码;F:日期;K:旧图书访问记录;I:读者信息; H:图书信息;M:注册信息;J:借书证号;E:图书信息
输出数据流:B:采购计划;D:新书;L:新图书访问记录;M:注册信息;J:借书证号;
G:图书信息;N:借阅信息
逻辑处理过程:通过分析各个数据库和各实体输入的信息,实现是否对图书进行购入、整理、
借还的操作,并对读者信息的处理。
(3)、数据流名词条描述:
A数据流名:购入的新书
说明:用以记录买入的新书
数据来源:采购部
数据去向:图书管理信息系统
数据流组成:图书的名称=2{字母}24
B数据流名:采购计划
说明:列出图书馆的要采购的书的名称,书号,出版社以及数量
数据来源:图书管理信息系统
数据去向:采购部
数据流组成:采购计划=书名+书号+出版社+数量
书名=2{字母}24
书号=“000000001”..“999999999”
出版社=2{字母}24
数量=1..9999
C数据流名:图书编码
说明:描述图书的编码
数据来源:编目部
数据去向:图书管理信息系统
数据流组成:图书编码=书名+书号
D数据流名:新书
说明:书的名称
数据来源:图书管理信息系统
数据去向:编目部
数据流组成:新书=书名+出版社
E数据流名:图书信息
说明:描述图书的名称,书号,出版社
数据来源:图书
数据去向:图书管理信息系统
数据流组成:图书信息=书名+书号+出版社
F数据流名:日期
说明:提供当前日期信息
数据来源:日期
数据去向:图书管理信息系统
数据流组成:日期=年+月+日
年=“0000”..“9999”
月=“01”..“12”
日=“01”..“31”
G数据流名:图书信息(G)
说明:描述图书的书名,书号和出版社
数据来源:图书管理信息系统
数据去向:图书数据库
数据流组成:图书信息=书名+书号+出版社
H数据流名:图书信息
说明:描述图书的书名,书号,出版社和现存数量
数据来源:图书数据库
数据去向:图书管理信息系统
数据流组成:图书信息=书名+书号+出版社+现存数量
I数据流名:读者信息
说明:返回读者的信息
数据来源:读者信息库
数据去向:图书管理信息系统
数据流组成:读者信息=借书证号+联系电话+还可以借的书的数量 借书证号=“0000000001”..“9999999999” 联系电话=“00000000”..“99999999”
还可以借的书的数量=“0”..“10”
J数据流名:借书证号
说明:根据借书证号查询读者的相关信息
数据来源:读者
数据去向:图书管理信息系统,读者信息库
数据流组成:借书证号=“0000000001”..“9999999999”
K数据流名:旧的访问记录
说明:读出图书过去的借阅记录
数据来源:图书管理信息系统
数据去向:图书访问记录
数据流组成:旧的访问记录=书号+日期+借书证号
L数据流名:访问记录
说明:对图书插入新的访问记录
数据来源:图书管理信息系统
数据去向:图书访问记录
数据流组成:访问记录=书号+日期+借书证号
M数据流名:注册信息
说明:读入借书证上的借书证号
数据来源:读者
数据去向:图书管理信息系统,读者信息库
数据流组成:注册信息=借书证号+姓名+总共可以借阅我数量
借书证号=“0000000001”..“9999999999”
N数据流名:借阅信息
说明:返回借阅成功或者失败的信息
数据来源:图书管理信息系统
数据去向:读者
数据流组成:借阅信息={成功,失败}
(4)、数据文件词条描述:
① 数据文件名:图书数据库
简述:存放图书信息
输入数据:G:图书信息
输出数据:H:图书信息
文件组成:图书库由“图书信息”组成
② 数据文件名:读者信息库
简述:存放读者信息
输入数据:M:注册信息;J:借书证号
输出数据:I:读者信息
文件组成:图书库由“读者信息”组成
③ 数据文件名:图书访问记录库
简述:存放图书访问记录信息
输入数据:L:新图书访问记录
输出数据:K:旧图书访问记录
数据文件组成:图书访问记录库由“图书访问记录”组成
2、第1层数据流图:
第1层数据字典:
1,数据源点及汇点描述:
(1) 名称:采购部
简要描述:根据图书数据库反馈的信息对外购书的部门 有关数据流:A:购入的新书;B:采购计划
(2) 名称:编目部
简要描述:拿到购入的新书进行编码,然后写入图书数据库
有关数据流:C:图书编码;D:新书
(3) 名称:图书
简要描述:已有的图书资料
有关数据流:E:图书信息;O:购入的图书
(4) 名称:读者
简要描述:借书、还书、查询及登记注册
有关数据流:M:注册信息;N:借阅信息;J:借书证号
(5) 名称:日历
简要描述:当日日期
有关数据流:F:日期
2, 转换数据流的处理过程描述:
(1) 名称:采购管理
简要描述:根据图书数据库反馈的信息决定是否需要进行购书
输入数据流:A:购入的新书;O:购入的图书;F:日期;H:图书信息 输出数据流:A:购入的新书;B:采购计划
逻辑处理过程:分析图书数据库反馈的信息,判断是否要购书, 若是,则发出信息给购书部;
若有新书,则把新书资料发给编目管理
(2) 名称:编目管理
简要描述:把输入的新书资料转交给编目部进行整理编目,然后把编目部传来的整理
的资料写入数据库
输入数据流:A:购入的新书;C:图书编码
输出数据流:D:新书;G:图书信息
逻辑处理过程:把输入的图书信息传给编目部,把输入的图书编码写入数据库
(3) 名称:借还管理
简要描述:根据输入资料,判断该书是否应被借出和处理被归还的图书
输入数据流:E:图书信息;J:借书证号;H:图书信息;K:旧图书访问记录;I:读
者信息;F:日期
输出数据流:N:借阅信息;G:图书信息;L:新图书访问记录
逻辑处理过程:根据输入的图书信息和借书证号,判断该读者是否有权借得该书,并修
改数据库的信息;处理归还的图书,修改数据库的信息
(4) 名称:读者管理
简要描述:检索,添加,删除读者的信息
输入数据流:M:注册信息;J:借书证号;I:读者信息;F:日期
输出数据流:M:注册信息;J:借书证号;I:读者信息
逻辑处理过程:注册新读者,把资料写入数据库;根据输入检索或删除读者资料
3,数据文件词条描述:
(1)数据文件名:图书数据库
简述:存放图书信息
输入数据:G:图书信息
输出数据:H:图书信息
文件组成:图书库由“图书信息”组成
(2)数据文件名:读者信息库
简述:存放读者信息
输入数据:M:注册信息;J:借书证号
输出数据:I:读者信息
文件组成:图书库由“读者信息”组成
(3)数据文件名:图书访问记录库
简述:存放图书访问记录信息
输入数据:L:新图书访问记录
输出数据:K:旧图书访问记录
数据文件组成:图书访问记录库由“图书访问记录”组成
4,数据流名词条描述:
A 数据流名:购入的新书
说明:用以记录买入的新书
数据来源:采购部
数据去向:采购管理
数据流组成:图书的名称=2{字母}24
B数据流名:采购计划
说明:列出图书馆的要采购的书的名称,书号,出版社以及数量
数据来源:采购管理
数据去向:采购部
数据流组成:采购计划=书名+书号+出版社+数量 书名=2{字母}24
书号=“000000001”..“999999999” 出版社=2{字母}24
数量=1..9999
C数据流名:图书编码
说明:描述图书的编码
数据来源:编目部
数据去向:编目管理
数据流组成:图书编码=书名+书号
D数据流名:新书
说明:书的名称
数据来源:编目管理
数据去向:编目部
数据流组成:新书=书名+出版社
E数据流名:图书信息
说明:描述图书的名称,书号,出版社
数据来源:图书
数据去向:借还管理
数据流组成:图书信息=书名+书号+出版社
F 数据流名:日期
说明:提供当前日期信息
数据来源:日历
数据去向:采购管理,借还管理,读者管理 数据流组成:日期=年+月+日
年=“0000”..“9999”
月=“01”..“12”
日=“01”..“31”
G数据流名:图书信息
说明:描述图书的书名,书号和出版社
数据来源:编目管理,借还管理
数据去向:图书数据库
数据流组成:图书信息=书名+书号+出版社
H数据流名:图书信息
说明:描述图书的书名,书号,出版社和现存数量 数据来源:图书数据库
数据去向:编目管理,借还管理
数据流组成:图书信息=书名+书号+出版社+现存数量 I 数据流名:读者信息
说明:返回读者的信息
数据来源:读者信息库
数据去向:借还管理,读者管理,读者
数据流组成:读者信息=借书证号+联系电话+还可以借的书的数量
借书证号=“0000000001”..“9999999999” 联系电话=“00000000”..“99999999” 还可以借的书的数量=“0”..“10” J 数据流名:借书证号
说明:根据借书证号查询读者的相关信息
数据来源:读者
数据去向:借还管理,读者管理,读者信息库
数据流组成:借书证号=“0000000001”..“9999999999” K数据流名:旧的访问记录
说明:读出图书过去的借阅记录
数据来源:图书访问记录
数据去向:借还管理
数据流组成:旧的访问记录=书号+日期+借书证号 L数据流名:访问记录
说明:对图书插入新的访问记录
数据来源:借还管理
数据去向:图书访问记录
数据流组成:访问记录=书号+日期+借书证号
M数据流名:注册信息
说明:读入借书证上的借书证号
数据来源:读者
数据去向:读者管理,读者数据库
数据流组成:注册信息=借书证号+姓名+总共可以借阅我数量
借书证号=“0000000001”..“9999999999”
N数据流名:借阅信息
说明:返回借阅成功或者失败的信息
数据来源:借还管理
数据去向:读者
数据流组成:借阅信息={成功,失败}
O数据流名:图书信息
说明:描述图书的名称,书号,出版社,损坏与否 数据来源:图书
数据去向:采购管理
数据流组成:图书信息=书名+书号+出版社+损坏与否
3、第2 层数据流图:
细化借还管理:
借书过程数据字典:
(1)、数据源点及汇点描述:
①名称:读者
简要描述:借书、还书、查询及登记注册
有关数据流:借书证;所借书本
② 名称:日历
简要描述:当日日期
有关数据流:年月日
(2)、转换数据流的处理过程描述:
① 名称:借书检验
简要描述:检验读者身份、图书是否入库、读者还能借多少书以此判定读者是否能借书 输入数据流:借书证;所借书本,读者信息,图书信息,图书访问记录,日期 输出数据流:借书错误信息,借书信息
② 名称:借书登记
简要描述:将“借书信息”登记到“图书访问记录库图书访问记录”中,完成后将书本递
交读者
输入数据流:借书信息,日期
输出数据流:图书访问记录,图书
加工逻辑:将借书信息及日期写入图书访问记录;将图书递交读者
(3)、数据流名词条描述:
① 数据流名:借书证号(J)
说明:用以携带读者的唯一识别标识
数据流来源:读者
数据流去向:借书检验
数据流组成:借书证=借书证号+姓名+联系方法
借书证号=“000000001”..“999999999”
姓名=2{字母}24
联系方法=4{字母}50
② 数据流名:图书(P)
说明:记录图书的主要相关信息
数据流来源:读者
数据流去向:借书检验
数据流组成:图书=书号+书名+作者+出版社+价格+摘要+状态 书号=“000000001”..“999999999”
书名=2{字母}24
作者=2{字母}24
出版社=2{字母}24
价格=“000.01”..“999.99”
摘要=10{字母}200
状态=1{字母}
③ 数据流名:检验错误(Q)
说明:用于指示读者借书错误信息
数据流来源:借书检验
数据流去向:读者
数据流组成:检验错误=2{字母}40
每个数据量流通量:
④数据流名:日期(F)
说明:提供当前日期信息
数据流来源:日历
数据流去向:借书检验,借书登记
数据流组成:日期=年+月+日
年=“0000”..“9999”
月=“01”..“12”
日=“01”..“31”
⑤ 数据流名:旧图书访问记录(K)
说明:用于记录读者借书信息
数据流来源:图书访问记录库,借书登记
数据流去向:借书检验
数据流组成:图书访问记录=书号+借阅证号+借书日期
借书日期=日期
⑥数据流名:读者信息(I)
说明:用于记录登记入库的读者信息
数据流来源:读者库
数据流去向:借书检验
数据流组成:读者信息=借书证号+姓名+联系方法
⑦ 数据流名:图书信息(H)
说明:用于记录登记入库的图书信息
数据流来源:图书库
数据流去向:借书检验
数据流组成:图书信息=书号+书名+作者+出版社+价格+摘要+状态
(4)、数据文件词条描述:
① 数据文件名:读者库
简述:存放读者信息
输入数据:无
输出数据:读者信息
数据文件组成:读者库由“读者信息”组成
② 数据文件名:图书库
简述:存放图书信息
输入数据:无
输出数据:图书信息
数据文件组成:图书库由“图书信息”组成
③ 数据文件名:图书访问记录库
简述:存放图书访问记录信息
输入数据:图书访问记录
输出数据:图书访问记录
数据文件组成:图书访问记录库由“图书访问记录”组成
4、第3 层数据流图:
细化还书管理:
还书过程数据字典:
(1)、数据源点及汇点描述:(前面已描述)
(2)、转换数据流的处理过程描述:
④名称:还书检验
简要描述:检验图书是否图书室外借图书
输入数据流:图书,图书访问记录
输出数据流:检验错误,还书信息
② 名称:还书登记
简要描述:删除读者对该图书的借书信息,如果超期给出警告及天数 输入数据流:还书信息,日期
输出数据流:图书访问纪录,还书成功
(3)、数据流名词条描述:
① 数据流名:还书信息(E)
说明:用于传递图书书号
数据流来源:还书检验
数据流去向:还书登记
数据流组成:还书信息=书号
⑤ 数据流名:还书成功(N)
说明:用于通知还书成功
数据流来源:还书登记
数据流去向:读者
数据流组成:还书成功=2{字母}10
③ 数据流名:新图书访问记录(L)
说明:用于查询图书访问记录和还书后修改图书访问记录 数据流来源:还书登记
数据流去向:图书访问记录库
其余数据流前面已有描述。
2.4建立E-R图
2.5撰写软件需求规格说明书
2.5.1. 对功能的规定
2.5.2. 对性能的规定
2.5.2.1. 精度
在精度需求上,根据使用需要,在各项数据的输入,输出及传输过程中,可以满足各种精度的需求。如:根据关键字精度的不同,查找可分为精确查找和泛型查找,精确查找可精确匹配读者已知道的书目,泛型查找,只要满足与输入的关键字相匹配的书目即输出,可供读者查找。
2.5.2.2. 时间特性要求
在软件方面,响应时间,更新处理时间都比较快且迅速,完全满足用户要求。
2.5.2.3. 灵活性
当用户需求,如操作方式,运行环境,结果精度,数据结构于其他软件接口等发生变化时,设计的软件要做适当调整,灵活性非常大。
2.5.3. 输入输出要求
查询书目:说出关键字为书名,作者,索引号,按照精确匹配为主,再索引关联字。输出时列出索引到的所有书目信息,具体信息包括内容摘要、目录号、作者信息、书名、价格、流水号、购买日期等。方便读者查找。
借阅图书:通过语音识别图书和读者(指纹)的流水号(条形码),向数据库传送信息,然后在数据库索引图书信息和读者信息是否符合要求,符合要求待图书管理员确认后再更新相关数据,并将这些数据存入借书文件,最后输出显示存储成功;否则报错。
查看读者的借阅信息:通过指纹进入读者借书信息管理系统,只需要输入读者个人信息即可,然后系统根
据输入的信息,送图书馆管理系统索引查找相关信息,最后将读者借书的信息输出显示。
2.5.4. 数据管理能力要求
定时整理数据:系统管理员根据市场图书行情定时整理系统数据库,对图书的借阅情况、读者的管理情况、书库的增减等均可由计算机执行,并将运行结果归档。
查询库存量:能随时查询书库中图书的库存量,以便准确、及时、方便地为读者提供借阅信息,但不能修改数据,无信息处理权,即可以打印清单、浏览数据等,管理权限由系统管理员掌握和分配。
2.55. 故障处理要求
a. 内部故障处理
在开发阶段可以随即修改数据库里的相应内容。
b. 外部故障处理
对编辑的程序进行重装载时,第一次辨认认为错,修改。第二次运行,在需求调用时出错,有错误提示,重试。
c. 本软件可能产生的错误为数据库的错误信息,应由数据库管理员对数据库进行维护。为了确保系统恢复的能力,数据库管理员要定期对数据库进行备份。
2.5.6. 其它专门要求
数据的安全性、完整性要求:图书馆各项数据信息必须保证安全性和完整性。网络系统设有通信、程序、网络三级权限和口令管理,确保系统安全。
2.6验证软件需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,图书管理系统应该满足以下的性能需求:
1、系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。
2、系统的开放性和系统的可扩充性
图书管理系统在开发过程中,应该充分考虑以后的可扩充性。例如用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。
3、系统的易用性和易维护性
图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。
4、系统的标准性
系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。
5、系统的先进性
目前计算系统的技术发展相当快,做为图书管理系统工程,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。
6、系统的响应速度
图书管理系统系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。
五、实验心得
通过本次实验,我知道了如何进行系统需求分析,掌握了如何使用Visio建立分析模型以及软件需求说明书的撰写。