好文档 - 专业文书写作范文服务资料分享网站

软件工程复习 - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

1、 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学

(Methodology)

2、 软件工程方法学3要素:

a. 方法:完成开发的技术,解决“怎样做”; b. 工具:为运用方法提供的软件工程环境;

c. 过程:任务的框架,规定了完成各项任务的步骤。

2、传统方法学

? 也称为生命周期方法学或结构化范型。

? 把 软件生命周期的全过程依次划分为若干阶段,然后顺序地完成每个阶段的任务。 ? 传统方法学应用十分广泛。 面向对象方法学

? 该方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操

作紧密地结合起来的方法。

比较:

? 传统方法学强调自顶向下顺序地完成软件开发的各阶段任务。

? 面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。 3、生命周期各阶段的任务 (1).问题定义

本阶段需要明确回答:“要解决的问题是什么?”。

系统分析员应该提出问题的性质、目标和规模的书面报告。通过对实际用户和使用部门的调查、研究,以及讨论、交流,得出一份双方都满意的文档。 (2) .可行性分析

本阶段需要回答的是:“上一阶段确定的问题有无可行的解决方案,是否值得解决?”。

更进一步明确项目的规模和目标,从技术可行性、经济可行性、操作可行性、法律可行性、社会可行性等方面进行研究,确定是否开发本项目。 (3).需求分析

本阶段确定为解决该问题,目标系统必须应具备哪些功能。 系统分析员在本阶段必须与用户密切配合,充分交流,得到经用户确认的系统逻辑模型,用数据流图、数据字典等描述系统的逻辑模型。

需求分析阶段所确定的系统逻辑模型是以后设计和实现目标系统的基础,必须准确、完整的体现用户的需求。 (4).总体设计

本阶段 确定目标系统的主要功能如何完成。采用流程图或其他工具描述出每种可能的系统,推荐出一个最佳的方案,并制定出实现该系统的详细计划。 本阶段的另一个主要任务是设计软件的结构,确定软件应由哪些模块构成,以及模块之间的关系。

还应考虑系统的开发和应用环境,如计算机系统的配置,计算机网络等。 (5).详细设计

详细设计阶段的任务就是把问题的求解具体化,设计出程序的详细规格说明。 通常用HIPO图(层次图/输入/处理/输出)或PDL语言(过程设计语言)描述详细设计的结果。 (6).编码和单元测试

本阶段的任务是编写软件程序。程序员应根据目标系统的要求,选取适合的程序设计语言,把详细设计的结果编制成程序,并对每一个模块进行单元测试。 需要考虑软件平台、开发工具等等。 (7).综合测试

本阶段的任务是通过各种测试以及相应的调试,使软件达到预定的要求。 应该把测试计划、测试方案、测试结果等以文档的形式保存下来,作为软件配置的一个组成部分。 (8).软件维护

软件维护的任务是,通过各种必要的维护活动使系统持久地满足用户的需要。 通常有4类维护活动:改正性维护;适应性维护;完善性维护;预防性维护。 每一项维护活动都应该准确地记录下来,作为正式的文档保存。

4、例:某航空公司规定,乘客可以免费托运不超过30公斤的行李。对超重部分:头等仓国内乘客4元/公斤;其他仓国内乘客6元/公斤;外国乘客比国内乘客多收一倍;残疾乘客比正常乘客少收一半。 判定表 判定树

5、 可行性研究的任务是什么? 6、 可行性研究的步骤?

7、以下面学生的奖学金评定为例,说明判定表的组织方法和应用。奖励的目的在于鼓励学生的品学兼优,此处理功能是要合理确定奖学金评定等级。决定受奖的条件为:成绩优秀占70%或50%以上,成绩为中或中以下占15%或20%以下,团结纪律为优良或一般者。奖励方案为一等奖、二等奖、三等奖、鼓励奖四种。因为受奖条件有些是相容的,相互组合的项较多。描述此学生奖励政策的判定表

1. 什么是“对象”? 试给出这7类对象的名称,并举例说明。

2. 什么叫面向对象?面向对象方法的特点是什么?为什么要用面向对象方法开发软

件?

3. 什么是“类”? “类”与传统的数据类型有什么关系?有什么区别?

4. 按照类生存期,类的开发有哪几种方式?每一种方式需要做哪些事情?

5. 面向对象开发方法与面向数据流的结构化开发方法有什么不同?使用面向对象开发

方法的优点在什么地方?

6. 面向对象的程序设计语言具有数据抽象、信息隐蔽、( A )等特征。作为运算单位的

对象应具有下列特性:( B )、( C )、( D )。( E )是面向对象的语言。

A:① 对象调用 ② 对象变换 ③ 非过程性 ④ 信息继承 ⑤ 并发性 B ~ D:① 对象把数据和处理数据的操作结合为一体 ② 在程序运行时对象都处于活动状态 ③ 对象在计算中可向其他对象发送消息 ④ 接受消息的对象必须给消息发送者以回答 ⑤ 对象的内部状态只根据外部送来的消息才操作

E:① C++,SMALLTALK,objectC ② C,Ada,Modula2 ③ PASCAL,C++,APL ④ Ada,objectC,C

7. 面向对象的需求分析过程主要分为两个阶段:论域分析和应用分析。试讨论它们各

自承担什么任务?如何衔接?

8. 使用面向对象设计方法进行设计,以建立系统的体系结构。这样的结构有哪几种主

要的组成部分?每一部分所承担的职责是什么?

9. 由RumBaugh等人提出的一种面向对象方法叫做对象模型化技术(OMT),即三视点

技术,它要求把分析时收集的信息建立在三个模型中。第一个模型是( A ),它的作用是描述系统的静态结构,包括构成系统的对象和类,它们的属性和操作,以及它们之间的联系。第二个模型是( B ),它描述系统的控制逻辑,主要涉及系统中各个对象和类的时序及变化状况。( B )包括两种图, 即( C )和( D )。( C )描述每一类对象的行为,( D )描述发生于系统执行过程中的某一特定场景。第三个模型是( E ),它着重于描述系统内部数据的传送与处理,它由多个数据流图组成。

A, B, E:① 数据模型 ② 功能模型 ③ 行为模型 ④ 信息模型 ⑤ 原型 ⑥ 动态模型 ⑦ 对象模型 ⑧ 逻辑模型⑨ 控制模型 ⑩ 仿真模型 C, D: ① 对象图 ② 概念模型图 ③ 状态迁移图 ④ 数据流程图 ⑤ 时序图 ⑥ 事件追踪图 ⑦ 控制流程图 ⑧ 逻辑模拟图 ⑨ 仿真图 ⑩ 行为图

10. 在面向对象软件设计过程中,应按如下要求进行类的设计:只有类的共有界面的成员才能成为使用类的操作,这就是软件设计的( A )原则。当且仅当一个操作对类的实例的用户有用时,它才是类公共界面的一个成员,这是软件设计的( B )原则。由同属一个类的操作负担存取或加工类的数据,这是软件设计的( C )原则。两个类之间的交互应当仅涉及参数表,这是软件设计的( D )原则。每个派生类应该当做基类的特殊化来开发,而基类所具有的公共界面成为派生类的共有界面的一个子集,这是软件设计的( E )原则。

A:① 过程抽象 ② 功能抽象 ③ 信息隐蔽 ④ 共享性 ⑤ 连通性 B:① 标准调用 ② 最小界面 ③ 高耦合 ④ 高效率 ⑤ 可读性 C:① 数据抽象 ② 低内聚 ③ 高内聚 ④ 低复杂度 ⑤ 低强度 D:① 显式信息传递 ② 高内聚 ③ 低内聚 ④ 相互操作性 ⑤ 连接性 E:① 动态联编 ② 异质表 ③ 信息隐蔽 ④ 多态性 ⑤ 继承性

问题处理描述:耗电记费系统可以采用固定价格收费、浮动价格收费和其他方式收费三种方式。若采用固定价格方式收费,对每月耗电100kW?h以下的用户只征收最低标准费,超过100kW?h的用户按价格表A收费;若采用浮动价格方式收费,则每月耗电100kW?h以下的用户按价格A收费,超过100kW?h的用户按价格B收费。

14.6 假设某程序读入三个整数,分别解释为三角形的各边,并据此打印信息,说明三角形是普通的、等腰的或等边的。为此程序设计一组有效的测试用例。 14.7 设计并实现上题说明的程序(必要的地方增加出错处理),用基本路径测试法设计测试用例,实际测试和调试后总结所得到的结果。 解:1)程序流程图如下:

2)C语言程序如下:

#include \ \main( )

{ int a ,b , c;

printf (\ scanf (\ while ( a<=0 || b<=0 || c<=0 )

{ printf ( \ scanf (\ }

if ( a+b <= c || abs (a-b) >= c ) printf (“It is not a triangle!\\n \ else if ( a==b )

if ( a==c ) printf ( \

else printf (\ \ else if (a==c ) printf (\ \ else if (b==c ) printf (\ \

else printf (\ triangle!\\n \}

3)程序图(流图)如下

1 2 R3 3 R1 4 6 7 15 R8 R9 R2 5 R10 R4 13 R7 9 10 R6 11 R5 8 17 16 14 12 18

4)求出巡回秩数:

①V(G)=E-N+2=26-18+2=10 ②V(G)=P+1=9+1=10

其中结点2、3、4、6、7、9、10、13、15是谓词结点 ③V(G)=10(个区域)

5)确定基本路径集合(10条)

路径1: 1 – 2 – 5 – 2 路径2: 1 – 2 – 3 – 5 – 2

路径3: 1 – 2 – 3 – 4 – 5 – 2

路径4: 1 – 2 – 3 – 4 – 6 – 8 – 18

路径5: 1 – 2 – 3 – 4 – 6 – 7 – 8 – 18

路径6: 1 – 2 – 3 – 4 – 6 – 7 – 9 – 10 – 11 – 18 路径7: 1 – 2 – 3 – 4 – 6 – 7 – 9 – 10 – 12 – 18 路径8: 1 – 2 – 3 – 4 – 6 – 7 – 9 – 13 – 14 – 18

路径9: 1 – 2 – 3 – 4 – 6 – 7 – 9 – 13 – 15 – 16 – 18

路径10:1 – 2 – 3 – 4 – 6 – 7 – 9 – 13 – 15 – 17 – 18 6)为每一条独立路径设计设计用例:

①路径1的测试用例:a = – 3, b = 4, c = 5; 期望结果:输出 出错:a , b , c must be > 0!

提示输入:please input a , b , c: ②路径2的测试用例:a = 3 , b = – 4 , c = 5 ; 期望结果:输出 出错:a , b , c must be > 0!

提示输入:please input a , b , c: ③路径3的测试用例:a = 3 , b = 4 , c = – 5 ; 期望结果:输出 出错:a , b , c must be > 0!

提示输入:please input a , b , c: ④路径4的测试用例:a = 3 , b = 1 , c = 5 ; 期望结果:输出 : It is not a triangle! ⑤路径5的测试用例:a = 3 , b = 7 , c = 2; 期望结果:输出 : It is not a triangle! ⑥路径6的测试用例:a = 3 , b = 3 , c = 3 ; 期望结果:输出 : It is a equilateral triangle!

⑦路径7的测试用例:a = 3 , b = 3 , c = 5 ; 期望结果:输出 : It is a isosceles triangle!

⑧路径8的测试用例:a = 3 , b = 4 , c = 3 ; 期望结果:输出 : It is a isosceles triangle!

⑨路径9的测试用例:a = 3 , b = 4 , c = 4 ; 期望结果:输出 : It is a isosceles triangle!

⑩路径10的测试用例:a = 3 , b = 4 , c = 5 ; 期望结果:输出 : It is a general triangle!

? 题型:判断题、填空题、单选题、改错题、名词解析、简答题、分析与设计题、综

合题等。

? 有效性(确认)测试(Validation Testing)是在模拟环境(或开发环境)下运用白盒法

(white-box),验证软件特性是否与需求符合。

? 从设计软件产品开始到产品不能再使用时为止的时间周期称为软件生命(存)周期。

软件生存周期通常包括需求分析阶段、设计阶段、实现阶段、测试阶段、安装和验收阶段、运行和维护阶段,有时还包括引退阶段。

? 原型化方法的基本思想是花费少量代价建立一个可运行的系统,是用户及早获得学

习的机会。在使用快速原型法进行软件开发之前,必须准确了解用户的需求。原型法特别适合于开发探索型、实验型的软件,它能减少系统开发的风险。 ? 软件工程过程应该以软件设计为中心,关键是编写程序。

? 模块内聚性(Cohesion)是模块独立性的重要度量因素,在下述的几类内聚性中,具

有最强内聚性的一类是( )。

A. 顺序型内聚 B. 通信型内聚 C. 功能型内聚 D. 偶然型内聚

? 无论什么样的应用领域、项目规模和项目复杂性,软件工程(Software Engineering)

工作都可以分为三个阶段:定义(definition)阶段(做什么),开发(development)阶段(如何做)和维护(maintenance)阶段(如何改)。下述哪个(些)工作应属于软件开发阶段的内容?( ) ……

? ……下述哪个(些)工作应属于软件开发阶段的内容?( ) ①软件测试 ②可行性研究 ③软件设计 ④编程(编码)

A. ①、②和③ B. ①、③和④ C. ②、③和④ D. 全部

? 按照软件工程的观点,软件(Software)应由 、数据(Data)和文档

(documents)三部分组成。

答案:程序(Programs)

? 是用作为硬件工程、软件工程、数据库工程和人力工程等系统元素基础的一份文档。

它描述将要开发的基于计算机的系统的功能、性能和限制等。说明书界定了这些系统元素的范围。

答案:系统规格说明书

? 软件维护(maintenance)时,对测试阶段未发现的错误进行测试、诊断、定位、纠错、

修改、回归测试的过程称为 。

答案:纠错性维护

? 自顶向下的方式在集成测试(Integration testing)过程中,如果想首先实现和验证一

个完整的软件功能,那么应该选用 的组装方式。

答案:深度优先

? 软件工程经验证明:软件开发中要掌握40-20-40规则,它强调了软件开发中的设计、

编程和测试。

答案:分析、设计

? 软件的适应性(Adaptive)维护是一个设计的恢复过程,它是通过对一个程序(系统)

进行分析,然后力图在比源代码更高抽象层次上建立程序表示的过程。

答案:逆向工程 或 反推工程

名词解释 1、软件危机 2、软件工程 3、软件生命周期 4、数据字典 5、信息隐蔽 6、耦合性 7、回归测试 8、完善性维护 9、软件质量 10、多态性

11、软件复用

1、简述软件(Software)具有的特点。 2、什么是软件生存周期模型(Software life cycle model)?列出目前比较常用的一些主要的软件过程模型?

3、简述瀑布式软件开发模型的特点。 4、为什么要把软件分解为模块(Module)? 5、信息隐蔽(Information hiding) 6、谈谈增量模型常用的一些场合

7、说明结构化程序设计(SP:Structured Program)的主要原则。 8、概述软件测试的主要原则。

9、根据你的理解,谈谈一份可行性研究报告应该包括的主要内容。

10、简述(用户定制的)软件测试的主要步骤,并简要说明各测试步骤的目的。 11、概述面向对象的软件开发方法的特点。

概述需求分析阶段的基本任务。

1. 模块独立性:模块具有独立功能,且和其他模块之间没有过多的相互作

用。即每个模块完成一个相对独立的特定子功能,且和其他模块之间的关系很简单。是软件划分模块时要遵守的准则,也是判断模块构造是否合理的标准。

1) 度量模块独立性的准则:内聚、耦合。

? 内聚:是模块功能强度(即一个模块内部各个元素彼此结合的紧密程度)的度量。模块内部各元素之间联系越紧密,内聚性越强。 ? 耦合:是模块之间相对独立性(即互相连接的紧密程度)的度量。模块间连接越紧密,联系越多,耦合性越强。

? 模块的独立性越高,其块内联系越紧密(内聚性强),块间联系越弱(耦合性越弱) 2) 内聚

内聚:模块内部各个元素彼此结合的紧密程度的度量。 内聚标志一个模块内各个元素彼此结合的紧密程度。

常见的内聚:

(1)功能内聚 :模块内所有处理元素属于一个整体,完成一个单一的功能。(10分)

(2)顺序内聚:一个模块内的处理元素和同一个功能密切相关,而且这些处

理必须顺序执行(通常一个处理元素的输出数据作为下一个处理元素的输入数据) 。(9分)

(3)通信内聚:模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据。(7分)

(4)过程内聚:一个模块内的处理元素是相关的,而且必须以特定次序执行。(5分)

(5)时间内聚:一个模块包含的任务必须在同一段时间内执行。(3分) (6)逻辑内聚:一个模块完成的任务在逻辑上属于相同或相似的一类。(1分)

(7)偶然内聚:一个模块完成的一组任务之间即使有关系,关系也是很松散的。(0分)

设计软件时应该力求做到高内聚(功能内聚和顺序内聚),通常中等程度的内聚(通信内聚和过程内聚)也是可以使用的,而且效果和高内聚相差不多;但是,低内聚(偶然内聚、逻辑内聚和时间内聚)效果很坏,不要使用。

弱 强 偶然逻辑时间过程通信顺序功能内聚 内聚 内聚 内聚 内聚 内聚 内聚 低 内 聚 中 内 聚 高 内 聚 ? 偶然内聚:模块内部各组成成分在功能上是互不相关的。

例:几个模块都需要执行“读A”,“写B”等相同的一组操作,为避免重复书写,可把这些操作记成一个模块,供有关模块调用。

? 逻辑内聚:通常由若干个逻辑功能相似的成分组成。

例:一个用于计算机全班学生平均分和最高分的模块,无论计算那种分数,都要经过读入全班学生分数。进行计算、输出计算结果等步骤,除了中间计算外均相同。(两种逻辑相似的功能放入同一模块省去程序中的重复。但却引入用作判断的开关量,增加了块间耦合)。

? 时间内聚:模块所包含的成分是由相同的执行时间联结在一起的。

例:初始化模块中可能包含“为变量赋初值”,“打开某个文件”等为正式处理做准备的功能。

? 过程内聚:一个模块内部的处理是相关的,是必须按某一特定次序执行。

例:打开文件,读写文件,关闭文件。

? 通信内聚:模块内部各个成分都使用同一个输入数据。或者产生同一个

输出数据。借共用数据联系在一起。 例:

? 顺序内聚:模块中各组成成分是顺序执行的,一个处理框的输出是下一

处理框的输入。

例:读入分数,计算平均分,输出结果。

? 功能内聚:模块中的所有成分结合在一起,用于完成一个单一的功能。 例:对一个数开平方;求一组数的最大值;从键盘读入一行字符等。 3) 耦合

耦合:软件结构中各个模块之间相互关联程度的度量。

模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。 在软件设计中应该追求尽可能松散耦合的系统。模块间耦合松散,有助于提高系统的可理解性、可测试性、可靠性和可维护性。

常见的耦合:

(1)数据耦合:如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据。

(2)控制耦合:传递的信息中有控制信息(尽管有时这种控制信息以数据的形式出现)

(3)特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时出现。

(4)公共环境耦合:模块之间通过一个公共数据环境相互作用。

(公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等)。

(5)内容耦合:最高程度的耦合。下述情况之一: 一个模块访问另一个模块的内部数据;

一个模块不通过正常入口而转到另一个模块的内部; 两个模块有一部分程序代码重叠; 一个模块有多个入口。

设计原则:

尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。

弱 强 非直数据特征控制外部公共内容接耦耦合 耦合 耦合 耦合 耦合 耦合 合 弱 耦 合 中耦较 强 耦 强耦合 合 合 ? 非直接耦合:模块之间没有直接关系,它们之间的联系完全是通过主

模块的调用和控制来实现的。

? 数据耦合:模块间通过简单变量所组成的参数表(不是控制参数,数

据结构或外部变量)交换数据。

? 特征耦合:模块间通过数据结构所组成的参数表交换数据。 例:房租水电=房租+用水量+用电量(传递参数)。

? 控制耦合:一个模块通过传递开关,标志,名称等控制信息,明显地

控制选择另一个模块功能。

例:计算平均分,最高分。

? 外部耦合:一组模块都访问同一个全局简单变量。(不是数据结构,而

且不是通过参数表传递的该全局变量的信息)。

? 公共耦合:一组模块都访问同一个公共数据环境(全局数据结构、共

享的通信区内存的公共覆盖区等)。

? 内容耦合:两个模块之间发生以下情形。(汇编语言中较多,高级语言

中已基本度绝)。

? 一个模块直接访问另一个模块的内部数据。 ? 一个模块不通过正常入口转到另一模块内部。 ? 两个模块有一部分代码重叠。 ? 一个模块有多个入口。

画出与下面的程序流程图相对应的N-S图、PAD图和程序图: 1. 程序流程图

某城市的电话号码由3部分组成,这3部分的名称和内容为: 地区码:空白或3位数字; 前 缀:非‘0’或‘1’开头的3位数字; 后 缀:4位数字。 假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,试用等价分类法设计它的测试用例。 下图显示了某程序的逻辑结构。试为它设计足够的测试用例,分别实现对程序的:判定覆盖、条件覆盖、条件组合覆盖 程序结构:(如图所示)

1. 测试设计策略:

? 在综合测试及其后的测试阶段,采用黑盒测试方法,策略包括: 1) 用等价分类法和(或)边值分析法提出基本的测试用例。 2) 用猜错法补充新的测试用例。

3) 如果程序的功能说明中含有输入条件的组合,宜在一开始就用因

果图法,然后再按1)、2)两步进行。

? 单元测试的策略是把白盒法与黑盒法结合运用。 2. 设计举例:(书:P148)

某三角形程序的功能为:读入代表三角形边长的3个整数,判断它们能否组成三角形。如果能够,则输出三角形是等边、等腰或任意三角形的识别信息。试为此程序设计一组测试用例。(本例将先用黑盒法设计测试用例,然后用白盒法进行检验与补充) 程序结构:(如图所示)

第一步:运用等价分类法划分与定义等价类,然后用边值法和猜错法补充。(如

图所示)

第二步:选择测试数据,得出22个基本的测试用例。(如图所示)

第三步:用白盒法检验第二步产生的测试用例(如图所示)。结果表明,只须使用22个例子中的前8个,就能满足程序图的完全覆盖。可见对于本例来讲,用黑盒法设计的测试用例已经足够用,不必再进行补充。

能力成熟度的5个等级从低到高依次是: 初始级(又称为1级),可重复级(又称为2级),已定义级(又称为3级),已管理级(又称为4级)和优化级(又称为5级)。

软件工程复习 - 图文 

1、通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(Methodology)2、软件工程方法学3要素:a.方法:完成开发的技术,解决“怎样做”;b.工具:为运用方法提供的软件工程环境;c.过程:任务的框架,规定了完成各项任务的步骤。2、传统方法学?也称
推荐度:
点击下载文档文档为doc格式
1qmc38p1u085bn78adhr
领取福利

微信扫码领取福利

微信扫码分享