软件工程简答题答案 第五版.docx
- 文档编号:5992720
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:25
- 大小:46.86KB
软件工程简答题答案 第五版.docx
《软件工程简答题答案 第五版.docx》由会员分享,可在线阅读,更多相关《软件工程简答题答案 第五版.docx(25页珍藏版)》请在冰豆网上搜索。
软件工程简答题答案第五版
软件工程简答题
第一章绪论
1.什么是软件危机?
软件危机有什么表现?
软件危机产生的原因是什么?
答:
所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要是指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断膨胀的先有软件。
表现:
(1)对于软件开发的成本和进度的估计很不准确。
(2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。
(3)开发的软件可靠性差。
(4)软件通常没有适当的文档资料。
(5)软件的可维护性差。
(6)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
原因:
软件开发中遇到的问题因找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,导致了软件危机。
2.简述软件的发展过程。
答:
软件生产的发展划分为三个年代:
(1)程序设计时代:
这一时期,软件的生产主要是个体手工劳动的生产方式。
(2)程序系统时代:
由于计算机的应用领域不断扩大,软件的需求也不断增长,软件由于处理的问题域扩大而使程序变得复杂,设计者不得不由个体手工劳动组成小集团合作,形成作坊式生产方式小集团合作生产的程序系统时代。
(3)软件工程时代:
软件工程时代的生产方式是采用工程的概念、原理、技术和方法,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。
3.什么叫软件工程?
软件工程是如何克服软件危机的?
答:
软件工程是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
为了克服软件危机,人们从其他产业的工程化生产得到启示,采用工程的概念、原理、技术和方法来开发和维护软件。
4.软件工程的目标是什么?
软件工程有哪些原则?
答:
软件工程的目标是:
在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。
原则如下:
抽象、模块化、信息隐藏、局部化、完整性、一致性和可验证性。
5.为什么说软件工程是一门综合性的交叉学科?
答:
因为软件工程涉及哲学、计算机科学、工程科学、管理科学、数学和应用领域知识。
6.软件工程方法学的基本内容包括哪些?
答:
基本内容包括:
(1)结构化理论和方法。
(2)模块技术与数据抽象。
(3)软件测试与程序正确性证明。
(4)软件分析与设计方法、工具和环境。
(5)软件工程管理与质量评价。
7.软件产品具有哪些特殊性质?
答:
Notfound.
8.软件工程学研究的对象是什么?
答:
软件工程研究的主要内容包括软件开发技术和软件开发管理两个方面。
在软件开发技术中,它主要研究软件开发方法、软件开发过程、软件开发工具和环境。
在软件开发管理中,它主要研究软件管理学、软件经济学和软件心理学等。
第二章基本理论
1.什么是软件的生命周期模型?
它主要有那些模型?
答:
软件生命周期模型是描述软件开发过程中各种活动如何执行的模型。
主要有:
瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型、基于知识的模型和变换模型。
2.什么是软件开发方法?
有那些主要开发方法?
答:
软件开发方法是一种使用早已定义好的技术集及符号表示习惯组织软件生产过程的方法。
主要有:
结构化方法、Jackson方法、维也纳开发方法和面向对象的开发方法。
3.开发软件为什么首先要确定软件生命周期模型?
答:
一个强有力的软件生命周期模型对软件开发提供了强有力的支持,为软件开发过程中所有活动提供了统一的政策保证,为参与软件开发的所有成员提供了帮助和指导。
它提示了如何演绎软件过程的思想,是软件生命周期模型化技术的基础,也是建立软件开发环境的核心。
4.软件工程过程包括那些过程?
答:
包括如下7个过程:
(1)开发过程
(2)管理过程(3)供应过程(4)获取过程(5)操作过程(6)维护过程(7)支持过程
5.软件生命周期内阶段的划分为什么要受软件的规模、性质、种类、开发方法等影响?
答:
因为软件在其生存期内的每个阶段都有较明显的特征,有相对独立的任务,有其专门的方法和工具。
6.软件定义与分析时期主要解决什么问题?
答:
通俗地讲,主要解决以下问题:
(1)要做的是什么软件?
(2)没有有可行性?
(3)软件的具体需求是什么?
(4)验收标准是什么?
7.瀑布模型的主要开发过程和优缺点有哪些?
答:
开发过程有6个阶段:
系统需求分析、软件需求分析、系统设计、软件编码、系统测试和软件维护。
优缺点:
8.简述原型模型的特点,它与瀑布模型的关键区别是什么?
答:
原型模型的最大特点是:
利用原型法技术能够快速实现系统的初步模型,供开发人员和用户进行交流,以便较准确地获得用户的需求;采用逐步求精的方法使原型逐步完善,这是一种在新的层次上不断反复推进的过程。
它与瀑布模型的关键区别是它可以大大避免在瀑布模型冗长的开发过程中看不见产品雏形的现象。
9.简述喷泉模型的基本思想。
答:
喷泉模型以面向对象的软件开发方法为基础,以用户需求为动力,以对象作为驱动的模型。
它适合面向对象的开发方法。
第三章可行性研究
1.可行性研究论证主要集中在那些领域?
答:
Notfound.
2.如何进行软件的成本估算?
答:
首先可以用代码行定量估算方法,把开发软件中实现每一个功能所需要的源代码行数与成本联系起来。
其次可以用任务分解技术估算成本。
3.可行性研究的任务是什么?
答:
一般从以下四个方面研究系统方案的可行性。
(1)技术可行性研究
(2)经济可行性研究(3)法律可行性研究(4)开发方案的选择性研究
4.简述可行性研究的步骤。
答:
研究步骤:
(1)系统定义
(2)对于现行系统进行分析研究(3)导出新系统的逻辑模型(4)设计方案(5)推荐可行的方案(6)编写可行性研究报告
5.在软件的系统分析之前,为什么要制订一个系统的标准?
答:
Notfound.
6.可行性研究报告的主要内容有哪些?
答:
(1)引言
(2)可行性研究前提(3)对现行系统的分析(4)所建议系统的技术可行性分析(5)所建议系统的经济可行性分析(6)社会因素可行性分析(7)其他可供选择方案(8)结论意见
7.你认为在成本估算中,货币的时间价值在可行性中的作用是什么?
答:
由于经济效益与软件的生命周期的长度有关,货币的时间价值就直接影响软件的开发和维护成本,从而直接影响软件的经济效益。
8.经过可行性研究后,一个项目如果值得开发,为什么要制定项目开发计划?
答:
因为软件开发项目的计划涉及实施项目的各个环节,带有全局的性质。
计划的合理性和准确性往往关系着项目的成败。
第四章需求分析与系统结构
1.需求分析的目的是什么?
答:
需求分析是软件定义时期的最后一个阶段,其基本任务是回答“系统必须做什么”这个问题,确定系统必须完成哪些工作。
对目标系统提出完整、准确的要求。
2.怎样建立目标系统的逻辑模型?
要经过哪些步骤?
答:
分析人员根据前面获取的需求资料,要进行一致性的分析检查,在分析、综合种逐步细化软件功能,划分成各个子功能。
同时对数据域进行分解,并分配到各个之功能上,以确定系统的构成及主要成分。
最后要用图文结合的形式,建立起系统的逻辑模型。
3.什么是结构化分析?
答:
结构化方法是分析、设计到实现都使用结构化思想的软件开发方法,实际上它由三部分组成:
结构化分析、结构化设计和结构化程序设计。
它也是一种实用的软件开发方法。
4.需求分析由哪些部分组成?
答:
(1)问题明确定义
(2)导出软件的逻辑模型(3)编写文档
5.需求分析为什么要研究问题域?
答:
Notfound.
6.良好的软件体系结构设计有什么好处?
答:
体系结构的设计对于一个大型系统的设计、开发的成败起着至关重要的作用。
体系结构对于系统的非功能属性如系统性能、可扩展性、可靠性、安全性、精确度、可复用性、互操作性等的影响尤为深刻。
因而一个良好的软件体系结构设计保证了软件系统的性能和生命周期。
7.消除包之间的循环依赖性有哪两种主要方法?
答:
(1)PackageA将PackageA中的循环依赖元素提取到PackageC中PackageAPackageBPackageBPackageC
(2)PackageAPackageA将PackageC中的循环依赖元素提取到PackageD中PackageBPackageBPackageCPackageCPackageD
8.简述UML和Z结合的求精方法。
答:
和目前工程界的常规方法相比,基于UML和Z的软件体系结构求精方法有明显的不同。
首先,开发原则不同,基于UML和Z的软件体系结构求精方法通常希望能够直接构造出尽可能正确的系统。
其次,开发模式也不同,在使用基于UML和Z的软件系统结构求精方法开发过程中,需求分析和设计阶段需求投入大量的工作通常占到全部工作量的60%~70%,而编码和测试工作只占30%~40%。
第五章总体设计
1.结构化设计方法的基本思想是什么?
它怎样与结构化分析衔接?
答:
结构化设计是以结构化分析产生的数据流图为基础,将数据流图按一定的步骤映射成软件结构。
与结构化分析衔接,构成了完整的结构化分析与设计技术,是目前最广泛的软件设计方法之一。
2.简述软件总体设计阶段的基本任务。
答:
软件总体设计阶段的任务是概要地回答系统应该如何实现,因此要把握与详细设计的区别。
要完成如下任务:
(1)软件系统结构设计
(2)数据结构及数据库设计(3)网络系统设计(4)软件总体设计文档(5)评审
3.举例说明各种类型的模块耦合。
答:
(1)数据耦合:
两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据。
(2)控制耦合:
传递的信息中有控制信息。
(3)公共环境耦合:
两个或多个模块通过一个公共数据环境相互作用的耦合。
(4)内容耦合:
最高程度的耦合,如P121图。
4.简述模块、模块化及模块化设计的概念。
答:
模块在程序中是数据说明、可执行语句等程序对象的集合,或者是单独命名和编址的元素,如高级语言中的过程、函数和子程序等。
在软件的体系结构中,模块是可组合、可分解和更换的单元。
模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。
5.什么是模块的独立性?
设计中为什么模块要独立?
对于独立性怎样度量?
答:
划分模块时,尽量做到高内聚,低耦合,保持模块相对对立性,并以此原则又话初始的软件结构。
(1)如果若干模块之间耦合强度过高,每个模块内功能不复杂,可将它们合并,以减少信息的传递和公共区的引用。
(2)若有多个相关模块,应该对它们的功能进行分析,校区重复功能。
6.试论“一个模块,一个功能”的优点。
答:
Notfound.
7.简述变换流的设计步骤。
答:
(1)确定数据流图中的变换中心、逻辑输入和逻辑输出
(2)设计软件结构的顶层和第一层(3)设计中、下层模块(4)设计的优化
8.简述事务流的设计步骤。
答:
(1)确定数据流图中的事务中心和加工路径
(2)设计软件结构的顶层和第一层(3)进行事务结构中、下层模块的设计、优化等工作。
9.试论软件设计与软件质量的关系。
答:
10.什么是模块的影响范围?
什么是模块的控制范围?
它们之间应该建立什么样的关系?
答:
在软件结构中,由于存在着不同事务处理的需要,某一层上的模块会存在着判断处理,这样可能影响其它层的模块处理。
一个模块的作用范围应在其控制范围之内,且条件判定所在的模块应与受影响的模块在层次上尽量靠近。
11.什么是软件结构?
简述软件结构设计的优化准则。
答:
软件结构是软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制层次体系。
对于一个问题,可用不同的软件结构来解决,不同的设计方法和不同的划分与组织,得出不同的软件结构。
为了提高设计的质量,必须根据软件设计的原理改进软件设计,优化准则如下:
(1)模块独立性准则
(2)控制与作用范围之间的准则(3)结构特征准则(4)模块的接口准则
第六章软件详细设计
1.简述详细设计的基本原则与主要任务。
答:
详细设计要完成所有设计的细节。
主要任务有:
(1)数据结构设计
(2)物理设计(3)算法设计(4)界面设计(5)其他设计(6)编写设计说明书
2.任意选择一种排序算法,分别用流程图和PDL语言描述其详细过程。
答:
PDL语言全称是过程设计语言(ProcessDesignLanguage),它是在伪代码的基础上,扩充了模块的定义与调用、数据定义和输入输出而形成的。
它的控制结构与伪代码相同。
PDL是一种用于描述模块算法设计和细节处理的语言。
3.假设只有SEQUENCE和DO-WHILE两种结构,如何用它们来完成IF-THEN-ELSE的操作?
答:
Notfound.
4.概要设计与详细设计有什么区别?
答:
在软件的总体设计中,完成了数据和系统结构的设计。
已将系统划分成为多个模块,并将它们按照一定的原则组装起来,也确定了每个模块的功能及模块与模块之间的外部接口。
在理想情况下,详细设计是软件设计的第二阶段。
在这个极端,由于开发系统内外的人员理论上都使用一种自然语言,因此设计说明最好是用自然语言。
很清楚,这个阶段必须定义过程的细节。
第七章面向对象方法概论
1.什么是面向对象?
答:
面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。
2.面向对象的发展经历了哪几个阶段?
答:
面向对象方法的某些概念,可以追溯到20世纪50年代人工智能的早期研究。
但是人们一般把20世纪60年代由挪威计算中心开发的Simula-67语言看做面向对象语言发展史上的第一个里程碑。
但是直到20世纪80年代后期,第二种语言SmallTalk的应用尚不够广泛。
20世纪80年代中期到90年代,是面向对象语言走向繁荣的阶段。
3.面向对象方法有什么特点?
答:
主要有以下特点:
(1)从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。
(2)事物的静态特征(即可能用一些数据来表达的特征)用对象的属性表示,事物的动态特征(即事物的行为)用对象的服务表示。
(3)对象的属性与服务结合为一体,成为一个独立的实体,对外屏蔽其内部细节,即封装。
(4)对事物进行分类。
把具有相同属性和服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个示例。
(5)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。
特殊类继承一般类的属性与服务,面向对象方法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。
(6)复杂的对象可以用简单的对象作为其构成部分,称作聚合。
(7)对象之间通过消息进行通信,以实现对象之间的动态联系。
(8)通过关联表达对象之间的静态关系。
4.传统的软件工程和面向对象软件工程有何异同点?
答:
Notfound.
5.什么是继承?
答:
定义:
特殊类的独享拥有其一般类的全部属性与服务,就是称作特殊类对一般类的继承。
6.什么是消息?
答:
定义:
消息就是向对象发出的服务请求,它应该含有下述信息:
提供服务的对象标识、服务标识、输入信息和回答信息。
7.什么是多态性?
答:
对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的书类型或表现出不同的行为。
这使得一个属性或服务名在一般类及其各个特殊类中具有不同的语义。
第八章模型
1.什么是状态?
答:
状态是对象的属性值和链接的一种抽象。
根据影响对象总的行为的性质,一系列组合在一起是一个状态。
2.什么是事件?
答:
事件是发生在某一个时间点的一件事。
3.简述构成动态模型的几个要素。
答:
(1)时间和状态
(2)操作(3)嵌套状态图(4)实践技巧
4.怎样用状态图描述事件?
答:
状态图是这样一种图,其结点表示状态,用方向弧和标明事件名表示变迁。
一个状态化成矩形圆角框并含有可选的名字,变迁用从接受状态到目标状态的尖头表示,在箭头上标明产生变迁的事件名,所有脱离某一状态的变迁必对应不同的事件。
状态图详细说明了由事件序列引起的状态序列。
如果一个对象处于某一状态并且表示它的变迁之一的事件发生的话,则对象进入变迁的目标终止状态,这个变迁称为“激发”。
如果多余一个变迁脱离一个状态,则第一个发生的事件引起相应的变迁的激发。
如果一个事件发生但没有脱离当前状态,即没有变迁,那么该时间被忽略。
事件的一个序列对应图中走过的一条路径。
5.简述事件如何触发操作?
答:
动作是一种瞬间的操作。
动作与事件有关,动作表示相对于状态图的变迁来说时间延续不重要的操作。
动作也能表示内部控制操作,诸如设定属性或产生另一个事件。
6.试述动态模型的并发性。
答:
Notfound.
7.用例子说明并发活动是如何同步的
答:
Notfound.
第九章对象分析
1.用图示表示对象类及主动对象类的表示法。
答:
普通类主动对象类
classname
attributes
operations()
@classname
attributes
operations()
2.研究问题域应包括哪些工作要点?
答:
(1)认真听取问题域专家的见解
(2)亲临现场(3)阅读领域相关资料(4)借鉴他人经验
3.发现对象有哪些原则?
答:
(1)正确地运用抽象原则
(2)策略与启发:
①考虑问题域②考虑系统边界③考虑系统责任(3)对象的发现和标识:
①动机②方法③三视图模型(4)审查和筛选:
①舍弃无用的对象②对象的精简③推迟到OOD考虑的对象(5)识别主动对象
4.试说明主动服务与被动服务的区别。
答:
主动服务是不需要接收消息就能主动执行的服务,它在程序实现中是一个主动地程序成分,例如用于定义进程或线程的程序单位。
被动服务是只有接受到消息才执行的服务,它在编程实现中是一个被动的程序成分,例如函数、过程、例程等。
5.对系统中的对象进行哪些步骤以发现对象的属性?
答:
对象的属性是描述对象静态特征的一个数据项。
通过一下步骤:
(1)从厂里判断这个对象应该具有哪些属性。
(2)根据当前问题域分析这个对象应该有哪些属性。
(3)从系统责任要求的角度分析这个对象应具有哪些属性。
(4)建立这个对象涉及到系统中所需的信息,包括要保存和管理的信息。
(5)对象有哪些需要区别的状态,是否需增加一个属性来区别这些状态。
(6)对象为了在服务中实现其功能,需要增设哪些属性。
(7)表示整体-部分结构和示例连接需要用什么属性。
6.画出“栈”对象的状态转换图。
答:
第十章关系分析
1.什么叫整体-部分关系?
答:
整体-部分关系反映了对象之间的构成关系,它也称为聚集关系,用于描述系统中各类对象之间的组成关系。
通过它可以看出某个类的对象以另外一些类的对象作为其组成部分。
2.用图示表示整体-部分结构。
答:
3.列举出几种情况下运用整体-部分结构而实现或支持复用。
答:
在以下两种情况下都可以运用整体-部分结构而实现或支持复用:
一种情况是在两个或更多的对象类中都有一组属性和服务描述这些对象的一个相同的组成部分。
把它们分离出来作为部分对象,建立整体-部分结构,这些属性和服务就被多个类复用,从而简化了它们的描述。
另一种情况是系统中已经定义了某类对象,在定义其他对象时,发现其中一组属性和服务与这个已定义的对象是相通的,那就不必再重复地定义这些属性与服务,只需建立它与前一类对象之间的整体-部分结构。
4.画出一般类和特殊类的关系图。
答:
5.画图说明一般-特殊结构的表示法。
答:
第十一章控制驱动的设计
1.系统总体方案的内容包括哪些方面?
答:
系统的总体方案内容如下:
(1)项目的背景、目标与意义。
(2)系统的应用范围。
(3)对需求的简要描述,采用的主要技术。
(4)使用的硬件设备、网络设施和商品软件。
(5)选择的软件体系结构风格。
(6)规划中的网络拓扑结构。
(7)子系统划分。
(8)系统分布方案。
(9)经费预算、工期预计、风险分析。
(10)售后服务措施,对用户的培训计划。
2.列举出几种典型的软件体系结构风格。
答:
(1)管道与过滤器风格。
(2)客户–服务器风格。
(3)面向对象风格。
(4)隐式调用风格。
(5)仓库风格。
(6)进程控制风格。
(7)解释器模型。
(8)黑板风格。
(9)层次风格。
(10)数据抽象风格。
3.列举用主动对象表示控制流时应遵循的应用规则。
答:
(1)在一个表示进程的主动对象中,有且仅有一个表示进程的主动服务。
(2)如果要把一个进程和隶属于它的现成分散到不同的对象中去表示,则尽可能使每个对象中只含有一个表示线程的服务。
(3)如果要把进程和隶属于它的线程放在一个对象中表示,就应该把这个进程的全部线程都放在同一个对象中,避免一部分集中,一部分分散。
第十二章问题域的设计
1.对象设计必须遵循的步骤有哪些?
答:
(1)组合三种模型以获取类上的操作。
(2)实现操作的设计算法。
(3)优化数据的访问路径。
(4)实现外部交互式的控制。
(5)调整类结构,提高继承性。
(6)设计关联。
(7)确定对象表示。
(8)把类和关联封装成模块。
2.对象模型与动态模型和功能模型之间的关系如何?
答:
与功能模型的关系:
对象模型表示在功能模型中的施动者、数据存储和流的结构,而动态模型表示了执行这一处理的序列。
与对象模型的关系:
功能模型表示在类上的操作和每个操作的参数,因此它表示了在类之间的供应者与客户的关系。
同台模型表示了每个对象的状态,以及接受事件和改变状态时执行的操作。
与动态模型的关系:
功能模型表示了底层动作和动态模型未定义的底层动作以及在动态模型中未定义的活动的定义。
对象模型表示改变了什么状态和经历了什么操作。
3.如何确定在操作中起主导作用的对象?
答:
在确定哪个对象在操作中起主导作用时,必须对自己提下列问题:
(1)当其他对象执行动作时,是否有一个对象在起作用?
通常,最好是把操作与操作的目标联系起来,而不是与初始化程序联系起来。
(2)当其他对象只查询所包含的信息时,操作是否修改另一个对象?
被改动对象是操作目标。
(3)检查设计操作的类和关联,看哪个类是这个对象模型的子网中最集中的,如果类和关联都围绕一个中心类形成星型,那么它就是操作的目标。
(4)如果对象不是软件,而是在内部表示的实际对象,应推、移动、激活什么正式对象,或操纵其他什么真实对象去初始化一个操作?
4.实现动态模型有哪几种方法?
答:
NotFound.
5.怎样安排类以增加继承的机会?
答:
(1)重新安排和调整类及操作以增强继承性。
(2)从类组合中抽象出共同特性。
(3)当集成的语义不正确时,使用授权的共享行为。
6.比较关联遍历的三种方法。
答:
书P338。
7.简述限制操作范围的设计原则。
答:
NotFound.
第十三章用户界面设计
1.窗口系统的定义是什么?
它所管理的资源有哪些?
答:
窗口系统是控制位映像显示器与输入设备的系统软件。
它所管理的资源有屏幕、窗口、像素映像、色彩表、字体、图形资源及输入设备。
2.从命令输入到命令处理所发生的消息有哪4种情况?
答:
NotFound.
3.设计人-机交互子系统要对用户进行哪几种分析?
答:
设计出让用户满意的人-机交互界面应遵循如下准则:
一致性、操作简便、及时提供反馈信息、提供撤销命令、无需记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程简答题答案 第五版 软件工程 答题 答案 第五