文档库 最新最全的文档下载
当前位置:文档库 › 软件工程课后习题简答题

软件工程课后习题简答题

软件工程课后习题简答题
软件工程课后习题简答题

第一章:

三、简答题

1. 软件产品的特性是什么?

答:●软件是一种逻辑产品,具有无形性;

●软件产品的生产主要是研制;主要是脑力劳动;

●软件不存在磨损和老化问题,但存在退化问题;

●软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式;

● 软件具有“复杂性”,其开发和运行常受到计算机系统的限制。

2. 软件发展有几个阶段?各有何特征?

答:①程序设计阶段。

硬件特征:价格贵、存储容量小、运行可靠性差。

软件特征:只有程序、程序设计概念,不重视程序设计方法。

②程序系统阶段。

硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。

软件特征:程序员数量猛增,开发人员素质低。

③软件工程阶段。

硬件特征:向超高速、大容量、微型化及网络化方向发展。

软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。

3. 什么是软件危机?其产生的原因是什么?

答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。软件危机主要表现在两个方面:

(1) 软件产品质量低劣,甚至开发过程就夭折。

(2) 软件生产率低,不能满足需要。

4. 什么是软件过程?有哪些主要的软件过程模型?它们各有哪些特点?

答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。软件过程模型是对软件开发实际过程的抽象和简化,是描述软件开发过程中各种活动如何执行的模型,因此又称为软件开发模型。

主要的软件过程模型有:瀑布模型、增量模型、螺旋模型、喷泉模型和基于知识的模型等。

⑴瀑布模型是经典的软件开发模型,将软件开发活动中的各项活动规定为依线性顺序连接的若干阶段,它简单易用,在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大的作用。但在软件开发实践中也逐渐暴露出它的缺点。它将一个充满回溯的软件开发过程硬性分割为几个阶段,无法解决软件需求不明确或者变动的问题。

⑵增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。

⑶螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:制定计划、风险分析、实施工程、客户评估。

⑷喷泉模型用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。软件开发过程有4

个阶段,即分析、系统设计、软件设计和实现。各阶段相互重叠,以分析为基础,资源消耗成塔形,从高层返回低层无资源消耗。强调增量开发,是对象驱动的过程,反映了对象的开发和重用过程。

⑸基于知识的模型也称为智能模型。通过领域的专家系统,可使需求说明更加完整、准确和无二义性。通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。

5. 有哪些主要的软件开发方法?

答:主要的软件开发方法有:结构化开发方法、原型化开发方法和面向对象的开发方法。

6. 软件生存周期各阶段的主要任务是什么?

答:软件生存周期按瀑布模型分为6个阶段:

● 可行性研究与计划(确定系统的目标和规模,分析项目的可行性);

● 需求分析与规格说明(明确系统的规格和要求);

● 设计(包括概要设计和详细设计,将系统分解为模块);

● 编程(用程序语言实现每个模块,简单容易);

● 测试(发现并改正错误,分为模块测试、集成测试和系统联调三级);

● 运行维护(扩充功能、纠错等)。

7. 原型化方法的核心是什么?它具有哪些特点?

答:原型化方法的核心是,花费少量代价建立一个可运行的系统,使用户及早获得学

习的机会。强调软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。它是一个循环的模型。速成原型法按以下步骤循环执行:

快速分析。②构造原型。③运行和评价原型。④修改与改进。

第二章:

三、简答题

1. 需求工程包括哪些基本活动?各项基本活动的主要任务是什么?

答:需求工程过程包括如下主要活动:

⑴获取需求。深入实际,在充分理解用户需求的基础上,获取足够多的问题领域的知识,积极与用户交流,捕捉、分析和修订用户对目标系统的需求,并提炼出符合解决领域问题的用户需求。需求获取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等。

⑵需求分析与建模。对已获取的需求进行分析和提炼,进行抽象描述,建立目标系统的概念模型,需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。进一步对所建立的模型(原型)进行分析。需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。

⑶需求规格说明。对需求模型进行精确的、形式化的描述,为计算机系统的实现提供基础。

⑷确认需求。以需求规格说明为基础输入,通过符号执行、模拟或快速原型等方法,分析和验证需求规格说明的正确性和可行性,确保需求说明准确、完整地表达系统的主要特性,就是对需求规格说明与用户达成一致。其主要任务是冲突求解,包括定义冲突和冲突求解两方面。常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。

⑸需求管理。在整个需求工程过程中,贯穿了需求管理活动。需求管理主要包括跟踪和管理需求变化,支持系统的需求演进。由于客户的需要总是不断(连续)增长的,但一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)就成为软件管理的首要问题。对于传统的变化管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。

当前的发展是软件家族法,即产品线方法。多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性,并进行关于变化的推理。进化需求是十分必要的。

2.简述抽取需求的主要方法,并比较它们的特点。

⑴面谈法。这是一种重要而直接简单,随时可使用的发现和获取需求的方法。面谈的对象主要有用户和领域专家:与用户面谈主要了解和提取需求,与领域专家面谈,是一个对领域知识的学习和转换过程。使用该方法时应注意面谈前要充分准备,面谈后认真分析总结,同时注意掌握面谈的人际交流技巧,才能取得好的效果。

⑵问卷法调查法。通过采用向用户发问卷调查表的方式,达到彻底弄清项目需求的一种需求获取方法。这是一种从多个用户处收集需求信息的有效方式,是对面谈法的补充。

⑶会议讨论法。所谓会议讨论法,是指开发方和用户方召开若干次需求讨论会议,达到彻底弄清项目需求的一种需求获取方法。这种方法适合于开发方不清楚项目需求的情况。

⑷原型法。对于某些试验性、探索性的项目,更是难于得到一个准确、无二义性的需求。而原型化方法(Prototyping Method)是获取这一类项目需求的有效方法。

⑸面向用例的方法。分析建立“用例”的过程,也就是提取需求的过程。

在实际应用中,常常将以上方法进行综合应用。

3. 客户的需要总是不断地增长,但是一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化就成为软件进化的首要问题。请说明需求变更的管理过程。

答:需求变更的管理是需求管理的核心内容。其主要任务是对系统需求变更进行跟踪和控制。对传统的变化管理过程来说,其基本内容包括软件配置、软件基线和变更审查等。目前推出的新的管理方法有软件家族法,即软件产品线方法及多视点方法等。下图描述了需求变更的管理过程。

4. M公司的软件产品以实验型的新软件为主。用瀑布模型进行软件开发已经有近十年了,并取得了一些成功。若你作为一名管理人员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由。切记:副总裁不喜欢报告长度超过一页。

参考答案提示:

应先简述瀑布模型的缺点,它已不适宜开发实验型的软件。根据快速原型法的特点,说明它特别适合于开发探索型、实验型的软件。

5. 如何画分层数据流图?有哪些基本原则?

答:总的原则是:至顶而下,逐层分解(画分层数据流图)。逐层分解的画法可以控制每一层的复杂度。

顶层:将整个系统作为一个加工,描述系统边界(输入与输出)。

中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解。

底层:由不再进行分解的基本加工组成。

画分层数据流图的基本原则有:①数据守恒与数据封闭原则。②加工分解的原则。③子图与父图“平衡”的原则。④合理使用文件的原则。

6. 加工小说明有哪些描述方法?它们各有何优缺点?为什么不采用自然语言进行描述?

答:主要的描述方法有三种;结构化语言、判定表和判定树。

●结构化语言:介于自然语言和形式语言(如谓词逻辑)之间的的一种半形式语言,它是自然语言的一个受限制的子集。是在自然语言的基础上加上一些约束,一般分为两层结构:外层语法较具体,为控制结构(顺序、选择、循环);内层较灵活,表达“做什么”。

常用结构化英语或结构化汉语表示,精确、简明扼要、文体灵活。结构化语言特点:简单,易学,少二义性,但不好处理组合条件。

●判定表:适用于表述比较复杂的加工逻辑,如具有多项选择条件的操作。判定表是一种二维的表格,常用于较复杂的组合条件。通常由四部分组成,如教材表2-2所示。对用结构化语言不易处理的较复杂的组合条件问题,可使用判定表。

●判定树:本质上与判定表相同,图形表示更易于理解。描述一般组合条件较清晰,但不易输入计算机。

7. 考察下图中子图、父图的平衡关系。

图1

图2

参考答案:

⑴显然,图1中子图与父图不平衡。

⑵图2中,如果有如下数据条目:

订货单=客户+账号+数量

则子、父图平衡。

8. 画出银行取款过程的用例图。问题描述为:储户用存折取款,首先填写取款单,根据“银行卡”中的信息检验取款单与存折,如有问题,将问题反馈给储户,否则,登录“储户存款数据库”,修改相应数据,并更新“银行卡”,同时发出付款通知,出纳向储户付款。

参考答案:

分析所给出的需求,确定角色为:储户、存款数据库、存折、出纳。用例为:填写取款单、验证取款单与存折、银行卡管理、数据库管理、付款。

银行取款系统的高层用例图

第三章:

三、简答题

1. 请解释为什么需要体系结构设计。

答:软件体系结构为软件系统提供了一个结构、行为和属性的高级抽象,由构成系统的元素的描述、元素间的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。良好的体系结构是普遍适用的,它可以高效地处理各种各样的个体需求。

2. 集中式模型和分布式模型相比各有什么优缺点?

答:以集中式的仓库模型为例。其主要优点:

(1)数据由某个子系统产生,并且被存储到仓库中,以便为另外一些子系统共享;

(2)由于中央集中控制的缘故,共享数据能得到有效的管理,各子系统之间不需要通过

复杂的机制来传递共享数据;

(3)一个子系统不必关心其他的子系统是怎么使用它产生的数据;

(4)所有的子系统都拥有一致的基于中央数据仓库的数据视图。如果新子系统也采用相

同的规范,则将它集成于系统中是容易的。

但这种系统也有明显的缺陷:

(1)虽然共享数据得到了有效的管理,但随之而来的问题是各子系统必须有一致的数据

视图以便能共享数据,换句话说,就是各子系统之间为了能共享数据必须走一条折

中的路线,这不可避免地会影响整个系统的性能。

(2)一个子系统发生了改变,它产生的数据也可能发生结构上的改变。问题随之而来,

其他的子系统如何能正确解析这些数据呢?所以为了达到共享的目的,数据翻译系

统会被引入到整个系统当中。但这种翻译的代价是很高的,并且有时是不可能完成

的。

(3)中央数据仓库和各子系统的私有数据库必须有相同的关于备份、安全、访问控制和

恢复的策略,这可能会影响子系统的效率。

(4)集中式的控制使数据和子系统的分布变得非常困难甚至成为不可能。这里分布指的

是将数据或子系统分散到不同的机器上。

分布式结构有这样的一些优势:

(1)资源共享:系统中每个服务节点上的资源都可以被系统中的其他节点访问;

(2)开放性高:系统可以方便地增删不同软硬结构的节点;

(3)可伸缩性好:系统可以方便地增删新的服务资源以满足需要;

(4)容错能力强:分布式系统中的信息冗余可以容忍一定程度的软硬故障;

(5)透明性高:系统中的节点一般只需知道服务的位置而不必清楚系统的结构。

但分布式结构也存在着一些不足:

(1)复杂性:分布式系统比集中式系统要复杂得多。集中式系统的性能主要依赖于主机

的处理器能力,而分布式系统的性能则还会依赖于网络的带宽,这让情形变得更加

复杂。

(2)安全性:网络环境随时面临着各种威胁:病毒、恶意代码、非法访问等。如何保证

安全性是一个让人头疼的问题。

(3)可管理性:分布式系统的开放性造成了系统的异构性。显而易见,管理异构的系统

比管理主机系统要困难得多。

(5)不可预知性:这主要指系统的响应时间。网络环境本身的特点决定了网络负载会明

显地影响整个系统的响应时间。

3. 请举出一种集中式模型的实例,并图示它的结构。

答:请参考3.2.1“仓库模型”

4. 胖客户模型和瘦客户模型的区别是什么?它们分别被应用在什么样的场合?

答:在胖客户模型中,客户端应用负责用户界面和应用逻辑部分,因此它的工作比较繁重。一般的数据库应用都是属于这种结构。而与此相反,在瘦客户模型中,服务器负责了更多的工作,而客户端的工作就变得非常单纯。浏览器/Web服务器结构就属于瘦客户结构,而且常被称为B/S(Browser/Server)结构。

5.请举出一种分布式模型的实例,并图示它的结构。

答:请参考3.2.4“两层C/S模型”

6.请为一个公司的电子商务网站建设提出体系结构设计方案。

答:略。

7.分布式对象模型与客户-服务器模型有什么异同?

答:在C/S模型中,客户和服务器的“地位”是不“平等”的:客户只能向服务器提出服务请求,而服务器不能向客户提出服务请求,同时服务器之间可以互相提供服务。另外,客户一般要知道服务器在网络上的具体位置(服务器的域名或者IP地址),相反,服务器则不需要。这种差别在一定程度上限制了系统的灵活性和可扩展性。而在分布式对象结构中,服务的提供者是被称为“对象”(Object)的系统组件(System Component)。

每个对象的地位在逻辑上是平等的,它们可以互相为对方提供所需的服务。在这种情况下,提供服务的对象就是服务器,而提出服务请求的对象就是客户。为了能够提供服务,每个对象都有一个服务接口。

8.请查阅相关的资料,写一篇对比CORBA和DCOM的报告。

答:略。

9.模块分解的最终目的是什么?

答:模块分解的目的是将系统“分而治之”,以降低问题的复杂性,使软件结构清晰,易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。

10. 模块分解应该遵循什么样的标准?

答:按照“降低块间联系,提高块内联系”的设计总则对模块进行分解。具体从以下方面考虑:

(1) 尽可能建立功能模块;

(2) 消除重复功能;

(3) 模块的作用范围与控制范围,即当作用范围为控制范围的子集时,才能获得较低的

块间联系;

(4) 模块的大小适当;

(5) 模块的扇入/扇出数不宜太多。

也可以用软件独立性的两个定性指标来度量模块分解的标准:

一是耦合性。用于描述模块之间联系的紧密程度。从三个方面衡量块间联系大小:

①方式(直接或间接)②类型(数据型、控制型、混合型)③数量(数量越大,块间联

系越紧密。

二是内聚性。用于描述模块内部联系的紧密程度。它是从功能的角度来度量模块内的联系。显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。功能型模块独立性最好。

11~17题答案略。

第四章:

三、简答题

1.消息传递机制与传统程序设计模式中的过程调用相比,有何本质区别?

答:(1) 消息传递必须给出信道的信息,通常要指出明确的接收方。

(2) 由于接收方是一通信实体,具有保持状态的能力,所以同一发送方在不同时刻向

同一接收方发送同样的信息,可因接收方的当前状态不同而得到不同的结果。

(3) 消息传递可以是异步的,发送方可以不必等待接收方返回信息就可以继续执行后

面的操作,因而支持程序的并发和分布执行,而过程调用只能是同步的,本质上是串行的。2.比较面向对象方法与结构化方法的特点,说明为什么面向对象方法比结构化方法更加优越。

答:结构化方法是以数据流和数据封闭性为基础的,由SA、SD和SP三部分构成。该方法:

①无法实现从问题空间到解空间的直接映射。开发方法求解过程是先对应用领域(问题空间)进行分析,建立起问题空间的逻辑模型,再通过一系列复杂的转换和算法,构造计算机系统,获得解空间。

②无法实现高效的软件复用。结构化方法是面向过程的,将数据和处理过程(操作)分离,不仅增加了软件开发的难度,也难于支持软件复用。

③开发方法难以实现从分析到设计的直接过渡,从SA到SD要经过一系列复杂的变换。

而面向对象的方法以对象为核心,强调模拟现实世界中的概念而不是算法,尽量用符合人类认识世界的思维方式来渐进地分析、解决问题。

①使问题空间与解空间具有一致性,便于对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量。

②软件开发各个阶段有机集成,有利于系统的稳定性。

③具有良好的重用性。面向对象的技术在利用可重用的软件成分构造新软件系统上具有很大的灵活性,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性。继承性本身就是一种重用机制。

综上,显然面向对象方法比结构化方法更加优越。

3.Coad/Yourdon方法主要有面向对象分析(OOA)和面向对象设计(OOD)。OOA概念模型由5个层次组成,请简述这5个层次。

答:OOA概念模型的5个层次分别是:

(1) 发现类及对象。描述如何发现类及对象。从应用领域开始识别类及对象,形成整个应用的基础,然后,据此分析系统的责任。

(2) 识别结构。该阶段分为两个步骤。第一,识别“一般-特殊”结构,该结构捕获了识别出的类的层次结构;第二,识别“整体-部分”结构,该结构用来表示一个对象如何成为另一个对象的一部分,以及多个对象如何组装成更大的对象。

(3) 定义属性。其中包括定义类的实例(对象)之间的实例连接。

(4) 定义服务。其中包括定义对象之间的消息连接。

(5) 定义主题。主题由一组类及对象组成,用于将类及对象模型划分为更大的单位,以便于理解。

4.面向对象的分析包括哪些主要活动?所建立的分析模型包括哪些类型的模型?

答:面向对象的分析过程分为论域分析和应用分析。论域分析过程是抽取和整理用户需求并建立问题域精确模型的过程。应用分析是将论域分析建立起来的问题论域模型,用某种基于计算机系统的语言来描述。面向对象的分析具体包括以下活动:

①获取用户基本需求。通常使用用例(User Case)来收集和描述。

②标识类和对象。包括标识类及对象的属性和操作。

③定义类的结构和层次。通常有一般与特殊( Generalization—Specialization)结构,整体

与部分(Whole—Part)结构。

④建立类(对象)之间的关系,用“对象-关系模型”描述系统的静态结构。

⑤建立对象—行为模型,描述系统的动态行为。

所建立的分析模型包括:

①基本模型。是一个类图(class diagram),是以直观的方式表达系统最重要的信息。OOA 基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。

②主题图(subject)。又称为子系统(subsystem),是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。

③交互图(interaction diagram) 是用例与系统成分之间的对照图。

主题图和交互图又称为补充模型。

5.面向对象设计的主要任务是什么?

答:面向对象的设计(Object-Oriented Design,OOD)是面向对象开发方法(OOSD)的核心阶段。是在OOA的基础上解决系统“如何做”的问题。主要任务包括:

⑴系统设计

系统设计的任务包括:将分析模型中紧密相关的类划分为若干子系统(也称为主题),子系统应该具有良好的接口,子系统中的类相互协作;标识问题本身的并发性,将各子系统分

配给处理器,建立子系统之间的通信。

⑵对象设计

通过对象的认定和对象层次结构的组织,确定解空间中应存在的对象和对象层次结构,并确定外部接口和主要的数据结构。

⑶设计优化

对设计进行优化,主要涉及提高效率的技术和建立良好的继承结构的方法。

6.为什么面向对象的方法能够有效地解决软件需求中存在的问题?

需求过程中存在两大难题,一是需求的确定是困难的,二是需求是不断变动的。尤其是对于一些大型软件系统,开发周期长,系统规模大,复杂性高。

面向对象的方法中,由于对象所具有的封装性和信息隐蔽,使得对象的内部实现与外界隔离,具有较强的独立性。而且面向对象的方法是以对象为中心构造软件系统,而不是基于对系统功能进行分解来构造系统,当系统功能需求改变时不会引起系统结构的变化,使软件系统具有良好的稳定性和可适应性。

软件生存期各阶段所使用的方法、技术具有高度的连续性,对软件开发过程所有阶段进行综合考虑,能有效地降低软件开发的复杂度,提高软件质量,也便于需求的确定。

7. OMT方法明确提出了建模的概念,为什么在软件开发过程中需要进行建模?

答:OMT方法从不同而又相关的角度建立三类模型:对象模型、动态模型和函数模型,并为每一类模型提供了图形表示。

软件模型一般包括数学模型、描述模型和图形模型。在软件开发过程中进行建模,一是由于软件系统的复杂性和规模的不断增大,需要建立不同的模型对系统的各个层次更好地进行描述。模型具有的直观性及丰富的信息描述,便于开发人员与用户的交流。建立的模型为以后的系统维护和升级提供了文档。鉴于上述原因,在软件开发过程中建模,能够提高软件开发的效率和质量。

8.为什么说面向对象的方法为软件复用提供了良好的环境?

答:软件复用是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。复用的软件成分也称为可复用构件(Reusable Component)。

对可复用组件一般有以下的要求:具有功能上的独立性与完整性;具有较高的通用性;具有较高的灵活性;具有严格的质量保证;具有较高的标准化程度。面向对象的方法对复用的支持主要反映在:

⑴面向对象方法可以保护在整个软件生存周期概念、原则、术语及表示法达到高度一致。这使面向对象方法不但能在各个级别支持软件复用,而且能对各个级别的复用形成统一、高效的支持,达到良好的全局效果。

⑵OOA基本模型体现了更高的抽象,更容易成为一个可复用的系统构架。

⑶所有的对象都用类作为其抽象描述。类作为一种可复用构件,在运用于不同系统时,不会出现因该类对象实例不同而使系统模型有所不同的情况。

所以面向对象方法的主要概念及原则与软件复用的要求十分吻合。OO方法中的对象和类是系统的基本构成单位,它符合可复用构件所应具备的那些特性,如完整性、独立性、可标识性、一般性、抽象、封装等。尤其是面向对象方法的对象封装性,为软件复用技术提供了良好的条件。而继承机制本质上就是一种复用机制,因此面向对象方法为软件复用提供了一个良好的环境。

第五章:

三、简答题

1. 以图1(一个在学校首次报名的UML 活动图)为例,说明如何绘制活动图。

图1 学校首次报名的UML活动图

答:要创建一个UML活动图,需要反复执行下列步骤。

(1) 定义活动图的范围。首先应该确定建模的范围,是对整个系统建模,还是一个子系统。一旦定义了作图的范围,应该在其顶部,用一个注释指明该图的标题和惟一的标识符,还可标注该图的时间及作者姓名。本题的建模范围是一个学校管理系统中的“报名”部分。

(2) 添加活动。活动是活动图的核心,活动是完成系统任务所必须执行的处理步骤。可从用例模型出发,对每个角色(actor)所驱动的主要用例引入一个活动,如果是对整个系统建模,应对每个主要流程引入一个活动。在“报名”的活动图中确定了“Fill out enrollment ”(填写报名表)、“Enroll in university”(登记入学)、“Obtain help to fill out forms”(帮助填写报名表)、“Attend university overview presentation”(参加介绍学校会议)等6个活动。

(3) 添加起点和结束点。每个活动图只能有一个起始点和多个结束点,结束点可以是所有活动的结束,也可以是对执行过程的终止。

(4) 添加活动间的转变。当一个活动结束时将进入下一个活动,称为活动转移。可标明活动转移的条件、引起活动转移的事件。如活动“填写报名表”有两个活动转移,当填写报名表不正确时,则转移到活动“帮助填写报名表”;当填写正确时,则转移到活动“登记入学”。

(5) 添加判断点。当对建模的逻辑需要做出一个判断时,需要添加判断点。例如,在图1中,在“Enroll in u niversity”活动之后,还必须按照入学条件进行判断,满足条件的继续执行入学报到的活动,而不满足入学条件的则结束。

(6) 找出并行活动。若两个活动间没有直接的联系,而且它们都必须在第三个活动开始前结束,则它们是可以并行运行的。在图1中,用同步线描述系统任务中的并发活动,活动“Attend university overview presentation”(参加介绍学校会议)和“E nroll in seminars” (注册研讨班)及“Make initial tuition payment”(交付初始的学费)可并行执行,使用同步线表示它们都要在结束整个流程前完成。

2. 简述扩展、包含和细化三种UML依赖关系的异同。

答:扩展、包含和细化都是描述了元素之间的依赖关系,但具体含义不同。

扩展(extend)关系是对基本用例在对某些“扩展点”的功能的增加。通过向被扩展的用例添加动作来扩展用例。

包含(include)关系表示一个元素为了实现或完成其全部的功能,需要用到已存在的另一个模型元素,本质上是一种使用关系。

细化关系是不同语义层(如分析和设计)之间模型元素的依赖关系,表示一个元素对另一个因此细化关系可描述的语义范围较广,包括模型的逐步细化、优化、变换、模板、模型合成、框架组成等。

3. 软件开发为什么要使用UML建模?它有何特点?

答:软件开发的过程犹如雕琢一件工艺品,由无形到有形,由粗到细。鉴于软件系统的复杂性和规模的不断增大,项目失败的可能性也相应增加。需要建立不同的模型对系统的各个层次进行描述。

在长期的研究与实践中,人们越来越深刻地认识到,建立简明准确的表示模型是把握复杂系统的关键。模型是对事物的一种抽象,在软件开发过程中,建立各种模型,以便更透彻地了解系统的本质。由于UML以图形模型为主,模型的直观性及丰富的信息描述便于开发人员与用户的交流。建立的模型也为以后的系统维护和升级提供了文档。

总的来说,使用模型可以使人们从全局上把握系统的全貌及其相关部件之间的关系,可以防止过早地陷入各个模块的细节。因此,面向对象的分析与设计应该从建模开始。

UML是一种标准的图形化、可视化的建模型语言,UML的核心是建立系统的各类模型。其主要特点是:

⑴统一标准。UML统一了面向对象的主要流派Booch、OMT和OOSE等方法中的基本概念,已成为对象组织OMG的正式标准,并提供了标准的面向对象的模型元素的定义和表示。

⑵面向对象。UML集面向对象技术的众家之长。吸取了面向对象技术领域中其他流派的

长处。

⑶可视化、表示能力强。系统的各种模型都能用UML的可视化模型清晰地表示,对系统描述能力强,模型蕴涵的信息丰富,可用于复杂软件系统的建模。

⑷独立于过程。UML是系统建模语言,独立于开发过程。

⑸易掌握、易用。UML的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握使用。

正是由于UML具有上述优点,所以对于大型复杂系统的建模,UML是最合适的选择。

4. 简述UML实际建模过程。

答:UML建模过程是一个迭代过程。每次迭代都建立相应的模型。分为以下几个阶段:

①分析阶段。建模的目的是捕捉系统的功能需求,分析、提取所开发系统的“客观世界”领域的类以及描述它们的合作关系。常以用例图为首选模型。

②设计阶段。建模的目的是通过考虑实现环境,将分析阶段的模型扩展和转化为可行的技术实现方案。常建立以类图为主的静态模型,及包括状态模型、顺序模型、活动模型和合作模型等动态模型。

③实现阶段。主要工作就是进行编码,同时对已构造的模型作相应的修正。

④配置阶段。通过模型描述所开发系统的软硬件配置情况建立配置模型。

⑤测试阶段。使用前几个阶段所构造的模型来指导和协助测试工作。

5. 在UML中,状态图、协作图、活动图、顺序图在系统分析中各起到了什么作用?

答:状态图(State Diagram)用来描述一个特定对象在其生存周期或在某段时间内的所有可能的状态及其引起状态转移的事件。一个状态图包括一系列的状态以及状态之间的改变。例如订单的状态变化等,在实时系统中用得较多,还可以用于辅助设计用户界面。

顺序图(Sequence Diagram) 清晰地描述一组对象之间动态的交互关系、时间的约束关系,着重描述对象间消息传递的时间顺序,所以顺序图在实时系统中被大量使用。

当参与交互的对象数目增加,交互关系复杂时用顺序图描述会显得杂乱,协作图(Collaboration Diagram)从另一个角度来更好地描述相互协作的对象间的交互关系和链接(Link)关系。着重体现交互对象间的静态链接关系和协作关系。协作图也可以从顺序图生成。

活动图(Activity Diagram)是由状态图变化而来的,从系统任务的观点来看,系统的执行过程是由一系列有序活动组成的。活动图可以有效地描述整个系统的流程,描述了系统的全局的动态行为,且只有活动图是唯一能够描述并发活动的UML图。

6. 顺序图与协作图都是交互图,它们有何不同?所描述的主要系统特征是什么?

顺序图(Sequence Diagram) 重点描述某些对象间消息传递的时间顺序,对象间的通信和交互通过在对象的生命线之间传送的消息来表示。还常给出消息的说明信息及消息之间的时间限制及一些约束信息等。但当参与交互的对象数增加,交互关系复杂时难于表达清楚对象之间的交互关系。

协作图(Collaboration Diagram) 则着重体现交互对象间的静态链接关系和协作关系,不强调执行事件的顺序,而是强调为了完成某个任务,对象之间通过发送消息实现协同工作关系。可以有效地描述当参与对象数较多时的交互关系。

7. 状态图与活动图有何相同与不同之处?在建立系统模型时,应该如何使用这两类模型?

答:活动图(Activity Diagram)是由状态图变化而来的,它们各自用于不同的目的。状态图着重描述了对象的状态变化以及触发状态变化的事件。但是,从系统任务的观点看系统,它是由一系列有序活动组成的,活动图是从活动的角度描述系统任务,并且可以描述系统任务中的并发活动。活动图描述了系统中各种活动的执行顺序,刻画一个方法中所要进行的各项活动的执行流程。活动图显示动作及其结果,着重描述操作实现中完成的工作以及用例或对象内部的活动。

此外,在状态图中状态的变迁通常需要事件的触发,而活动图中一个活动结束后将立即进入下一个活动。

8. 什么是抽象类?在建模时有时使用抽象类有什么好处?

答:抽象类是指没有实例的类,定义一些抽象的操作,即不提供实现方法的操作,只提供操作的特征,并标注{abstract}。如在建立类模型时,常将一些属性与操作类似的类作为一个抽象类的子类,使系统结构更加清晰,增加系统的可读性。

9. 以例5-5中图5.22“资源管理用例图”为例,说明<>和<>的区别。

答:在图5.22中,用例“删除资源”和“更新资源”与用例“查找资源”之间是<>的关系,<>本质上是一种使用关系,当一个用例包含另一个用例时,这两个用例之间就构成了使用关系。说明“删除资源”和“更新资源”的操作都需要首先“查找资源”。

扩展<>是向一个用例中加入一些新的动作后构成了另外一个用例,后者是继承前者的一些行为得来的。图5.22中,对用例“更新资源”中增加动作“清除技能”,得到用例“从资源中清除技能”,增加动作“指定技能”,得到用例“把技能指定给资源”,因此,用例“更新资源”与“从资源中清除技能”和“把技能指定给资源”之间的关系是<>。

10. 在分析和设计阶段都需要建立类图,试说明分析类图与设计类图的主要区别是什么。

答:在软件开发的不同阶段都使用类图,但这些类图表示了不同层次的抽象。在需求分析阶段,类图是研究领域的概念;在设计阶段,类图重点描述类与类之间的接口。

由于分析类图主要描述应用领域中的概念,它们的类可以从这些概念中得出,或者说分析类图中的类是从需求中获取的。

设计类图描述软件的接口部分,而不是软件的实现部分。面向对象开发方法非常重视

区别接口与实现之间的差异,可以用一个类型(Type)描述一个接口,这个接口可能因为实现环境、运行特性或者用户的不同而具有多种实现方式。设计类图更易于开发者之间的相互理解和交流。设计类图通常是在分析类图的基础上进行细化和改进的。

11. 问题描述:储户用存折取款,首先填写取款单,根据“银行卡”中的信息检验取款单与存折,如有问题,将问题反馈给储户;否则,登录“储户存款数据库”,修改相应数据,并更新“帐卡”,同时发出付款通知,出纳向储户付款。

⑴ 建立系统的用例模型;

⑵ 建立角色和用例的描述模板。

答:⑴通过分析,确定系统的角色为:储户、存款数据库、存折、出纳。用例为:填写取款单、验证取款单与存折、银行卡管理、数据库管理、付款。

⑵描述模板:

角色描述模板:

银行取款系统的高层用例图

角色:储户 角色职责: 提供取款存折和取款信息。 角色职责识别: 提供存折、填写取款单、领取付款。 角色:存折 角色职责:储户存、取款的凭证。 角色职责识别: (1)向系统提供取款凭证。 (2)与“银行卡管理”子系统交互,核对取款单。 角色:出纳 角色职责:向储户付款。 角色职责识别: (1) 根据储户存款数据库的通知,向储户付款。 (2)与“付款”子系统交互。

角色:存款数据库 角色职责: 对储户信息及存、取款业务进行管理。 角色职责识别: (1)在系统支持下完成银行数据库管理工作。 (2)为银行卡管理及通知付款提供信息。

用例描述模板:

用例名:验证取款单与存折执行者:储户、存折、存款数据库

目标:根据“银行卡”中的信息检验取款单与存折。

功能描述:

1. 获取“银行卡”中的信息。

2. 检验取款单与存折信息。

3. 返回验证结果。

其他非功能需求: 高可靠性、实时性

主要步骤:

1.储户填写取款单。

2.根据银行卡信息,检验取款单与存折信息是否正确。

3.若取款单与存折有问题,将信息返回给储户,否则登录“储户存款数

据库”,修改相应数据,并更新“银行卡”。

相关用例:填写取款单、银行卡管理、数据库管理

相关信息:(优先级、性能、执行频率):

优先级:根据储户类型,决定处理的优先次序,VIP用户优先。

性能:实时性、高可靠性。

其他用例模板略。

12. 一个小型图书资料管理系统的主要功能有:图书资料的借出、归还、查询和管理,该系统有图书管理员和普通读者,普通读者要使用系统必须先注册。

图书管理员负责添加、更新和修改、删除图书资料,登记和查询图书的借阅、归还情况。读者可以按照作者或主题检索图书资料,还可以预订图书资料,即当新购买或有读者归还时,系统立即通知读者来借阅。

⑴确定系统的类,并定义其属性和操作;

⑵画出系统的分析类图。

参考答案:

⑴在分析系统需求的基础上,采用名词识别法与实体识别法,确定以下系统的类:

①Book类

该类标识一本书,其属性包括书名、作者、出版社等。

②User Information类

该类标识一个用户,其属性包括用户名、密码、用户类型等。

③Librarian类

该类是User Information类的子类,其操作包括查询读者信息,添加、删除、更新读者信息、查询书籍信息、添加、删除、更新书籍信息等。

④Borrower类

该类是User Information类的子类,其操作包括查询个人信息、修改密码等。

⑤System Manager类

该类是User Information类的子类,其操作包括查询图书管理员信息,添加、删除、更新图书管理员信息等。

⑥BorrowCriteria类

该类标识一条借书规则,其属性包括规则名,规则应用对象等。

⑦Info Database类

该类标识一个数据库,其属性有数据库名,其操作有读数据、写数据和查找数据。

⑧Communication类

该类实现各数据库间的数据传输,其操作包括建立通信套接字、绑定端口、建立连接、发送数据、接受数据等。

⑵系统的分析类图:

由于图书馆的多本书构成书库,增加BookDatabase类,与Book类之间是聚合关系。同样由于借书规则不止一条,增加CriteriaDatabase类,与BorrowCriteria类之间是聚合关系。

User Information

13.为什么说RUP与UML密切结合,能够开发出满足最终用户需要的高质量软件?

答:好的软件过程,是应用UML成功地进行软件开发的关键。在众多的软件开发过程中,RUP统一过程(Rational Unified Process)能够与UML最佳结合,不仅因为该过程的开发者也是UML的创立者,更因为RUP过程能够有效地测度工作进度,控制和改善工作效率。

RUP是最佳软件开发经验的总结,具有迭代式增量开发、使用实例驱动、以软件体系结构为核心的三个鲜明特点,还包括了软件开发中的6大经验:迭代式开发;管理需求;使用基于组件的软件体系结构;可视化建模;验证软件质量;控制软件变更。因此,RUP与UML 密切结合,能够开发出满足最终用户需要的高质量软件。

14.分析RUP的二维开发模型,说明RUP的迭代开发过程。

答:在RUP中,软件开发生存周期根据时间和RUP的核心工作流划分为二维空间。横轴描述RUP开发过程的动态结构,纵轴描述RUP的静态组成部分。

⑴横轴把软件开发周期(Cycle)划分为起始(Inception)、演化(Elaboration)、构造(Construction)和提交(Transition) 四个连续的阶段(Pahse)。

⑵纵轴表示核心工作流。RUP中有商业建模、需求、分析和设计、实现、测试、部署、配置和变更管理、软件项目管理和环境9个核心工作流(Core Workflows):

RUP中的每个阶段都由一个或多个连续的迭代组成,每一个迭代都是一个完整的开发过程,产生一个可执行的产品版本,在每个阶段结束前都应有一个里程碑(MileStone)评估该阶段的工作,只有当阶段目标达到时才允许项目进入下一阶段,产生一个阶段里程碑。这是一种更灵活、风险更小的方法,是多次通过不同的开发工作流,这样可以更好地理解需求,

构造一个健壮的体系结构,并最终交付一系列逐步完成的版本,称为一个迭代生存周期。第七章:

1.基于组件的软件开发的优势是什么?

大量来自产业实例研究的证据表明基于组件的软件开发导致软件系统的开发成本、开发质量、开发效率都得到了显著的改善。

①开发的质量

基于组件的软件开发的一个明显优点就是提高了软件的质量。可复用的组件相对于在单一应用中使用的模块来说,一般都更为成熟并具有较高的质量保证,这主要是因为:(1)可复用的组件在开发过程中都经过严格的测试。组件的开发者一般都是在该组件的使用领域具有丰富经验、对该领域具有深入研究的开发团体,他们能从以往的客户和开发项目那里得到许多宝贵的经验,因而更容易开发出高质量的组件“精品”。在组件的开发过程中,为了保证它广泛的适应性和在频繁使用过程中的正确性,一般对其有更高的质量要求,并且在组件正式发布以前,都要进行更为严格的测试。因而可复用组件的质量会得到更好的保证。

(2)可复用的组件在不断复用过程中,其中的错误和缺陷会被陆续的发现,并得到及时的排除。所以随着一个可复用组件复用次数的不断增加,其中的错误会逐渐减少,软件的质量也随之改善。在软件开发中使用的一个可复用组件通常都是经过许多其他客户的频繁使用,因此可复用的组件相对于新开发的模块更为成熟。

HP公司的一份研究报告认为:“被复用代码的缺陷率是每一千行0.9个缺陷。而在新开发的代码中缺陷率是每一千行4.1个缺陷。对一个包含68%复用代码的软件来说,缺陷率是每一千行2.0个缺陷,比无复用的软件缺陷率大约减少了51%。”

所以可以说,基于可复用的组件的软件开发在质量和可靠性方面确实带来了实质性的提高。

②开发的效率

基于可复用组件的软件开发对于提高软件开发的效率也有着显著的作用。软件复用已经渗透到了软件开发的各个阶段,在开发的各个阶段都有可以被重复使用的软件产品。在分析和设计阶段可以复用的组件包括:应用框架、用例、分析和设计模型等产品。在编码阶段可以复用的组件包括:函数库、子程序库、类库、二进制组件库等产品。在测试阶段复用的组件包括测试用例和测试数据等产品。显然使用现成可用的可复用组件比从头开始进行开发在开发效率上大为提高。在软件开发的各个阶段使用相应的可复用组件对于提高软件产品的生产效率具有重大的意义。

然而使用可复用的组件对开发效率的影响受到多方面因素的影响,这些因素包括:应用领域、问题的复杂度、开发队伍的结构和规模、项目开发的周期、被应用的技术等。由于在不同的应用中影响其开发效率的因素有所不同,所以可复用组件对开发效率的提高程度也是不同的,一般大约30%-50%的复用可以使开发效率提高25%-40%。

③开发的成本

使用可复用的现成组件进行软件开发比一切都重新开发,其成本大为节省。它避免了不必要的重复劳动和人力财力的浪费。同时也必须意识到基于组件的软件开发也是有一定成本和代价的。首先是开发可复用的组件的成本。通常开发、测试、维护一个可复用的组件的成本是一个具有相同功能非复用组件的1.5-3倍。因为可复用的组件需要有更强的适应性和更高的质量保证。其次是建立和维护组件库的成本。对组件库的管理、维护、检索和修改也需要投入相当的时间和金钱。另外,在开发软件复用一个组件时,也是需要一定成本的。虽然复用一个现成的组件的成本比重新开发的成本要低得多,只有后者的四分之一

左右,但是复用的开销不会降到零。

2.基于组件的软件开发面临哪些挑战和困难?

在意识到基于可复用的组件进行软件开发在开发成本、开发效率和开发质量方面带来的巨大效益的同时,开发人员也必须清楚的意识到使用可复用的组件进行软件开发所面临的风险和困难。这包括使用的组件不能完全适应应用的需要,组件的适应性很差或根本不能对其进行调整。

另外在进行基于组件的软件开发时,很多情况下需要使用的可复用组件需要向第三方的组件开发商进行购买,这会带来更大的风险:

(1)在同一系统采用多个开发商提供的组件,它们之间的兼容性可能是开发过程中所要面对的一个严峻的问题。

(2)采用随处可以购买到的组件可能会使开发出来的软件产品丧失技术上的独创性和市场上的竞争力。

(3)第三方的组件开发商可能歇业,这会使购买的组件失去维护服务。这些都是在购买第三方组件进行软件开发时无法回避的问题,因此需要对这些风险进行充分的估计。

3. 生产者复用(Product Reuse)和消费者复用(Consumer Reuse)有何区别?

答:生产者复用是指建立、获取或者重新设计可复用构件的活动。生产者复用中涉及的活动包括:复用的规划、领域分析、构件的开发、构件库的组织和管理。消费者复用是指使用可复用的构件建立新的软件系统的活动。消费者复用中涉及的活动包括:应用系统的规划、构件的检索和选择、应用系统中非复用部分的开发、应用系统的组装等。

4.什么是可复用组件?相对于普通软件产品,对可复用组件有何特殊要求?

答:可复用构件是指可以在多个软件系统的开发过程中被重复使用的软件产品。

相对于普通软件产品,对可复用构件的特殊要求包括:具有功能上的独立性与完整性、具有较高的通用性、具有较高的灵活性、具有严格的质量保证和具有较高的标准化程度。

5.什么是软件复用?

答:软件复用是指重复使用已有的软件产品来开发新的软件系统,以达到提高软件系统的开发质量与效率、降低开发成本的目的。在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含了在软件生产的各个阶段所得到的各种软件产品,这些软件产品包括:领域知识、体系结构、需求分析、设计文档、程序代码、测试用例和测试数据等。将这些已有的软件产品在软件系统开发的各个阶段重复使用,这就是软件复用的原理。

6. 软件复用的层次可以分为哪几个级别?

答:(1)代码的复用;(2)设计结果的复用;(3)分析结果的复用;(4)测试信息的复用。

7.简述三种应用最为广泛的组件技术规范:COM、CORBA和EJB的各自特点。

答:略。

第八章:

三、简答题

1. 等价分类法的基本思想是什么?

答:根据程序的输入特性,将程序的定义域划分为有限个等价区段——“等价类”,从等价类中选择出具有“代表性”的用例,即测试某个等价类的代表值就等价于对这一类其他值的测试。如果某个等价类的一个输入数据(代表值)测试中查出了错误,说明该类中其他测试用例也会有错误。

2. 自顶向下渐增与自底而上渐增各有何优、缺点?

答:①自顶向下渐增

优点:能够尽早发现系统主控方面的问题,并尽早测试系统结构的问题。

缺点:需要编写桩模块,由于下属模块往往不止一个,也不止一层,加之模块接口的复杂性,桩模块很难模拟各下层模块之间的调用关系,也无法验证桩模块是否完全模拟了下属模块的功能。因此很难尽早查出底层容易出错的复杂模块中的错误,所以导致过多的回归测试。

②自底向上渐增

优点:需要编写驱动模块。驱动模块是模拟主程序或者调用模块的功能,处于被测试模块的上层,所以驱动模块只需模拟向被测模块传递数据,接收或打印从被测模块返回的数据等功能,比编写桩模块容易。还能够尽早查出底层涉及较复杂的算法和实际的I/O模块中的错误。

缺点:只有当系统所有模块全部组装完成,才能看到系统完整的结构,才能测试系统的主控功能。

3. 渐增式与非渐增式有何区别?为什么通常采用渐增式?

答:非渐增式是将所有的模块一次连接起来,简单、易行,节省机时,但测试过程中难于查错,发现错误也很难定位,测试效率低。

渐增式是将模块一个一个地连入系统,每连入一个模块,都要对新子系统进行测试。这种组装测试方案虽然用机时多,但比较非渐增式容易查出错误及进行错误定位,有利于查出模块接口部分的错误,测试效率高。因此通常采用渐增式。

4. 什么是α测试和β测试?

答:α测试是在开发机构的监督下,在确认测试阶段后期由个别用户对软件进行测试,目的是评价软件的FLURPS(功能、局域化、可使用性、可靠性、性能和支持性),注重界面和特色。

β测试是在进行了α测试的基础上,由支持软件预发行的客户对FLURPS进行测试,主要目的是测试系统的可支持性,是在软件产品正式发布前的测试。

5. 黑盒法与白盒法的区别是什么?各自运用在什么情况下?

答:白盒法测试又称结构测试或逻辑驱动测试。必须考虑程序内部结构和内部特性,针对特定条件或与循环集设计测试用例,对软件的主要逻辑路径进行测试。一般主要用于模块测试。

黑盒法测试又称功能测试或基于规格说明的测试。这种方法是从用户观点出发,测试时把被测程序当作一个黑盒,不考虑程序内部结构和内部特性,测试者只知道该程序输入和输出之间的关系或程序的功能的情况下,依靠能够反映着这一关系和程序功能需求规格的说明书,来确定测试用例和推断测试结果的正确性。一般用于集成测试、确认测试及功能测试、系统测试等。

6.软件测试与其他软件开发活动相比具有什么样的特点?

答:软件测试的目标在于,以最小的工作量和成本,尽可能多地发现软件系统中存在的各种错误和缺陷,以确保软件系统的正确性和可靠性。其主要特点是:

软件工程期末考试题含答案

一、选择题 1.瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和_。 ( C ), A .详细计划 B .可行性分析 C .运行阶段 D.测试与排 错 2.在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试年勺系统测试阶段的目标( A ) A .需求分析阶段 B .详细设计阶段 C.概要设计阶段 D .可行性研究阶段, 3.软件工程的出现主要是由于(C ) , A.程序设计方法学的影响 B.其它工程科学的影响 C.软件危机的出现 D.计算机的发展, 4.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实旅的主要保证是(C) A.硬件环境 B.软件开发的环境 C.软件开发工具和软件开发的环境 D.开发人员的素质 5.软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为(B) A.相互排斥B相互补充C独立使用 D.交替使用 是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C) A.基于瀑布模型的结构化方法 B.基于需求动态定义的原型化方法 C.基于对象的面向对象的方法 D.基于数据的数据流开发方法 7.在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B) A.结构化方法B原型化方法C面向对象的方法 D.控制流方法 8.结构化分析方法是一个预先严格定义需求的方法,它在实施时强调的是分析对象的(B) A.控制流 B.数据流 C.程序流 D.指令流 9.软件开发的结构化生命周期方法将软件生命周期划分成(A) A.计划阶段.开发阶段.运行阶段 B.计划阶段.编程阶段.测试阶段 C.总体设计.详细设计.编程调试 D.需求分析.功能定义.系统设计 10.软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是(C) A.分析阶段 B.设计阶段 C.编码阶段 D.测试阶段

软件工程试题与答案-(20)

软件工程期末试卷(A) 说明:本试卷为04级计算机专业(专升本)软件工程期末试卷,总计100分,时间100分钟 一、选择题:(每题1分,共20分)(将答案写在题号前的()中) ( C )1. 软件是()。 A. 处理对象和处理规则的描述 B. 程序 C. 程序及其文档 D. 计算机系统 ( B )2. 软件需求规格说明的内容不应包括()。 A. 主要功能 B. 算法的详细描述 C. 用户界面及运行环境 D. 软件的性能 ( B )3. 程序的三种基本控制结构是()。 A. 过程、子程序和分程序 B. 顺序、选择和重复 C. 递归、迭代和回溯 D. 调用、返回和转移 ( D) 4. 面向对象的分析方法主要是建立三类模型,即( )。 A) 系统模型、ER模型、应用模型 B) 对象模型、动态模型、应用模型 C) E-R模型、对象模型、功能模型 D) 对象模型、动态模型、功能模型 ( C ) 5. 在E-R模型中,包含以下基本成分( )。 A) 数据、对象、实体 B) 控制、联系、对象 C) 实体、联系、属性 D) 实体、属性、操作 ( A ) 6. 各种软件维护的类型中最重要的是( )。 A) 完善性维护B) 纠错性维护C) 适应性维护D) 预防性维护 ( B ) 7.软件测试的目标是()。 A. 证明软件是正确的 B. 发现错误、降低错误带来的风险 C. 排除软件中所有的错误 D. 与软件调试相同 ( D )8.软件生命周期中所花费用最多的阶段是() A.详细设计 B.软件编码 C.软件测试 D.软件维护 ( C )9.若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0, 1.0],现从输入的角度考虑一组测试用例:-1.001, -1.0, 1.0, 1.001.设计这组测试用例的方法是()A.条件覆盖法 B.等价分类法 C.边界值分析法 D.错误推测法 ( D )10、详细设计的基本任务是确定每个模块的( )设计 A.功能 B.调用关系 C.输入输出数据 D.算法 ( A )11.设函数C(X)定义问题X的复杂程序,函数E(X)确定解决问题X需要的工作量(时间)。对于两个问题P1和P2,如果C(P1)>C(P2)显然E(P1)>E(P2),则得出结论E(P1+P2)>E(P1)+E(P2)就是:() A.模块化的根据B.逐步求精的根据C.抽象的根据D.信息隐藏和局部化的根据 ( D )12.下面几种白箱测试技术,哪种是最强的覆盖准则() A.语句覆盖B.条件覆盖C.判定覆盖D.条件组合覆盖 ( A )13.面向数据流的设计方法把()映射成软件结构。

土木工程概论试题及参考答案

土木工程概论试题及参考 答案 Newly compiled on November 23, 2020

土木工程概论期中测试题 一、单项选择题(共10题,每题2分,共20分) 1、_________是建造各类工程设施的科学技术的总称。 ( ) A、铁路工程 B、基本建设 C、土木工程 D、公路工程 2、________向轻质、高强、多功能化发展。 ( ) A、工程材料 B、土木工程 C、技术 D、设计 3、_______是由胶凝材料、细骨料和水等材料按适当比例配制而成的。( ) A、混凝土 B、砂浆 C、钢筋混凝土 D、三合土 4、只能在空气中硬化的称为____胶凝材料,如石膏。 ( ) A、水硬性 B、湿硬性 C、气硬性 D、干硬性 5、通常把位于天然地基上、埋置深度小于_______m的一般基础(柱基或墙基)称为天然地基上的浅基础。 ( ) A、4 B、5 C、6 D、7 6、桥梁是________工程中的重要组成部分,由正桥、引桥和导流等工程组成。 ( ) A、公路建筑 B、房屋建筑 C、河流治理 D、水利建设 7、_________是指承托基础的场地。 ( ) A、承台 B、条型基础 C、桩基础 D、地基 8、_________指由梁和柱刚性连接而成骨架的结构。 ( ) A、剪力墙 B、筒体结构 C、框架结构 D、混合结构 9、__________是双向行车道、中央设有分车带、进出口一般全控制或部分控制,为城市大量、长距离、快速交通服务。 ( )

A、快速道 B、主干道 C、次干道 D、支道 10、公路路基的_________形式有路堤、路堑和半填半挖三种。 ( ) A、功能 B、结构 C、平面布置 D、横断面 二、填空题(共10题,每空2分,共30分) 1、土木工程的发展经历了古代、近代和_______________三个阶段。 2、普通混凝土是由水泥、 _____________、细骨料、和 __________拌合,经硬化而 成的一种人造石材。 3、将上部结构的荷载传给土地基,连接上部结构与地基土的下部结构称为 __________。 4、浅基础一般分为单独基础、___________、伐板基础和箱形基础、壳体基础。 5、梁和板都是工程结构中的 _____________构件。 6、高层与超高层建筑结构的主要结构形式有_____________,框架剪力墙结构、 ________________、框支剪力墙结构、筒体结构等。 7、当前我国的公路等级按照其使用任务、功能和适应的交通量分为 ___________个 等级。 8、按结构体系和受力特点,桥梁可以划分为_________、索、__________三大基本体 系和组合体系。 9、铁路是由__________、轨道、____________组成。 10、建筑构造的设计原则是:技术适宜、____________、美观大方、___________。 三、判断题(正确的划√,错误的划×共5题,每题2分,) 1、按照桥梁主要承重结构所用材料分为:圬工桥、钢筋混凝土桥、预应力混凝土 桥、钢桥和斜拉桥等。 ( )

软件工程 简答题复习题(带答案)

n n g a r 第一章 1,与计算机硬件相比,计算机软件有哪些特点? 软件的特点如下。 1)无法直接观察计算机软件的物理形态,只能通过观察它的实际运行情况来 了解它的功能、特性和质量等。 2)人们在分析、设计、开发、测试软件产品,以及在软件开发项目的管理过 程中,渗透了大量的脑力劳动。 3)不存在像硬件一样的磨损和老化现象,但存在着缺陷维护和技术更新的问 题。 4)软件的开发和运行必须依赖于特定的计算机系统环境。 5)具有可复用性。 3,什么是软件危机?什么原因导致了软件危机? 软件危机的现象如下。 1)预算,项目一再拖延。 2)需求,开发的软件不能满足用户的要求,项目成功率低。 3)软件工程方法,软件可维护性差、软件质量差、可靠性差。 4)开发工具落后,手工方式,开发效率低。 所有导致软件危机的原因,都与软件本身的产品特点相关。 1)软件是一个复杂的逻辑产品。如果没有解决复杂问题的有效方法,以及软 件产品的结构、质量、可维护性得不到保障,开发与维护费用就会持续升 高。 2)软件产品不能实现大规模复用,这导致了软硬件生产效率的不同。 3)软件生产是脑力劳动,它看不见、摸不着,开发成本、开发周期等都无法 做到准确估算,生产过程不易控制。 4)软件成本主要是由研发成本构成;而硬件的生产成本主要是材料和制造成 本,分摊的研发成本很少,即软件研发过程与硬件制造过程相比要复杂得 多。 5,请简述软件工程研究的内容。

n d A i 软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。 软件开发方法的内容涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实 施、系统维护、版本升级等。 常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型等。软件支持过程由所支持的CASE 工具组成,常用的CASE 工具有Power Designer 和Rational Rose 等。 7,请简述软件工程的目标、过程和原则。 目标、过程和原则是一切工程的三维框架,这里是以工程的观点来看待软件开 发。 1)软件工程的目标:降低成本、及时交付高质量的软件产品(高质量、高效 率、高效益)。2)实现目标的过程即完成产品加工的过程,包括:基本过程、支持过程和组 织过程。 3)进行过程应遵守的原则:原则就是过程中的轨道约束,包括:选取适宜的 开发范型、采用合适的设计方法、提供高质量的工程支持、重视开发过程 的管理。 9,请简述现代软件工程与传统软件工程显著的区别和改进。 1)传统的软件工程是基于结构化的软件开发方法,而现代软件工程是以面向 对象技术为标志。 2)不仅在编程技术上有很大的改进,而且在分析、设计等整个开发过程中, 采用面向对象的思维方式,更加完整、自然地反映客观世界。3)采用架构技术,开发效率、产品质量得到了极大提高。 4)更注重团队开发和管理,融入更多、更新的管理理念和手段,如RUP 模型、 XP 模型、过程改进、能力成熟度模型、配置管理等。 第二章 1,如何理解软件生命周期的内在特征?

软件工程期末考试题3

试卷一 中南大学考试试卷 2006--2006 学年学期时间110分钟 专业年级:总分100分,占总评成绩 100% 注:此页不作答题纸,请将答案写在答题纸上 填空题(本题20分,每小题2分) 1. 瀑布模型是以文档为驱动、适合于()软件项目的开发。 2. 需求分析的基本任务是()。 3. 若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是()。 4. 根据程序流程图划分的模块通常是()内聚的模块。 5. 软件的分类,按其功能可分为:系统软件、()和应用软件。 6. UML的定义包括UML语义和()两个部分。 7. 客观世界中的若干类,通常有两种主要的结构关系:即分类结构和( )。 8. IDEF1X图用来描述系统的()模型,主要有实体、联系和()三种成分,其中实体可分为独立实体和(),且一个实体只能在图中出现一次。 二、简答题(本题30分,每小题5分) 1. 什么是软件工程?软件工程和计算机科学有何区别?

2. 面向对象方法和结构化方法有何区别与联系? 3. 什么是模块的作用域和模块的控制域?为何要求模块的控制域必须在作用域内? 4. 什么是设计模式?试举例说明组合设计模式的应用。 5.什么是依赖倒置原则?它和开闭原则有何联系? 6. 软件生存期过程和软件生存期模型有何联系?瀑布模型有何特点? 三、绘图题(本题34分) 1. 某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理。 (1) 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置。在进行分房时,从空房文件中读出空房信息,如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号的信息,并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租,并将算出的房租写到房租文件中。 (2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。

软件工程导论简答题大全

1.软件工程的七条基本原理是什么? 答:软件工程的七条基本原理是: 用分阶段的是的生存周期计划严格管理; 坚持进行阶段评审; 严格实施的产品控制; 采用现代程序技术; 结果应能清楚地审查; 开发小组的成员应该少而精; 承认不断改进软件工程的必要性。 2.良好的编码风格应具备哪些条件? 答:应具备以下条件: (1)使用标准的控制结构; (2)有限制地使用GOTO语句; (3)源程序的文档化(应具备以下内容) ①有意义的变量名称——“匈牙利命名规则”。 ②适当的注释——“注释规范”。 ③标准的书写格式: ——用分层缩进的写法显示嵌套结构的层次(锯齿形风格); ——在注释段的周围加上边框; ——在注释段与程序段、以及不同程序段之间插入空行; ——每行只写一条语句; ——书写表达式时,适当使用空格或圆括号等作隔离符。 (4)满足运行工程学的输入输出风格。 3.简述文档在软件工程中的作用。 答: (1) 提高软件开发过程的能见度 (2) 提高开发效率 (3) 作为开发人员阶段工作成果和结束标志 (4) 记录开发过程的有关信息便于使用与维护; (5) 提供软件运行、维护和培训有关资料; (6) 便于用户了解软件功能、性能。 4.可行性研究包括哪几方面的内容? 答: (1)经济可行性:是否有经济效益,多长时间可以收回成本; (2)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足; (3)运行可行性:系统操作在用户内部行得通吗? (4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。 5.结构化的需求分析描述工具有哪些? 答:有数据流图(DFD)、数据字典(DD)、判定表、判定树、结构化语言(PDL)、层次方框图、Warnier图、IPO图、控制流图(CFD)、控制说明(CSPEC)、状态转换图(STD)和实体—关系图(E—R)等。 6.一般面向对象分析建模的工具(图形)有哪些?

土木工程概论简答题论述题大全及答案

论述题(共2题,每题7分,共14分) 1、试述高层结构的主要结构形式及特点? 答:8层及8层以上者称为高层建筑。高层结构的主要结构形式有:框架结构,框架—剪 力墙结构,剪力墙结构,框支剪力墙结构,筒体结构等。 ①框架结构 框架结构因其受力体系由梁和柱组成,用以承受竖向荷载是合理的,在承受水平荷载方面 能力很差。因此仅适用于房屋高度不大、层数不多时采用。 ②框架—剪力墙结构 剪力墙即为一段钢筋混凝土墙体,固其抗剪能力很强,故称为剪力墙。在框架—剪力墙结 构中,框架与剪力墙协同受力,剪力墙承担绝大部分水平荷载,框架则以承担竖向荷载为主,这样,可以大大减小柱子的截面。 ③剪力墙结构 当房屋的层数更高时,横向水平荷载已对结构设计起控制作用,如仍采用框架—剪力墙结 构,剪力墙将需布置得非常密集,这时,宜采用剪力墙结构,即全部采用纵横布置的剪力墙组成,剪力墙不仅承受水平荷载,亦用来承受竖向荷载。 ④框支剪力墙结构 两种建筑的功能完全不同,为完成这两种体系的转换,需在其交界位置设置巨型的转换大 梁,将上部剪力墙的荷载传到下部柱子上。这种结构体系,我们称之为框支剪力墙体系。 ⑤筒体结构 筒体结构是由一个或多个筒体作承重结构的高层建筑体系,适用于层数较多的高层建筑。 筒体结构可分为框筒体系、筒中筒体系、桁架筒体系、成束筒体系等。 2、试述建筑结构必须满足哪些功能要求? 答:结构的功能要求 结构在规定的设计使用年限内应满足下列功能要求: (1)安全性 在正常施工和正常使用时,能承受可能出现的各种作用。 在设计规定的偶然事件(如地震、爆炸)发生时及发生后,仍能保持必需的整体稳定性所谓 整体稳定性,系指在偶然事件发生时及发生后,建筑结构仅产生局部的损坏而不致发生连续

软件工程课后习题测验简答题

第一章: 三、简答题 1.软件产品的特性是什么? 答:●软件是一种逻辑产品,具有无形性; ●软件产品的生产主要是研制;主要是脑力劳动; ●软件不存在磨损和老化问题,但存在退化问题; ●软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式; ● 软件具有“复杂性”,其开发和运行常受到计算机系统的限制。 2. 软件发展有几个阶段?各有何特征? 答:①程序设计阶段。 硬件特征:价格贵、存储容量小、运行可靠性差。 软件特征:只有程序、程序设计概念,不重视程序设计方法。 ②程序系统阶段。 硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。 软件特征:程序员数量猛增,开发人员素质低。 ③软件工程阶段。 硬件特征:向超高速、大容量、微型化及网络化方向发展。 软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。 3.什么是软件危机?其产生的原因是什么? 答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。软件危机主要表现在两个方面: (1) 软件产品质量低劣,甚至开发过程就夭折。 (2)软件生产率低,不能满足需要。 4.什么是软件过程?有哪些主要的软件过程模型?它们各有哪些特点? 答:软件过程是指在软件工具的支持下,所进行的一系列软件开发和进化的活动。软件过程模型是对软件开发实际过程的抽象和简化,是描述软件开发过程中各种活动如何执行的模型,因此又称为软件开发模型。 主要的软件过程模型有:瀑布模型、增量模型、螺旋模型、喷泉模型和基于知识的模型等。 ⑴瀑布模型是经典的软件开发模型,将软件开发活动中的各项活动规定为依线性顺序连接的若干阶段,它简单易用,在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大的作用。但在软件开发实践中也逐渐暴露出它的缺点。它将一个充满回溯的软件开发过程硬性分割为几个阶段,无法解决软件需求不明确或者变动的问题。 ⑵增量模型是一种非整体开发的模型。根据增量的方式和形式的不同,分为基于瀑布模型的渐增模型和基于原型的快速原型模型。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。 ⑶螺旋模型将瀑布模型和增量模型结合起来,并加入了风险分析。螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期可分为4个工作步骤:制定计划、风险分析、实施工程、客户评估。 ⑷喷泉模型用于采用对象技术的软件开发项目。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。软件开发过程有4

软件工程简答题复习题(带答案)

第一章 1,与计算机硬件相比,计算机软件有哪些特点? 软件的特点如下。 1)无法直接观察计算机软件的物理形态,只能通过观察它的实际运行情况来了 解它的功能、特性和质量等。 2)人们在分析、设计、开发、测试软件产品,以及在软件开发项目的管理过程 中,渗透了大量的脑力劳动。 3)不存在像硬件一样的磨损和老化现象,但存在着缺陷维护和技术更新的问 题。 4)软件的开发和运行必须依赖于特定的计算机系统环境。 5)具有可复用性。 3,什么是软件危机?什么原因导致了软件危机? 软件危机的现象如下。 1)经费超出预算,项目一再拖延。 2)不重视需求,开发的软件不能满足用户的要求,项目成功率低。 3)没有规范的软件工程方法,软件可维护性差、软件质量差、可靠性差。 4)开发工具落后,手工方式,开发效率低。 所有导致软件危机的原因,都与软件本身的产品特点相关。 1)软件是一个复杂的逻辑产品。如果没有解决复杂问题的有效方法,以及软件 产品的结构、质量、可维护性得不到保障,开发与维护费用就会持续升高。 2)软件产品不能实现大规模复用,这导致了软硬件生产效率的不同。 3)软件生产是脑力劳动,它看不见、摸不着,开发成本、开发周期等都无法做 到准确估算,生产过程不易控制。 4)软件成本主要是由研发成本构成;而硬件的生产成本主要是材料和制造成 本,分摊的研发成本很少,即软件研发过程与硬件制造过程相比要复杂得 多。 5,请简述软件工程研究的内容。 软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。 软件开发方法的内容涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级等。 常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型等。 软件支持过程由所支持的CASE工具组成,常用的CASE工具有Power Designer和

软件工程复习题及答案

2006-2007-2软件工程复习 一、单项选择题(20选10) 1. 结构化分析的主要描述手段有( B )。 A. 系统流程图和模块图 B. DFD图、数据词典、加工说明 C. 软件结构图、加工说明 D. 功能结构图、加工说明 2. 用于表示模块间的调用关系的图叫( D )。 A.PAD B.SC C.N-S D.HIPO 3. 在( B )模型中是采用用例驱动和架构优先的策略,使用迭代增量建造方法,软件“逐渐”被开发出来的。 A.快速原型 B. 统一过程 C.瀑布模型 D. 螺旋模型 4. 常用的软件开发方法有面向对象方法、面向( A )方法和面向数据方法。 A. 过程 B. 内容 C. 用户 D. 流程 5 从工程管理的角度来看,软件设计分两步完成( D )。 A. ①系统分析②模块设计 B. ①详细设计②概要设计 C. ①模块设计②详细设计 D. ①概要设计②详细设计 6. 程序的三种基本结构是( B )。 A. 过程、子程序、分程序 B.顺序、条件、循环 C.递归、堆栈、队列 D.调用、返回、转移 7. 程序的三种基本结构是( B )。 A. 过程、子程序、分程序 B.顺序、条件、循环 C.递归、堆栈、队列 D.调用、返回、转移 8. SD方法衡量模块结构质量的目标是( C )。 A. 模块间联系紧密,模块内联系紧密 B. 模块间联系紧密,模块内联系松散 C. 模块间联系松散,模块内联系紧密 D. 模块间联系松散,模块内联系松散 9.为提高软件测试的效率,应该( C )。 A.随机地选取测试数据 B.取一切可能的输入数据作为测试数据 C.在完成编码后制定软件测试计划 D.选择发现错误可能性大的数据作为测试数据 10.( D )测试用例发现错误的能力较大。 A.路径覆盖 B.条件覆盖 C.判断覆盖 D.条件组合覆盖 11.软件需求分析应确定的是用户对软件的( A )。 A. 功能需求和非功能需求 B. 性能需求 C. 非功能需求 D. 功能需求 12.下列各种图可用于动态建模的有( C )。 A.用例图 B. 类图 C. 序列图 D. 包图 13.软件过程模型有瀑布模型、( B )、增量模型等。 A. 概念模型 B. 原型模型 C. 逻辑模型 D. 物理模型 14.面向对象的分析方法主要是建立三类模型,即( D )。 A. 系统模型、ER模型、应用模型 B. 对象模型、动态模型、应用模型 C. E-R模型、对象模型、功能模型 D. 对象模型、动态模型、功能模型 15.测试的分析方法是通过分析程序( B )来设计测试用例的方法。 A.应用范围 B.内部逻辑 C.功能 D.输入数据 16. 软件工程是研究软件( B )的一门工程学科。 A. 数学 B. 开发与管理 C. 运筹学 D. 工具 17. 需求分析可以使用许多工具,但( C )是不适合使用的。 A.数据流图 B.判定表 C.PAD图 D.数据字典 18.划分模块时,一个模块内聚性最好的是( A )。 A. 功能内聚 B. 过程内聚 C. 信息内聚 D. 逻辑内聚 19.软件可移植性是用来衡量软件的( D )的重要尺度之一。 A.效率 B. 质量 C. 人机关系 D. 通用性 20.软件配置管理是在软件的整个生存周期内管理( D )的一组活动。 A.程序 B.文档 C.变更 D.数据 二、判定题(20选10) 1统一过程是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。(×) 2当模块中所有成分结合起来完成一项任务,该模块的内聚是偶然内聚。(×) 3SD方法衡量模块结构质量的目标是模块间联系松散,模块内联系紧密(√) 4当模块中所有成分结合起来完成一项任务,该模块的内聚是功能内聚。(√) 5在进行需求分析时,就应该同时考虑软件的可维护性问题。(√) 6需求分析可以使用许多工具,但数据流图是不适合使用的。(×)

历年全国自学考试软件工程试题简答题答案

历年全国自学考试软件工程试题简答题答案

全国 10月自学考试软件工程试题 简答题(本大题共6小题,每小题5分,共30分) 31. 什么是需求规约?简述需求规约的基本性质。 答:需求规约是一个软件项/产品/系统所有需求陈述的正式文档,它表示了一个软件产品/系统的概念模型。需求规约一般需要满足一下4个基本性质: 1.重要性和稳定性程度:按需求的重要性和稳定性,对需求进行 分级; 2.可修改性:在不影响其它需求的前提下可容易修改一个单一 需求; 3.完整性:设备被遗漏的需求; 4.一致性:不存在互斥的需求。 32.什么是模块耦合?简述常见的模块耦合类型及其设计原则。答:模块耦合:是指不同模块之间相互依赖程度的度量; 几中常见模块耦合类型为:内容耦合、公共耦合、控制耦合、标记耦合、数据耦合等; 设计原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合,避免内容耦合。 33.UML给出了那些表示关系的术语?简述它们的概念。 答:1.为了表示各类事物之间的关系,UML给出了表示关系的术

语:关联、泛化、细化、依赖; 2.关联是类目之间的一种结构关系,是对一组具有相同结构、相同链的描述; 3.泛化是一般性类目和它的较为特殊类目之间的一种关系; 4.细化是类目之间的语义关系,其中一个类目规约了保证另一个类目执行的契约; 5.依赖是一种使用关系,用于描述一个类目使用另一类目的信息和服务。 34.简述RUP的定义和特点。 答:RUP是基于一种过程框架,为软件开发,即为进行不同抽象层之间映射安排其开发活动的次序,制定任务和需求开发的制品,提供了指导;并为对项目中的制品和活动进行监督与度量,提供了相应的准则; RUP特点是:以用况为驱动,以体系结构为中心,迭代、增量式开发。 35.简述软件测试步骤及关注的内容。 答:软件测试步骤及关注的内容有以下几点: 1.由于软件错误的复杂性,在软件工程测试中应综合运用测试 技术,实施合理的测试步骤:单元测试、集成测试、有效性测试和系统测试;

土木工程概论总复习(含标准答案)

土木工程概论复习题汇总 一;填空题。 1、土木工程的发展经历了古代、近代和现代三个阶段。 2、砖按生产工艺分烧结砖和非烧结砖。 3、砂一般分为天然砂和人工砂。 4、配置混凝土时应优先选用中砂。 5、所谓灰是指石灰和石膏。 6、土木工程中使用的钢材是指线材和型材。 7、水泥按其用途及性能分为通用水泥、专用水泥、特性水泥。 8、普通混凝土是由水泥、粗骨料、细骨料、和水拌合,经硬化而成的一种人造石材。 9、绝热材料按其成分分为无机材料和有机材料。 10、绿色建材的发展战略应从原料采集、产品的制造、应用过程、和使用后的再循环等四个方面进行全 面系统的研发。 11、将上部结构的荷载传给土地基,连接上部结构与地基土的下部结构称为基础。 12、常用工程地质测绘方法有相片成图法和实地测绘法。 13、通常把位于天然地基上,埋置深度小于5m的一般基础以及埋深度虽超过5m,但小于基础宽度的大尺 寸基础,统称为天然地基上的浅基础。 14、刚性基础通常由砖、毛石、素混凝土、和灰土等材料做成。 15、建筑物的基础分为刚性基础和柔性基础,钢筋混凝土基础属于柔性基础。 16、浅基础一般分为单独基础,条形基础、伐板基础和箱形基础、壳体基础。 17、埋置深度大于 5米或大于基础宽度的基础,称为深基础。 18、桩按荷载传递方式分为端承桩和摩擦桩。 19、建筑物的基本构建可分为梁、板、柱、拱。 20、梁和板都是工程结构中的受弯构件。 21、梁按支撑方式可分为简支梁、悬臂梁和连续梁。 22、柱是工程结构中的受压构件。 23、用于门窗洞口上部,用于承受洞口上部结构荷载的梁叫过梁。 24、高层与超高层建筑结构的主要结构形式有框架结构,框架剪力墙结构、剪力墙结构、框支剪 力墙结构、筒体结构等。 25、框架结构承受竖向荷载能力强,但承受水平荷载能力差。

软件工程简答题66339

简答题: 1、什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机? 软件工程是:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究把工程应用于软件中提到的途径。 软件工程的本质特征: (1)软件工程关注于大型程序的构造; (2)软件工程的中心课题是控制复杂性; (3)软件产品交付使用后仍然需要经常修改; (4)开发软件的效率非常重要; (5)和谐地合作是成功开发软件的关键; (6)软件必须有效地支持它的用户 (7)在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人开发产品。 消除软件危机的途径: (1)对计算机软件有一个正确的认识(软件≠程序) (2)必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目 (3)推广使用在实践中总结出来的开发软件的成功技术和方法 (4)开发和使用更好的软件工具 2、简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 3、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型

《软件工程》期末考试题及答案++精华版!!

《软件工程》期末考试样题 一、填空题 1.软件开发模型有(瀑布模型)(螺旋模型)第四代技术模型(原型模型)构件组装模型、混合模型。 2.可行性研究一般可以从(经济)可行性、(技术) 可行性、运行可行性、法律可行性和开发可行性等方面来研究。 3.现在向银行存款,年利率为i,若希望在n 年后从银行得到F元,现在应该存入的钱数为 (F/(1+i)n)。 4.数据流图的基本符号包括(数据输入的源 点和数据输出的汇点)、(加工)、(数据流)、(数据存储文件)。 5.Jackson图除了可以表达程序结构外,还可以 表达(数据结构),它首先要分析(数据结构),并用适当的工具来描述。 6.详细设计的工具有图形工具)、表格工具和(语言工具)。 7.IPO图由(输入)、处理和(输出)三个框组 成。这个图的特点是能够直观的显示三者之间的关系。 8.面向对象技术是一整套关于如何看待(软件系统)和(现实世界)的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。面向对象方法是一种运用(对象)、(类)、(继承)、(封装)、聚集、消息传送、多态性等概念来构造系统的软件开发方法。 二、单项选择题 1.下列( A )属于系统软件。 A.WINDOWS 2000 B.Word C.Flash D.3D MAX 2.下列哪个图是N-S图的构件( C )。 A. B.

3.对于螺旋模型,下列( D 卡尔坐标表达的活动。 A. 制定计划 B. 实施工程 C. 风险分析 D. 程序编码 三、多项选择题 1.软件危机可以表现为(ABXD A.产品不符合用户的需要 B.软件产品的质量差 C.软件的可维护性差 D.软件的价格昂贵 2.Jackson图中一般可能包括(A.表头 B.表体 C.表名 D.字段名 AD )。、内容耦合是最高程度的耦合 、应该尽量使用内容耦合 、高级语言一般设计成允许内容耦合的形式、如果一个模块有多个入口,可能发生内容.下列属于不标准的书写格式( BCD )。、书写时适当使用空格分隔 、一行写入多条语句 、嵌套结构不使用分层缩进的写法 、程序中不加注释 ,错误的) 软件生存周期是从软件开始开发到开发结束 () 系统流程图是一个典型的描述逻辑系统的传() 数据流图和数据字典共同构成系统的逻辑 A

软件工程简答题

软件工程简答题 三、简答题(简要回答下列问题) 1、什么是软件工程?它目标和内容是什么? 软件工程就是用科学的知识和技术原理来定义,开发,维护软件的一门学科。 软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。 软件工程内容:包括开发技术和开发管理两个方面。 2、软件开发中有哪几种过程模型?哪些适用于面向对象的软件开发? 软件开发中常见的软件过程模型有瀑布模型、原型模型、螺旋模型、喷泉模型、统一软件过程等。 其中喷泉模型、统一软件过程适用于面向对象的软件开发。 3、什么是结构分析方法?该方法使用什么描述工具? 结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。 4、什么是软件概要设计?该阶段的基本任务是什么? 把一个软件需求转换为软件表示时,首先设计出软件总的体系结构。称为概要设计或结构设计。 基本任务: ⑴设计软件系统结构 ⑵进行数据结构及数据库的设计 ⑶编写概要设计的文档 ⑷评审 5、软件维护有哪些内容? (1)校正性维护。在软件交付使用后,一些隐含的错误在某些特定的使用环境下会暴

露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。 (2)适应性维护。为了使应用软件适应计算机硬件、软件环境及数据环境的不断发生的变化而修改软件的过程称为适应性维护。 (3)完善性维护。为增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。 (4)预防性维护。为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。 6、软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系? 软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。 单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。 集成测试是为了检查与设计相关的软件体系结构的有关问题,也就是检查概要设计是否合理有效。 确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。 系统测试是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。 7、什么是软件生存周期?它有哪几个活动? 软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。 包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。 8、衡量模块独立性的两个标准是什么?各表示什么含义? 内聚和耦合。 内聚:又称为块内联系,指模块内部各成分之间相互关联的程度,以高内聚为设计目标。 耦合:也称块间联系,模块之间相互联系程度的度量,联系越紧密,耦合性越强,独立性越差,以低耦合为设计目标。

土木工程概论试题及答案

土木工程概论试题及答案 [土木工程概论考试复习题] 第1章绪论 一、学习重点 (一)基本概念 1、土木工程:土木工程就是建造各类工程设施的科学技术的总称,它既指工程建设的对象,即建在地上、地下、水中的各种工程设施,也指所应用的材料、设备与所进行的勘测设计、施工、保养、维修等技术。 2、基本建设:国家将工厂、矿井、铁道、公路、桥梁、农田水利、商店、住宅、医院、学校、给水排水、煤气输送等工程建设称为基本建设。 3、信息化施工:在施工过程中所涉及的各部分各阶段广泛应用计算机信息技术,对工期、人力、材料、机械、资金、进度等信息进行收集、存储、处理与交流,并加以科学地综合利用,为施工管理及时、准确地提供决策依据。 4、可持续发展:就是指“既满足当代人的需要,又不对后代人满足其需要的发展构成危害”。 (二)基本知识与基本理论 1、土木工程概论课程的任务 “土木工程”包括哪些内容?“土木工程”专业的学生要学习哪些知识、掌握哪些基本技能、具备哪些能力?怎样才能学好等?回答这些问题便就是本书的主要任务。 土木工程的内容非常广泛,它与广大人民群众的日常生活密切相关,在国民经济中起着非常重要的作用。 土木工程的范围包括房屋建筑工程、公路与城市道路工程,铁路工程,桥梁工程,隧道工程,机场工程,地下工程,给水排水工程,港口、码头工程等。 2、土木工程发展历史简述 土木工程的发展经历了古代、近代与现代三个阶段。 现代土木工程的特点有: ①功能要求多样化;②城市建设立体化;③交通工程快速化;④工程设施大型化。 3、土木工程的未来 土木工程目前面临的形势就是: ①信息(包括计算机、通讯、网络等)工业的迅猛发展。②航空、航天事业等高科技事业的发展。③地球上居住人口激增,而地球上的土地资源就是有限的,并且会因过度消耗而日益枯竭。④生态环境受到严重破坏,随着工业的发展、技术的进步而人类生存环境却日益恶化。 (1)重大工程项目将陆续兴建 ①为了解决城市土地供求矛盾,城市建设将向高、深方向发展。 ②目前高速公路、高速铁道的建设仍呈发展趋势。 ③在航空港及海港与内河航运码头的建设也会在不久的将来取得巨大的进步。 (2)土木工程将向太空、海洋、荒漠地开拓。 (3)工程材料向轻质、高强、多功能化发展(21世纪在工程材料方面希望有较大突破:①传统材料的改性;②化学合成材料的应用) (4)设计方法精确化、设计工作自动化

最新软件工程期末考试题

41.软件是一种产品。 A.物质 B. 逻辑√ C. 工具 D. 文档 2.软件产品的生产主要___ _ _。 A. 研制√ B. 再生产 C. 开发 D. 生产 3.软件工程是一门__ _学科。 A. 工程性 B. 原理性 C. 综合性√ D. 理论性 4.类是面向对象方法中的一个重要概念,类的描述分为:名称、和操作。 A. 角色 B. 用例 C. 方法 D. 属性√ 5.下列描述中正确的是___ __。 A.软件工程的主要是解决软件开发中的技术问题 B.软件工程主要解决软件产品的生产率问题 C.软件工程的主要思想是强调在软件开发过程中需要运用工程化的原则√ D.软件工程只是解决软件项目的问题. 6.需求分析最终结果是产生。 A.项目开发计划B.可行性分析报告C.设计说明书D.需求分析说明书√7.需求分析中,开发人员要从用户那里解决最重要的问题是。 A.要让软件做什么√B.要给软件提供哪些信息 C.要求软件工作效率怎样D.要让该软件具有何种结构 8.分层DFD是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的。 A.软件的作者B.输入与输出√C.细节D.绘制的时间 9.数据字典中,一般不包括条目。 A.源点与终点√B.数据存储C.数据流D.加工 10.软件需求分析是保证软件质量的重要步骤,它的实施应该是在。 A.编码阶段B.软件设计阶段√C.软件定义过程D.软件开发全过程11.软件的主要功能和结构是在阶段确定的。 A.测试B.编程C.分析设计√D.维护 12.需求分析最终结果是产生。 A.需求分析说明书√B.可行性分析报告C.项目开发计划D.设计说明书 13.可行性研究主要从方面进行研究。 A.技术可行性,经济可行性,操作可行性B.经济可行性,系统可行性,时间可行性 C.经济可行性,系统可行性,操作可行性D.技术可行性,经济可行性,社会可行性√ 14.可行性分析研究的目的是。 A.项目值得开发与否√B.开发项目C.争取项目D.规划项目 15.需求分析中开发人员要从用户那里了解。 A.输入的信息B.用户使用界面C.软件做什么√D.软件的规模 16.需求分析阶段研究的对象是。 A.软硬件要求B.系统要求C.分析员要求D.用户需求√ 17.系统流程图用于可行性分析中的的描述。 A.目标系统B.当前逻辑模型C.当前运行系统√D.新系统 18.数据字典是用来定义中的各个成分的具体含义的。

软件工程简答题——答案

38.就程序设计语言的工程特性而言,对程序编码有哪些要求? 就程序设计语言的工程特性而言,对程序编码有如下要求: (1)可移植性(2)开发工具的可利用性(3)软件的可重用性(4)可维护性 39.模块的内聚性包括哪些类型? 模块的内聚性包括: (1)偶然内聚(2)逻辑内聚(3)时间内聚(4)通信内聚(5)顺序内聚(6)功能内聚 36.可行性研究报告的主要内容有哪些? 解:一个可行性研究报告的主要内容如下: (1)引言:说明编写本文档的目的;项目的名称、背景;本文档用到的专门术语和参考资料。 (2)可行性研究前提:说明开发项目的功能、性能和基本要求;达到的目标;各种限制条件;可行性研究方法和决定可行性的主要因素。 (3)对现有系统的分析:说明现有系统的处理流程和数据流程;工作负荷;各项费用支出;所需要各类专业技术人员的数量;所需要各种设备;现有系统存在什么问题。 (4)所建议系统的技术可行性分析:所建议系统的简要说明;处理流程和数据流程;与现有的系统比较的优越性;采用所建议系统对用户的影响;对各种设备、现有软件、开发环境、运行环境的影响;对经费支出的影响;对技术可行性的评价。 (5)所建议系统的经济可行性分析:说明所建议系统的各种支出,各种效益;收益投资比;投资回收周期。 (6)社会因素可行性分析:说明法律因素,对合同责任、侵犯专利权、侵犯版权等问题的分析;说明用户使用可行性,是否满足用户行政管理、工作制度、人员素质的要求。 (7)其他可供选择方案:逐一说明其他可供选择的方案,并说明未被推荐的理由。 (8)结论意见:说明项目是否能开发;还需要什么条件才能开发;对项目目标有什么变动等。 37.系统设计的内容是什么? 解:系统设计阶段先从高层入手,然后细化。系统设计要决定整个结构及风格,这种结构为后面设计阶段的更详细策略的设计提供了基础。 (1)系统分解。系统中主要的组成部分称为子系统,子系统既不是一个对象也不是一个功能,而是类、关联、操作、时间和约束的集合。每次分解的各子系统数目不能太多,最底层子系统称为模块。 (2)确定并发性。分析模型、现实世界及硬件中不少对象均是并发的。系统设计的一个重要目标就是确定哪些是必须同时动作的对象,哪些不是同时动作的对象。后者可以放在一起,而综合成单个控制线或任务。 (3)处理器及任务分配。各并发子系统必须分配给单个硬件单元,要么是一个一般的处理器,要么是一个具体的功能单元,必须完成下面的工作:估计性能要求和资源需求,

相关文档
相关文档 最新文档