《软件工程简答题.doc》由会员分享,可在线阅读,更多相关《软件工程简答题.doc(7页珍藏版)》请在三一办公上搜索。
1、精选优质文档-倾情为你奉上1. 简述你对软件工程的理解?(包括起源,定义,目标,内容,作用等)起源:为了解决软件危机发展:第一代软件工程,即传统软件工程:结构化分析、结构化设计和结构化编程方法是这个时期的代表;从80年代中到90年代中,研究的重点转移到面向对象分析和设计上来,从而演化成软件工程的第二代,称之为对象工程;组件技术的研究和发展形成了新一代软件工程,即第三代软件工程定义:软件工程是采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理方法和先进软件开发技术结合起来,运用到软件开发和维护过程中,来解决软件危机;软件工程是将系统化的、规范的、可度量的方法应用于软
2、件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,对中所选方法的研究。目标:旨在开发满足用户需要、及时交付、不超过预算和无故障的软件。主要目标是:实现预期的软件功能,达到较好的软件性能,满足用户的需求;增强软件过程可见性和可控性,保证软件的质量;提高软件的可维护性,降低维护费用;提高软件开发生产率,及时交付使用;合理预算开发成本,付出较低的开发费用内容:软件开发技术和软件开发管理两个方面。软件开发技术方面主要研究软件开发方法、软件开发过程、软件开发工具和环境。软件开发管理方面主要研究软件工程管理学、软件工程经济学、软件工程心理学。 作用:在一定程度上解决了软件危机的问题2. 什么是
3、软件危机?定义:计算机软件开发和维护过程中所遇到的一系列严重问题。表现:“已完成”的软件不满足用户的需求;开发进度不能保障;软件开发成本难以准确估算;软件产品的质量没有保证。3. 什么是瀑布模型? 瀑布模型规定了软件生命周期的各项活动:问题定义、可行性研究、需求分析、软件设计、编码、测试、运行和维护。各项活动自顶向下、相互衔接如同瀑布一样。这里的修饰词“瀑布”非常贴切,明确了一个活动结束,进入到下一个活动后,很难再回到前一个活动中去,也就是工作不可逆转。4. 什么是需求分析?需求分析阶段的基本任务是什么?答:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需
4、求定义,再由需求定义转换到相应的需求规格说明的过程基本任务:确定对系统的综合要求,分析系统的数据要求,导出系统的逻辑模型,修正系统的开发计划1.定义系统边界2.建立软件原型3.分析需求可行性4.确定需求优先级5.建立需求分析模型6.创建数据字典7.制定符合要求的系统开发计划5. 什么是数据流程图?有几种图形元素,分别起什么作用?答:数据流图:简称DFD,就是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。数据流图的基本符号的意思: 1.矩形表示数据的外部实体;2.圆角的矩形表示变换数据的处理逻辑; 3
5、.少右面的边矩形表示数据的存储; 4.箭头表示数据流。6. 什么是数据字典?在数据字典中定义数据时用的几种符号是什么?数据字典:主要用来描述数据流程图中的数据流、数据存储、处理过程和外部实体。数据字典中所有的定义必须是严密的、精确的、无二义性的。数据字典把数据的最小组成单位看成是数据元素或者叫做基本数据项,若干个数据元素可以组成一个数据结构也叫做组合数据项。7. 详细设计的基本任务是什么?结构化设计有那几种描述方法?答:从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。这就是过程设计的任务。在过程设计阶段
6、,要决定各个模块的实现算法,并精确地表达这些算法。表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类:图形工具、表格工具、语言工具结构化程序的特征:程序模块只有一个入口和一个出口;程序中只包含顺序、条件和循环三种控制结构。详细设计主要方法有设计程序流程图、判定树、PDL(是一种用于描述功能模块的算法设计和加工细节的语言)、N-S图(盒图)、问题分析图(PAD)、判定表、8. 模块的内聚有哪几种?模块间的耦合有哪几种?答:内聚分为七种类型:a. 功能内聚 :一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分
7、割的。则称该模块为功能内聚模块。b. 顺序内聚:模块中处理元素和同一个功能密切相关;一个成分的输出作为另一个成分的输入;处理元素必须是顺序执行的c. 通信内聚:一个模块内各功能部分都针对相同输入/输出数据进行处理。d. 过程内聚:模块内各处理成分相关;必须以特定次序执行e. 时间内聚:模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。f. 逻辑内聚:把几种相关功能(逻辑上相似的功能)组合在一模块内,每次调用由传给模块的参数确定执行哪种功能。g. 巧合内聚:模块内各部分间无联系耦合分为七类:1. 非直接耦合:模块之间没有消息传递2. 数据耦合:一模块调用另一模块时,被调用模块的
8、输入、输出都是简单的数据(若干参数)3. 特征耦合:如两个模块通过传递数据结构(不是简单数据,而是记录、数组等)加以联系,或都与一个数据结构有关系, 则称这两个模块间存在特征偶合。4. 控制耦合:在模块间传递的信息是用作控制信号的开关值或标志量。控制模块必须知道被控制模块的内部逻辑,从而增强了模块间的相互依赖。5. 外部耦合:允许一组模块访问同一个全局变量6. 公共耦合:多个模块都访问同一个公共数据环境,则称它们是公共耦合。7. 内容耦合:一个模块直接使用另一个模块的内部数据9. 面向对象分析的关键步骤有哪些?应建立哪几个模型?答:面向对象分析是抽取和整理用户需求并建立问题域精确模型的过程。关
9、键步骤是识别问题域的对象并分析它们相互之间的关系,建立简洁、精确、可理解的正确模型;1. 功能模型:表达系统的详细需求,由用例图和场景描述组成2. 对象模型:表示静态的、结构化的系统“数据”性质。描述现实世界中实体的对象以及它们之间的关系,表示目标系统的静态数据结构。在面向对象方法中,类图是构件对象模型的核心工具。3. 动态模型:描述系统的动态结构和对象之间的交互,表示瞬时的、行为化的系统的“控制”特性。面向对象方法中,常用状态图、顺序图、合作图、活动图构件系统的动态模型。10. 面向对象设计的主要活动有哪些的? 面向对象的设计活动主要有:系统构架设计、用例设计、类设计、数据库设计和用户界面设
10、计。11. 面向对象设计的原则是什么?开闭原则、替换原则、依赖倒转原则、单一职责原则、接口分离原则1. 开闭原则:扩展性开放,更改性封闭;与高内聚低耦合原则对应;抽象化是开闭原则的关键。 面向对象设计的目标2. 里氏代换原则:所有引用基类(父类)的地方必须能透明地使用其子类的对象。 面向对象设计的基础3. 替换原则:子类可以替换父类,但不能改变父类的行为4. 依赖倒转原则:高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象。要针对接口编程,不要针对实现编程 面向对象设计的主要手段5. 单一职责原则:一个类应该有且仅有一个职责6. 接口隔离原则:采用多个与特
11、定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。客户端不应该依赖那些它不需要的接口。12. 什么是开闭原则?为满足开闭原则,类结构有什么特点?开闭原则:一个软件实体应当对扩展开放,对修改关闭。也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的行为。13. UML中有哪几图,它们的作用分别是什么?用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、配置图) 用例图:用于描述一组用例、角色以及它们之间的关系。基本元素:用例、角色和关系;用例是软件开发的核心元素) 活动图:描述从一个活动到另一个活动的流程,用于
12、对系统的动态特性建模,反映控制流程。一张活动图只能有一个开始状态(UML2.0可以有多个),但可以有多个结束状态。) 状态图:用来描述一个对象在其生命周期中所表现出来的状态和行为。主要是帮助理解较复杂对象的行为变化。对象的各种状态;引起状态变化的事件;每个状态改变时所发生的动作。) 交互图:根据获得的用例图、活动图和状态图来细化系统的需求,找出系统中对象和对象之间的关系,反映对象之间关系的工具。一种是按时间顺序反映对象之间相互关系的顺序图;另一种是集中反映各个对象之间通讯关系的合作图。) 顺序图:顺序图是按时间顺序反映对象之间传递的消息。顺序图的顶部放置相关的对象,沿对象向下的虚线表示对象的生
13、命线,两个对象生命线之间的横线表示对象之间传递消息,消息线的箭头形状表示消息的类型。) 协作图:反映用例中各个对象之间消息传递,协作图强调参与交互的对象的组织关系。) 类图:反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法。描述包括两个部分类和类间关系:关联(表示事物之间的一种固有联系,描述类的结构之间的关系)、聚集和组成(表示类之间一种松散的整体与部分的组成关系|表示类之间一种紧密的整体与部分的组成关系)、泛化(先从一个一个具体的对象分析出类,再把一个一个具体类的共性抽取出来得到更抽象的类的过程。得到的更抽象的类称为泛化类,泛化类和具体类之间的关
14、系称为泛化关系)、依赖(描述两个类或多个类之间的连接关系,其中一个类是独立的,另一个类是非独立的,依赖于独立的类) 类图都是最核心技术 边界类位于系统与外界的交界处,承担系统与外界的信息功能. 实体类对应着现实中的客观实物,用来保存信息,一般对应着数据表、文件等。 控制类承担着事务处理,控制调控的控制作用。) 配置图:反映了系统的物理模型,表示系统运行时的处理节点以及节点中组件的配置。用来描述系统中计算结点的拓扑结构和通信路径与结点上运行的软件构件等。一般一个系统仅有一个部署图) 组件图:描述组件以及它们之间的关系,用于表示系统的静态实现视图。14. 测试的目的是什么?测试的核心问题是什么?为
15、什么?测试阶段的根本目的是尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。测试的目的是为了发现尽可能多的缺陷,不是为了说明软件中没有缺陷。成功的测试在于发现了迄今尚未发现的缺陷。所以测试人员的职责是设计这样的测试用例,它能有效地揭示潜伏在软件里的缺陷。15. 什么是白盒测试?有哪些覆盖标准?它适应哪些测试?白盒测试在测试过程的早期阶段进行,而黑盒测试主要用于测试过程的后期答:白盒测试把测试对象看做一个透明的盒子,它允许测试人员依据详细设计说明书,利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。覆盖标准:语句覆盖、判定覆盖、条件覆盖
16、、判定/条件覆盖、条件组合覆盖、路径覆盖 白盒测试适用与单元测试、集成测试、系统测试局限:对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字黑盒测试又叫做功能测试或数据驱动测试。用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出,但这是不可能的。等价类划分、边值分析、因果分析、猜测错误验证(Verification):通过检查和提供客观证据,表明规定要求已经满足的认可。有效性确认(Validation):通过检查和提供客观证据,表明一些针对某一特定预期用途的要求已经满足的认可。简述简单工厂模式及其类图结构.简单工厂模式(
17、Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据自变量的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 即将一个具体类的实例化交给一个静态工厂方法来执行16. 简述工厂方法模式及其类图结构.工厂方法模式又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于对象创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂
18、子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。即定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。某银行计算机储蓄系统的工作流程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人的姓名、住址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率及密码(可选)等信息,并印出存款单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。画出数据流程图.专心-专注-专业