《软件工程》简答题
第一章 软件工程
1.与硬件相比,软件的特点 (1)不是具体的物理实体,具有抽象性 (2)没有明显的制造过程 (3)存在退化问题 (4)对计算机系统有着不同程度的依赖性 (5)尚未完全摆脱人工的开发方式 (6)软件本身是复杂的 (7)软件成本相当昂贵 2.为什么软件工程解决了软件危机的各种弊端 因为软件工程提出是为了解决软件危机所带来的各种弊端。具体的讲,软件工程的目标主要包括以下几点: (1)使软件的开发成本控制在预计的合理范围之内 (2)使软件产品的各项功能和性能能够满足用户需求 (3)提高软件产品的质量 (4)提高软件产品的可靠性 (5)使生产出来的软件产品易于移植,维护,升级和使用 (6)使软件的开发周期能够控制在预计的合理时间范围内 3.软件工程的基本原则 (1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4) 用现代程序设计技术 (5) 结果应能清楚地审查 (6) 开发小组的人员应该少而精。 (7) 承认不断改进软件工程实践的必要性 4.软件工程的研究内容 (1)软件开发技术 (2)软件开发过程管理 5.软件工程的目标 (1)达到要求的软件功能 (2)取得较好的软件性能 (3)开发出高质量的软件 (4)付出较低的开发成本 (5)需要较低的维护费用 (6)能按时完成开发工作,及时交付使用 6.软件工程的方法 (1)结构化方法 (2)面向数据结构方法 (3)面向对象方法 (4)形式化方法 7.软件工程的工具 (1)需求分析阶段: 面向对象软件设计的Rational Rose 用于数据库设计的Power Designer 更加集成化的工具Enterprise Architect (2)编码: 功能测试工具WinRunner 性能测试工具LoadRunner 测试管理工具TestDirector Web服务测试工具Qtester (3)配置管理: Microsoft VSS、CVS和SVN Git Microsoft Project (4)原型设计: 快速原型构件系统Dreamweaver 在线协作办公系统Microsoft Office Online 在线协作软件设计平台Processon
第二章 软件过程
1.如何理解软件生命周期的内在特征? 软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程。软件生命周期的每个阶段都完成特定的相对独立的任务。合理地划分软件生命周期的各个阶段,使各个阶段之间既相互区别又相互联系,为每个阶段赋予特定的任务 2.请对比各软件过程模型 瀑布模型: 瀑布模型是出现得比较早的软件开发模型。在这种模型中,各阶段之间的组织方式就如同瀑布流水一样,逐级下落。开发人员必须在完成前一阶段的任务后,才能开始下一阶段的工作,各个阶段之间通常是按固定顺序连接的,前一阶段的输出往往就是后阶段的输入。 根据瀑布模型的理论,这种模型具有以下几个特点。 1.瀑布模型是一种线性的软件开发模型,回溯性很差。 2.瀑布模型是一种基于里程碑的阶段过程模型。 3.瀑布模型强调软件开发过程的阶段性,每个阶段完成特定的任务。瀑布模型适用于具有以下特征的软件开发项目: 4.在软件开发的过程中,需求不发生或很少发生变化,并且开发人员可以一次性获取到全部需求 5.软件开发人员具有丰富的经验,对软件应用领域很熟悉。 6.软件项目的风险较低。 瀑布模型不具有完善的风险控制机制。 瀑布模型的优点是阶段性强,易于对项目进行管理,缺点是开发过程不灵活,不能适应环境的变化。如果后续阶段中发现前期工作的错误或需求发生了变更,会造成巨大的损失。 原型模型: 原型模型是开发人员为了快速而准确地获取需求经常采用的方法。在初步获取需求后,开发人员会快速地开发一个原型系统。通过对原型系统进行模拟操作,开发人员可以更直观、更全面和更准确地了解用户对待开发系统的各项要求,同时还能挖掘到隐藏的需求。如果开发人员对将采用的开发技术把握不大,也可以采用原型模型进行技术上的尝试,以降低后续开发的风险。原型模型具有以下特点。 1.原型模型主要用于挖掘需求,或是进行某种技术或开发方法的可行性研究。 2.原型系统通常针对软件 开发系统的子功能模块,所以功能相对不完善。 3.由于原型系统功能的局部性以及存在阶段的局部性,在软件开发的实践中,原型模型通常 4.结合其他的软件开发模型共同使用,发挥作用。 原型模型适用于具有以下特征的软件开发项目: 1.对现有的软件系统进行产品升级或功能完善。 2.开发人员与用户之间交流受限,需求获取困难。 3.开发人员对将要采用的技术手段不熟悉或把握性不大。 4.具备快速开发的工具。 原型模型的优点是简单和快速,缺点是需要花费一些额外的成本来构造原型,并且不利于创新。 增量模型: 增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。增量模型的最大特点就是将待开发的软件系统模块化和组件化。基于这个特点,增量模型具有以下优点。 1.将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。 2.以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统。 3.开发顺序灵活。 增量模型的缺点是要求待开发的软件系统可以被模块化。如果待开发的软件系统很难被模块化,那么将会给增量开发带来很多麻烦。 增量模型适用于具有以下特征的软件开发项目。 1.软件产品可以分批次地进行交付。 2.待开发的软件系统能够被模块化。 3.软件开发人员对应用领域不熟悉,难以一次性地进行系统开发。 4.项目管理人员把握全局的水平较高。 螺旋模型: 螺旋模型是一种用于风险较大的大型软件项目开发的过程模型。它把开发过程分为制定计划、风险分析、实施工程和客户评估4种活动。制定计划就是要确定软件系统的目标,了解各种资源限制,并选定合适的开发方案。风险分析旨在对所选方案进行评价,识别潜在的风险,并制定消除风险的机制。实施工程的活动中渗透了瀑布模型的各个阶段,开发人员对下一版本的软件产品进行开发和验证。客户评估是获取客户意见的重要活动。 螺旋模型适应于风险较大的大型软件项目的开发。它的优点是将风险分析扩展到各个阶段中,大幅度降低了软件开发的风险。但是这种模型的控制和管理较为复杂,可操作性不强,对项目管理人员的要求较高。 V模型 3.在统一软件开发过程模型中,核心工作流程包括哪些? RUP 核心工作流程:业务建模,需求分析,分析设计,实现,测试和部署 4.软件生命周期的过程 (1)可行性研究(2)需求分析(3)软件设计 (4)编码(5)软件测试(6)软件维护 5.简述软件生命周期及其每阶段的主要任务 6个阶段:可行性研究、需求分析、软件设计、编码、测试、维护。 可行性研究:弄清楚“要解决的问题是什么” 需求分析:确定“软件系统必须做什么” 软件设计:确定软件的结构由哪些模块组成 编码:写成以语言表示的“源程序” 测试:尽可能多地发现并排除软件中潜藏出错误 维护:更新功能,升级版本,以保持软件产品正常运行
第三章 可行性研究及需求分析
1.可行性研究的内容 (1)战略可行性 (2)操作可行性 (3)计划可行性 (4)技术可行性 (5)社会可行性 (6)市场可行性 (7)经济可行性 (8)风险可行性 2.需求分析的原则与常用方法 原则: 首先,需求分析是一个过程,它应该贯穿于系统的整个生命周期中,而不是仅仅属于软件生命周期早期的一项工作。 其次,需求分析应该是一个迭代的过程。由于市场环境的易变性以及用户本身对于新系统要求的模糊性,需求往往很难一步到位。通常情况下,需求是随着项目的深入而不断变化的。所以需求分析的过程还应该是一个迭代的过程。 此外,为了方便评审和后续的设计,需求的表述应该具体、清晰,并且是可测量的、可实现的。最好能够对需求进行适当的量化。 方法: 1.功能分解方法 2.结构化分析方法 3.信息建模方法 4.面向对象的分析方法 3.可行性研究步骤 (1)明确系统目标 (2)分析研究现行系统 (3)设计新系统的高层逻辑模型 (4)获得并比较可行的方案 (5)撰写可行性研究报告
第七章 软件设计
1.软件设计原则 (1)模块化(2)抽象化(3)逐步求精(4)信息隐藏 (5)复用性设计(6)灵活性设计(7)模块独立性
第十章 面向对象设计
1.对象: 类的一个实例 2.类 类是一组具有相同属性、操作、关系和语义的对象的描述; 3.实例 实例是实体的具体的例子,关系是用来连接实体的。 继承:继承就是子类继承父类的特征和行为,是多态的一个体现 多态:同一个对象,调用不同类的实例,从而得到不同的结果 4.简述类在建模中的主要用途 类图主要用在面向对象软件开发的分析和设计阶段,描述系统的静态结构。 5. 简述面向对象(模块化)的设计原则 (1)模块化(2)抽象化(3)信息隐藏 (4)低耦合(5)高内聚(6)复用性
第十四章 软件维护
1.软件维护的分类 纠错性维护:为了识别并纠正软件产品中所潜藏的错误,改正软件性能上的缺陷进行的维护 适用性维护:为了使软件产品适应软硬件环境的变更而进行的维护 完善性维护:软件维护的主要部分,是针对用户对软件产品提出的新需求而进行的维护 预防性维护:主要采用先进的软件工程方法对已过时的软件系统进行重新设计、编码和测试,达到结构上的更新
其他补充:
1.在模块化设计中必须遵守的设计原则是什么?为了实现有效的模块化,采用的启发设计策略是什么? 在模块化设计过程中,必须遵循的设计原则: 抽象与逐步求精、信息隐藏、模块化、高内聚、低耦合。 按照模块化设计原则,相应的启发式设计策略(6条): (1)改造程序结构图,降低耦合度,提高内聚度 (2)避免高扇出,并随着深度的增加,力求高扇入 (3)模块的影响范围应限制在该模块的控制范围内 (4)降低模块接口的复杂程度和冗余程度,提高一致性 (5)模块的功能应是可预测的,避免对模块施加过多的限制 (6)尽可能设计单入口和单出口的模块 2.什么是需求规约?简述需求规约的基本性质。 答:需求规约是一个软件项/产品/系统所有需求陈述的正式文档,它表达了一个软件产品/系统的概念模型。需求规约一般需要满足一下4个基本性质: 1.重要性和稳定性程度:按需求的重要性和稳定性,对需求进 行分级; 2.可修改性:在不影响其他需求的前提下可容易修改一个单一 需求; 3.完整性:设备被遗漏的需求; 4.一致性:不存在互斥的需求。 3.什么是模块耦合?简述常用的模块耦合类型及其设计原则。 答:模块耦合:是指不同模块之间相互依赖程度的度量; 几中常见模块耦合类型为:内容耦合、公共耦合、控制耦合、标记耦合、数据耦合等; 设计原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合,避免内容耦合。 4.简述软件开发与软件测试之间的关系 开发和测试是一个有机的整体,在产品的发布之前,开发和测试是循环进行的,测出的缺陷要经开发人员修改后继续测试。在开发的同时测试经理开始编写测试用例,测试文档要参考开发文档,所以开发和测试是不可分割的,少了任何一个都不能开发出产品。 5.什么是黑盒测试法,常用的黑盒测试方法有哪些? 在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性,着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。 常用的黑盒测试技术有:等价类划分法、边界值分析法、错误推测法、因果图法 6.什么是白盒测试法,常用的白盒测试方法有哪些? 关注软件产品的内部细节和逻辑结构,把被测的程序看成一个透明的盒子 常用的白盒测试技术有:代码检查法、逻辑覆盖测试、基本路径测试 7.UML统一建模语言有哪几种模型?各种模型的主要功能是什么 功能模型: 从用户的角度展示系统的功能,包括用例图。 对象模型: 采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类图、对象图、包图。 动态模型: 展现系统的内部行为。 包括序列图,活动图,状态图。 8.我们已经学习了《数据库原理》、《操作系统》,根据我们软件工程软件体系结构,选择其中之一,给出其体系结构 《数据库原理》体系结构分为三级:内部级、概念级和外部级 (1) 外部级:单个用户所能看到的数据特性;单个用户使用的数据视图的描述称外模式。 (最接近用户) (2) 概念级:涉及到所有用户的数据定义,是全局的数据视图;全局数据视图的描述称“概念模式”。 (3)内部级:最接近于物理存储,涉及到实际数据存储的结构;物理存储视图的描述称为“内模式”。
|