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