您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程考试重点(灰常重要)
1、软件危机定义、发生原因、常见表现,如何避免软件危机?(1)软件危机定义:课本Page8(开发和维护过程)(2)发生原因、常见表现:课本Page8-9,练习册Page1(3)如何避免:Page10(采用软件工程的方法)答案(由于大部分答案参考ppt,故仅供参考,下同)软件危机定义:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。表现在:(1)对于软件开发的成本和进度的估计很不准确。(2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。(3)开发的软件可靠性差。(4)软件通常没有适当的文档。(5)软件的可维护性差。(6)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。原因:(1)软件的规模愈发庞大;(2)软件开发的管理困难。(3)软件本身的独有特点确实给开发和维护造成一些客观困难。(4)软件开发和维护中千金错误认识和方法的形成可以归结与计算机发展早期软件开发的个体化特点。(5)软件开发技术落后。(6)生产方式落后。(7)开发工具落后,生产率提高缓慢。如何避免(参考,可以自己总结):从软件开发的工程化方法入手,即用现代工程的概念原理、技术和方法去指导软件的开发、管理和维护,这就是软件工程思想和方法。具体措施:(1)使用好的软件开发技术和方法;(2)要有良好的组织、严密的管理,各类人员协同配合,共同完成任务;(3)使用好的软件开发工具,提高软件生产率;(4)建立严格的文档资料,重视软件开发过程的阶段评审。2、软件生命周期模型(软件生命周期?)的组成,每个阶段的内容?(1)组成:Page21(2)内容:Page22—25)答案:软件生存周期定义:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期一般可分为以下阶段:(1)问题定义(2)可行性研究(3)需求分析(4)概要设计(总体设计)(5)详细设计(6)编码(7)测试(8)维护也可以分为四个大的阶段:软件分析、软件设计、编码与测试、运行与维护(1)软件分析时期;任务:确定软件项目的目标,软件应具备的功能和性能,构造软件的逻辑模型,并制定验收标准。在此期间,要进行可行性论证,并做出成本估计和经费预算,制定进度安排。进行可行性研究和项目开发计划,需求分析。(2)软件设计时期;任务:a.设计软件的总体结构;b.设计软件具体模块的实现算法;c.软件设计结束之前,也要进行有关评审,评审通过后才能进入编码时期。(3)编码与测试时期;任务:组织程序员将高驻地的软件“翻译”成计算机可以正确运行的程序;并且要经过按照软件分析中提出需求要求和验收标准进行严格的测试和审查。根据具体软件的特点,决定是否划分成一些阶段,如编码、单元测试、集成测试、验收测试等等。(4)运行与维护时期。任务:软件运行过程中可能由于各方面的原因,需要对它进行修改。3、瀑布模型、原型模型、增量模型的特点,如何选择这些模型?(1)瀑布模型:Page25-27(特点:Page28第二点;使用场合:特点的最后一点)(2)原型模型:Page27-28(特点:Page27;场合:Page28三点)(3)增量模型:Page28)参考答案:瀑布模型:(1)定义:是将软件生命周期各活动规定为依线性顺序联接的若干阶段的模型,是一种整体开发模型。里程碑或基线驱动或者说文档驱动。过程逆转性很差,或者说不可逆转。(2)优点:严格按照生命周期的各个阶段来进行开发,强调了每一阶段的严格性。这样就能解决在开发阶段后期修正不完善的需求说明将花费巨大的费用的问题。在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大作用。(3)缺点:它是一种理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。故适用于功能明确、完整、无重大变化的软件开发。如:编译系统、数据库管理系统和操作系统。(4)适用场合:●在开发时间内需求没有或很少变化。●分析设计人员对应用领域很熟悉。●低风险项目(对目标、环境很熟悉)。●用户使用环境很稳定。●用户除提出需求以外,很少参与开发。原型模型:(1)定义:以某个软件原型为参照模型的开发方法,叫做原型法。(原型驱动)(2)原理:在初步需求分析之后,马上向客户展示一个软件产品原型,对客户进行培训,让客户试用,在试用中收集客户意见,修改原型,再让客户试用,反复循环几次,直到客户确认为止。(3)适用场合:●已有产品/产品原型,只需客户化的项目。●简单而熟悉的行业或领域。●有快速原型开发工具。●进行产品移植或升级。增量模型:(1)定义:增量模型将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止。(2)特点:●任务或功能模块驱动,可以分阶段提交产品;●有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需求报告)。(3)适用场合:●在开发过程中,客户接受分阶段交付。●开发人员对应用领域不熟悉,难以一步到位。●工期过紧的中等或高风险项目。●用户可参与到整个软件开发过程中。●使用面向对象语言或第四代语言。●软件公司自己有较好的类库、构件库。4、需求的特点?获取的方法?为什么需求获取很困难?如何解决需求获取困难的难题?(1)需求的特点:●可验证性:可验证性是软件需求的基本属性。软件需求必须是可验证的,否则软件的评审和测试就没有相应的依据。但在某些情况下,很难对某些软件需求进行验证或需要的代价很高。软件需求人员和测试人员应以合理的代价实现需求的验证。●优先级:软件需求应具有优先级,可以在有限的资源情况下进行取舍。●唯一性:软件需求应唯一地标识出来,以便在软件配置管理和整个软件生命周期中进行管理。(2)获取方法:(3)需求获取困难原因:PPT答案:●用户需求具有动态性,即需求的不稳定性。在整个软件生存周期内,应用软件的需求会随着时间的进展而有所变化。个别用户,甚至是朝三暮四地变化。●用户需求具有模糊性,即需求不准确性。由于用户的素质不是很高,业务流程不很规范,所以需求表达不很清楚也不够明确。●开发者和用户要对需求达成完全一致的认识,用户要在需求报告上签字,要承担责任。●需求复杂并且庞大。现代的软件,规模越来越大,导致需求越来越复杂。课本上答案(Page62):●需求易变性。用户在开始时提出一些功能需求,当对系统有一定的理解后,会提出一些需求。以后随着理解的深入而不断提出新的需求。用户需求的变动是一个极为普遍的问题,即使是部分变动,也往往会影响到需求分析的全部,导致不一对待性和不完备性。●问题的复杂性;●交流障碍。进行需求分析的人员具备不同的背景知识,处于不同的角度,扮演不同的角色,造成了相互之间交流的困难。●不完备性和不一致性。用户各类人员对于系统的要求所处的角度不一样,对问题的陈述往往是不完备的,其各方面的需求还可能存在着矛盾。(4)解决需求获取困难的方法:5、DFD的画法及如何将DFD图转换成功能结构图?(1)DFD图的画法(课本Page71)(第四章PPT)●数据流图DFD的描述符号主要只有四种,即:a.数据源或数据潭b.数据流动的连线c.数据加工或处理泡d.输入或输出文件●图例名称图例说明信息源或信息潭表示信息源或信息潭,即数据流的起点或终点加工或处理表示对流到此处的数据进行加工或处理,即对数据的算法分析与科学计算输入文件/输出文件__________________表示输入文件或输出文件,说明加工或处理之前的输入文件,记录加工或处理之后的输出文件数据流连线表示数据流的流动方向●方法:采用的是”自顶向下“逐层画法。即先画出的顶层数据流图,再逐层画出的底层数据流图,具体地描述上层系统的细节。●注意事项:加工和处理框上至少有一个输出数据流和一个输入数据流;注意父/子图的平衡(父图中某个加工的输入输出数据流同相应的子图的输入输出相同,也就是说子图中所有输入数据流必须是父图中相应加工的输入)。(2)DFD图转换成功能结构图(课本Page111-116)(PPT第七章)具体方法看第七章PPT。变换型系统结构图:通过变换分析技术,将中心变换型的DFD图转换而得的SC图,称为变换型系统结构图。事务型系统结构图:通过事务分析技术,将事务处理型的DFD图转换为的SC图,称为事务型的系统结构图。两类图的区别:变换型系统结构图明显分为输入、中心变化和输出3部分;事务型系统结构图则是某个变换将它的输入分离成若干个发散的输出数据流。变换分析技术(将DFD图转换成变换型系统结构图的方法,DFD图中含有变换流的情况)事务分析技术(将DFD图转换成事务型系统结构图的方法,DFD图中含有事务流的情况)而实际的DFD图往往是既包含变换流又包含事务流(称为混合DFD图)。PPT上的M代表中心加工模块,I代表输入模块,T代表处理加工模块,O代表输出模块。对于变化型系统结构图而言,一个M应该包含一个I、一个T、一个O,属于包含关系,因此箭头应从M分别指向I、T、O(容易出错)。一个功能模块的输入可能是来源于另一个功能模块的输出。6、面向对象的基本特征,并能用实际的例子说明这些特征?面向对象的基本概念:面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。而面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。面向对象方法的基本思想是,从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。面向对象核心概念:(1)对象(2)类(3)继承(4)聚集(5)消息。面向对象=对象+类+继承+聚集+消息面向对象方法的基本特征:①从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。②事物的静态特征(即可以用一些数据来表达的特征)用对象的属性表示,事物的动态特征(即事物的行为)用对象的服务(或操作)表示。③对象的属性与服务结合为一体,成为一个独立的实体,对外屏蔽其内部细节(称作封装)。④对事物进行分类。把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。⑤通过在不同程度上运用抽象的原则(较多或较少地忽略事物之间的差异),可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。⑥复杂的对象可以用简单的对象作为其构成部分,称作聚合。⑦对象之间通过消息进行通信,以实现对象之间的动态联系。⑧通过关联表达对象之间的静态关系。7、白盒测试、黑盒测试的定义以及白盒测试具体的方法?练习册Page318-320;课本Page457-461;第十章PPT(1)定义:白盒测试:把测试对象看作一个透明的盒子,测试人员能了解程序的内容结构和处理过程,以检查处理过程为目的,对程序中尽可能多的逻辑路径进行测试,在所有的点检验内部控制结构和数据结构是否和预期相同。白盒测试又称为结构测试或逻辑驱动测试。黑盒测试:该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的界面上进行测试,用来证实软件功能的可操作性,检查程序是否满足功能要求,是否能很好的接收数据,并产生正确的输出。黑盒测试也称功能测试。(2)白盒测试方法(3种)●逻辑覆盖语句覆盖:-在测试时,设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少执行一次。判定覆盖(又称为分支覆盖):-在测试时,设计若干测试用例,运行被测程序,使程序中的每个判断真假的分支至少遍历一次。条件覆盖:-在测试时,设计若干测试用例,运行被测程序,使程序中的每个条件的可能取值至少满足一次。条件分支覆盖:-在测试时,设计足够的测试用例,使得判断中每个条件的所有可能取值至少出现一次,并且每个判断本身的判定结果也至少出现一次。路径覆盖:-设计足够多的测试用例,要求覆盖程序中所有可能的
本文标题:软件工程考试重点(灰常重要)
链接地址:https://www.777doc.com/doc-4317663 .html