《软件工程概念、原理》由会员分享,可在线阅读,更多相关《软件工程概念、原理(6页珍藏版)》请在金锄头文库上搜索。
1、1第一部分 传统软件开发方法重点内容1、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。2、软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。3、软件危机产生的原因一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。体现在:(1) 软件缺乏“可见性” ,软件开发过程的进展情况较难衡量、质量也较难评价。(2) 软件不会被“用坏” ,维护困难。(3) 软件规模越来越大,结构越来越复杂。(4) 软件开发方法和技术落后。4、软件生命周期一个软件从定义、开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常
2、把软件经历的这个漫长的时期称为软件生命周期。5、消除软件危机的途径(1)彻底消除 “软件就是程序”的错误观念。(2)必须充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。6、软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把正确的管理技术和最好的技术方法结合起来,以经济地开发出高质量的软件并有效地进行维护,这就是软件工程。7、面向对象方法学具有下述 4 个要点。(1)把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。(2)把所有对象都划分成类(class)。(3)按照父类(或称为基类)与
3、子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。(4)对象彼此间仅能通过发送消息互相联系。8、 (1)瀑布模型的特点:阶段间具有顺序性和依赖性推迟实现的观点质量保证的观点(2)瀑布模型优点:可强迫开发人员采用规范的方法(如结构化技术) ;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。(3)瀑布模型缺点:最主要的是“瀑布模型是由文档驱动的” ,在文档方面花费了在量的人力与物力。9、可行性研究的任务?(1) 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型;(2) 从系统逻辑模型中,选择问题的若干
4、种主要解法,研究每一种解法的可行性,为以后的行动提出建议;(3) 如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较好的解决方案,并为工程制定一个初步的计划。10、可行性研究的目的是确定问题是否值得去解决。至少应该从下述三方面研究其可行性:2 技术可行性使用现有的技术能实现这个系统吗? 经济可行性这个系统的经济效益能超过它的开发成本吗? 操作可行性系统的操作方式在这个用户组织内行得通吗? 必要时还应该从法律、社会效益等方面作进一步的研究。一般说来,可行性研究的成本只是预期的工程总成本的 5%10%。11、可行性研究有几个步骤?复查系统的规模和目标;研究目前正在使用的系统
5、;导出新系统的高层逻辑模型;进一步定义问题;导出和评价供选择的解法;推荐行动方针;草拟开发计划;书写文档提交审查。12、数据流图是一种图形化技术,它对系统的逻辑功能进行描绘,图中没有任何具体的物理元素,只是描绘数据在软件中流动和被处理的逻辑过程。13、画数据流图有几个步骤?要注意哪些事项?步骤: 首先画系统的输入/输出,即先画顶层数据流图。 画系统内部,即画下层数据流图。注意事项:数据流、处理要命名,处理要编号;每个处理(加工)至少有一个输入和输出数据流;画数据流而不是控制流;父图与子图的平衡;局部数据存储;可理解性。14、数据字典是关于数据的信息的集合,是对数据流图中包含的所有元素的定义的集
6、合。数据字典由下列 4 类元素组成:(1) 数据流(2) 数据项(即数据元素):组成数据流和数据存储的最小元素。(3) 数据存储(4) 处理15、有哪些验证软件需求的方法?(1)验证需求的一致性:审查软件需求规格说明书是否丰在冗余、遗漏、不一致等问题。(2)验证需求的现实性:分析利用现有的软、硬件技术实现目标系统的可能性。(3)验证需求的完整性和有效性:审查软件需求规格说明书是否完整、准确地描述目标系统的需求。16、总体设计基本目的就是回答“系统应该如何实现?”这个问题。这个阶段有两个任务:划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等;设计软件的结构,也就是要确定系统中每个程序
7、是由哪些模块组成的,以及这些模块相互间的关系。17、总体设计过程一般有几个步骤?设想供选择的方案选取合理的方案3推荐最佳方案功能分解设计软件结构设计数据库制定测试计划书写文档审查和复审18、模块是数据说明,可执行语句等程序对象的集合,它是构成程序的基本构件。模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把若干模块构成一个整体,完成用户需求。模块化的目的是使一个复杂的大型软件简单化。19、什么是模块独立性?写出模块独立性重要的理由。模块独立性是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单。模块独立性重要的理由主要有两条:第一,有效的模块化(
8、即具有独立的模块)的软件比较容易开发出来。第二,独立的模块比较容易测试和维护。20、耦合是对一个软件结构内不同模块之间互连程度的度量。内聚指模块功能强度的度量,即一个模块内部各个元素彼此结合的紧密程序的度量。数据耦合:指两模块之间有调用关系,传递的是简单的数据值。功能内聚:指模块内所有元素共同完成一个功能,缺一不可。21、结构程序设计有哪些好处? 开发出的程序结构层次清晰; 不使用 GOTO 语句,程序的静态和动态结构情况比较一致; 控制结构有确定的逻辑模式; 可重用的代码量大; 程序的逻辑结构清晰,有利于程序正确性证明。22、程序流程图的主要优点是:对控制流程的描绘很直观,便于初学者掌握。程
9、序流程图的主要缺点如下:程序流程图本质上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。程序流程图不易表示数据结构。23、N-S图的特点:功能域(即控制结构)明确,可以从盒图上一眼就看出来。不可能任意转移控制。很容易确定局部和全程数据的作用域。很容易表现嵌套关系,也可以表示模块的层次结构。24、PAD 图的主要优点如下: 使用 PAD 图设计出来的程序必然是结构化程序。 PAD 图所描绘的程序结构十分清晰。 用 PAD 图表现程序逻辑,易读、易懂、易记。 容
10、易将 PAD 图转换成高级语言源程序。 PAD 图的符号支持自顶向下、逐步求精方法的使用。425、PDL 具有的特点: 提供结构化控制结构、数据说明和模块化的特点; 自然语言的自由语法; 数据说明包括简单和复杂的数据结构; 提供模块定义和模块调用的各种接口描述模块。PDL 具有的优点: 可作为注释直接插在程序中间; PDL 的编辑和书可用普遍的正文编辑程序或文字处理系统; PDL 可以经自动处理程序,生成程序源代码。26、Jackson 图有哪些结构?它又有哪些优点?Jackson 图有三种结构:顺序结构、选择结构和重复结构。它有下面优点:便于表示层次结构,而且是对结构进行自顶向下分解的有力工
11、具;形象直观可读性好;既能表示数据结构也能表示程序结构。27、定量度量程序复杂程度的方法有哪三方面价值?把程序的复杂程度乘以适当常数即可估算出软件中错误的数量,以及软件开发需要的工作量。定量度量的结果可以用来比较两个不同的设计或两个不同算法的优劣;程序的定量的复杂程度可以作为模块规模的精确限度。28、选择程序设计语言的理想标准是:应该有理想的模块化机制,以及可读性好的控制结构和数据结构;应该使编译程序能够尽可能多地发现程序中的错误;应该有良好的独立编译机制。29、G.Myers 给出的关于测试的一些规则:(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚
12、未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。30、软件测试准则有几条?(1)所有测试都应该能追溯到用户需求。(2)应该远在测试开始之前就制定出测试计划。(3)把 Pareto 原理应用到软件测试中。(4)应该从“小规模”测试开始,并逐步进行“大规模”测试。(5)穷举测试是不可能的。(6)为了达到最佳的测试效果,应该由独立的第三方从事测试工作。31、软件测试是软件测试人员设计出一系列测试方案,竭力发现程序中存在的错误。测试阶段的根本目标是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。软件测试方法有两种:黑盒测试和白盒测试。(1)
13、黑盒测试法把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常工作。黑盒测试又称为功能测试。(2) 白盒测试法把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试。532、单元测试着重从哪几个方面对模块进行测试?模块接口局部数据结构重要的执行通路出错处理通路边界条件33、软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。软件可用性是程序在给定的时间点,
14、按照规格说明书的规定,成功地运行的概率。第二部分 面向对象软件开发方法重点内容1、对象的定义主要有下面几种形式:定义1:对象是具有相同状态的一组操作的集合。定义2:对象是对属性值和操作的封装。2、对象的特点(1)以数据为中心(2)对象是主动的(3)实现了数据封装(4)本质上具有并行性(5)模块独立性好3、类就是对具有相同数据和相同操作的一组相似对象的定义。也就是说,类是对具有相同属性和行为的一个或多个对象的描述。4、实例就是由某个特定的类所描述的一个具体的对象。5、消息就是某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,一个消息由下述3部分组成:接收消息的对象;消息选择符(也称
15、为消息名);零个或多个变元。6、方法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。7、属性就是类中所定义的数据,它是对客观实体所具有的性质的抽象。8、什么是用例?用例具有哪些特征?用例是系统完成的一系列动作,这些动作除了完成系统内部功能外,还包括与行为者的通信。用例具有下述特征:(1)代表某些用户可见的功能,实现一个具体的用户目标;(2)总是被行为者启动,并向行为者提供可识别的值;(3)必须是完整的。9、行为者是指与系统交互的人或其他系统,它代表外部实体。10、建立动态模型的步骤有:编写典型交互行为的脚本;从脚本中提取出事件,确定触发每个事件的动
16、作对象以及接受事件的目标对象;排列事件发生次序,确定每个对象可能的状态及状态间的转换,并用状态图描绘它们。 11、重用也叫再用或复用,是指同一软件元素不作修改或稍改动就可多次重复使用。广义地说,软件重用可分为以下 3 个层次:知识重用(如:软件工程知识的重用)。6方法和标准的重用(如:面向对象方法或国家制定的软件开发规范的重用)。软件成分的重用。12、继承是指能够直接获得已有的性质和特征,而不必重复定义它们。继承是子类自动地共享基类中定义的数据和方法的机制。13、多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。14、在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则该聚集称为组合聚集。15、什么是