《软件工程导论实验指导书2013版.doc》由会员分享,可在线阅读,更多相关《软件工程导论实验指导书2013版.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、朱建凯 何海江 汪祥 毛伟 编软件工程(导论)实验指导书长沙学院计算机科学与技术系2013年9月前 言软件工程(导论)是计算机类本科专业的重要专业基础课程,它是指导计算机软件开发和维护的一门科学,包含技术和管理两方面内容,是技术与管理紧密结合所形成的工程学科。同时软件工程对实践经验要求非常高的,中间的很多经验都需要在实践中去体会和认识。该实验指导书内容是在指导08、09、10三届学生的实验课程中不断总结完善,并按照2011版计科专业和软件工程专业的培养方案以及实验(实训)大纲重新对内容进行了组织和编排。整个实验按照六个实验来设计,全部完成需要32学时,在具体的教学过程中,可以灵活调整。在这六个
2、实验中,全部以一个航空售票点售票软件的程序设计作为主线来贯穿全部设计过程,按照软件项目开发的自然过程安排实验(实训),首先从需求分析、再到系统分析设计、编码和单元测试,其中顾及到结构化程序设计方法和面向对象程序设计方法,在需求建模和程序设计方面安排学生分别用这两个方法对这个开发任务分析和设计各进行了一次。通过这六个实验,基本了解和熟悉软件工程管理的几个主要过程,达到熟悉教材,理会软件工程管理理论的目的。该实验指导书是根据2011版计算机科学与技术专业培养方案对软件工程课程的教学要求,以及软件工程专业培养方案对软件工程导论实训课程的要求编写的实验指导书,其中计科专业实验课时数是20学时,软工专业
3、实训课时是32学时,因此本指导书只能按照32学时来设计,计科专业采用本实验指导书时必须适当调整内容。计算机专业实验室从2013年下学期开始所有的实验(实训)课程都不再提交纸质的实验报告而全部在网络实验平台上提交实验报告。报告的网址是:http:/218.196.43.18:8888/login.aspx。特别请同学们注意,每个实验之后都必须由指导教师现场在计算机上检查打分并录入系统之后,学生才能提交实验报告,然后老师再综合实验报告和现场检查的打分给每个实验项目打分。必须全部实验项目都及格,才会有实验分数,否则实验分数计零分,且必须补考或重新。本实验指导书中,实验一和实验二由朱建凯老师编写,实验
4、三和实验五由汪祥老师编写,实验四由毛伟老师编写,实验六由何海江老师编写。编者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基本功能要求航空公司售票点为给旅客乘机提供方便,需要开发一个机票预定系统。各个订票点把预定机票的旅客信息(姓名、性别、工作单
5、位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求)输入到联网的系统中,系统为旅客安排航班。当旅客确认航班并交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统核对无误即打印出机票给旅客。此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。2技术要求和限制条件(1)在分析系统功能时要考虑有关证件的合法性验证(如身份证、取票通知和交款发票)等。(2)对于本系统还应补充一下功能:1旅客延误了取票时间的处理2航班取消后的处理3旅客临时更改航班的处理(3)系统的外部输入项至少包括:旅客、旅行社和航空公司。(
6、4)系统支持现金支付和信用卡以及银行卡支付,不支持网上订票和网上付款。实验1:需求分析1、 实验目的学习结构化软件需求分析方法,掌握软件需求的表达方式和方法2、 实验类型 综合性实验3、 实验学时 4学时4、 实验原理及知识点数据流图;数据字典;数据加工说明需求规格说明书5、 实验环境(硬件环境、软件环境)硬件平台:普通个人计算机;软件:Windows XP,Microsoft Visio6、 实验内容及步骤认真分析第1页的用户需求并整理,逐条列出需求要求并对需求要求进行归类,设计需求编码规则对需求要求进行编号;设计数据流程图;设计数据字典;设计数据加工说明;根据设计出来的模型,重新调整前面整
7、理的需求初稿,最后按照软件需求规格说明书的格式写一份需求规格说明书。第一步:研究需求的内容,用自然语言逐条描述;第二步:逐条对需求分类并编号;第三步:绘制数据流程图;第四步:编写数据字典和数据加工说明;第五步:重新修订需求规格说明书7、 思考与练习需求规格说明书中,为什么要将需求逐条编上号,而且要对需求的描述非常准确,这样操作主要是为了什么?实验2:程序设计1、 实验目的学习软件的结构化设计方法,练习采用结构化设计方法完成程序设计任务的过程。2、 实验类型 综合性实验3、 实验学时 6学时4、 实验原理及知识点模块化程序设计理论;信息隐藏和局部化;面向数据流图的设计方法;PAD图5、 实验环境
8、(硬件环境、软件环境)硬件平台:普通个人计算机;软件:Windows XP,Microsoft Visio6、 实验内容及步骤以上一次实验课完成的数据流图为基础,按照数据流图的设计方法,选用事务流或者变换流的分析方法,设计出系统的总体结构,要求:l 完成从数据流图到模块结构图的转化,标记出各模块的输入数据和输出数据以及要完成的数据处理任务;l 画出层次图和HIPO图;l 从数据字典出发设计出数据的ER图,并把ER图转化为关系数据库模式;l 用PAD图和过程设计语言(伪码)来描述上面完成的各模块的设计任务;l 最后将上面完成的工作,以设计说明书的形式展现出来。第一步:复查并细化数据流图确定数据流
9、图具有变换特性还是事务特性;第二步:确定输入流和输出流的业务边界;第三步:设计出初步的模块分解图; 第四步:从初步的模块结构图得到最终的模块结构图(MSD);第五步:编写模块的输入数据,处理过程,输出数据(IPO);第六步:设计模块的PAD图以及过程设计语言描述;第七步:完成程序的设计说明书。7、 思考与练习用事务流分析方法和变换流分析方法,差别主要在什么地方。什么情况下用事务流分析法,什么情况下用变换流?软件系统设计过程中,如果能用过程设计语言先期设计好详细设计再进一步编程序有什么好处。和不搞详细设计直接到机器上写程序代码相比,感觉到会有什么差异,有什么好处。实验3:用例分析1、 实验目的学
10、习和掌握如何分析需求并绘制UML用例图,编写用例规约。2、 实验类型综合性实验3、 实验学时4学时4、 实验原理及知识点用例;参与者;包含关系;扩展关系;泛化关系;用例规约说明5、 实验环境(硬件环境、软件环境)硬件平台:普通个人计算机;软件:Windows XP,StarUML6、 实验内容及步骤研究最初的用户需求,找出系统的参与者;绘制出用例图;写用例规约;改造实验一编写的需求规格说明书。第一步:找出系统的参与者;第二步:找出系统的具体用例;第三步:确定参与者和用利,以及用例和用例之间的关系;第四步:编写每个用例的用例规约;第五步:改造实验一编写的软件需求规格说明书。7、 思考与练习结合本
11、实验说说面向对象需求分析和结构化需求分析的方法差异,优缺点。实验4:面向对象设计1、 实验目的在前面基础上按照课堂教学中要求完成系统的UML类图设计,绘制活动图、构件图、部分顺序图和部分状态图。2、 实验类型综合性试验3、 实验学时6学时4、 实验原理及知识点设计活动图,进一步理解需求;设计类图确定实现的操作和属性;设计构件图确定系统的整体结构;部分顺序图进一步确定详细设计;部分状态图进一步确定类的操作。5、 实验环境(硬件环境、软件环境)硬件平台:普通个人计算机;软件:Windows XP,StarUML6、 实验内容及步骤设计活动图、类图、构件图;设计部分顺序图、部分状态图修改实验二编写的
12、程序设计说明,变成一个面向对象的程序设计说明。第一步:设计活动图,进一步理解系统需求;第二步:初步设计类模型,确定属性和基本操作;第三步:设计构件图,初步确定系统的最终结构;第四步:设计部分关键业务的顺序图,机票和订单的状态图;第五步:修改和完善类模型和构件图;第六步:修编实验二已经完成的程序设计说明书。7、 思考与练习结合本机票预定系统,说明结构化设计和面向对象设计的差异,评价其优劣。顺序图和状态图设计什么情况下才需求,才最有利于未来的程序编码?实验5:程序实现1、 实验目的熟悉按照软件设计说明书来编写软件代码,锻炼学生编写程序的同时,必须严格按照设计说明来编码。2、 实验类型综合性试验3、
13、 实验学时6学时4、 实验原理及知识点数据库表结构的实现;程序界面的实现;出错处理界面的设计;程序和数据库的连接;软件开发卷宗的编写。5、 实验环境(硬件环境、软件环境)硬件平台:普通个人计算机;软件:Windows XP,MyEclipse6、 实验内容及步骤1、设计人机界面风格,出错处理;数据库表结构;2、设计所有的程序界面,编写和数据库连接的代码;3、设计代码实现程序界面之间的驱动和调用;4、编写程序代码说明书。第一步:在数据库中设计数据库表结构;第二步:确定界面设计风格,出错处理设计,变量定义规则,将其写入程序代码说明书;第三步:设计出所有需要的JSP静态页面;第四步:完成MyEcli
14、se中代码与底层数据库的连接和调用编程;第五步:修改设计好的JSP静态页面为动态页面,以展示数据库中的数据;第六步:实现各页面之间的调用和底层数据处理;第七步:完善程序代码说明书。7、 思考与练习结合设计过程,说说实验四设计的程序设计说明书是否在代码设计中起到了作用?你认为自己写的程序设计说明书还有哪些方面应该改进,以更对这个程序的编程有指导意义。实验6:软件测试1、 实验目的掌握黑盒测试技术、白盒测试技术,了解集成测试的策略,掌握测试用例的设计方法,提高文档撰写能力。通过机票预订系统的测试实例,使同学们熟悉软件测试的一般流程。2、 实验类型综合性实验3、 实验学时6学时4、 实验原理及知识点
15、单元测试;系统测试;验收测试;白盒测试;黑盒测试;测试报告5、 实验环境(硬件环境、软件环境)硬件平台:普通个人计算机;软件:Windows XP,Office,MyEclipse6、 实验内容及步骤采用白盒测试技术完成一个程序单元的单元测试;采用黑盒测试技术完成程序的系统集成测试;编写单元测试报告, 编写系统测试报告。第一步:研究由指导教师制定的单元模块的程序结构,确定白盒测试的测试策略;第二步:以该单元模块的顺序图为线索,设计单元的测试用例;第三步:执行单元测试过程,编写单元测试报告;第四步:以前面设计的活动图为线索,设计系统的测试用例;第五步:执行系统测试过程,编写系统测试报告。7、 思
16、考与练习单元测试通常由代码设计编写人员自己来完成,如何来保证单元测试过程的质量和效果呢?测试报告中存在有测试用例没有通过的情况,那么是否结论就是程序没通过测试?测试过程中的测试用例出现和期望的结果不一致情况,是否就是测试用例不通过?第二部分实验指导实验1: 需求分析实验指导需求编码应该完成对所有需求的整理,并对每项需求建立编号。需求编号示例:Srs-fun-1: 系统须能够录入旅客的订票信息;(表示“需求规约-功能需求-1”)Srs-fun-2:系统须能够提供给旅客可选的航班信息;(表示“需求规约-功能需求-2”)Srs-int-1:系统能从航空公司获取最新的航班信息及其票源信息;(表示“需求
17、规约-接口需求-1”)需求分类需求分为:功能性需求,性能需求,接口需求,设计约束,质量需求。数据流图数据流图反映数据的流动和处理过程,是和用户交流的极好交流工具。1 符号数据流图有四种基本符号:正方形(或立方体)表示数据的源点或终点;圆角矩形(或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头表示数据流,即特定数据的流动方向。2 例子假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。对于每个需要再次定货的零件应该列出下述数据:零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。零件入库或出库称为事务,通过放在仓库中的
18、CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。图1.1 定货系统的基本系统模型图1.2 定货系统的功能级数据流图图1.3 把处理事务的功能进一步分解后的数据流图3 命名1) 为数据流(或数据存储)命名(1) 名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分。(2) 不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)。(3) 起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的。2) 为处理命名(1) 通常先为数据流命名,然后再为与之相关联的处理命名。(2) 名字应该反映整个处理的功能。(3) 名字最好由一
19、个具体的及物动词加上一个具体的宾语组成。(4) 通常名字中仅包括一个动词。(5) 如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解。4 用途画数据流图的基本目的是利用它作为交流信息的工具。数据流图应该分层,并且在把功能级数据流图细化后得到的处理超过9个时,应该采用画分图的办法,也就是把每个主要功能都细化为一张数据流分图。数据流图的另一个主要用途是作为分析和设计的工具。数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用。1
20、 数据字典的内容一般说来,数据字典应该由对下列4类元素的定义组成:(1) 数据流(2) 数据流分量(即数据元素)(3) 数据存储(4) 处理2 定义数据的方法由数据元素组成数据的方式只有下述三种基本类型:(1) 顺序 即以确定次序连接两个或多个分量;(2) 选择 即从两个或多个可能的元素中选取一个;(3) 重复 即把指定的分量重复零次或多次。(4) 可选 即一个分量是可有可无的(重复零次或一次)。=意思是等价于(或定义为);+意思是和(即,连接两个分量); 意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量; 意思是重复(即,重复花括弧内的分量);( )意思是
21、可选(即,圆括弧里的分量可有可无)。举例:某程序设计语言规定,用户说明的标识符是长度不超过8个字符的字符串,其中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。使用上面讲过的符号,我们可以像下面那样定义标识符:标识符=字母字符+字母数字串字母数字串=0字母或数字7字母或数字=字母字符数字字符3 数据字典的用途数据字典最重要的用途是作为分析阶段的工具。在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户之间的通信,因此将消除许多可能的误解。对数据的这一系列严密一致的定义也有助于改进在不同的开发人员或不同的开发小组之间的通信。要求所有开发人员都根据公共的数据字典描述数
22、据和设计模块,则能避免许多麻烦的接口问题。加工说明对每一个数据流图中的加工给出一个加工说明。由于需求分析的目的是定义问题,因此对数据流图中的每一个加工只需给出加工的输入数据和输出数据之间的关系,即从外部来“视察”一个加工的逻辑。这个加工说明非常类似于面向对象分析中的用例规约,但这里的不同是仅仅需要考虑和描述数据间的相关性。需求规格说明书1引言1.1编写目的说明编写这份软件需求说明书的目的,指出预期的读者。1.2背景说明待开发的软件系统的名称;本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络;该软件系统同其他系统或其他机构的基本的相互来往关系。 2任务概述2.1目标叙述该项软件
23、开发的意图、应用目标、作用范围以及其他应向读者说明的有关该软件开发的背景材料。解释被开发软件与其他有关软件之间的关系。如果本软件产品是一项独立的软件,而且全部内容自含,则说明这一点。如果所定义的产品是一个更大的系统的一个组成部分,则应说明本产品与该系统中其他各组成部分之间的关系,为此可使用一张方框图来说明该系统的组成和本产品同其他各部分的联系和接口。|2.2用户的特点列出本软件的最终用户的特点,充分说明操作人员、维护人员的教育水平和技术专长,以及本软件的预期使甩频度。这些是软件设计工作的重要约束3功能需求 3.1 功能需求描述列出编了号的功能需求。3.2 数据流图3.2.1数据流图一画出数据流
24、图。加工说明:编号,加工名,输入流,输出流,加工逻辑3.2.2数据流图二画出数据流图。加工说明:编号,加工名,输入流,输出流,加工逻辑3.3输人输出要求数据字典放在这里。解释各输入输出数据类型,并逐项说明其媒体、格式、数值范围、精度等。对软件的数据输出及必须标明的控制输出量进行解释并举例,包括对硬拷贝报告(正常结果输出、状态输出及异常输出)以及图形或显示报告的描述。3.4故障处理要求列出可能的软件、硬件故障以及对各项性能而言所产生的后果和对故障处理的要求。4其他非功能性需求4.1设备环境要求(略)4.2设计约束要求列出支持软件,包括要用到的操作系统、编译(或汇编)程序、测试支持软件等。4.3接
25、口要求说明该软件同其他软件之间的接口、数据通信协议等。4.4程序性能要求说明需要管理的文卷和记录的个数、表和文卷的大小规模,要按可预见的增长对数据及其分量的存储要求作出估算。4.5软件质量要求如用户单位对安全保密的要求,对使用方便的要求,对可维护性、可补充性、易读性、可靠性、运行环境可转换性的特殊要求等。实验2: 程序设计实验指导层次结构图层次结构图用来描绘软件的层次结构。层次结构图中的一个矩形框代表一个模块,方框间的连线表示调用关系而不像层次方框图那样表示组成关系。图2.1是层次结构图的一个例子。图2.1 正文加工系统的层次结构图和H图中每个方框相对应,应该有一张IPO图描绘这个方框代表的模
26、块的处理过程。HIPO图中的每张IPO图内都应该明显地标出它所描绘的模块在H图中的编号,以便追踪了解这个模块在软件结构中的位置。图2.2 带编号的层次结构图(H图)结构分解图结构分解图是进行软件结构设计的另一个有力工具。结构分解图和层次结构图类似,也是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。图2.3 结构图的
27、例子产生最佳解的一般结构数据流图转变为层次结构图过程变换分析第1步 复查基本系统模型。第2步 复查并精化数据流图。应该对需求分析阶段得出的数据流图认真复查,并且在必要时进行精化。第3步 确定数据流图具有变换特性还是事务特性。一般地说,一个系统中的所有信息流都可以认为是变换流,但是,当遇到有明显事务特性的信息流时,建议采用事务分析方法进行设计。第4步 确定输入流和输出流的边界,从而孤立出变换中心。输入流和输出流的边界和对它们的解释有关,也就是说,不同设计人员可能会在流内选取稍微不同的点作为边界的位置。图2.4 具有边界的数据流图第5步 完成“第一级分解”。对于变换流的情况,数据流图被映射成一个特
28、殊的软件结构。图2.4说明了第一级分解的方法。位于软件结构最顶层的控制模块Cm协调下述从属的控制功能:输入信息处理控制模块Ca,协调对所有输入数据的接收;变换中心控制模块Ct,管理对内部形式的数据的所有操作;输出信息处理控制模块Ce,协调输出信息的产生过程。对于数字仪表板的例子,第一级分解得出的结构如图2.5所示。每个控制模块的名字表明了为它所控制的那些模块的功能。图2.5 第一级分解的方法图2. 6 数字仪表板系统的第一级分解第6步 完成“第二级分解”。所谓第二级分解就是把数据流图中的每个处理映射成软件结构中一个适当的模块。完成第二级分解的方法是,从变换中心的边界开始沿着输入通路向外移动,把
29、输入通路中每个处理映射成软件结构中Ca控制下的一个低层模块;然后沿输出通路向外移动,把输出通路中每个处理映射成直接或间接受模块Ce控制的一个低层模块;最后把变换中心内的每个处理映射成受Ct控制的一个模块。图2.7表示进行第二级分解的普遍途径。图2.7 第二级分解的方法虽然图中每个模块的名字表明了它的基本功能,但是仍然应该为每个模块写一个简要说明,描述:进出该模块的信息(接口描述);模块内部的信息;过程陈述,包括主要判定点及任务等;对约束和特殊特点的简短讨论。这些描述是第一代的设计规格说明,在这个设计时期进一步的精化和补充是经常发生的。第7步 使用设计度量和启发式规则对第一次分割得到的软件结构进
30、一步精化。图2.8 未经精化的输入结构图2.9 未经精化的变换结构图2.10 未经精化的输出结构对第一次分割得到的软件结构,总可以根据模块独立原理进行精化。得到尽可能高的内聚、尽可能松散的耦合,最重要的是,为了得到一个易于实现、易于测试和易于维护的软件结构。下面是某些可能的修改:输入结构中的模块“转换成rpm”和“收集sps”可以合并;模块“确定加速/减速”可以放在模块“计算mph”下面,以减少耦合;模块“加速/减速显示”可以相应地放在模块“显示mph”的下面。在这个时期进行修改只需要很少的附加工作,但是却能够对软件的质量特别是软件的可维护性产生深远的影响。图2.11精化后的数字仪表板系统的软
31、件结构事务分析虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在数据流具有明显的事务特点时,也就是有一个明显的“发射中心”(事务中心)时,还是以采用事务分析方法为宜。由事务流映射成的软件结构包括一个接收分支和一个发送分支。映射出接收分支结构的方法和变换分析映射出输入结构的方法很相像,即从事务中心的边界开始,把沿着接收流通路的处理映射成模块。对于一个大系统,常常把变换分析和事务分析应用到同一个数据流图的不同部分,由此得到的子结构形成“构件”,可以利用它们构造完整的软件结构。图2.12 事务分析的映射方法PAD图PAD是问题分析图(problem analysis diagram)的英文缩
32、写,自1973年由日本日立公司发明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。图5.10给出PAD图的基本符号。PAD图的主要优点如下:(1) 使用表示结构化控制结构的PAD符号所设计出来的程序必然是结构化程序。图2.13 PAD图的基本符号(2) PAD图所描绘的程序结构十分清晰。图中最左面的竖线是程序的主线,即第一层结构。随着程序层次的增加,PAD图逐渐向右延伸,每增加一个层次,图形向右扩展一条竖线。PAD图中竖线的总条数就是程序的层次数。(3) 用PAD图表现程序逻辑,易读、易懂、易记。PAD图是二维树形结构的图形,程序从图中最左竖
33、线上端的结点开始执行,自上而下,从左向右顺序执行,遍历所有结点。(4) 容易将PAD图转换成高级语言源程序,这种转换可用软件工具自动完成,从而可省去人工编码的工作,有利于提高软件可靠性和软件生产率。(5) 即可用于表示程序逻辑,也可用于描绘数据结构。(6) PAD图的符号支持自顶向下、逐步求精方法的使用。开始时设计者可以定义一个抽象的程序,随着设计工作的深入而使用def符号逐步增加细节,直至完成详细设计,如图6.6所示。PAD图是面向高级程序设计语言的,为FORTRAN,COBOL和PASCAL等每种常用的高级程序设计语言都提供了一整套相应的图形符号。由于每种控制语句都有一个图形符号与之对应,
34、显然将PAD图转换成与之对应的高级语言程序比较容易。图2.14 使用PAD图提供的定义功能来逐步求精的例子程序设计说明书1引言1.1编写目的说明编写这份概要设计说明书的目的,指出预期的读者。1.2背景说明:待开发软件系统的名称;列出此项目的任务提出者、开发者、用户以及将运行该软件的计算站(中心)。2程序设计说明2.1需求规定简要说明对本系统的主要的输入输出项目、处理的功能性能要求。2.2运行环境(略)2.3程序结构说明用层次结构图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的划分,扼要说明每个模块元素的标识符和功能,分层次地给出各元素之间的控制与被控制关系.2.5功能需求与程序的
35、关系本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:程序1程序2程序n功能需求1功能需求2功能需求n3接口设计3.1外部接口说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。3.2内部接口说明本系统之内的各个系统元素之间的接口的安排。4程序模块1(标识符)设计说明从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层 模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。4.1程序模块描述给出对该程序的
36、简要描述,主要说明安排设计本程序的目的意义,并且,还要说明本程序的特点(如 是常驻内存还是非常驻?是否子程序?是可重人的还是不可重人的?有无覆盖要求?是顺序处理还是并发处理等)。4.2功能说明该程序应具有的功能,可采用IPO图(即输入一处理一输出图)的形式。4.3输人项给出对每一个输入项的特性,包括名称、标识、数据的类型和格式、数据值的有效范围、输入的方式。数量和频度、输入媒体、输入数据的来源和安全保密条件等等。4.4输出项给出对每一个输出项的特性,包括名称、标识、数据的类型和格式,数据值的有效范围,输出的形式、数量和频度,输出媒体、对输出图形及符号的说明、安全保密条件等等。4.5算法详细说明
37、本程序所选用的算法,具体的计算公式和计算步骤。4.6注释设计说明准备在本程序中安排的注释,如:加在模块首部的注释;加在各分枝点处的注释;对各变量的功能、范围、缺省条件等所加的注释;对使用的逻辑所加的注释等等。5系统数据结构设计5.1逻辑结构设计要点给出本系统内所使用的每个数据结构的名称、标识符以及它们之中每个数据项、记录、文卷和系的标识、定义、长度及它们之间的层次的或表格的相互关系。5.2物理结构设计要点给出本系统内所使用的每个数据结构中的每个数据项的存储要求,访问方法、存取单位、存取的物理关系(索引、设备、存储区域)、设计考虑和保密条件。5.3数据结构与程序的关系说明各个数据结构与访问这些数
38、据结构的形式。6系统出错处理设计6.1出错信息用一览表的方式说朗每种可能的出错或故障情况出现时,系统输出信息的形式、含意及处理方法。实验3: 用例分析实验指导1 UML用例图的组成:1)系统边界(主体)n 系统边界是定义由谁或什么(即,参与者)使用系统,系统能够为哪些参与者提供什么特定利益(即,用例)。n 系统边界在UML中绘制为方框,用系统的名称作为标签,参与者绘制在边界外部,用例绘制在边界内部。例如:2)参与者-Actorn 参与者是系统外部的一个实体;n 参与用例的执行过程;n 通过向系统输入或请求系统输入某些事件来触发系统的执行;n 由参与用例时所担当的角色来表示;n 每个参与者可以参
39、与一个或多个用例。 (1) 参与者的表示强调:n Actor不是指人,而是指参与用例时所担当的角色。n 如果一个角色的操作是由另一个角色代理完成的,请建立该角色到另外角色之间的依赖。(2)参与者间的关系 超类参与者特殊化参与者特殊化参与者 客户 电话客户网上客户)用例-Use Case (1)用例的表示n 系统、子系统或类与外部的参与者(actor)交互的动作序列的说明,包括各种序列及出错序列。n 用例分析可以认为是对系统功能的分解。例如存款用例存款(2)怎样确定用例的粒度?n 用例的粒度(用例的大小)可大可小,一般一个系统易控制在20个用例左右。n 用例是系统级的、抽象的描述,不是细化的(是
40、做什么,非怎样做)n 对复杂的系统可以划分为若干个子系统处理。(3)怎样获取用例?n 参与者希望系统执行什么任务?n 参与者在系统中访问哪些信息(创建、存储、修改、删除等)?n 需要将外界的哪些信息提供给系统?n 需要将系统的哪个事件告诉参与者?n 如何维护系统?)关系-Relationship四种基本关系:n 关联(association)n 包含(include)n 扩展(extend)n 泛化(generalization)(1)关联n 描述参与者与用例之间的关系;n 用单向箭头,表示谁启动用例;n 每个用例都有角色启动,除包含和扩展用例;(2)包含n 是指两个用例之间的关系。其中一个用
41、例(基本用例,base use case)的行为包含了另一个用例(包含用例,inclusion use case)的行为。例如:(3)扩展n 也是指两个用例之间的关系。n 一个用例可以被定义为基础用例的增量扩展,称作扩展关系,可以类比面向对象编程里的继承.n 扩展关系是把新的行为插入到已有用例中的方法。n 基础用例即使没有扩展用例也是完整的。一般情况下基础用例的执行不会涉及扩展用例,只有特定条件发生,扩展用例才被执行。(4)泛化n 一个用例和其几种情形的用例间构成泛化关系。n 往往父用例表示为抽象用例。n 任何父用例出现的地方子用例也可出现。2. uml用例描述: 用例图:只能描述系统的大概功
42、能,是一种视图;用例描述:更详细地描述用例的功能。1)用例描述的组成n 用例名称n 简要说明/描述n 优先级n 参与者n 前置条件n 基本事件流n 其他事件流n 扩展点n 后置条件2)示例:用例名称:借书描述:图书管理员使用借书用例完成读者的借书活动,把图书从图书馆中借给读者需求编号:uc001优先级:A(高)角色:图书管理员,读者前置条件:图书馆员已成功登录系统并具有借书的权限主事件流:1.管理员选择“借书”选项,用例开始2.打开借书窗体3.读者输入读者证号,系统根据借阅规则检查读者借书有效性A1:读者无效4. 管理员输入待借阅的图书条码号,检查图书有效性A2:图书无效5系统登记一条新的借书
43、信息6系统检查读者预定信息A3:有预定7用例结束异常和分支事件流:A1:读者无效 (1).系统显示读者无效的提示信息 (2).返回主事件流第3步A2:图书无效 (1). 系统显示图书无效提示信息 (2). 返回主事件流第4步A3:有预定 (1). 系统提示预定信息,并取消预定 (2). 返回主事件流第7步后置条件:系统成功写入一条借书信息,读者当前的借书数量加1特殊需求:支持使用条码扫描仪输入读者证号和图书条码,借一本书时间不超过30秒实验4: 面向对象设计实验指导1 客户端UML类图设计分析分析客户端几点需求:1) 旅行社必须登录系统后才能使用系统功能2) 旅行社能根据始发地和目的地查询近期
44、航班3) 输入旅客预订信息(姓名、性别、工作单位、身份证号码(护照号码)旅行时间、旅行始发地和目的地,航班舱位要求)预定机票,预定机票时要交预定金,机票预定成功系统打印出取票通知和账单给旅客1) 旅行社必须登录系统后才能使用系统功能涉及的相关类及关系如下:2) 旅行社能根据始发地和目的地查询近期航班。这一功能点涉及到的类有,系统主界面,航班查询界面,航班等。涉及到的方法为查询航班,我们可以把查询航班方法放入航班预定类中,总体类图如下:3)输入旅客预订信息(姓名、性别、工作单位、身份证号码(护照号码)旅行时间、旅行始发地和目的地,航班舱位要求)预定机票,预定机票时要交预定金,机票预定成功系统打印出取票通知和账单给旅客。此处涉及到的类有旅客、预定界面、机票订单、航班预定类、取票通知、账单,涉及到的方法有用户信息验证方法,预定方法,打印通知,打印账单方法。旅客的信息包括姓名、性别、工作单位、身份证号码(护照号码);机票订单包括航班、旅客、座位号、预定状态。刚开始填写预定信息时为准备预定状态取票通知包括下机票订单时间、预定机票旅行社、预定旅客、取票有效时间和机票订单。账单包括机票订单、已交预定金账单中