资源描述
朱建凯 何海江 汪祥 毛伟 编软件工程(导论)实验指导书长沙学院计算机科学与技术系2013 年 9 月前言软件工程(导论)是计算机类本科专业的重要专业基础课程,它是指导计算机软件开 发和维护的一门科学,包含技术和管理两方面内容,是技术与管理紧密结合所形成的工程学 科。同时软件工程对实践经验要求非常高的,中间的很多经验都需要在实践中去体会和认识。该实验指导书内容是在指导08、09、10 三届学生的实验课程中不断总结完善,并按照 2011 版计科专业和软件工程专业的培养方案以及实验(实训)大纲重新对内容进行了组织 和编排。整个实验按照六个实验来设计,全部完成需要32 学时,在具体的教学过程中,可 以灵活调整。在这六个实验中,全部以一个航空售票点售票软件的程序设计作为主线来贯穿 全部设计过程,按照软件项目开发的自然过程安排实验(实训),首先从需求分析、再到系 统分析设计、编码和单元测试,其中顾及到结构化程序设计方法和面向对象程序设计方法, 在需求建模和程序设计方面安排学生分别用这两个方法对这个开发任务分析和设计各进行 了一次。通过这六个实验,基本了解和熟悉软件工程管理的几个主要过程,达到熟悉教材, 理会软件工程管理理论的目的。该实验指导书是根据2011 版计算机科学与技术专业培养方案对软件工程课程的教 学要求,以及软件工程专业培养方案对软件工程导论实训课程的要求编写的实验指导书, 其中计科专业实验课时数是20学时,软工专业实训课时是32 学时,因此本指导书只能按照 32 学时来设计,计科专业采用本实验指导书时必须适当调整内容。计算机专业实验室从2013 年下学期开始所有的实验(实训)课程都不再提交纸质的实 验报告而全部在网络实验平台上提交实验报告。报告的网址是: http:/218.196.43.18:8888/login.aspx。特别请同学们注意,每个实验之后都必须由指导教师现 场在计算机上检查打分并录入系统之后,学生才能提交实验报告,然后老师再综合实验报告 和现场检查的打分给每个实验项目打分。必须全部实验项目都及格,才会有实验分数,否则 实验分数计零分,且必须补考或重新。本实验指导书中,实验一和实验二由朱建凯老师编写,实验三和实验五由汪祥老师编 写,实验四由毛伟老师编写,实验六由何海江老师编写。编者2013年9月目录第一部分 实验内容设计任务 2实验1:需求分析3实验2:程序设计4实验3:用例分析5实验4:面向对象设计*6实验 5:程序实现 7实验 6:软件测试8第二部分 实验指导实验 1:需求分析实验指导10实验 2:程序设计实验指导15实验 3:用例分析实验指导25实验 4:面向对象设计实验指导31实验 5:程序实现实验指导 34实验 6:软件测试实验指导35第一部分实验内容设计任务题目:机票预定系统1基本功能要求航空公司售票点为给旅客乘机提供方便,需要开发一个机票预定系统。各个订票点把预定机票的旅客信息(姓名、性别、工作单位、身份证号码(护照号码)、 旅行时间、旅行始发地和目的地,航班舱位要求)输入到联网的系统中,系统为旅客安 排航班。当旅客确认航班并交付了预订金后,系统打印出取票通知和帐单给旅客,旅客 在飞机起飞前一天凭取票通知和帐单交款取票,系统核对无误即打印出机票给旅客。此 外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调2技术要求和限制条件(1)在分析系统功能时要考虑有关证件的合法性验证(如身份证、取票通知和交款发 票)等。(2)对于本系统还应补充一下功能: 1旅客延误了取票时间的处理 2航班取消后的处理 3旅客临时更改航班的处理(3)系统的外部输入项至少包括:旅客、旅行社和航空公司。(4)系统支持现金支付和信用卡以及银行卡支付,不支持网上订票和网上付款。实验 1:需求分析1、实验目的学习结构化软件需求分析方法,掌握软件需求的表达方式和方法2、 实验类型 综合性实验3、实验学时 4 学时4、实验原理及知识点数据流图;数据字典;数据加工说明需求规格说明书5、实验环境(硬件环境、软件环境)硬件平台:普通个人计算机;软件:Windows XP, Microsoft Visio6、实验内容及步骤认真分析第1 页的用户需求并整理,逐条列出需求要求并对需求要求进行归类,设计需 求编码规则对需求要求进行编号;设计数据流程图;设计数据字典; 设计数据加工说明; 根据设计出来的模型,重新调整前面整理的需求初稿,最后按照软件需求规格说明书的 格式写一份需求规格说明书。第一步:研究需求的内容,用自然语言逐条描述; 第二步:逐条对需求分类并编号;第三步:绘制数据流程图; 第四步:编写数据字典和数据加工说明; 第五步:重新修订需求规格说明书7、思考与练习 需求规格说明书中,为什么要将需求逐条编上号,而且要对需求的描述非常准确,这样 操作主要是为了什么?实验 2:程序设计1、实验目的 学习软件的结构化设计方法,练习采用结构化设计方法完成程序设计任务的过程。2、 实验类型 综合性实验3、实验学时 6 学时4、实验原理及知识点 模块化程序设计理论;信息隐藏和局部化; 面向数据流图的设计方法;PAD图5、实验环境(硬件环境、软件环境) 硬件平台:普通个人计算机; 软件:Windows XP, Microsoft Visio6、实验内容及步骤 以上一次实验课完成的数据流图为基础,按照数据流图的设计方法,选用事务流或者变 换流的分析方法,设计出系统的总体结构,要求: 完成从数据流图到模块结构图的转化,标记出各模块的输入数据和输出数据以及要 完成的数据处理任务; 画出层次图和 HIPO 图; 从数据字典出发设计出数据的ER图,并把ER图转化为关系数据库模式; 用PAD图和过程设计语言(伪码)来描述上面完成的各模块的设计任务; 最后将上面完成的工作,以设计说明书的形式展现出来。 第一步:复查并细化数据流图确定数据流图具有变换特性还是事务特性; 第二步:确定输入流和输出流的业务边界;第三步:设计出初步的模块分解图;第四步:从初步的模块结构图得到最终的模块结构图(MSD); 第五步:编写模块的输入数据,处理过程,输出数据(IPO); 第六步:设计模块的PAD图以及过程设计语言描述; 第七步:完成程序的设计说明书。7、思考与练习 用事务流分析方法和变换流分析方法,差别主要在什么地方。什么情况下用事务流分析 法,什么情况下用变换流?软件系统设计过程中,如果能用过程设计语言先期设计好详细设计再进一步编程序有什 么好处。和不搞详细设计直接到机器上写程序代码相比,感觉到会有什么差异,有什么好处。实验 3:用例分析1、实验目的学习和掌握如何分析需求并绘制UML用例图,编写用例规约。2、实验类型综合性实验3、实验学时4学时4、实验原理及知识点 用例;参与者;包含关系;扩展关系;泛化关系;用例规约说明5、实验环境(硬件环境、软件环境) 硬件平台:普通个人计算机; 软件:Windows XP, StarUML6、实验内容及步骤 研究最初的用户需求,找出系统的参与者;绘制出用例图; 写用例规约; 改造实验一编写的需求规格说明书。第一步:找出系统的参与者; 第二步:找出系统的具体用例; 第三步:确定参与者和用利,以及用例和用例之间的关系;第四步:编写每个用例的用例规约; 第五步:改造实验一编写的软件需求规格说明书。7、思考与练习 结合本实验说说面向对象需求分析和结构化需求分析的方法差异,优缺点。实验 4:面向对象设计1、实验目的在前面基础上按照课堂教学中要求完成系统的UML类图设计,绘制活动图、构件图、 部分顺序图和部分状态图。2、实验类型综合性试验3、实验学时6学时4、实验原理及知识点设计活动图,进一步理解需求;设计类图确定实现的操作和属性;设计构件图确定系统 的整体结构;部分顺序图进一步确定详细设计;部分状态图进一步确定类的操作。5、实验环境(硬件环境、软件环境) 硬件平台:普通个人计算机;软件:Windows XP, StarUML6、实验内容及步骤 设计活动图、类图、构件图; 设计部分顺序图、部分状态图 修改实验二编写的程序设计说明,变成一个面向对象的程序设计说明。第一步:设计活动图,进一步理解系统需求;第二步:初步设计类模型,确定属性和基本操作;第三步:设计构件图,初步确定系统的最终结构; 第四步:设计部分关键业务的顺序图,机票和订单的状态图 第五步:修改和完善类模型和构件图;第六步:修编实验二已经完成的程序设计说明书。7、思考与练习 结合本机票预定系统,说明结构化设计和面向对象设计的差异,评价其优劣 顺序图和状态图设计什么情况下才需求,才最有利于未来的程序编码?实验 5:程序实现1、实验目的 熟悉按照软件设计说明书来编写软件代码,锻炼学生编写程序的同时,必须严格按照设 计说明来编码。2、实验类型 综合性试验3、实验学时6 学时4、实验原理及知识点 数据库表结构的实现;程序界面的实现;出错处理界面的设计;程序和数据库的连接; 软件开发卷宗的编写。5、实验环境(硬件环境、软件环境) 硬件平台:普通个人计算机; 软件:Windows XP, MyEclipse6、实验内容及步骤 1、设计人机界面风格,出错处理;数据库表结构;2、设计所有的程序界面,编写和数据库连接的代码;3、设计代码实现程序界面之间的驱动和调用;4、编写程序代码说明书。第一步:在数据库中设计数据库表结构; 第二步:确定界面设计风格,出错处理设计,变量定义规则,将其写入程序代码说明书; 第三步:设计出所有需要的JSP静态页面;第四步:完成MyEclise中代码与底层数据库的连接和调用编程; 第五步:修改设计好的JSP静态页面为动态页面,以展示数据库中的数据; 第六步:实现各页面之间的调用和底层数据处理; 第七步:完善程序代码说明书。7、思考与练习 结合设计过程,说说实验四设计的程序设计说明书是否在代码设计中起到了作用?你认 为自己写的程序设计说明书还有哪些方面应该改进,以更对这个程序的编程有指导意义。实验 6:软件测试1、实验目的 掌握黑盒测试技术、白盒测试技术,了解集成测试的策略,掌握测试用例的设计方法 提高文档撰写能力。通过机票预订系统的测试实例,使同学们熟悉软件测试的一般流程。2、实验类型综合性实验3、实验学时6 学时4、实验原理及知识点 单元测试;系统测试;验收测试;白盒测试;黑盒测试;测试报告5、实验环境(硬件环境、软件环境) 硬件平台:普通个人计算机; 软件:Windows XP, Office, MyEclipse6、实验内容及步骤 采用白盒测试技术完成一个程序单元的单元测试; 采用黑盒测试技术完成程序的系统集成测试; 编写单元测试报告, 编写系统测试报告。第一步:研究由指导教师制定的单元模块的程序结构,确定白盒测试的测试策略; 第二步:以该单元模块的顺序图为线索,设计单元的测试用例; 第三步:执行单元测试过程,编写单元测试报告;第四步:以前面设计的活动图为线索,设计系统的测试用例; 第五步:执行系统测试过程,编写系统测试报告。7、思考与练习 单元测试通常由代码设计编写人员自己来完成,如何来保证单元测试过程的质量和效果 呢?测试报告中存在有测试用例没有通过的情况,那么是否结论就是程序没通过测试?测试 过程中的测试用例出现和期望的结果不一致情况,是否就是测试用例不通过?第二部分实验指导实验1:需求分析一一实验指导需求编码应该完成对所有需求的整理,并对每项需求建立编号。 需求编号示例:Srs-fun-1:系统须能够录入旅客的订票信息;(表示“需求规约-功能需求-1”Srs-fun-2:系统须能够提供给旅客可选的航班信息;(表示“需求规约-功能需求-2”Srs-int-1:系统能从航空公司获取最新的航班信息及其票源信息;(表示“需求规约-接口需求-1”需求分类需求分为:功能性需求,性能需求,接口需求,设计约束,质量需求。数据流图数据流图反映数据的流动和处理过程,是和用户交流的极好交流工具。1符号数据流图有四种基本符号:正方形(或立方体)表示数据的源点或终点; 圆角矩形(或圆形)代表变换数据的处理; 开口矩形(或两条平行横线)代表数据存储; 箭头表示数据流,即特定数据的流动方向。2例子假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有 需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名 称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在 仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就 应该再次定货。f 仓悴疋贝定货报丐圣曰管理员系统_J图1.1定货系统的基本系统模型图1.2定货系统的功能级数据流图DI库存清单图1.3把处理事务的功能进一步分解后的数据流图3命名1)为数据流(或数据存储)命名(1) 名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分。 不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)。(3)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的。2)为处理命名(1) 通常先为数据流命名,然后再为与之相关联的处理命名。(2) 名字应该反映整个处理的功能。(3) 名字最好由一个具体的及物动词加上一个具体的宾语组成。(4) 通常名字中仅包括一个动词。(5) 如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑 重新分解。4 用途画数据流图的基本目的是利用它作为交流信息的工具。数据流图应该分层,并且在把功能级数据流图细化后得到的处理超过9 个时,应该采 用画分图的办法,也就是把每个主要功能都细化为一张数据流分图。数据流图的另一个主要用途是作为分析和设计的工具。数据字典 数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集 合。数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然 而没有数据流图数据字典也难于发挥作用。1 数据字典的内容一般说来,数据字典应该由对下列4 类元素的定义组成:(1) 数据流(2) 数据流分量(即数据元素)(3) 数据存储(4) 处理2 定义数据的方法 由数据元素组成数据的方式只有下述三种基本类型:(1) 顺序 即以确定次序连接两个或多个分量;(2) 选择 即从两个或多个可能的元素中选取一个;(3) 重复 即把指定的分量重复零次或多次。(4) 可选 即一个分量是可有可无的(重复零次或一次)。=意思是等价于(或定义为); +意思是和(即,连接两个分量); 意思是或(即,从方括弧内列出的若干个分量中选择一个) ,通常用“|号”隔开供选 择的分量; 意思是重复( 即,重复花括弧内的分量);( ) 意思是可选( 即,圆括弧里的分量可有可无)。举例:某程序设计语言规定,用户说明的标识符是长度不超过8 个字符的字符串,其 中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。使用上面 讲过的符号,我们可以像下面那样定义标识符:标识符=字母字符+字母数字串字母数字串=0 字母或数字 7字母或数字=字母字符丨数字字符3 数据字典的用途 数据字典最重要的用途是作为分析阶段的工具。在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户之间的通信,因 此将消除许多可能的误解。对数据的这一系列严密一致的定义也有助于改进在不同的开发人员或不同的开发小 组之间的通信。要求所有开发人员都根据公共的数据字典描述数据和设计模块,则能避免许多麻烦的 接口问题。加工说明 对每一个数据流图中的加工给出一个加工说明。由于需求分析的目的是定义问题,因 此对数据流图中的每一个加工只需给出加工的输入数据和输出数据之间的关系,即从外部来 “视察”一个加工的逻辑。这个加工说明非常类似于面向对象分析中的用例规约,但这里的 不同是仅仅需要考虑和描述数据间的相关性。需求规格说明书1 引言1.1 编写目的 说明编写这份软件需求说明书的目的,指出预期的读者。1.2 背景说明待开发的软件系统的名称; 本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络; 该软件系统同其他系统或其他机构的基本的相互来往关系。2 任务概述2.1 目标 叙述该项软件开发的意图、应用目标、作用范围以及其他应向读者说明的有关该软件 开发的背景材料。解释被开发软件与其他有关软件之间的关系。如果本软件产品是一项独立 的软件,而且全部内容自含,则说明这一点。如果所定义的产品是一个更大的系统的一个组 成部分,则应说明本产品与该系统中其他各组成部分之间的关系,为此可使用一张方框图来 说明该系统的组成和本产品同其他各部分的联系和接口。|2.2 用户的特点 列出本软件的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长, 以及本软件的预期使甩频度。这些是软件设计工作的重要约束3 功能需求3.1 功能需求描述列出编了号的功能需求。3.2 数据流图3.2.1 数据流图一 画出数据流图。加工说明:编号,加工名,输入流,输出流,加工逻辑3.2.2 数据流图二 画出数据流图。加工说明:编号,加工名,输入流,输出流,加工逻辑3.3 输人输出要求 数据字典放在这里。 解释各输入输出数据类型,并逐项说明其媒体、格式、数值范围、精度等。对软件的 数据输出及必须标明的控制输出量进行解释并举例,包括对硬拷贝报告(正常结果输出、状 态输出及异常输出)以及图形或显示报告的描述。3.4 故障处理要求 列出可能的软件、硬件故障以及对各项性能而言所产生的后果和对故障处理的要求。4 其他非功能性需求4.1 设备环境要求(略)4.2 设计约束要求 列出支持软件,包括要用到的操作系统、编译(或汇编)程序、测试支持软件等。4.3 接口要求 说明该软件同其他软件之间的接口、数据通信协议等。4.4 程序性能要求 说明需要管理的文卷和记录的个数、表和文卷的大小规模,要按可预见的增长对数据 及其分量的存储要求作出估算。4.5 软件质量要求 如用户单位对安全保密的要求,对使用方便的要求,对可维护性、可补充性、易读性、 可靠性、运行环境可转换性的特殊要求等。实验2:程序设计一一实验指导层次结构图层次结构图用来描绘软件的层次结构。层次结构图中的一个矩形框代表一个模块,方框间的连线表示调用关系而不像层次方 框图那样表示组成关系。图2.1是层次结构图的一个例子。1;文加匸系统输入输岀编辑存储检索编目录格式化1111111111 |r1 |添加1删除插入修改1仟井列表r图2.1正文加工系统的层次结构图和H图中每个方框相对应,应该有一张IPO图描绘这个方框代表的模块的处理过程。 HIPO图中的每张IPO图内都应该明显地标出它所描绘的模块在H图中的编号,以便追踪了 解这个模块在软件结构中的位置。图2.2带编号的层次结构图(H图)结构分解图结构分解图是进行软件结构设计的另一个有力工具。结构分解图和层次结构图类似, 也是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功 能;方框之间的箭头(或直线)表示模块的调用关系。在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。如果希望进 一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:尾部是 空心圆表示传递的是数据,实心圆表示传递的是控制信息。产生垠化解得到好输人计算最佳解输出结果读输入编辑输人结果格式化显加结果图2.3结构图的例子一一产生最佳解的一般结构数据流图转变为层次结构图过程变换分析第1步 复查基本系统模型。第2步 复查并精化数据流图。应该对需求分析阶段得出的数据流图认真复查,并且在必要时进行精化。第3步确定数据流图具有变换特性还是事务特性。一般地说,一个系统中的所有信息流都可以认为是变换流,但是,当遇到有明显事务 特性的信息流时,建议采用事务分析方法进行设计。第4步确定输入流和输出流的边界,从而孤立出变换中心。输入流和输出流的边界和对它们的解释有关,也就是说,不同设计人员可能会在流内 选取稍微不同的点作为边界的位置。7/产工加速/减述!ub.:/燃料流 S感器佶号转换曲jrpun ; I上箭头水平践& F箭头燃烧流、rpni讣!5篇 mph 卡IImphitJLgph产T mpgph呷出声发衿mph Hij;mpgn;图2.4具有边界的数据流图第5步 完成“第一级分解”。对于变换流的情况,数据流图被映射成一个特殊的软件结构。图2.4说明了第一级分 解的方法。位于软件结构最顶层的控制模块Cm协调下述从属的控制功能:输入信息处理控制模块Ca,协调对所有输入数据的接收; 变换中心控制模块Ct,管理对内部形式的数据的所有操作; 输出信息处理控制模块Ce,协调输出信息的产生过程。对于数字仪表板的例子,第一级分解得出的结构如图2.5所示。每个控制模块的名字 表明了为它所控制的那些模块的功能。图2.5第一级分解的方法图2. 6数字仪表板系统的第一级分解第6步 完成“第二级分解”。所谓第二级分解就是把数据流图中的每个处理映射成软件结构中一个适当的模块。完 成第二级分解的方法是,从变换中心的边界开始沿着输入通路向外移动,把输入通路中每个 处理映射成软件结构中Ca控制下的一个低层模块;然后沿输出通路向外移动,把输出通路 中每个处理映射成直接或间接受模块Ce控制的一个低层模块;最后把变换中心内的每个处 理映射成受Ct控制的一个模块。图2.7表示进行第二级分解的普遍途径。图2.7第二级分解的方法虽然图中每个模块的名字表明了它的基本功能,但是仍然应该为每个模块写一个简要 说明,描述:进出该模块的信息(接口描述);模块内部的信息;过程陈述,包括主要判定点及任务等;对约束和特殊特点的简短讨论。这些描述是第一代的设计规格说明,在这个设计时期进一步的精化和补充是经常发生 的。第7步使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化。图2.8未经精化的输入结构图2.9未经精化的变换结构图2.10未经精化的输出结构对第一次分割得到的软件结构,总可以根据模块独立原理进行精化。得到尽可能高的 内聚、尽可能松散的耦合,最重要的是,为了得到一个易于实现、易于测试和易于维护的软 件结构。下面是某些可能的修改:输入结构中的模块“转换成rpm”和“收集sps”可以合并;模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合; 模块“加速/减速显示”可以相应地放在模块“显示mph”的下面。在这个时期进行修改只需要很少的附加工作,但是却能够对软件的质量特别是软件的 可维护性产生深远的影响。图2.11精化后的数字仪表板系统的软件结构事务分析虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在数据流具有明显的 事务特点时,也就是有一个明显的“发射中心”(事务中心)时,还是以米用事务分析方法为宜。由事务流映射成的软件结构包括一个接收分支和一个发送分支。映射出接收分支结构 的方法和变换分析映射出输入结构的方法很相像,即从事务中心的边界开始,把沿着接收流通路的处理映射成模块。对于一个大系统,常常把变换分析和事务分析应用到同一个数据流 图的不同部分,由此得到的子结构形成“构件”,可以利用它们构造完整的软件结构。C CTL图2.12事务分析的映射方法PAD图PAD是问题分析图(problem analysis diagram)的英文缩写,自1973年由日本日立公司 发明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图 翻译成程序代码比较容易。图5.10给出PAD图的基本符号。PAD图的主要优点如下:(1) 使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。d)PI CP2(f)def图2.13 PAD图的基本符号(2) PAD图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层 结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条 竖线。PAD图中竖线的总条数就是程序的层次数。(3) 用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程 序从图中最左竖线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。(4) 容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可 省去人工编码的工作,有利于提高软件可靠性和软件生产率。(5) 即可用于表示程序逻辑,也可用于描绘数据结构。(6) PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个 抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计,如图 6.6所示。PAD图是面向高级程序设计语言的,为FORTRAN,COBOL和PASCAL等每种常用 的高级程序设计语言都提供了一整套相应的图形符号。由于每种控制语句都有一个图形符号 与之对应,显然将PAD图转换成与之对应的高级语言程序比较容易。图2.14使用PAD图提供的定义功能来逐步求精的例子程序设计说明书1引言1.1编写目的 说明编写这份概要设计说明书的目的,指出预期的读者。1.2背景说明:待开发软件系统的名称;列出此项目的任务提出者、开发者、用户以及将运行该软件的计算站(中心)。2程序设计说明2.1需求规定简要说明对本系统的主要的输入输出项目、处理的功能性能要求。2.2运行环境(略)2.3程序结构说明用层次结构图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的划 分,扼要说明每个模块元素的标识符和功能,分层次地给出各元素之间的控制与被控制关系.2.5功能需求与程序的关系本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:程序1程序2程序n功能需求V功能需求V功能需求VV3 接口设计3.1 外部接口说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。3.2 内部接口 说明本系统之内的各个系统元素之间的接口的安排。4 程序模块 1 (标识符)设计说明 从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对 一般情况的。对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容 往往与它所隶属的上一层 模块的对应条目的内容相同,在这种情况下,只要简单地说明这 一点即可。4.1 程序模块描述 给出对该程序的简要描述,主要说明安排设计本程序的目的意义,并且,还要说明本 程序的特点(如 是常驻内存还是非常驻?是否子程序?是可重人的还是不可重人的?有无 覆盖要求?是顺序处理还是并发处理等)。4.2 功能说明该程序应具有的功能,可采用IPO图(即输入一处理一输出图)的形式。4.3 输人项 给出对每一个输入项的特性,包括名称、标识、数据的类型和格式、数据值的有效范 围、输入的方式。数量和频度、输入媒体、输入数据的来源和安全保密条件等等。4.4输出项 给出对每一个输出项的特性,包括名称、标识、数据的类型和格式,数据值的有效范 围,输出的形式、数量和频度,输出媒体、对输出图形及符号的说明、安全保密条件等等。4.5 算法 详细说明本程序所选用的算法,具体的计算公式和计算步骤。4.6 注释设计 说明准备在本程序中安排的注释,如: 加在模块首部的注释; 加在各分枝点处的注释; 对各变量的功能、范围、缺省条件等所加的注释; 对使用的逻辑所加的注释等等。5 系统数据结构设计5.1 逻辑结构设计要点 给出本系统内所使用的每个数据结构的名称、标识符以及它们之中每个数据项、记录、 文卷和系的标识、定义、长度及它们之间的层次的或表格的相互关系。5.2 物理结构设计要点 给出本系统内所使用的每个数据结构中的每个数据项的存储要求,访问方法、存取单 位、存取的物理关系(索引、设备、存储区域)、设计考虑和保密条件。5.3 数据结构与程序的关系 说明各个数据结构与访问这些数据结构的形式。6 系统出错处理设计6.1 出错信息 用一览表的方式说朗每种可能的出错或故障情况出现时,系统输出信息的形式、含意 及处理方法。实验3:用例分析一一实验指导1 UML用例图的组成:1)系统边界(主体)系统边界是定义由谁或什么(即,参与者)使用系统,系统能够为哪些参与者提供 什么特定利益(即,用例)。系统边界在UML中绘制为方框,用系统的名称作为标签,参与者绘制在边界外部, 用例绘制在边界内部。例如:棋牌馆管理系统弔協廿匸洁账2)参与者Act or参与者是系统外部的一个实体;参与用例的执行过程;通过向系统输入或请求系统输入某些事件来触发系统的执行;由参与用例时所担当的角色来表示;每个参与者可以参与一个或多个用例。(1)参与者的表示强调: Ac tor不是指人,而是指参与用例时所担当的角色。如果一个角色的操作是由另一个角色代理完成的,请建立该角色到另外角色之间的 依赖。学生银行系统时间actor(2) 参与者间的关系超类参与者/ 客3) 用例Use Case(1) 用例的表示系统、子系统或类与外部的参与者(act or )交互的动作序列的说明,包括各种序列 及出错序列。用例分析可以认为是对系统功能的分解。例如存款用例(2)怎样确定用例的粒度?用例的粒度(用例的大小)可大可小,一般一个系统易控制在20个用例左右。用例是系统级的、抽象的描述,不是细化的(是做什么,非怎样做)对复杂的系统可以划分为若干个子系统处理。(3)怎样获取用例?参与者希望系统执行什么任务?参与者在系统中访问哪些信息(创建、存储、修改、删除等)?需要将外界的哪些信息提供给系统?需要将系统的哪个事件告诉参与者?如何维护系统?4)关系-Relationship四种基本关系:关联 (association) 包含(include) 扩展(extend)泛化(generalization)(1)关联描述参与者与用例之间的关系;用单向箭头,表示谁启动用例;每个用例都有角色启动,除包含和扩展用例;客户(2)包含是指两个用例之间的关系。其中一个用例(基本用例,base use case)的行为包含 了另一个用例(包含用例,inclusion use case)的行为。例如:(3) 扩展也是指两个用例之间的关系。 一个用例可以被定义为基础用例的增量扩展,称作扩展关系,可以类比面向对象编 程里的继承.扩展关系是把新的行为插入到已有用例中的方法。基础用例即使没有扩展用例也是完整的。一般情况下基础用例的执行不会涉及扩展 用例,只有特定条件发生,扩展用例才被执行。客户(4) 泛化订货购物 一个用例和其几种情形的用例间构成泛化关系。往往父用例表示为抽象用例。 任何父用例出现的地方子用例也可出现。 VI尸打折2. uml用例描述:用例图:只能描述系统的大概功能,是一种视图;用例描述:更详细地描述用例的功能。1)用例描述的组成用例名称简要说明/描述优先级参与者前置条件基本事件流其他事件流扩展点后置条件2)示例:用例名称:借书描述:图书管理员使用借书用例完成读者的借书活动,把图书从图书馆中借给读者 需求编号:ucOOl优先级:A(高)角色:图书管理员,读者前置条件:图书馆员已成功登录系统并具有借书的权限主事件流:1管理员选择“借书”选项,用例开始2打开借书窗体3. 读者输入读者证号,系统根据借阅规则检查读者借书有效性A1:读者无效4. 管理员输入待借阅的图书条码号,检查图书有效性A2 :图书无效5. 系统登记一条新的借书信息6. 系统检查读者预定信息A3:有预定7用例结束异常和分支事件流:A1:读者无效(1) .系统显示读者无效的提示信息(2) .返回主事件流第3步A2:图书无效(1) .系统显示图书无效提示信息(2) .返回主事件流第4步A3:有预定(1) .系统提示预定信息,并取消预定(2) .返回主事件流第7步后置条件:系统成功写入一条借书信息,读者当前的借书数量加1特殊需求:支持使用条码扫描仪输入读者证号和图书条码,借一本书时间不超过30秒实验4:面向对象设计一一实验指导1客户端UML类图设计分析分析客户端几点需求:1)旅行社必须登录系统后才能使用系统功能2)旅行社能根据始发地和目的地查询近期航班3)输入旅客预订信息(姓名、性别、工作单位、身份证号码(护照号码)旅行时间、旅 行始发地和目的地,航班舱位要求)预定机票,预定机票时要交预定金,机票预定 成功系统打印出取票通知和账单给旅客1)旅行社必须登录系统后才能使用系统功能涉及的相关类及关系如下:承绕用户登录畀面+用户名 倍码+旅行社営称+登录湖户启boolean12)旅行社能根据始发地和目的地查询近期航班。这一功能点涉及到的类有,系统主界面,航班查询界面,航班等。涉及到的方法为查询 航班,我们可以把查询航班方法放入航班预定类中,总体类图如下:3)输入旅客预订信息(姓名、性别、工作单位、身份证号码(护照号码)旅行时间、旅行始 发地和目的地,航班舱位要求)预定机票,预定机票时要交预定金,机票预定成功系统打印 出取票通知和账单给旅客。此处涉及到的类有旅客、预定界面、机票订单、航班预定类、取票通知、账单,涉及到 的方法有用户信息验证方法,预定方法,打印通知,打印账单方法。旅客的信息包括姓名、性别、工作单位、身份证号码(护照号码);机票订单包括航班、旅客、座位号、预定状态。刚开始填写预定信息时为准备预定状态 取票通知包括下机票订单时间、预定机票旅行社、预定旅客、取票有效时间和机票订单。账单包括机票订单、已交预定金账单中不需要出现旅客信息,旅客信息在机票订单中有。一总;iffl户耳却简+国乂 +幅I炖+出发地 =n?u+出痢寸间谓击睡桂空教机票订甲2顺序图查询航班顺序图如下:3状态图航班状态图如下:实验 5:程序实现实验指导参见相关编程书籍模块开发卷宗是在模块开发过程中逐步编写出来的,每完成一个模块或一级密切相关的 模块的复审时编写一份,应该把所有的模块开发卷宗汇集在一起。编写的目的是记录和汇总 低层次开发的进度和结果,以便于对整个模块开发工作的管理和复审,并为将来的维护提供 非常有用的技术信息。具体的内容要求如下:1 标题2 模块开发情况表3 功能说明4 设计说明5 源代码清单6 单元测试说明(略)7 复审的结论模块开发卷宗是软件开发过程中最重要的技术文档之一,可惜在现实生活中很多中小 型软件企业都不重视开发卷宗的撰写、收集和管理工作。编写开发卷宗非常重要的一点就是要注意收集平时开发过程中任何一点点与模块设计 相关的思想火花,越是原始的资料越显得弥足珍贵。同学们通过这个实验了解开发卷宗的编 写方法,养成收集原始信息的好习惯。实验 6: 软件测试实验指导白盒测试,又称为结构测试,被测对象基本上是源程序,以程序的内部逻辑为基础设计 测试用例。(1) 逻辑覆盖追求程序内部的逻辑覆盖程度,当程序中有循环时,覆盖每条路径是不可能的,要设计 使覆盖程度较高的或覆盖最有代表性的路径的测试用例。 语句覆盖。设计足够的测试用例,使被测程序中每个语句至少执行一次。 判定覆盖。设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值 和“假”值,从而使程序的每一个分支至少都通过一次,因此判定覆盖也称为分支覆盖。 条件覆盖。设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少出现一 次。 判定/条件覆盖。设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至 少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。 条件组合覆盖。比较强的覆盖标准,它是指设计足够的测试用例,使得每个判定表达式中 条件的各种可能的值的组合都至少出现一次。 路径覆盖。设计足够的测试用例,覆盖被测程序中所有可能的路径。黑盒测试,又称为功能测试,因此设计测试用例时,需要研究需求规格说明和概要设计 说明中有关程序功能或输入、输出之间的关系等信息,从而与测试后的结果进行分析比较。 用黑盒技术设计测试用例的方法一般有以下介绍的四种,但没有一种方法能提供一组完整的 测试用例,以检查程序的全部功能,在实际测试中应该把各种方法结合起来使用。(1) 等价类划分将输入数据域按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试 每个等价类的代表值就等于对该类其他值的测试。也就是说,如果从某个等价类中任选一个 测试用例未发现程序错误,该类中其他测试用例也不会发现程序的错误。(2) 边界值分析实践经验表明,程序往往在处理边界情况时发生错误。边界情况指输入等价类和输出等 价类边界上的情况。(3) 错误推测在测试程序时,人们可能根据经验或直觉推测程序中可能存在的各种错误,从而有针对 性地编写检查这些错误的测试用例。错误推测法没有确定的步骤,凭经验进行。它的基本思 想是列出程序中可能发生错误的情况,根据这些情况选择测试用例。(4) 因果图因果图能有效地检测输入条件的各种组合可能会引起的错误。因果图的基本原理是通过 画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测 试用例。附录 2 测试用例说明书1 引言1.1 编写的目的说明编写这份测试用例说明书的目的,指出预期的读者。1.2 背景a待开发的系统的名称;b. 本项目的任务提出者、开发者、用户;c. 该系统同其他系统或其他机构的基本的相互来往关系。1.3 定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。1.4 参考资料列出参考资料。2 测试用例 注:用例应侧重于测试可直接追踪到的系统需求功能,目的是核实需求功能与实现功能是否 一致。即,只要求说明功能测试用例。2.1 用例 1(标识符)详细说明每个用例应说明下列内容:(1) 测试用例名称(2) 测试项:规定并简要说明本测试用例所要涉及的项和特性、对于每一项、可考虑引 用需求说明书和设计说明书。(3) 输入说明:规定执行测试用例所需的各个输入。有些输入可以用值(允许适当的误 差)来规定。而另一些输入,如常数表或事务文件可以用名来规定。规定所有合适的数据库、 文件、终端信息、内存常驻区域和由操作系统传送的值。规定各输入间所需的所有关系(如 时序关系等)。(4) 输出说明:规定测试项的所有输出和特性(如:响应时间)。提供各个输出或特性的 正确值(在适当的误差范围内)。(5) 环境要求:规定执行本测试用例所需的硬件特征和配置、系统软件和应用软件。(6) 规程说明:描述对执行本测试用例的测试规程的一切特殊限制。这些限制可以包括 特定的准备、操作人员干预、确定特殊的输出和清除过程。(7) 用例间的依赖关系:列出必须在本测试用例之前执行的测试用例名称,归纳依赖性 质。建议采用表格描述每个用例。2.2用例2(标识符)详细说明更多用例,仿照2.1格式说明。3 测试结果对存在差异的测试结果进行分析, 并给出最终的测试结论.附录 3 多体制信号源用户姿态建模系统 测试用例说明书1 引言1.1 编写目的本文档根据软件多体制信号源用户姿态建模系统的需求说明书与设计说明书编写,用于 系统功能、性能测试。文档包含了各功能模块的测试用例,提供了针对系统进行完整测试的 解决方案。文档预期读者有多体制信号源用户姿态建模系统的软件开发人员、项目主管和后 期维护人员、系统测试人员等。1.2 背景网站的名称是华服如昔服饰网站,属于独立系统。华服如昔服饰网站需要进行系统测试 测试功能是否实现,功能的结果是否正确。本文档提供测试的指导。1.3 定义CGS2000: BD系统使用的大地坐标系。ECEF:地心地固坐标系。ECI :地心惯性坐标系。卫星导航系统:通过卫星信号为定位导航的系统,如:COMPASS、GPS、GLONASS、GALILEO。1.4 参考资料1 国防科技大学卫星导航研究中心.多体制高性能卫星导航信号模拟源技术研制技术要求R.北京:总装备部航天装备总体研究发展中心,2012.2.2 GB/T 9386-2008-T.计算机软件测试文档编制规范S.北京:中国标准出版社,2008.3 彭超.多体制信号源用户姿态建模系统需求规格说明书R.长沙:长沙学院计算机科学与技术系,2013.2 测试用例测试环境满足如下条件。操作系统:Windows操作系统(XP及以上);PC机配置:CPU主 频2.0GHz以上,内存1G以上,硬盘80G以上。测试过程中,各测试用例无特殊规程,故在此没有说明。在手动输入页码模块中,要求页码大于0,并且小于800,其单元测试如表2.1所示。表2.1页码输入限制测试用例测试用例编号:HKST-01测试用例名称:页码输入限制测试项:用户可输入页码,选择需要下载的开源数据。在页码输入框中输入1到799 的整数后,点击开始按钮,检查程序能否正常响应。输入说明: 在页码输入框中输入0,点击开始按钮; 在页码输入框中输入20,点击开始按钮; 在页码输入框中输入800,点击开始按钮。输出说明:所有操作,程序正常响应,开始抓取数据并且输出结果。测试结果:成功航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。航空公司能够统计一段时间内售出飞往某地的机票,需要测试该功能,我们采用等价类划分方法测试改功能。时间段售票统计等价类a测试合理输入的结果,详细说明如表2.2所示:表2.2时间段售票统计等价类a测试用例测试用例编号:HKST-02测试用例名称:时间段售票统计等价类a测试项:起始日期从2010年1月1日开始到当前日期;结束日期从2010年1月1日开始到当前日期,结束日期不能早于起始日期; 目的地只能从数据库中选择,若为空,则不限制地点。前置测试用例:航空公司管理员身份验证输入说明:1起始日期输入2010.10.1;2结束日期输入2010.12.1;3.目的地输入空;4点击确定按钮(字符界面程序通常没有这样的步骤)。输出说明:系统输出共有10张票售出。测试结果:成功时间段售票统计等价类 b 测试非法输入的结果,起始日期不符合要求,详细说明如表2.3 所示:表2.3时间段售票统计等价类a测试用例测试用例编号:HKST-03测试用例名称:时间段售票统计等价类b测试项:起始日期从2010年1月1日开始到当前日期;结束日期从2010年1月1日开始到当前日期,结束日期不能早于起始日期; 目的地只能从数据库中选择,若为空,则不限制地点。前置测试用例:航空公司管理员身份验证输入说明:1起始日期输入2009.9.15;2结束日期输入2011.12.1;3.目的地输入“长沙”4点击确定按钮(字符界面程序通常没有这样的步骤)。输出说明:系统提示:起始日期输入不合理。测试结果:成功时间段售票统计等价类C测试非法输入的结果,起始日期晚于结束日期不符合要求,详细说明如表 2.4 所示:表2.4时间段售票统计等价类c测试用例测试用例编号:HKST-04测试用例名称:时间段售票统计等价类c测试项:起始日期从2010年1月1日开始到当前日期;结束日期从2010年1月1日开始到当前日期,结束日期不能早于起始日期; 目的地只能从数据库中选择,若为空,则不限制地点。前置测试用例:航空公司管理员身份验证输入说明:1起始日期
展开阅读全文