您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 大学课程软件工程重点资料
三、简答题:1、什么是软件危机?产生软件危机的原因?怎样消除?答:软件危机:是计算机软件在它的开发和维护过程中所遇到的一系列严重问题,研制软件系统需要投入大量的人力和物力,但系统的质量却难以保证,也就是说,开发软件所需的高成本同产品的低质量之间有着尖锐的矛盾,这种现象就是所谓的“软件危机”。软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的:①软件的规模越来越大,结构越来越复杂。②软件开发管理困难而复杂。③软件开发费用不断增加。④软件开发技术落后。⑤生产方式落后。⑥开发工具落后,生产率提高缓慢。包含两方面的问题:⑴如何开发软件,以满足对软件日益增长的需求;⑵如何维护数量不断膨胀的已有软件。软件危机典型表现:(1)对软件开发成本和进度的估计常常很不准确。(2)用户对“已完成的”软件系统不满意的现象经常发生。(3)软件产品的质量往往靠不住。(4)软件常常是不可维护的。(5)软件通常没有适当的文档资料。(6)软件成本在计算机系统总成本中所占的比例逐年上升。(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。2、什么是软件工程?包括哪些内容?答:软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。软件工程的内容:1)软件开发技术:软件开发方法、软件开发过程、软件开发工具和环境。2)软件开发管理:软件管理学、软件经济学、软件心理学。软件工程的目标:是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标:①付出较低的开发成本;②面到要求的软件功能;③取得较好的软件性能;④开发的软件易于移植;⑤需要较低的维护费用;⑥能按时完成开发任务,及时交付使用;⑦开发的软件可靠性高;软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。软件工程的框架可概括为:①目标、②过程和③原则。软件工程的原则:是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。基本原理:⑴用分阶段的生命周期计划严格管理;⑵坚持进行阶段评审;⑶实行严格的产品控制;⑷采用现代程序设计技术;⑸结果应能清楚地审查;⑹开发小组的人员应该少而精;⑺承认不断改进软件工程实践的必要性;(工程化的方法开发软件基本原理)软件工程方法学:软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。软件工程方法学包括:①传统方法学(结构化范型)和②面向对象方法学。面向对象的要点:①把对象作为融合了数据及在数据上的操作行为的统一的软件构件。②把所有对象都划分成类。③按子类与父类的关系,把类组成一个层次结构。④对象彼此之间仅能通过传递消息互相联系。软件工程方法学三要素是:①方法;②工具;③过程。3、软件生命周期由哪三个时期组成,又划分为哪8个阶段?答:软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。软件生命周期是由:⑴软件定义时期;⑵软件开发时期;⑶软件维护时期三个时期组成的。又划分为:①问题定义、②可行性研究、③需求分析、④总体设计、⑤详细设计、⑥编码和单元测试、⑦综合测试、⑧维护八个阶段。1、问题的定义及规划此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。2、需求分析在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。唯一不变的是变化本身。,同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。3、软件设计此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。4、程序编码此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。5、软件测试在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。6、运行维护软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。4、什么是白盒测试法?什么是黑盒测试法?答:白盒测试:所谓白盒测试就是在知道产品内部工作过程或程序内部结构和处理过程的前提下,检验产品内部动作是否按照规格说明书的规定正常进行或按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按照预定要求正确工作的测试方法.因此白盒测试又称为结构测试或逻辑测试。从覆盖源程序语句的详尽程度分析,大致有以下一些不同的覆盖标准:⑴语句覆盖;⑵判定覆盖;⑶条件覆盖;⑷判定/条件覆盖;⑸条件组合覆盖;⑹点覆盖;⑺边覆盖;⑻路径覆盖。黑盒测试:所谓黑盒测试是指在完全不考虑程序的内部结构和处理过程的前提下,在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接受输入数据产生正确的输出信息,并且保持外部信息的完整性.因此,又称为功能测试。特点:等价类划分、边界值分析、因果图、错误推测。优点1.基本上不用人管着,如果程序停止运行了一般就是被测试程序crash了2.设计完测试例之后,下来的工作就是爽了,当然更苦闷的是确定crash原因缺点1.结果取决于测试例的设计,测试例的设计部分来势来源于经验,OUSPG的东西很值得借鉴2.没有状态转换的概念,目前一些成功的例子基本上都是针对PDU来做的,还做不到针对被测试程序的状态转换来作3.就没有状态概念的测试来说,寻找和确定造成程序crash的测试例是个麻烦事情,必须把周围可能的测试例单独确认一遍。而就有状态的测试来说,就更麻烦了,尤其不是一个单独的testcase造成的问题。这些在堆的问题中表现的更为突出。5、什么是集成测试?非渐增式和渐增式有什么区别?渐增式如何组装模块?答:将模块组合起来成为一个完整的系统对其进行测试。非渐增式是将模块先进行单元测试然后组装在一起进行测试。渐增式是逐个将未测试的模块组装到已经测试过的模块上去进行集成测试,每加入一个就测试一次。非渐增式需要桩模块和驱动模块、非渐增式开始可以并行测试、渐增式可以及时的发现接口错误,非渐增式很难发现接口发现错误、渐增式开始不能并行测试、渐增式测试比较彻底。渐增式组装模块有自顶向下和自底向上两种组装方式。6、什么是确认测试?该阶段有那些工作?答:调试的目的是发现错误的位置并改正错误。简单调试、演绎调试、递归调试、回溯调试。7、面向对象方法学与传统方法学有何区别?答:面向对象方法学注重的是软件的重用性,而传统的方法学则在这一问题解决上不理想。面向对象方法学和传统的方法学在问题分析上的切入点不同。面向对象里面,系统是长出来的,传统的方法学里面,系统是放进去的。传统方法:⑴结构化开发方法,注重的是系统功能,自顶向下,从大到小的功能分解,从DFD到MSD,往往系统需求变化最大就是功能,一段较长的时间内,商业的流程可能已经发生了很大的变化,这样基于功能和过程的方法显然难以维护的,代码重用率可想而知,而商业过程中的数据可能变化不会很大,⑵信息工程法,注重的是数据,事件流->信息流,(资金流,物流)->数据流,数据的输入和转化输出,数据流程图,状态转化图,事件顺序图,过程依赖图,两者都是由事件驱动.面向的是问题,是为了要解决某一个具体问题,其观察事物的方法不是本体客体本身,而是对本体客体相互作用过程抽象,转化成逻辑模型。面向对象方法学:其切入点是客观世界的主体和客体,通过封装实现了信息交流的安全,抽象和继承使得事物的一完整表述和容易修改新的变化,聚合,关联反映事物间的相互作用和关系,通过关联类管理,这样把事物和事物间的关系分开.减少了复杂度,便于维护,大大提高了代码重用率。8、软件开发模型有几种?各有什么特点?软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。(模型:是为了理解事物而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式、一个规划、一个程式。)主要模型:①瀑布模型;②增量模型;③螺旋模型;④喷泉模型;⑤变换模型;⑥基于知识的模型等瀑布模型:①它提供了一个摸板,这个摸板使分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导;②虽然有不少缺陷但比在软件开发中随意的状态要好得多。快速原型模型:①开发速度快,质量有保证。②对信息系统特别有效。增量模型:①人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。②当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。③具有一定的市场。螺旋模型:①对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。②对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;减少了过多测试或测试不足所带来的风险。9、可行性研究:⑴系统流程图;⑵数据流程图;系统流程图:系统流程图是概括地描绘物理系统的传统工具。基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件。其表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。数据流程图:简称DFD,是描述数据处理过程的工具。数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,是一种功能模型。作用:它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能。基本符号有四种:→,箭头,表示数据流;○,圆或椭圆,表示加工;=,双杠,表示数据存储;□,方框,表示数据的源点或终点。可行性研究的任务:(1)经济可行性。确定待开发系统是否值得投资开发。(2)技术可行性。对待开发的系统进行功能、性能和限制条件的分析,确定在现有资源的条件下技术风险有多大,系统是否能实现。(3)法律可行性。确认待开发系统可能会涉及的任何侵犯、妨碍、责任等问题。(4)抉择。对系统开发的不同方案进行比较评估。10、什么是字据字典?其作用是什么?它有哪些条目?字据字典:简称DD,就是用来定义数据流图中的各个成分具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。作用:⑴为系统的分析\设计及维护提供了有关元素的一致的定义和详细的描述.⑵为分析人员查找数据流图中有关名字的详细定义而服务的.⑶它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分.条目:数据流、数据项、数据存储、基本加工。11、需求分析的任务是什么?答:需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。需求分析的主要任务:⑴正确地确定对系统综合要求,充分理解和表达用户的需求。⑵通过结构分析的方法对系统进行分解,以确定软件系统的主要成分或软件系统的构成。⑶是对以上已进行的两项工作进行描述,以形成需求文档。⑷编写用户手册;⑸编写验收计划;⑹修正可行性研究阶段所制订的软件项目开发计划。12、结构化分析方法:结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。主要工具:数据流图、数据词典、结构化英语、判定表和判定树。3种模型:①数据模型、②功能
本文标题:大学课程软件工程重点资料
链接地址:https://www.777doc.com/doc-178074 .html