软件工程期末复习考点总结

  • 格式:doc
  • 大小:77.00 KB
  • 文档页数:10

往年试卷考点总结1)软件危机的原因:○1软件规模越来越大○2结构越来越复杂○3开发费用不断提高○4开发技术落后○5开发工具落后○6生产效率提高缓慢○7软件开发管理困难、复杂2)软件工程三要素:方法、工具、过程3)软件可维护性度量的七个质量特性是可理解性、可测试性、可修改性、可靠性、可重用性、可使用性和效率.4)需求分析建三个模型:功能模型(数据流图)、数据模型(E-R图)、行为模型(状态转换图)5)功能内聚》顺序内聚(高)》通信内聚》过程内聚(中)》时间内聚》逻辑内聚》偶然内聚6)数据耦合(低)《控制耦合(中)《特征耦合《公共环境耦合(一个送、一个取:低;既送又取:低中之间)《内容耦合7)(1)耦合:是对一个软件结构内不同模块之间互连程度的度量;(2)内聚:标志着一个模块内各个元素彼此结合的紧密程度,是信息隐藏和局部化概念的自然扩展;(3)目标:○1产生一个模块化的程序结构;○2明确各模块之间的控制关系;○3通过定义界面,说明程序的输入输出流,进一步协调程序结构和数据结构8)加工逻辑一般用以下三种工具:结构化语言、判定表、判定树9)结构化语言是介于自然语言和形式语言之间的一种半形式语言。

10)软件需求是指用户期望的功能. 性能. 行为和设计约束11)软件设计应遵循的原则是抽象. 模块化. 局部化. 信息隐藏12)独立路径是指相对前面的路径至少引入一个新语句或一个新判断的路径13)调试途径:蛮干法、回溯法、原因排除法:对分查找法、归纳法、演绎法(一个个原因验证)14)改正性维、适应性维护、完善性维护、预防性维护15)软件工程是用工程、科学、数学的原则与方法研制, 维护计算机软件的有关技术及管理方法.16)规定功能的软件.在一定程序上对自身错误的作用(软件错误)具有屏蔽能力,则称此软件具有容错功能的软件.17)为了便于对照检查, 测试用例应由输入结构和预期的输出结构两部分组成.18)软件结构是以模块为基础而组成的一种控制层次结构.19)在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。

20)模块的独立性是模块化、抽象、信息隐藏和局部化概念的直接结果.程序测试是对编码阶段的语法错、语义错和运行错进行查找的编码执行活动。

21)需求分析的依据是可行性分析22)瀑布模型的存在问题是不适用可变需求23)在面向数据的分析方法中描述数据对象的图表是实体关系图24)面向数据流的分析方法是传统的结构化方法的一种25)A=MTBF/ (MTTR+MTTR)是指稳态可用性26)CoCoMo:静态单变量模型;CoCoMo:动态多变量模型27)软件复杂性度量的参数:规模、难度、结构、算法的难易程度28)模块的内部特性:算法、使用的数据29)容错系统的设计过程:(1)按设计任务要求进行常规设计,尽量保证设计的正确(2)对可能出现的错误分类,确定实现容错的范围(3)按照“成本——效率”最优原则,选用某种冗余手段(结构、、时间)来实现对各类错误的屏蔽(4)分析或验证上述冗余结构的容错效果。

如果效果没有达到预期的程度,则应重新进行冗余结构设计。

如此反复,直到有一个满意的结果为止。

一、概述1)CASE(Computer Aided Software Environment)2)软件:程序、数据、相关文档的集合3)软件危机:指在软件开发和维护过程中所遇到的一系列严重问题。

4)软件危机的原因:○1软件规模越来越大○2结构越来越复杂○3开发费用不断提高○4开发技术落后○5开发工具落后○6生产效率提高缓慢○7软件开发管理困难、复杂5)模块化的○1原理:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的要求○2原则:每个模块完成最小的独立功能,但模块数目应该适当,使得系统的开发成本最小。

○3原因:随着模块数目的增加,单个模块的成本减少,但模块间接口的开发成本增加6)消除软件危机的途径:A认识到软件的定义;B借鉴各种工程项目所积累的经验;C推广成功的开发软件的技术和方法;D使用和开发更好的软件工具7)软件工程支撑环境:把各个阶段使用的软件工具有机地集合成一个集体,支持软件开发的全过程。

8)软件工程:是指导计算机软件开发和维护的一门工程学科。

①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用与软件;②研究①中提到的途径。

9)软件工程方法学三要素:方法、工具和过程。

最广泛的方法学包括传统方法学和面向对象方法学。

传统方法学(结构化范型):主要是把软件生命周期的全过程一次划分为若干个阶段,然后顺序地完成每个阶段的任务。

#优点:提高软件开发的成功率和生产率;#缺点:当软件规模庞大或需求是模糊的或变化的时候,开发往往不成功;维护困难。

面向对象方法学(范型):4个要点(对象、类、继承、封装性)#优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。

10)生命周期:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码和单元测试、综合测试)、运行维护11)瀑布模型(带环)(传统的瀑布模型过于理想化了;增加“反馈环”)#优点:①可强迫开发人员采用规范的方法;②严格规定了每个阶段必须提交的文档;③要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。

#缺点:由于是一种文档驱动的模型,最终开发出的软件产品可能并不是用户真正需要的。

12)快速原型模型:#优点①可以通过快速构建起一个在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的办法,获取用户的真实需求;②本质是“快速”。

#缺点:①所选用的开发技术和工具不一定符合主流的发展;②快速建立起来的系统结构加上连续的修改可能会导致产品质量低下;③使用这个模型的前提是要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。

13)增量模型:#优点①能在较短时间内向用户提交可完成部分工作的产品;②逐步增加产品功能可以是用户有较充裕的时间学习和适应新产品,减少一个全新的软件对客户组织的冲击。

#缺点:要求软件具有开放的结构14)成本估计:代码行技术、任务分解技术、自动估计成本二、可行性(是否值得去解决)1)分析:技术、经济、操作可行性,(必要时法律、社会效益可行性)2)数据流图(DFD):是一种图形化技术,描绘信息流和数据从输入移动到输出过程中所经受的变换。

无具体物理部件3)数据流图的符号:○1正方形——数据的源点或终点;○2圆角矩形(或圆形)——交换数据的处理;○3开口矩形(或两条平行线)——数据存储;○4→——数据流4)数据字典的作用:在软件分析和设计的过程中给人提供关于数据的描述信息。

5)数据字典4类元素:①数据流;②数据流分量(即数据元素);③数据存储;④处理三、需求分析(系统必须做什么)1)需求分析的任务:①确定系统的综合要求;②分析系统的数据要求;③导出系统的逻辑模型;④修正系统开发计划——建立三种模型2)系统的综合要求:①功能需求(必须提供的服务);②性能需求(满足定时约束、容量约束);③可靠性和可用性需求(一定时间内出错次数);④出错处理需求(环境错误应该怎么响应);⑤接口需求(用户接口需求、硬件接口需求、软件接口需求、通信接口需求);⑥约束(遵守限制条件);⑦逆向需求(不应该做的事);⑧将来可能提出的需求3)需求分析需建立的三种模型:数据模型(E-R图)、功能模型(数据流图)、行为模型(状态图)4)验证软件需求的正确性的4个方面:○1一致性所有需求必须是一致的,任何一条需求不能和其他需求相互矛盾;○2完整性需求必须是完整的,规格说明书应包括用户需求的每个功能;○3现实性用现有的硬件技术或软件技术基本上能实现的;○4有效性需求是正确有效的,确实能解决用户面对的问题。

四、编码1)尽可能在定义变量的同时初始化该变量2)a = b = c = 0:称为复合表达式3)不可将浮点变量用“==”或“!=”与任何数字比较。

应该设法转化成“>=”或“<=”形式4)引用与指针的比较:○1引用被创建的同时必须被初始化(指针则可以在任何时候被初始化);○2不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL);○3一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)5)strcpy(b, a);// 不能用b = a;6)char (*a)[3];//数组的指针——char *a[3];//指针数组7)○1const int *pInt = &iVal; 同int const *pInt=&iVal;//指向可变,内容不可变○2int *const pInt = &iVal;//指向不可变,内容可变8)○1char *p = new char[5]; *p = “Abcds”;delete []p;○2char *p; p = (char*)malloc(sizeof(char)*5); free p;//malloc返回的是无符号指针,所以需要强制转换○3动态二维数组:double **p = NULL;p = new double* [5];for(int i=0;i<5;i++){ p[i] = new double [i+1];}9)引用:int s=3; int &ss = s;// 引用不占用内存10)调用函数时,非引用型形参的改变不会改变实参的值,而引用型形参会11)char *p = "hello world"; return p; //返回常量字符串char p[] = "hello world"; return p; //返回指向“栈内存”的指针,没有类型五、总体设计(概况地说系统如何实现)1)基本目的:概况地说系统如何实现。

2)主要阶段:系统设计阶段(确定系统的具体实现方案)、结构设计阶段(确定软件结构)3)设计原理:模块化(把程序划分成独立命名且可独立访问的模块)、抽象(抽出事物的本质,暂时不考虑细节)、逐步求精(为了能集中精力解决主要问题而尽量推迟对问题细节的考虑)3)模块化的原理:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的要求原则:每个模块完成最小的独立功能,但模块数目应该适当,使得系统的开发成本最小。

原因:随着模块数目的增加,单个模块的成本减少,但模块间接口的开发成本增加4)信息隐藏原理:使一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说是不可见的5)局部化:把一些关系密切的软件元素物理地放得彼此更靠近6)模块独立程度的度量标准:内聚和耦合(高内聚,低耦合)7)耦合的概念:是对一个软件结构内不同模块之间互连程度的度量。