目录
- 1.什么是软件生命周期?
- 2.什么是瀑布模型?软件工程的瀑布模型有哪几个阶段?他有什么优缺点?它适合哪种用户?
- 3.什么是模块?区分模块的要素是什么?
- 4.什么是模块化设计?模块的独立程度可以由哪两个定性标准来度量?
- 5.软件工程中的三大模型是什么?
- 6.什么是模块间的耦合度?耦合强度的衡量因素有哪些?
- 7.有哪些常用的设计模式?
- 8.CMM共有多少个等级,每个等级分别代表什么?
- 9.什么是软件工程?
- 10.软件生命周期划分为哪几个阶段?
- 11.软件工程中常见的模型有哪些?
- 12.黑盒测试和白盒测试有什么区别?
- 13.什么是软件危机?产生的原因有哪些?
- 14.什么是软件过程?
- 15.软件工程为什么要测试?
- 16.IPO图、层次图、DFD图的使用阶段、作用、描述等。
注:部分题目答案来源于网络
1.什么是软件生命周期?
答:软件生命周期(SDLC,Systems Development Life Cycle,SDLC)是软件的产生直到报废或停止使用的生命周期。周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。
2.什么是瀑布模型?软件工程的瀑布模型有哪几个阶段?他有什么优缺点?它适合哪种用户?
(1)瀑布模型是指将软件生存周期的各项活动规定按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。其过程是将上一项活动的输出作为该项活动的输入,利用这一输入实施该项活动应完成的内容,然后对当前活动的工作结果进行验证,如果验证通过,则将该结果作为下一项活动的输入,并且继续进行下一项活动,否则就返回修改。
(2)计划阶段、开发阶段、运行维护阶段
计划阶段包括:问题定义,可行性研究,需求分析
开发阶段包括:概要设计,详细设计,软件实现,软件测试
运行维护阶段包括:运行维护
(3)优缺点如下:
优点 | 缺点 |
---|---|
1)为项目提供了按阶段划分的检查点。2)当前一阶段完成后,您只需要去关注后续阶段。3)可在迭代模型中应用瀑布模型4)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。 | 1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。4)瀑布模型的突出缺点是不适应用户需求的变化。 |
(4)瀑布模型适合于项目结构比较固定、基本不变化的用户。
3.什么是模块?区分模块的要素是什么?
(1)软件工程中的模块是指整个程序中一些相对独立的程序单元,每个程序单元完成和实现一个相对独立的软件功能,通俗点就是一些功能独立的程序段。
(2)区分模块的要素是功能、逻辑和状态。
4.什么是模块化设计?模块的独立程度可以由哪两个定性标准来度量?
(1)按适当的原则吧软件划分为一个个较小相关而又独立的模块称为模块化设计。
(2)模块的独立程度可以由内聚和耦合来度量。
耦合是模块和模块之间的,尽量追求低耦合
内聚是模块内元素之间的,尽量追求低内聚
5.软件工程中的三大模型是什么?
(1)软件工程中的三个模型:瀑布模型、增量模型、喷泉模型
(2)瀑布模型:线性顺序模型从系统分析开始,逐步经过各个开发阶段到软件开发完毕、交付使用止。每个阶段的变换结果是下一个阶段的变换的输入,相邻的两个阶段具有极其密切的因果关系。该模型以软件的需求能够完全被确定为前提,这种模型的特点是“一 泻千里”、易“下”而几乎不可能“上”,因此又得名“瀑布模型”。
增量模型:是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。
喷泉模型:(fountain model)是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性。
6.什么是模块间的耦合度?耦合强度的衡量因素有哪些?
(1)模块间的耦合性是根据模块的外部特征提出的,是对软件系统结构中各模块间相互联系紧密程度的一种度量,也称块间关系。
耦合度是对于一个软件结构内不同模块间相互依赖程度的度量,耦合的强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。耦合性越高,模块独立性越弱。
(2)耦合强度的衡量因素有一下几点:
①一模块对另一模块的调用方式;
②—模块向另一模块传递的数据量;
③一模块施加到另一模块的控制的数量;
④模块间接口的复杂程度。
7.有哪些常用的设计模式?
(1)创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
(2)结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
(3)行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
(4)另外两类:并发型模式和线程池模式。
8.CMM共有多少个等级,每个等级分别代表什么?
答:CMM的英文全称是Capability Maturity Model,即软件能力成熟度模型,一共以下有5个等级:
(1)初始级(initial)。工作无序,项目进行过程中常放弃当初的计划。管理无章法,缺乏健全的管理制度。开发项目成效不稳定,项目成功主要依靠项目负责人的经验和能力,他一但离去,工作秩序面目全非。
(2)可重复级(Repeatable)。管理制度化,建立了基本的管理制度和规程,管理工作有章可循。 初步实现标准化,开发工作比较好地按标准实施。 变更依法进行,做到基线化,稳定可跟踪,新项目的计划和管理基于过去的实践经验,具有重复以前成功项目的环境和条件。
(3)已定义级(Defined)。开发过程,包括技术工作和管理工作,均已实现标准化、文档化。建立了完善的培训制度和专家评审制度,全部技术活动和管理活动均可控制,对项目进行中的过程、岗位和职责均有共同的理解 。
(4)已管理级(Managed)。产品和过程已建立了定量的质量目标。开发活动中的生产率和质量是可量度的。已建立过程数据库。已实现项目产品和过程的控制。可预测过程和产品质量趋势,如预测偏差,实现及时纠正。
(5)优化级(Optimizing)。可集中精力改进过程,采用新技术、新方法。拥有防止出现缺陷、识别薄弱环节以及加以改进的手段。可取得过程有效性的统计数据,并可据进行分析,从而得出最佳方法。
9.什么是软件工程?
概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考研而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
10.软件生命周期划分为哪几个阶段?
生命周期划分为三个时期八个阶段:
(1)软件定义时期:问题定义、可行性研究
(2)软件开发时期:需求分析、总体设计、详细设计、编码和单元测试、综合测试
(3)软件运行维护时期:运行维护
11.软件工程中常见的模型有哪些?
12.黑盒测试和白盒测试有什么区别?
(1)黑盒测试法
把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据并产生正确的输出信息,程序运行过程中能否保持外部信息的完整性。黑盒测试又称为功能测试,包含等价类划分法、边界值法、错误推测法、因果图法等。
(2)白盒测试法
是把程序看成装在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。白盒测试又称为结构测试,包含逻辑覆盖法和基本路径测试法。
13.什么是软件危机?产生的原因有哪些?
软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
软件危机产生的原因有:
(1)对软件开发成本和进度的估计常常很不准确;
(2)用户对“已完成的”软件系统不满意的现象经常发生;
(3)软件产品的质量往往靠不住;
(4)软件常常是不可维护的;
(5)软件通常没有适当的文档资料;
(6)软件成本在计算机系统总成本中所占的比例逐年上升;
(7)软件开发生产率提高的速度,跟不上计算机应用迅速普及深入的趋势。
14.什么是软件过程?
答:软件过程是指完成高质量的软件开发过程当中的一系列操作。
15.软件工程为什么要测试?
软件工程需要进行测试的原因如下:
一款软件开发出来并不能保证其稳定性与毫无漏洞,这就需要对软件进行测试。软件侧测试的目的是找出该软件的缺陷,暴露程序中的错误。