一.实验目的(1)掌握结构化的需求分析方法;
(2)掌握分层数据流图的绘制、数据字典和加工说明的编制;
(3)掌握数据流图映射为软件结构图的方法;
(4)掌握需求说明书和设计说明。书的主要内容,学习软件需求说明书和设计说明书的编写;
(5)掌握测试的基本方法。
二.实验内容(1)参考一个熟悉的系统,如,机票预订系统/教材订购系统/ATM自动取款机,讨论其用户需求、系统需求和业务需求;
(2)绘制系统的分层数据流图,并给出数据字典;
(3)将系统的分层数据流图映射为软件结构图,绘制软件结构图;
(4)为关键模块进行详细设计,如绘制关键模块的流程图;
(5)实现系统部分功能并测试。
【实例1】机票预订系统
参考:
【实例2】教材订购系统
销售系统的工作过程为:首先由教师或学生提交购书单,经教材发行人员审核是有效购书单后,开发票、登记并返给教师或学生领书单,教师或学生即可去书库领书。
采购系统的主要工作过程为:若是脱销教材,则登记缺书,发缺书单给书库采购人员;一旦新书入库后,即发进书单通知给教材发行人员。
【实例3】图书管理系统
三.实验步骤
(1)复习结构化的分析与设计方法的主要过程;
结构化的分析与设计方法的主要过程:
结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它把系统作为一系列数据流的转换,输入数据被转换为期望的输出值,通过模块化来完成自顶而下实现的文档化,并作为一种评价标准在软件设计中起指导性作用,通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。
结构化设计方法的步骤如下:
①评审和细化数据流图
②确定数据流图的类型
③把数据流图映射到软件模块结构,设计出模块结构的上层
④基于数据流图逐步分解高层模块,设计中下层模块
⑤对模块结构进行优化,得到更为合理的软件结构
⑥描述模块接口
结构化设计方法的设计原则:
①使每个模块执行一个功能(坚持功能性内聚)
②每个模块使用过程语句(或函数方式等)调用其它模块
③模块间传送的参数作数据用
④模块间共用的信息(如参数等)尽量少
(2)讨论系统存在的用户角色、工作流等;
(i)本次实验所做的图书借阅系统包含的用户角色有:
①借书者
②图书管理员
③系统管理员
(ii)系统中应存在的工作流:
①图书管理系统能够为一定数量的借阅者提供服务。每个借阅者能够拥有唯一标识其存在的编号。图书馆向每一个借阅者发放图书证,其中包含每一个借阅者的编号和个人信息。提供的服务包括:提供查询图书信息、查询个人信息服务和预定图书服务等。
②当借阅者需要借阅图书、归还书籍时需要通过图书管理员进行,即借阅者不直接与系统交互,而是通过图书管理员充当借阅者的代理和系统交互。
③系统管理员主要负责系统的管理维护工作,包括对图书、数目、借阅者的添加、删除和修改。并且能够查询借阅者、图书和图书管理员的信息。
④可以通过图书的名称或图书的ISBN号对图书进行查找。
(3)对关键功能绘制数据流图,给出数据字典,并反复讨论数据流的合理性;
(i)数据流图:
(ii)数据字典:
①数据流词条描述
②数据元素词条描述
③数据文件词条描述
数据文件名:图书主数据库文件简述:用于存放各类图书基本信息输入数据:图书名称+图书类型+图书状态输出数据:图书编号+图书名称+图书类型+图书状态+登记日期+借还日期数据文件组成:图书编号+图书名称+图书类型+图书状态+登记日期+借还日期组织方式:索引方式存储方式:直接存取频率:高
数据文件名:图书交易流水文件简述:用于记录各类图书交易信息,以便用于查询,统计,恢复。输入数据:无输出数据:交易码+功能码+图书编号+图书名称+图书类型+图书状态+借阅人姓名+登记日期+借还日期数据文件组成:交易码+功能码+图书编号+图书名称+图书类型+图书状态+借阅人姓名+登记日期+借还日期组织方式:顺序方式存储方式:顺序存取频率:高
数据文件名:图书借还文件简述:用于记录图书借还明细信息输入数据:图书编号+图书名称+借阅人姓名+借阅日期+归还日期输出数据:图书编号+图书名称+借阅人姓名+借阅日期+归还日期数据文件组成:图书编号+图书名称+借阅人姓名+借阅日期+归还日期组织方式:索引方式存储方式:直接存取频率:高
数据文件名:图书系统文件简述:用于存放管理系统的系统状态,系统日期,当前图书编号输入数据:系统状态+系统日期+图书编号输出数据:系统状态+系统日期+图书编号数据文件组成:系统状态+系统日期+图书编号组织方式:顺序(单记录文件)存储方式:顺序存取频率:高
(4)对应数据流图,设计系统的功能结构图,关键模块的流程图;
(5)选择对应的结构化程序设计语言,实现并测试部分功能模块
数据库表的具体结构如下:1)管理员表:用于保存管理员信息。代码如下:
SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[Users]( [Name][nvarchar](50)NULL, [Password][nvarchar](50)NULL, [Type][int]NULL)ON[PRIMARY]GO2)图书信息表:存储图书信息。代码如下:
SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[Book]( [Num][nvarchar](50)NOTNULL, [Name][nvarchar](50)NULL, [Author][nvarchar](50)NULL, [Type][int]NULL, [ISBN][nvarchar](50)NULL, [CBS][nvarchar](50)NULL, [CBRQ][datetime]NULL, [Status][nvarchar](50)NULL,CONSTRAINT[PK_Book]PRIMARYKEYCLUSTERED( [Num]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GO3)借书卡信息表,代码如下:
SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[Card]( [Num][nvarchar](50)NOTNULL, [Name][nvarchar](50)NULL, [Class][nvarchar](50)NULL, [StartTime][datetime]NULL, [EndTime][datetime]NULL,CONSTRAINT[PK_Card]PRIMARYKEYCLUSTERED( [Num]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GO4)图书借阅表,代码如下:
SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[Lend]( [CardNum][nvarchar](50)NULL, [BookNum][nvarchar](50)NULL, [Time][datetime]NULL, [Status][nvarchar](50)NULL)ON[PRIMARY]GO5)图书类型表,代码如下:
SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[Type]( [ID][int]IDENTITY(1,1)NOTNULL, [Name][nvarchar](50)NULL,CONSTRAINT[PK_Type]PRIMARYKEYCLUSTERED( [ID]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GO四.思考题
(1)简述需求说明书,概要设计,详细设计说明书的主要内容。
①软件需求说明书,又称为软件规格说明书,是分析员在需求分析阶段需要完成的文档,是软件需求分析的最终结果。
它的作用主要是:作为软件人员与用户之间事实上的技术合同说明;作为软件人员下一步进行设计和编码的基础;作为测试和验收的依据。
软件需求说明书必须用统一格式的文档进行描述,为了使需求分析描述具有统一的风格,可以采用已有的且能满足项目需要的模板,也可以根据项目特点和软件开发小组的特点对标准进行适当的改动,形成自己的模板。
软件需求说明主要包括引言、任务概述、需求规定、运行环境规定和附录等内容。
②概要设计说明书又可称系统设计说明书,这里所说的系统是指程序系统。编制的目的是说明对程序系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、安全设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。
③详细设计说明书又可称程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本部分可以不单独编写,有关内容合并入概要设计说明书中。
(2)结构化分析方法与面向对象分析方法有无本质上的不同?
答:结构化系统分析方法是采用“自顶向下,由外到内,逐层分解”的思想对复杂的系统进行分解化简,从而有效地控制了系统分析每一步的难度,并运用数据流图、加工说明和数据字典作为表达工具的一种系统分析技术。而面向对象的分析方法则是通过将数据和逻辑结构抽象成为对象,运用对象属性和方法等来操作和处理业务数据和逻辑的系统分析方法。两者的区别在于:当软件项目较小、系统分析员能力足够高的时候,结构化方法能快速的找到最简洁、高效率的逻辑模型,结构化方法对复杂问题的帮助有限,而面向对象的分析方法提供了一种方便的、可持续观测和扩展系统的机制,通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,对于需求变化频繁的系统,可以用面向对象软件系统的方法。
(3)对数据流图进行审查有何意义?
答:在使用结构化分析方法进行分析时,我们对一个系统的理解,不可能一开始就完美无缺,开始分析一个系统时,尽管我们对问题的理解有不正确、不确切的地方,但还是应该根据我们的理解,用数据流图表达出来,然后对初步完成的流程图进行核对,反复修改完善,从而获得较为完美的数据流图。
(4)给出一次完整的会议讨论纪要,包括议题,最终结果。
答:软件工程实验二小组会议讨论纪要
五、实验小结很好地复习了用结构化设计方法做系统的各个步骤,把其中每个流程自己独立思考了一遍,总体上发现还是有很多很多不会的地方。比如,画分层数据流图时,对该如何正确分层不是很够清晰;“选择对应的结构化程序设计语言实现并测试部分功能模块”这一部分自己不会;等等。还是要多多练习此类题目,掌握其结构化设计方法的主要思想,在练习中加深对有关概念的理解。