软件工程简答题1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件⼯程简答题1
1.简述你对软件⼯程的理解?(包括起源,定义,⽬标,内容,作⽤等)
起源:为了解决软件危机
发展:第⼀代软件⼯程,即传统软件⼯程:结构化分析、结构化设计和结构化编程⽅法是这个时期的代表;从80年代中到90年代中,研究的重点转移到⾯向对象分析和设计上来,从⽽演化成软件⼯程的第⼆代,称之为对象⼯程;组件技术的研究和发展形成了新⼀代软件⼯程,即第三代软件⼯程
定义:软件⼯程是采⽤⼯程的概念、原理、技术和⽅法来开发与维护软件,把经过时间考验⽽证明正确的管理⽅法和先进软件开发技术结合起来,运⽤到软件开发和维护过程中,来解决软件危机;软件⼯程是①将系统化的、规范的、可度量的⽅法应⽤于软件的开发、运⾏和维护过程,即将⼯程化应⽤于软件开发和管理之中,②对①中所选⽅法的研究。

⽬标:旨在开发满⾜⽤户需要、及时交付、不超过预算和⽆故障的软件。

主要⽬标是:实现预期的软件功能,达到较好的软件性能,满⾜⽤户的需求;增强软件过程可见性和可控性,保证软件的质量;提⾼软件的可维护性,降低维护费⽤;提⾼软件开发⽣产率,及时交付使⽤;合理预算开发成本,付出较低的开发费⽤
内容:软件开发技术和软件开发管理两个⽅⾯。

软件开发技术⽅⾯主要研究软件开发⽅法、软件开发过程、软件开发⼯具和环境。

软件开发管理⽅⾯主要研究软件⼯程管理学、软件⼯程经济学、软件⼯程⼼理学。

作⽤:在⼀定程度上解决了软件危机的问题
2.什么是软件危机?
定义:计算机软件开发和维护过程中所遇到的⼀系列严重问题。

表现:“已完成”的软件不满⾜⽤户的需求;开发进度不能保障;软件开发成本难以准确估算;软件产品的质量没有保证。

3.什么是瀑布模型?
瀑布模型规定了软件⽣命周期的各项活动:问题定义、可⾏性研究、需求分析、软件设计、编码、测试、运⾏和维护。

各项活动⾃顶向下、相互衔接如同瀑布⼀样。

这⾥的修饰词“瀑布”⾮常贴切,明确了⼀个活动结束,进⼊到下⼀个活动后,很难再回到前⼀个活动中去,也就是⼯作不可逆转。

4.什么是需求分析?需求分析阶段的基本任务是什么?
答:开发⼈员准确地理解⽤户的要求,进⾏细致的调查分析,将⽤户⾮形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程
基本任务:确定对系统的综合要求,分析系统的数据要求,导出系统的逻辑模型,修正系统的开发计划 1.定义系统边界2.建⽴软件原型3.分析需求可⾏性4.确定需求优先级5.建⽴需求分析模型6.创建数据字典7.制定符合要求的系统开发计划
5.什么是数据流程图?有⼏种图形元素,分别起什么作⽤?
答:数据流图:简称DFD,就是采⽤图形⽅式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析⽅法的主要表达⼯具及⽤于表⽰软件模型的⼀种图⽰⽅法。

数据流图的基本符号的意思:
1.矩形表⽰数据的外部实体;
2.圆⾓的矩形表⽰变换数据的处理逻辑;
3.少右⾯的边矩形表⽰数据的存储;
4.箭头表⽰数据流。

6.什么是数据字典?在数据字典中定义数据时⽤的⼏种符号是什么?
数据字典:主要⽤来描述数据流程图中的数据流、数据存储、处理过程和外部实体。


据字典中所有的定义必须是严密的、精确的、⽆⼆义性的。

数据字典把数据的最⼩组成单位看成是数据元素或者叫做基本数据项,若⼲个数据元素可以组成⼀个数据结构也叫做组合数据项。

7.详细设计的基本任务是什么?结构化设计有那⼏种描述⽅法?
答:从软件开发的⼯程化观点来看,在使⽤程序设计语⾔编制程序以前,需要对所采⽤算法的逻辑关系进⾏分析,设计出全部必要的过程细节,并给予清晰的表达。

这就是过程设计的任务。

在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。

表达过程规格说明的⼯具叫做详细设计⼯具,它可以分为以下三类:图形⼯具、表格⼯具、语⾔⼯具结构化程序的特征:程序模块只有⼀个⼊⼝和⼀个出⼝;程序中只包含顺序、条件和循环三种控制结构。

详细设计主要⽅法有设计程序流程图、判定树、PDL(是⼀种⽤于描述功能模块的算法设计和加⼯细节的语⾔)、N-S图(盒图)、问题分析图(PAD)、判定表、
8.模块的内聚有哪⼏种?模块间的耦合有哪⼏种?
答:内聚分为七种类型:
a.功能内聚:⼀个模块中各个部分都是完成某⼀具体功能必不可少的组成部分,或者说
该模块中所有部分都是为了完成⼀项具体功能⽽协同⼯作,紧密联系,不可分割的。

则称该模块为功能内聚模块。

b.顺序内聚:模块中处理元素和同⼀个功能密切相关;⼀个成分的输出作为另⼀个成分的
输⼊;处理元素必须是顺序执⾏的
c.通信内聚:⼀个模块内各功能部分都针对相同输⼊/输出数据进⾏处理。

d.过程内聚:模块内各处理成分相关;必须以特定次序执⾏
e.时间内聚:模块完成的功能必须在同⼀时间内执⾏,这些功能只因时间因素关联在⼀起。

f.逻辑内聚:把⼏种相关功能(逻辑上相似的功能)组合在⼀模块内,每次调⽤由传给模
块的参数确定执⾏哪种功能。

g.巧合内聚:模块内各部分间⽆联系
耦合分为七类:
1.⾮直接耦合:模块之间没有消息传递
2.数据耦合:⼀模块调⽤另⼀模块时,被调⽤模块的输⼊、输出都是简单的数据(若⼲参
数)
3.特征耦合:如两个模块通过传递数据结构(不是简单数据,⽽是记录、数组等)加以联系,
或都与⼀个数据结构有关系, 则称这两个模块间存在特征偶合。

4.控制耦合:在模块间传递的信息是⽤作控制信号的开关值或标志量。

控制模块必须知道
被控制模块的内部逻辑,从⽽增强了模块间的相互依赖。

5.外部耦合:允许⼀组模块访问同⼀个全局变量
6.公共耦合:多个模块都访问同⼀个公共数据环境,则称它们是公共耦合。

7.内容耦合:⼀个模块直接使⽤另⼀个模块的内部数据
9.⾯向对象分析的关键步骤有哪些?应建⽴哪⼏个模型?
答:⾯向对象分析是抽取和整理⽤户需求并建⽴问题域精确模型的过程。

关键步骤是识别问题域的对象并分析它们相互之间的关系,建⽴简洁、精确、可理解的正确模型;
1.功能模型:表达系统的详细需求,由⽤例图和场景描述组成
2.对象模型:表⽰静态的、结构化的系统“数据”性质。

描述现实世界中实体的对象
以及它们之间的关系,表⽰⽬标系统的静态数据结构。

在⾯向对象⽅法中,类图是构
件对象模型的核⼼⼯具。

3.动态模型:描述系统的动态结构和对象之间的交互,表⽰瞬时的、⾏为化的系统的
“控制”特性。

⾯向对象⽅法中,常⽤状态图、顺序图、合作图、活动图构件系统
的动态模型。

10.⾯向对象设计的主要活动有哪些的?
⾯向对象的设计活动主要有:系统构架设计、⽤例设计、类设计、数据库设计和⽤户界⾯设计。

11.⾯向对象设计的原则是什么?
开闭原则、替换原则、依赖倒转原则、单⼀职责原则、接⼝分离原则
1.开闭原则:扩展性开放,更改性封闭;与⾼内聚低耦合原则对应;抽象化是开闭原
则的关键。

⾯向对象设计的⽬标
2.⾥⽒代换原则:所有引⽤基类(⽗类)的地⽅必须能透明地使⽤其⼦类的对象。


向对象设计的基础
3.替换原则:⼦类可以替换⽗类,但不能改变⽗类的⾏为
4.依赖倒转原则:⾼层模块不应该依赖低层模块,它们都应该依赖抽象。

抽象不应该
依赖于细节,细节应该依赖于抽象。

要针对接⼝编程,不要针对实现编程⾯向对
象设计的主要⼿段
5.单⼀职责原则:⼀个类应该有且仅有⼀个职责
6.接⼝隔离原则:采⽤多个与特定客户类有关的接⼝⽐采⽤⼀个通⽤的涵盖多个业务
⽅法的接⼝要好。

客户端不应该依赖那些它不需要的接⼝。

12.什么是开闭原则?为满⾜开闭原则,类结构有什么特点?
开闭原则:⼀个软件实体应当对扩展开放,对修改关闭。

也就是说在设计⼀个模块的时候,应当使这个模块可以在不被修改的前提下被扩展,即实现在不修改源代码的情况下改变这个模块的⾏为。

13.UML中有哪⼏图,它们的作⽤分别是什么?
⽤例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、配置图1)⽤例图:⽤于描述⼀组⽤例、⾓⾊以及它们之间的关系。

基本元素:⽤例、⾓⾊和关系;⽤例是软件开发的核⼼元素
2)活动图:描述从⼀个活动到另⼀个活动的流程,⽤于对系统的动态特性建模,反映控制流程。

⼀张活动图只能有⼀个开始状态(UML2.0可以有多个),但可以有多个结束状态。

3)状态图:⽤来描述⼀个对象在其⽣命周期中所表现出来的状态和⾏为。

主要是帮助理解较复杂对象的⾏为变化。

对象的各种状态;引起状态变化的事件;每个状态改变时所发⽣的动作。

4)交互图:根据获得的⽤例图、活动图和状态图来细化系统的需求,找出系统中对象和对象之间的关系,反映对象之间关系的⼯具。

⼀种是按时间顺序反映对象之间相互关系的顺序图;另⼀种是集中反映各个对象之间通讯关系的合作图。

5)顺序图:顺序图是按时间顺序反映对象之间传递的消息。

顺序图的顶部放置相关的
对象,沿对象向下的虚线表⽰对象的⽣命线,两个对象⽣命线之间的横线表⽰对象之间传递消息,消息线的箭头形状表⽰消息的类型。

6)协作图:反映⽤例中各个对象之间消息传递,协作图强调参与交互的对象的组织关系。

7)类图:反映类的结构(属性、操作)以及类之间的关系为主要⽬的,描述了软件系统的结构,是⼀种静态建模⽅法。

描述包括两个部分类和类间关系:关联(表⽰事物之间的⼀种固有联系,描述类的结构之间的关系)、聚集和组成(表⽰类之间⼀种松散的整体与部分的组成关系|表⽰类之间⼀种紧密的整体与部分的组成关系)、泛化(先从⼀个⼀个具体的对象分析出类,再把⼀个⼀个具体类的共性抽取出来得到更抽象的类的过程。

得到的更抽象的类称为泛化类,泛化类和具体类之间的关系称为泛化关系)、依赖(描述两个类或多个类之间的连接关系,其中⼀个类是独⽴的,另⼀个类是⾮独⽴的,依赖于独⽴的类)类图
都是最核⼼技术
边界类位于系统与外界的交界处,承担系统与外界的信息功能.
实体类对应着现实中的客观实物,⽤来保存信息,⼀般对应着数据表、⽂件等。

控制类承担着事务处理,控制调控的控制作⽤。

8)配置图:反映了系统的物理模型,表⽰系统运⾏时的处理节点以及节点中组件的配置。

⽤来描述系统中计算结点的拓扑结构和通信路径与结点上运⾏的软件构件等。

⼀般⼀个系统仅有⼀个部署图
9)组件图:描述组件以及它们之间的关系,⽤于表⽰系统的静态实现视图。

14.测试的⽬的是什么?测试的核⼼问题是什么?为什么?
测试阶段的根本⽬的是尽可能多地发现并排除软件中潜藏的错误,最终把⼀个⾼质量的软件系统交给⽤户使⽤。

测试的⽬的是为了发现尽可能多的缺陷,不是为了说明软件中没有缺陷。

成功的测试在于发现了迄今尚未发现的缺陷。

所以测
试⼈员的职责是设计这样的测试⽤例,它能有效地揭⽰潜伏在软件⾥的缺陷。

15.什么是⽩盒测试?有哪些覆盖标准?它适应哪些测试?
⽩盒测试在测试过程的早期阶段进⾏,⽽⿊盒测试主要⽤于测试过程的后期
答:⽩盒测试把测试对象看做⼀个透明的盒⼦,它允许测试⼈员依据详细设计说明书,利⽤程序内部的逻辑结构及有关信息,设计或选择测试⽤例,对程序所有逻辑路径进⾏测试。

覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、
路径覆盖
⽩盒测试适⽤与单元测试、集成测试、系统测试
局限:对⼀个具有多重选择和循环嵌套的程序,不同的路径数⽬可能是天⽂数字
⿊盒测试⼜叫做功能测试或数据驱动测试。

⽤⿊盒测试发现程序中的错误,必须在所有可能的输⼊条件和输出条件中确定测试数据,来检查程序是否都能产⽣正确的输出,但这是不可能的。

等价类划分、边值分析、因果分析、猜测错误
验证(Verification):通过检查和提供客观证据,表明规定要求已经满⾜的认可。

有效性确认(Validation):通过检查和提供客观证据,表明⼀些针对某⼀特定预期⽤途的要求已经满⾜的认可。

简述简单⼯⼚模式及其类图结构.
简单⼯⼚模式(Simple Factory Pattern):⼜称为静态⼯⼚⽅法(Static Factory Method)模式,它属于类创建型模式。

在简单⼯⼚模式中,可以根据⾃变量的不同返回不同类的实例。

简单⼯
⼚模式专门定义⼀个类来负责创建其他类的实例,被创建的实例通常都具有共同的⽗类。

即将⼀个具体类的实例化交给⼀个静态⼯⼚⽅法来执⾏
16. 简述⼯⼚⽅法模式及其类图结构.
⼯⼚⽅法模式⼜称为⼯⼚模式,也叫虚拟构造器(Virtual Constructor)模式或者多态⼯⼚(Polymorphic Factory)模式,它属于对象创建型模式。

在⼯⼚⽅法模式中,⼯⼚⽗类负责定义创建产品对象的公共接⼝,⽽⼯⼚⼦类则负责⽣成具体的产品对象,这样做的⽬的是将产品类的实例化操作延迟到⼯⼚⼦类中完成,即通过⼯⼚⼦类来确定究竟应该实例化哪⼀个具体产品类。

即定义⼀个⽤于创建对象的接⼝,让⼦类决定实例化哪⼀个类,⼯⼚⽅法使⼀个类的实例化延迟到其⼦类。

ConcreteProduct
Product ConcreteFactory
+factoryMethod ()...
: Product
Factory
+factoryMethod ()...
: Product
某银⾏计算机储蓄系统的⼯作流程⼤致如下:
储户填写的存款单或取款单由业务员键⼊系统,如果是存款则系统记录存款⼈的姓名、住址(或电话号码)、⾝份证号码、存款类型、存款⽇期、到期⽇期、利率及密码(可选)等信息,并印出存款单给储户;如果是取款⽽且存款时留有密码,则系统⾸先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。

画出数据流程图.。

相关文档
最新文档