《软件工程导论》实验指导书版Word格式文档下载.docx
《《软件工程导论》实验指导书版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《软件工程导论》实验指导书版Word格式文档下载.docx(43页珍藏版)》请在冰豆网上搜索。
需求分析实验指导……………………………………………………………………10
程序设计实验指导……………………………………………………………………15
用例分析实验指导……………………………………………………………………25
面向对象设计实验指导………………………………………………………………31
程序实现实验指导…………………………………………………………………34
软件测试实验指导……………………………………………………………………35
第一部分
实验内容
设计任务
题目:
机票预定系统
1.基本功能要求
航空公司售票点为给旅客乘机提供方便,需要开发一个机票预定系统。
各个订票点把预定机票的旅客信息(姓名、性别、工作单位、身份证号码(护照号码)、旅行时间、旅行始发地和目的地,航班舱位要求)输入到联网的系统中,系统为旅客安排航班。
当旅客确认航班并交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统核对无误即打印出机票给旅客。
此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。
2.技术要求和限制条件
(1)在分析系统功能时要考虑有关证件的合法性验证(如身份证、取票通知和交款发票)等。
(2)对于本系统还应补充一下功能:
1.旅客延误了取票时间的处理
2.航班取消后的处理
3.旅客临时更改航班的处理
(3)系统的外部输入项至少包括:
旅客、旅行社和航空公司。
(4)系统支持现金支付和信用卡以及银行卡支付,不支持网上订票和网上付款。
需求分析
1、实验目的
学习结构化软件需求分析方法,掌握软件需求的表达方式和方法
2、实验类型综合性实验
3、实验学时4学时
4、实验原理及知识点
数据流图;
数据字典;
数据加工说明
需求规格说明书
5、实验环境(硬件环境、软件环境)
硬件平台:
普通个人计算机;
软件:
WindowsXP,MicrosoftVisio
6、实验内容及步骤
认真分析第1页的用户需求并整理,逐条列出需求要求并对需求要求进行归类,设计需求编码规则对需求要求进行编号;
设计数据流程图;
设计数据字典;
设计数据加工说明;
根据设计出来的模型,重新调整前面整理的需求初稿,最后按照软件需求规格说明书的格式写一份需求规格说明书。
第一步:
研究需求的内容,用自然语言逐条描述;
第二步:
逐条对需求分类并编号;
第三步:
绘制数据流程图;
第四步:
编写数据字典和数据加工说明;
第五步:
重新修订需求规格说明书
7、思考与练习
需求规格说明书中,为什么要将需求逐条编上号,而且要对需求的描述非常准确,这样操作主要是为了什么?
程序设计
学习软件的结构化设计方法,练习采用结构化设计方法完成程序设计任务的过程。
3、实验学时6学时
模块化程序设计理论;
信息隐藏和局部化;
面向数据流图的设计方法;
PAD图
以上一次实验课完成的数据流图为基础,按照数据流图的设计方法,选用事务流或者变换流的分析方法,设计出系统的总体结构,要求:
●完成从数据流图到模块结构图的转化,标记出各模块的输入数据和输出数据以及要完成的数据处理任务;
●画出层次图和HIPO图;
●从数据字典出发设计出数据的ER图,并把ER图转化为关系数据库模式;
●用PAD图和过程设计语言(伪码)来描述上面完成的各模块的设计任务;
●最后将上面完成的工作,以设计说明书的形式展现出来。
复查并细化数据流图确定数据流图具有变换特性还是事务特性;
确定输入流和输出流的业务边界;
设计出初步的模块分解图;
从初步的模块结构图得到最终的模块结构图(MSD);
编写模块的输入数据,处理过程,输出数据(IPO);
第六步:
设计模块的PAD图以及过程设计语言描述;
第七步:
完成程序的设计说明书。
用事务流分析方法和变换流分析方法,差别主要在什么地方。
什么情况下用事务流分析法,什么情况下用变换流?
软件系统设计过程中,如果能用过程设计语言先期设计好详细设计再进一步编程序有什么好处。
和不搞详细设计直接到机器上写程序代码相比,感觉到会有什么差异,有什么好处。
用例分析
学习和掌握如何分析需求并绘制UML用例图,编写用例规约。
2、实验类型
综合性实验
3、实验学时
4学时
用例;
参与者;
包含关系;
扩展关系;
泛化关系;
用例规约说明
WindowsXP,StarUML
研究最初的用户需求,找出系统的参与者;
绘制出用例图;
写用例规约;
改造实验一编写的需求规格说明书。
找出系统的参与者;
找出系统的具体用例;
确定参与者和用利,以及用例和用例之间的关系;
编写每个用例的用例规约;
改造实验一编写的软件需求规格说明书。
结合本实验说说面向对象需求分析和结构化需求分析的方法差异,优缺点。
面向对象设计
在前面基础上按照课堂教学中要求完成系统的UML类图设计,绘制活动图、构件图、部分顺序图和部分状态图。
综合性试验
6学时
设计活动图,进一步理解需求;
设计类图确定实现的操作和属性;
设计构件图确定系统的整体结构;
部分顺序图进一步确定详细设计;
部分状态图进一步确定类的操作。
设计活动图、类图、构件图;
设计部分顺序图、部分状态图
修改实验二编写的程序设计说明,变成一个面向对象的程序设计说明。
设计活动图,进一步理解系统需求;
初步设计类模型,确定属性和基本操作;
设计构件图,初步确定系统的最终结构;
设计部分关键业务的顺序图,机票和订单的状态图;
修改和完善类模型和构件图;
修编实验二已经完成的程序设计说明书。
结合本机票预定系统,说明结构化设计和面向对象设计的差异,评价其优劣。
顺序图和状态图设计什么情况下才需求,才最有利于未来的程序编码?
程序实现
熟悉按照软件设计说明书来编写软件代码,锻炼学生编写程序的同时,必须严格按照设计说明来编码。
数据库表结构的实现;
程序界面的实现;
出错处理界面的设计;
程序和数据库的连接;
软件开发卷宗的编写。
WindowsXP,MyEclipse
1、设计人机界面风格,出错处理;
数据库表结构;
2、设计所有的程序界面,编写和数据库连接的代码;
3、设计代码实现程序界面之间的驱动和调用;
4、编写程序代码说明书。
在数据库中设计数据库表结构;
确定界面设计风格,出错处理设计,变量定义规则,将其写入程序代码说明书;
设计出所有需要的JSP静态页面;
完成MyEclise中代码与底层数据库的连接和调用编程;
修改设计好的JSP静态页面为动态页面,以展示数据库中的数据;
实现各页面之间的调用和底层数据处理;
完善程序代码说明书。
结合设计过程,说说实验四设计的程序设计说明书是否在代码设计中起到了作用?
你认为自己写的程序设计说明书还有哪些方面应该改进,以更对这个程序的编程有指导意义。
软件测试
掌握黑盒测试技术、白盒测试技术,了解集成测试的策略,掌握测试用例的设计方法,提高文档撰写能力。
通过机票预订系统的测试实例,使同学们熟悉软件测试的一般流程。
单元测试;
系统测试;
验收测试;
白盒测试;
黑盒测试;
测试报告
WindowsXP,Office,MyEclipse
采用白盒测试技术完成一个程序单元的单元测试;
采用黑盒测试技术完成程序的系统集成测试;
编写单元测试报告,编写系统测试报告。
研究由指导教师制定的单元模块的程序结构,确定白盒测试的测试策略;
以该单元模块的顺序图为线索,设计单元的测试用例;
执行单元测试过程,编写单元测试报告;
以前面设计的活动图为线索,设计系统的测试用例;
执行系统测试过程,编写系统测试报告。
单元测试通常由代码设计编写人员自己来完成,如何来保证单元测试过程的质量和效果呢?
测试报告中存在有测试用例没有通过的情况,那么是否结论就是程序没通过测试?
测试过程中的测试用例出现和期望的结果不一致情况,是否就是测试用例不通过?
第二部分
实验指导
实验1:
需求分析——实验指导
需求编码
应该完成对所有需求的整理,并对每项需求建立编号。
需求编号示例:
Srs-fun-1:
系统须能够录入旅客的订票信息;
(表示“需求规约-功能需求-1”)
Srs-fun-2:
系统须能够提供给旅客可选的航班信息;
(表示“需求规约-功能需求-2”)
Srs-int-1:
系统能从航空公司获取最新的航班信息及其票源信息;
(表示“需求规约-接口需求-1”)
需求分类
需求分为:
功能性需求,性能需求,接口需求,设计约束,质量需求。
数据流图
数据流图反映数据的流动和处理过程,是和用户交流的极好交流工具。
1符号
数据流图有四种基本符号:
正方形(或立方体)表示数据的源点或终点;
圆角矩形(或圆形)代表变换数据的处理;
开口矩形(或两条平行横线)代表数据存储;
箭头表示数据流,即特定数据的流动方向。
2例子
假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。
对于每个需要再次定货的零件应该列出下述数据:
零件编号,零件名称,定货数量,目前价格,主要供应者,次要供应者。
零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。
当某种零件的库存数量少于库存量临界值时就应该再次定货。
图1.1定货系统的基本系统模型
图1.2定货系统的功能级数据流图
图1.3把处理事务的功能进一步分解后的数据流图
3命名
1)为数据流(或数据存储)命名
(1)名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分。
(2)不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)。
(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是层次结构图的一个例子。
图2.1正文加工系统的层次结构图
和H图中每个方框相对应,应该有一张IPO图描绘这个方框代表的模块的处理过程。
HIPO图中的每张IPO图内都应该明显地标出它所描绘的模块在H图中的编号,以便追踪了解这个模块在软件结构中的位置。
图2.2带编号的层次结构图(H图)
结构分解图
结构分解图是进行软件结构设计的另一个有力工具。
结构分解图和层次结构图类似,也是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;
方框之间的箭头(或直线)表示模块的调用关系。
在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。
如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:
尾部是空心圆表示传递的是数据,实心圆表示传递的是控制信息。
图2.3结构图的例子——产生最佳解的一般结构
数据流图转变为层次结构图过程
变换分析
第1步复查基本系统模型。
第2步复查并精化数据流图。
应该对需求分析阶段得出的数据流图认真复查,并且在必要时进行精化。
第3步确定数据流图具有变换特性还是事务特性。
一般地说,一个系统中的所有信息流都可以认为是变换流,但是,当遇到有明显事务特性的信息流时,建议采用事务分析方法进行设计。
第4步确定输入流和输出流的边界,从而孤立出变换中心。
输入流和输出流的边界和对它们的解释有关,也就是说,不同设计人员可能会在流内选取稍微不同的点作为边界的位置。
图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”和“收集s