您好,欢迎访问三七文档
1.请简要说明软件过程的概念和基本元素。答案要点:软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动,它应该明确定义以下元素:过程中所执行的活动及其顺序关系;每一个活动的内容和步骤;团队人员的工作和职责.2.软件工程包括哪些基本要素?请简要说明这些要素及其作用。答案要点:软件工程包括过程、方法和工具三个要素。软件工程过程定义了技术方法的采用、工程产品(包括模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证和变更的管理,从而将人员、技术、组织与管理有机地结合在一起,实现在规定的时间和预算内开发高质量软件的目标;.软件工程方法为软件开发提供了“如何做”的技术,通常包括某种语言或图形的模型表示方法、良好的设计实践以及质量保证标准等;工具:为软件工程的方法提供自动或半自动的软件支持环境辅助软件开发任务完成。3,请简要描述SWEBOK所包含的10个知识域。(1)软件需求(SoftwareRequirements)(2)软件设计(SoftwareDesign)。(3)软件构造(SoftwareConstruction)。(4)软件测试(SoftwareTesting)。(5)软件维护(SoftwareMaintenance)。(6)软件配置管理(SoftwareConfigurationManagement)。(7)软件工程管理(SoftwareEngineeringManagement)。(8)软件工程过程(SoftwareEngineeringProcess)。(9)软件工程工具和方法(SoftwareEngineeringToolandMethod)。(10)软件质量(SoftwareQuality)。4.需求工程包括哪些基本活动?每一项活动的主要任务是什么?答案要点:需求工程分为需求开发和需求管理两个部分,而需求开发又可进一步分为需求获取、需求分析、规格说明和需求验证四个阶段。这些基本活动的主要任务包括:(1)需求获取:采集、识别和提取用户的需求,对问题和需求形成文档化的描述,使各种人员达成一致的理解和认可。(2)需求分析:分析和综合所采集的信息,建立系统的详细逻辑模型。(3)需求规格说明:编写软件需求规格说明书,明确、完整和准确地描述已确定的需求。(4)需求验证:评审软件需求规格说明,以保证其正确性、一致性、完备性、准确性和清晰性。(5)需求管理:定义需求基线,在整个项目过程中跟踪需求状态及其变更情况。5.请比较本章介绍的几种主要需求获取技术,说明每一种技术的优缺点和适用场合。答案要点:(1)用户面谈优点:可以与项目相关人员一对一地进行交谈和讨论;具有私密性,使被访者可以直率地和无隐瞒地回答问题;便于探查一些附加信息或反馈信息;有利于与客户建立良好的关系。缺点:面谈是一种非常费时和高成本的方式;难以解决不同的项目干系人之间的冲突和矛盾;在地理位置相距较远的情况下很难实施。适用场合:适用于在初步理解整体概念的情况下讨论和交流一些细节问题。(2)需求专题讨论会优点:有助于了解系统需求;有利于共享系统开发的成果;给用户一种主人的感觉;可以与足够多的项目干系人进行讨论和交流,且节省时间;支持头脑风暴式的讨论。缺点:需要占用参与人员比较长的整块时间;主持人的能力和会议的准备工作必须是非常好的,否则结果很糟。适用场合:适用于讨论和审查软件系统方案和模型,解决不同项目干系人之间的冲突和矛盾。(3)观察用户工作流程优点:通过直接观察的方式提取用户或系统的特性;有助于理解难以用语言描述清楚的复杂业务。缺点:观察可能使用户紧张,从而表现得与往常不同。适用场合:适用于理解难以用语言描述清楚复杂业务过程。(4)原型化方法优点:通过一个可以运行的软件原型直观地理解和澄清问题,便于使开发人员与用户达成共识。缺点:用户容易产生误解,认为软件系统可以在原型的基础上很容易地构建,但实际上该原型的内部结构和程序质量比较差。适用场合:适用于用户需求不明确或描述不清楚的情况6.请解释下列术语,并举例说明之。对象、类、属性、操作、关联、泛化、聚合、依赖参考答案:(1)对象(Object)对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和对这组属性进行操作的一组服务组成。举例:中国就是一个对象。(2)类(Class)类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,包括属性和服务两个主要部分。举例:学生、人、树木等都是类。(3)属性(Attribute)属性是用来描述对象静态特征的一个数据项。举例:学生具有姓名、性别、年龄等属性。(4)操作(Operation)操作是类的实例被要求执行的服务,具有名字和参数列表。举例:学生具有入学注册、选课等操作。(5)关联(Association)关联是一种结构关系,说明一个事物的对象与另一个事物的对象之间的联系。举例:学生与课程之间的关系就是关联,一个学生可以选修多门课程,一门课程也可以被多个学生选修。(6)泛化(Generalization)泛化是一种一般事物(父类)和特殊事物(子类)之间的关系。举例:学生与研究生之间是泛化关系,研究生是一类特殊的学生。(7)聚合(Aggregation)聚合是一种特殊类型的关联,描述了整体和部分间的结构关系。举例:学校和系之间存在聚合关系,系是学校的一个组成部分。(8)依赖(Dependency)依赖是一种使用关系,描述了一个事物发生变化会影响到另一个使用它的事物。举例:课程表使用课程,二者之间是依赖关系。7.什么是实体类、边界类和控制类?为什么将分析类划分成这三种类型?参考答案:实体类用于描述必须存贮的信息及其相关行为;边界类用于描述外部参与者与系统之间的交互;控制类用于描述一个用例所具有的事件流控制行为。将分析类划分成这三种类型的好处在于:所产生的类更小更专门化;这种划分将易变的外部界面与系统基本功能进行了屏蔽,使分析模型更易于变化。8.什么是三层体系结构?它的优缺点是什么?答案要点:三层体系结构将系统划分成表示层、应用逻辑层和数据存储层,其中表示层由客户机上的浏览器处理,应用逻辑层交给独立的应用服务器处理,数据存储层则放在数据服务器上。这种结构的优点如下:浏览器与应用服务器之间是松耦合关系,二者通过标准的HTML语言进行交互,客户端的维护代价几乎是零;应用服务器与数据服务器之间是松耦合关系,应用服务器可以通过标准的数据访问接口(如JDBC和ODBC)灵活地访问不同厂商和不同平台的数据库;应用逻辑层可以部署在由多个服务器节点组成的集群上,集群可以提供复制、负载平衡和故障切换等功能,保证了应用的性能、可靠性和可伸缩性。这种结构的缺点是应用服务器与技术平台耦合紧密,因此基于不同平台的应用服务器依然是信息孤岛。9.软件测试包括哪些类型的测试?这些测试之间的区别是什么?参考答案:软件测试包括单元测试、集成测试、系统测试和验收测试等。单元测试集中于每一个独立的模块;集成测试集中于模块的组装;系统测试确保整个系统与系统的功能需求和非功能需求保持一致;验收测试是用户根据验收标准(通常来自项目协议),在开发环境或模拟真实环境中执行的可用性、功能和性能测试。10.为什么说软件维护是一项困难的工作?参考答案:软件维护工作的困难主要表现在以下几个方面:读懂别人的程序是很困难的,而文档的不足更增加了这种难度。一般开发人员都有这样的体会,修改别人的程序还不如自己重新编写程序。文档的不一致性是软件维护困难的又一个因素,主要表现在各种文档之间的不一致以及文档与程序之间的不一致性,从而导致维护人员不知所措,不知怎样进行修改。这种不一致性是由于开发过程中文档管理不严造成的,开发中经常会出现修改程序而忘了修改相关的文档,或者某一个文档修改了,却没有修改与之相关的其他文档等现象,解决文档不一致性的方法就是要加强开发工作中文档的版本管理。软件开发和软件维护在人员和时间上存在差异。如果软件维护工作是由该软件的开发人员完成,则维护工作相对比较容易,因为这些人员熟悉软件的功能和结构等。但是,通常开发人员和维护人员是不同的,况且维护阶段持续时间很长,可能是10~20年的时间,原来的开发工具、方法和技术与当前有很大的差异,这也造成了维护的困难。软件维护不是一件吸引人的工作。由于维护工作的困难性,维护经常遭受挫折,而且很难出成果,所以高水平的程序员自然不愿主动去做,而公司也舍不得让高水平的程序员去做11.软件重构与正向工程的区别是什么?参考答案:在这里,软件重构代表着软件再工程,正向工程代表着传统的软件开发。正向工程是从新的系统描述开始,通过设计和实现得到一个新的系统;软件重构是从现有系统开始,通过对该系统的理解和转换,最终得到一个再工程的系统。通常,软件重构不会改变系统的总体结构。
本文标题:软件工程简答题
链接地址:https://www.777doc.com/doc-5177834 .html