吉珠软件工程期末复习_第1页
吉珠软件工程期末复习_第2页
吉珠软件工程期末复习_第3页
吉珠软件工程期末复习_第4页
吉珠软件工程期末复习_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、吉珠软件工程期末复习整理整理者:LENG第一章1.1 软件工程:是指导计算机软件开发和维护的一门工程学科。(名词解释)采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 1.2 软件危机的7个典型表现:(简答)(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件

2、开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势 。1.3 产生软件危机的原因:(名词解释)(1)与软件本身的特点有关a.软件是逻辑部件。b.软件不会被“用坏”,如果发现了错误,很可能是开发时期引入。c.软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。(2)与软件开发与维护的方法不正确有关a.忽视软件需求分析的重要性。对用户要求没有完整准确的认识就匆忙着手编写程序。越早开始写程序,完成它所需要用的时间往往越长。b.认为软件开发就是写程序并设法使之运行。程序只是完整的软件产品的一个组成部分。一个软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。在

3、软件开发的不同阶段进行修改需要付出的代价是很不相同的。c.轻视软件维护。维护是极端艰巨复杂的工作,需要花费很大代价。软件维护的费用占软件总费用的55%70%。软件工程学的一个重要目标就是提高软件的可维护性,减少软件维护的代价。1.4三个时期八个阶段:可能考(填空,简答)三个时期:八个阶段:软件生命周期软件定义软件开发软件维护问题定义可行性研究需求分析概要设计详细设计编码和单元测试综合测试运行维护系统设计系统实现简答:问题定义任务:问题是什么通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告。经过讨论和必要的修改之后这份报告应该得到客户的确认。结果:关于系统规模

4、和目标的报告书可行性研究任务:有可行的解吗系统分析员需要进行一次大大压缩和简化了的系统分析和设计过程。研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。结果:系统的高层逻辑模型(数据流图、成本效益分析)可行性论证报告(立即进行/推迟进行/不能或不值得进行)需求分析任务:必须做什么主要是确定目标系统必须具备哪些功能。系统分析员必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。结果:系统的逻辑模型(数据流图、数据字典、简要的算法描述)用规格说明书准确地记录对目标系统的需求总体设计任务:如何解决已提出的问题设计出实现目标系统的几种可能的方案(低、中、高成本)。用适当的

5、表达工具描述每种方案,分析优缺点,推荐一个最佳方案,制定出实现最佳方案的详细计划。设计程序的体系结构。结果:可能的解法(系统流程图、成本效益分析)推荐的系统体系结构(层次图或结构图详细设计任务:怎样具体实现该系统详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。结果:每个模块的算法和数据结构(程序流程图、PAD图、N-S图等)编码和单元测试任务:得到正确的程序模块选取一种适当的高级程序设计语言(必要时用汇编语言),把详细设计的结果翻译成用选定的语言书写的程序;并且仔细测试编写出的每一个模块。结果:代码和测试报告综合测试任务:得到符合要求的软件通过集成测试、验收测试、现场测试、平行运行

6、等方法对目标系统进一步测试检验。通过对软件测试结果的分析可以预测软件的可靠性;反之,根据对软件可靠性的要求,也可以决定测试和调试过程什么时候可以结束。结果:测试计划、详细测试方案以及实际测试结果完整一致的软件配置软件维护任务:使系统持久地满足用户的需要改正性维护,诊断和改正在使用过程中发现的软件错误;适应性维护,修改软件以适应环境的变化;完善性维护,根据用户的要求改进或扩充软件;预防性维护,修改软件为将来的维护活动做准备。每一项维护活动实质上是经历了一次压缩和简化了的软件定义和开发的全过程。结果:完整准确的维护记录1.5瀑布模型 传统的瀑布模型 实际的瀑布模型1.6快速原型模型快速原型模型快速

7、原型:是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。 1.7增量模型 a.增量模型把软件产品作为一系列的增量构件来设计、编码、集成和测试。b.每个构件由多个相互作用的模块构成,并且能够完成特定的功能1.8螺旋模型螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。 1.9喷泉模型喷泉模型:是典型的面向对象生命周期模型。 “喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图中的中心垂线)作为总目

8、标。 选择题:1软件工程三要素是(B )A) 技术、方法和工具B) 方法、工具和过程C) 继承、对象和类D) 过程、模型、方法2软件生命周期中所花费用最多的阶段是(D)A 详细设计B软件编码C软件测试D软件维护下列关于瀑布模型的描述正确的是(C)。A. 瀑布模型的核心是按照软件开发的时间顺序将问题简化。B. 瀑布模型具由于良好的灵活性。C. 瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开D. 利用瀑布模型,如果发现问题则修改的代价很低。3包含风险分析的软件工程模型是 ( A )。A) 螺旋模型B) 瀑布模型C) 增量模型D) 喷泉模型4下列关于瀑布模型的描述正确的是(C)。A.

9、瀑布模型的核心是按照软件开发的时间顺序将问题简化。B. 瀑布模型具由于良好的灵活性。C. 瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开D. 利用瀑布模型,如果发现问题则修改的代价很低。5适合于面向对象方法学的软件生存周期模型是( B )A.瀑布模型B.喷泉模型 C.螺旋模型 D.增量模型填空题:请按顺序写出软件生命期的几个阶段_需求分析_,_概要设计_ ,_详细设计_,_编码_,_测试_,_维护_。A维护 B测试 C详细设计 D概要设计 E编码 F需求分析软件生存期的几个主要模型是: 瀑布模型、快速原型模型、增量模型、螺旋模型 、 喷泉模型 。2第二章2.1数据流图(必考)数据

10、流图 (DFD) :a.是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。b.在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。基本符号:(看书本2.4的例子)42页2.2数据字典(必考)数据字典:Ø 是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。Ø 数据流图和数据字典共同构成系统的逻辑模型。 例1(可能会考)标识符 = 字母字符 + 字母数字串字母数字串 = 0字母或数字7字母或数字 =字母字符数字字符 例2(可能会考)购书单=学号+姓名+书号+数量+单价+总价+书费合计学生用书表=学院编号+

11、专业编号+年级+书号年级= 1 | 2 | 3 | 4 学号=10数字102.3定义数据的方法方法:对数据自顶向下分解。 数据组成方式(三种基本类型):Ø 顺序 以确定次序连接两个或多个分量;Ø 选择 从两个或多个可能的元素中选取一个;Ø 重复 即把指定的分量重复零次或多次。符号:Ø =意思是等价于(或定义为);Ø +意思是和(即,连接两个分量);Ø 意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“|”号隔开供选择的分量;Ø 意思是重复(即,重复花括弧内的分量);常常使用上限和下限进一步注释表示重复的花括弧。&

12、#216; ( )意思是可选(即,圆括弧里的分量可有可无)。 例子:北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。请用定义数据字典的方法,定义上述的电话号码。l 电话号码=校内电话号码|校外电话号码l 校内电话号码=非零数字+ 3 位数字 /后面继续定义l 校外电话号码=本市号码|外地号码l 本市号码=数字零+8位数字l 外地号码=数字零+3位数字+8位数字l 非零数字=1|2|3|4|5|6|7

13、|8|9l 数字零0l 3位数字3数字3 /3至3个数字l 8位数字=非零数字+7位数字l 7位数字=7数字7l 数字0|1|2|3|4|5|6|7|8|9 需求分析过程应该建立3种模型,分别是: 数据模型 功能模型 行为模型 填空:数据流图中信息流的类型有(变换流 )和事务流。选择:1 .可行性分析研究的目的是( A )。A. 项目值得开发否 B.争取项目 C.开发项目 D.规划项目2 .面向数据流的软件设计方法,一般是把数据流图中数据流划分为(交换流和事务流B ),再将数据流图映射为软件结构。A、数据流和事务流B、交换流和事务流C、信息流和控制流D、交换流和数据流3 在数据流图中,圆代表(

14、 C)。 A.源点 B.终点 C.加工 D.模块4 需求分析阶段的任务是确定( D )A.软件开发方法 B.软件开发工具 C.软件开发费 D.软件系统的功能5 数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是(C )A数据库设计 B.数据通信 C数据定义 D数据维护3.第五章3.1设计原理模块化(名词解释) 模块:是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。 模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 逐步求精(名词解释) 逐步求精:为了能集中精力解决主要问题而

15、尽量推迟对问题细节的考虑。逐步求精是人类解决复杂问题时采用的基本方法,也是许多软件工程技术的基础。 Miller法则:一个人在任何时候都只能把注意力集中在(7±2)个知识块上。 模块独立:(名词解释) 模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。 希望这样设计软件结构,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。 模块独立程度的两个定性标准度量: 耦合衡量不同模块彼此间互相依赖(连接)的紧密程度。耦合要低,即每个模块和其他模块之间的关系要简单; 内聚衡量一个模块内部各个元素彼此结合的紧密程度。内聚要高,每个模块完成一个相对独立的特定子功

16、能。 1. 耦合 耦合:是对一个软件结构内不同模块之间互连程度的度量。 要求:在软件设计中应该追求尽可能松散耦合的系统。 可以研究、测试或维护任何一个模块,而不需要对系统的其他模块有很多了解; 模块间了解简单,发生在一处的错误传播到整个系统的可能性就很小; 模块间的耦合程度强烈影响系统的可理解性、可测试性、可靠性和可维护性。 耦合程度的度量:(1) 非直接耦合/完全独立(no direct coupling) 如果两个模块中的每一个都能独立地工作而不需要另一个模块的存在,那么它们完全独立。 在一个软件系统中不可能所有模块之间都没有任何连接。 耦合是影响软件复杂程度的一个重要因素。 应该采取下述

17、设计原则: 尽量使用数据耦合, 少用控制耦合和特征耦合, 限制公共环境耦合的范围, 完全不用内容耦合。 内聚程度的度量:(1) 偶然内聚(coincidental cohesion)Ø 如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫做偶然内聚。七种内聚的优劣评分结果: 高内聚:功能内聚 10分 顺序内聚 9分 中内聚:通信内聚 7分 过程内聚 5分 低内聚:时间内聚 3分 逻辑内聚 1分 偶然内聚 0分 设计时力争做到高内聚,并且能够辨认出低内聚的模块。 选择:1 模块的内聚性最高的是(    D  

18、60;) A.逻辑内聚         B.时间内聚 C.偶然内聚         D.功能内聚2 模块内聚度越高,说明模块内各成分彼此结合的程度越(B )。 A.松散 B.紧密C.无法判断 D.相等3 内聚程度最低的是( A)内聚A.偶然 B.过程 C.顺序 D.时间4 确定测试计划是在(A )阶段制定的.A 总体设计 B.详细设计 C.编码 D.测试4第6章6.1结构程序设计 经典定义:如果一个程序的代

19、码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个码块只有一个入口和一个出口,则称这个程序是结构化的。 更全面定义:结构程序设计是尽可能少用GOTO语句的程序设计方法。最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向GOTO语句。 3种基本的控制结构程序流程图:一张判定表由4部分组成: 左上部列出所有条件; 左下部是所有可能做的动作; 右上部是表示各种条件组合的一个矩阵; 右下部是和每种条件组合相对应的动作。 所有条件 条件组合矩阵 所有动作 条件组合 对应的动作必看PPT6.1判定表,判定树例题伪代码的基本控制结构:(最后大题) 简单陈述句结构:避免复合语句。 判定

20、结构:IF_THEN_ELSE或CASE_OF结构。 选择结构:WHILE_DO或REPEAT_UNTIL结构。例:检查订货单IF 客户订货金额超过5000元 THEN IF 客户拖延未还赊欠钱款超过60天 THEN 在偿还欠款前不予批准 ELSE (拖延未还赊欠钱款不超过60天) 发批准书,发货单 ENDIFELSE (客户订货金额未超过5000元) IF 客户拖延未还赊欠钱款超过60天 THEN 发批准书,发货单,并发催款通知书 ELSE (拖延未还赊欠钱款不超过60天) 发批准书,发货单2. 计算环形复杂度的方法(可能大题)看例题 环形复杂度定量度量程序的逻辑复杂度。有了描绘程序控制流的

21、流图之后,可以用下述3种方法中的任何一种来计算环形复杂度V(G)。V(G)=流图中的区域数V(G)=E-N+2 其中E是流图中的边数,N是结点数V(G)=P+1其中P是流图中判定结点的数目 V(G)=区域数 =4 V(G)=E-N+2 =11-9+2=4 V(G)=P+1 =3+1=45第7章7.2软件测试基础7.2.1 软件测试的目标 测试是为了发现程序中的错误而执行程序的过程; 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; 成功的测试是发现了至今为止尚未发现的错误的测试。7.2.2 软件测试准则(名词解释或简答) 所有测试都应该能追溯到用户需求; 应该远在测试开始之前就制定出

22、测试计划; 把Pareto原理应用到软件测试中; 应该从“小规模”测试开始,并逐步进行“大规模”测试; 穷举测试是不可能的; 为了达到最佳的测试效果,应该由独立的第三方从事测试工作。7.2.3 测试方法黑盒测试(功能测试): 把程序看作一个黑盒子; 完全不考虑程序的内部结构和处理过程; 是在程序接口进行的测试。白盒测试(结构测试): 把程序看成装在一个透明的盒子里; 测试者完全知道程序的结构和处理算法; 按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。黑盒测试与白盒测试优缺点比较:黑盒测试白盒测试优点适用于各阶段测试从产品功能角度测试容易入手生成测试数据可构成测

23、试数据使特定程序部分得到测试 有一定的充分性度量手段可获较多工具支持缺点某些代码得不到测试如果规格说明有误,则无法发现 不易进行充分性测试通常不易生成测试数据无法对未实现规格说明的部分进行测试工作量大,通常只用于单元测试,有应用局限性质一种确认技术,回答“我们在构造一个正确的系统吗?”一种验证技术,回答“我们在正确地构造一个系统吗?”7.43不同集成测试的比较方法优点缺点非渐增式没有错误隔离手段主要设计错误发现迟潜在可重用代码测试不充分需要驱动程序和存根程序自顶向下具有错误隔离手段主要设计错误发现早不需要驱动程序潜在可重用代码测试不充分需要存根程序自底向上具有错误隔离手段潜在可重用代码能充分测

24、试不需要存根程序主要设计错误发现迟需要驱动程序混合具有错误隔离手段主要设计错误发现早潜在可重用代码能充分测试 7.5.3 Alpha和Beta测试(名词解释) Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。Alpha测试是在受控的环境中进行的。 Beta测试由软件的最终用户们在一个或多个客户场所进行。开发者通常不在Beta测试的现场,因此,Beta测试是软件在开发者不能控制的环境中的“真实”应用。7.6白盒测试技术所谓测试方案包括具体的测试目的(例如,预定要测试的具体功能),应该输入的测试数据和预期的结果。通常又把测试数据和预期的输出结果称为测试用例

25、。7.6.1 逻辑覆盖 有选择地执行程序中某些最有代表性的通路是对穷尽测试的惟一可行的替代办法。 从覆盖源程序语句的详尽程度分析,大致有以下一些不同的覆盖标准: 语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 1. 语句覆盖 含义:选择足够多的测试数据, 使被测程序中每个语句至少执行一次。 分析: 执行路径sacbed 测试用例: A2,B0,X4 覆盖sacbed7.7 黑盒测试技术 黑盒测试着重测试软件功能,错误类型为: 功能不正确或遗漏了功能; 界面错误; 数据结构错误或外部数据库访问错误; 性能错误; 初始化和终止错误。 测试标准: 测试用例尽可能少; 一个测试用例能指出一

26、类错误。 7.7.1 等价划分(可能考) 等价划分是一种黑盒测试技术,把程序的输入域划分成若干个数据类,据此导出测试用例。 等价划分法力图设计出能发现若干类错误的测试用例,从而减少测试用例的数目。 每类中的一个典型值在测试中的作用与这一类中所有其他值的作用相同。 使用等价划分法设计测试方案首先需要划分输入数据的等价类。 常常还需要分析输出数据的等价类,以便根据输出数据的等价类导出对应的输入数据等价类。 7.7.2 边界值分析Ø 经验表明,处理边界情况时程序最容易发生错误。例如,许多程序错误出现在下标、纯量、数据结构和循环等等的边界附近。Ø 使用边界值分析方法设计测试方案首先

27、应该确定边界情况。选取的测试数据应该刚好等于、刚刚小于和刚刚大于边界值。Ø 通常设计测试方案时总是联合使用等价划分和边界值分析两种技术。 7.8 调试(名词解释) 调试是在测试发现错误之后排除错误的过程。 软件错误的外部表现和它的内在原因之间可能并没有明显的了解。 调试就是把症状和原因了解起来的尚未被人深入认识的智力过程。 7.8.2 调试途径有3种调试途径可以采用:蛮干法,回溯法,原因排除法 (填空) 蛮干法:蛮干法可能是寻找软件错误原因的最低效的方法。其他方法都失败时才使用这种方法。 这种方法印出内存的内容,激活对运行过程的跟踪,在程序中到处都写上WRITE(输出)语句。更多情况

28、下只会浪费时间和精力。必须首先进行周密的思考,有明确的目的,尽量减少无关信息的数量。原因排除法:对分查找法,归纳法,演绎法。(填空)归纳法:(名词解释) 是从个别现象推断出一般性结论的思维方法。 首先把和错误有关的数据组织起来进行分析,以便发现可能的错误原因。 然后导出对错误原因的一个或多个假设,并利用已有的数据来证明或排除这些假设。演绎法:(名词解释) 从一般原理或前提出发,经过排除和精化的过程推导出结论。 首先设想出所有可能的出错原因,然后试图用测试来排除每一个假设的原因7.9 软件可靠性7.9.1 基本概念软件可靠性: 程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。软件的

29、可用性: 程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。 稳态可用性Ass = 平均无故障时间MTTF/(平均无故障时间MTTF+平均维修时间MTTR) (可能选择题)选择:1 .软件测试方法中,黑盒、白盒测试法是常用的方法,其中黑盒测试主要用于测试(B )。A.结构合理性B.软件外部功能C.程序正确性D.程序内部逻辑2下面几种白箱测试技术,哪种是最强的覆盖准则(D )A语句覆盖 B条件覆盖 C判定覆盖 D条件组合覆盖第8章8.1 软件维护的定义 所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。 可分为4项活动: 改正性维护 适应性维护 完善性

30、维护 预防性维护 (看一下维护记录)第九章9.1 面向对象方法学概述 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。 也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。 面向对象方法具有4个要点: 对象:客观世界是由各种对象组成,任何事物都是对象,复杂的对象可以由简单的对象以某种方式组合而成。对象分解取代功能分解。 类:把所有对象都划分成各种对象类,每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。 继承:按照子类(或称为派生类)

31、与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。 消息:对象之间仅能通过传递消息互相了解。对象是进行处理的主体。9.4.1 类图的基本符号1. 定义 3个区域分别放类的名字、属性和服务。 下面两个区域可省略9.4.2 表示关系的符号类与类之间的关系有: 关联 表示两个类的对象之间存在某种语义上的了解。 聚集 表示类与类之间的关系是整体与部分的关系。 泛化(继承) 是通用元素和具体元素之间的一种分类关系 。 依赖和细化 依赖关系描述两个模型元素之间的语义连接关系;细化关系描述不同抽象层次上的同一个事物。 类图(class diagram)(可能综合题)看书本或PPTa.捕获系统的词汇表b.在开发过程中被创建和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论