大学软件工程复习资料
软件工程复习资料精选全文完整版

可编辑修改精选全文完整版一、单选题(共20题,40分)1、使用数据流图,并不断细化的需求获取方法是()。
(2.0)A、简易的应用规格说明B、面向数据流自顶向下逐步求精C、访谈D、快速原型法正确答案: B2、Z语言是以()为基础的形式化规格说明语言。
(2.0)A、微积分B、概率C、图形D、一阶谓词演算正确答案: D3、HIPO是指(2.0)A、层次输入处理输出图或表B、层次功能结构图C、功能结构图D、输入处理输出图或表正确答案: A4、高铁调用系统最适宜采用()方法。
(2.0)A、有穷状态机B、 Petri网C、 Z语言D、一阶线性时态逻辑正确答案: B5、假设学生年龄的成绩输入范围为18-25,则根据等价类划分技术,下列划分正确的是()。
(2.0)A、可划分为2个有效等价类,2个无效等价类B、可划分为1个有效等价类,2个无效等价类C、可划分为2个有效等价类,1个无效等价类D、可划分为1个有效等价类,1个无效等价类正确答案: B6、用于并发系统,解决定时问题的形式化方法是()。
(2.0)A、 VDMB、 Z语言C、 Petri网D、一阶线性时态逻辑正确答案: C7、软件生命周期中所花费费用最多的阶段是(2.0)A、需求分析B、软件总体设计C、软件维护D、软件实现正确答案: C8、软件质量保证措施SQA不包括:(2.0)A、复审或评审B、软件测试C、程序正确性证明D、软件代码编写正确答案: D9、希望确定软件实现的功能是否与需求规格说明书一致,需进行()。
(2.0)A、单元测试B、有效性测试C、确认测试D、集成测试正确答案: C10、总体设计不包括:(2.0)A、体系结构设计B、数据库设计C、模块内算法设计D、逻辑数据结构设计正确答案: C11、关于类和对象的说法,正确的是(2.0)A、一个类只能有一个角色B、类的命名必须用动词C、类的所有对象都具有相同的属性和操作D、类是对象的实例,对象是类的抽象正确答案: C12、数据字典的基本功能是(2.0)A、数据库设计B、数据通信C、数据定义D、数据维护正确答案: C13、软件需求规格说明的内容不应该包括(2.0)A、主要功能B、算法的描述C、用户界面及其运行环境D、软件性能正确答案: B14、增量模型在添加新的模块时,有一个要求是()(2.0)A、需要更多的测试B、有足够的开发人员C、软件体系结构开放D、各个模块都要进行评审正确答案: C15、在软件详细设计过程中不采用的工具是(2.0)A、判定表B、PDLC、程序流程图D、DFD正确答案: D16、软件测试方法中,黑盒测试方法和白盒测试方法是常用的方法,其中黑盒测试方法主要用于测试(2.0)A、结构合理性B、软件外部功能C、程序正确性D、程序内部逻辑正确答案: B17、耦合是模块之间的相对独立性的度量。
软件工程复习资料-答案

软件工程复习资料一、填空题1. 在软件的生存周期开发阶段要经设计、编码、测试三个步骤。
2. 瀑布模型是以文档为驱动、适合于软件需求明确的软件项目的模型。
3. 技术可行性研究包括风险分析、资源分析和技术分析。
4. 在可行性研究中,技术可行性是系统开发过程中难度最大、最重要的一个环节。
5. 需求分析阶段需要编写的文档有需求规格说明书、初步用户使用手册、确认测试计划。
6. 模块之间联系越紧密,其耦合性就越强,模块的独立性就越差。
7. 结构图的深度指结构图控制的层次。
8. 在详细设计阶段,除了需要对模块内的算法进行设计,还应对模块内的数据及结构进行设计。
9. 功能模型表达的是系统内部数据流的传送和处理的过程。
功能模型由一组数据流图组成。
10.为增加软件功能、增加软件性能、提高软件运行效率而进行的维护活动称完善性维护。
二、选择题C 1. 软件是一种()产品。
A.有形B.物质C.逻辑D.消耗B 2. 在计算机软件开发和维护中所产生的一系列严重的问题通常称为软件危机,这些问题中相对次要的因素是()。
A.文档质量B.软件性能C.开发效率D.软件功能A 3. 软件工程方法学的研究内容包括软件开发技术和软件工程管理两个方面,其期望达到的最终目标是()。
A.软件开发工程化B.清除软件危机C.实现软件可重用D.程序设计自动化C 4. 研究开发所需要的成本和资源属于可行性研究中的()研究的一方面。
A.技术可行性B.社会可行性C.经济可行性D.法律可行性D 5. 需求分析阶段的任务是确定()。
A.软件开发方法B.软件开发工具C.软件开发费D.软件系统的功能D 6. 数据字典是用来定义()中的各个成份的具体含义的。
A.流程图B.功能结构图C.系统结构图D.数据流图A 7. 程序结构中的矩形表示()。
A.模块B.数据C.加工D.存储C 8. 结构化设计方法在软件开发中,用于()。
A.用例设计B.程序设计C.概要设计D.详细设计B 9. 在软件的结构化设计方法中,一般分为概要设计和详细设计两阶段,其中,详细设计主要是建立()。
软件工程复习资料

1、 软件产品的概念、特征P1-3软件就是一个信息转换器,它的功能不外是产生、管理、获取、修改、显示或转换信息。
它是开发和运行产品的载体,是计算机控制(操作系统)、信息通信(网络)的基础,也是创建和控制其他软件(软件工具和开发环境)的基础。
软件产品的特征:(1) 软件是一种逻辑实体,具有抽象性。
(2) 软件的生产与硬件不同。
(3) 软件产品不会“磨损” 2、 软件危机的原因、解决的途经P5-7软件危机的原因:1)它的生产过程和产品都具有明显的“不可视”特征,这就导致在完成编码并且上机运行之前,对于软件开发过程的进展情况较难衡量;2)归于在计算机系统发展的早期,软件开发的“个体化”特点解决的途经:从管理层面上考虑,应当注意推广和使用在实践中总结出来的开发软件的成功的技术和方法,并且探索更好的、更有效的技术和方法,注意积累软件开发过程中的经验数据财富,逐步消除在计算机系统早期发展阶段形成的一些错误概念和做法。
3、 软件工程的定义、要素、基本原则P8-9 软件工程是指导软件开发和维护的工程学科。
将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程。
即将工程化方法应用于软件开发与维护过程中。
软件工程应当包括三个要素:方法、工具和过程。
基本原则:(1) 用分阶段的生命周期计划严格管理软件工程过程。
(2) 坚持在软件工程过程中进行阶段评审。
(3) 实行严格的产品控制。
(4) 采用现代的开发技术进行软件的设计与开发。
(5) 工作结果应当是能够清楚地审查的。
(6) 开发小组的人员应该“少而精”。
(7) 承认不断改进软件工程实践的必要性4、 软件工程过程的层次划分、软件工程的四种基本活动P10-11软件工程过程的层次划分: 软件工程的四种基本活动:(1) 软件规格说明(2) 软件开发(3) 软件确认(4) 软件演进5、 软件工程过程模型的概念及几种常见的软件过程模型P12-18软件工程过程模型的概念:用以覆盖软件开发过程中的基本活动,确定所涉及的过程、方法、工具的策略称为软件工程过程模型。
软件工程复习资料

1.什么是软件工程?他的基本原理是什么?1)软件工程是指导计算机软件开发和维护的工程学科。
采用工程的槪念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它。
2)用分阶段的生命周期汁划严格管理、坚持进行阶段评审、实行严格的产品控制、采用现代程序设讣技术、结果应能淸楚的审査、开发小组的人员应该少而精、承认不断改进软件工程实践的必要性。
2.是什么导致了软件工程?主要是软件危机的出现导致了软件工程3.通常我们所见的软件工程模型有哪些?瀑布模型、快速原型模型、增量模型(渐增模型)、螺旋模型、喷泉模型。
21.软件危机的现象:1)经费超出预算,项目一再拖延。
02 )不重视需求,开发的软件不能满足用户的要求,项目成功率低。
3)没有规范的软件工程方法,软件可维护性差,软件质量差,可靠性差。
3圄)开发工具落后,手工方式,开发效率低。
2 2 .软件工程的三要素1)"过程”是软件产品加工所经历的一系列有组织的活动,保证能够合理、高质疑开发出软件。
2)"方法”为软件开发提供"如何做”的技术。
它涵盖了项目计划、需求分析、系统程序()实现、测试与维护灯一系列活动的做法。
3) "工具"可为过程和方法提供自动的或半自动的支持。
这些工具既包括软件,也包括硬件,软件工具包括编程、建模、管理等开发工具。
通过网络环境把这些软件工具集成起来搭建一个能够支持团队开发的平台,称为汁算机辅助软件工程,即CASE。
C ASE集成了软件、硬件和()存放开发过程信息的软件工程数据库,形成了一个软件工程环境。
23.简述软件工程的目标,过程和原则佢)目标、过程和原则是一切工程的三维框架,,这里是以工程的观点来看待软件开发。
软件工程的目标:降低成本,及时交付髙质量的软件产品。
m实现目标的过程即完成产品加工的过程:包括:基本过程、支持过程和组织过程进行过程应遵守的原则:原则就是过程中的轨道约朿,包括:选取适宜的开发范型、适合的设计方法、提供高质量的工程支持、重视开发过程的管理。
软件工程复习资料

软件工程复习资料1. 软件工程概述软件工程是一门研究如何构建和维护软件系统的学科。
它涵盖了软件开发的各个方面,包括软件需求、设计、编码、测试、维护等。
本节将对软件工程的基本概念和重要原理进行介绍。
1.1 软件工程的定义软件工程是一种应用工程原理、方法和工具来开发和维护高质量软件的系统工程。
它关注软件开发过程中的各个环节,以提高软件质量和开发效率。
1.2 软件工程的目标软件工程的目标是开发高质量的软件系统,满足用户需求,具备良好的可维护性和可扩展性。
通过采用合适的开发方法和工具,提高软件开发过程的可靠性和效率。
1.3 软件工程的原则软件工程遵循一些重要的原则来指导软件开发过程,包括模块化、抽象、信息隐藏、接口规范、单一职责等原则。
这些原则有助于提高软件质量和可维护性。
2. 软件开发过程软件开发过程是指将软件需求转化为可执行软件的过程。
它包括需求分析、设计、编码、验证和维护等阶段。
本节将介绍常用的软件开发过程模型和相应的方法。
2.1 瀑布模型瀑布模型是一种线性的软件开发过程模型,包括需求分析、设计、编码、测试和维护等阶段。
瀑布模型适用于需求稳定的项目,但不适用于需求频繁变更的项目。
2.2 敏捷开发敏捷开发是一种迭代的软件开发过程模型,强调快速反馈和适应需求变化。
敏捷开发方法包括Scrum、XP等。
它适用于需求不确定或频繁变更的项目。
2.3 增量开发增量开发将软件系统划分为多个增量,每个增量包含了一个或多个功能模块。
每个增量的开发和测试独立进行,逐步完善系统。
增量开发适用于大型项目和复杂项目。
2.4 软件开发过程的选择选择适合项目的软件开发过程模型非常重要。
需要考虑项目的规模、需求的稳定性、团队的能力等因素来决定采用哪种开发过程模型。
3. 软件需求工程软件需求工程是软件工程的一项重要活动,旨在准确捕获用户需求,并将其转化为可执行的软件需求规格。
本节将介绍软件需求的定义、分类和常用的需求获取和分析方法。
软件工程复习资料-完整版

软件工程复习资料-完整版一、概述软件工程是一门关于开发、维护和管理软件的综合学科。
它涵盖了软件开发的各个阶段,包括需求分析、设计、编码、测试和维护。
软件工程的目标是提供高质量的软件,满足用户的需求,同时将开发过程控制在预定的时间和预算范围内。
二、软件生命周期1. 需求分析阶段在需求分析阶段,开发团队与用户沟通,了解用户的需求和期望。
通过需求分析,确定软件的功能和性能要求,制定详细的需求规格说明。
2. 设计阶段在设计阶段,团队根据需求规格说明,设计软件的整体架构和模块。
设计阶段包括概要设计和详细设计,概要设计主要确定软件的整体结构,详细设计则更加具体,包括模块的功能和接口设计。
3. 编码阶段在编码阶段,根据详细设计,实现软件的各个模块。
编码时应遵循编程规范,确保代码的可读性和可维护性。
同时,要进行单元测试,确保每个模块的功能正确。
4. 测试阶段在测试阶段,对软件进行不同层次的测试,包括单元测试、集成测试和系统测试。
单元测试测试各个模块的功能,集成测试测试模块之间的接口,系统测试测试整个系统的功能和性能。
5. 部署和维护阶段在软件开发完成后,需要将软件部署到目标环境中,并进行用户培训。
同时,还需要对软件进行维护和升级,以解决出现的问题和满足用户的需求变化。
三、软件工程的原则1. 模块化将软件划分为多个模块,每个模块负责特定的功能。
模块化能够提高软件的可维护性和复用性,同时有利于团队的协作开发。
2. 可伸缩性软件应该具备可伸缩性,能够满足不同规模和需求的用户。
在设计和实现软件时,需要考虑未来的扩展和升级,保证软件的灵活性。
3. 可测试性软件应该具备可测试性,方便进行各个阶段的测试。
在设计和编码时,需要考虑如何进行自动化测试,提高测试的效率和覆盖率。
4. 可维护性软件应该具备可维护性,方便对软件进行改进、修复和升级。
在设计和编码时,需要遵循良好的编程规范,提高代码的可读性和可维护性。
5. 文档化软件开发过程需要进行详细的文档记录,包括需求文档、设计文档、测试文档等。
软件工程知识点复习资料

软件工程知识点复习资料一、软件工程概述软件工程是一门研究如何以系统性的、规范化的、可度量的方法进行软件开发、运行、维护和管理的学科。
它涵盖了软件开发生命周期的各个阶段,包括需求分析、系统设计、编码实现、测试和维护等。
二、软件生命周期与开发模型1. 软件生命周期包括需求分析、系统设计、编码实现、测试和维护等阶段。
不同的项目可以采用不同的开发模型,常见的有瀑布模型、迭代模型和敏捷模型。
2. 瀑布模型是一种线性顺序开发模型,各个阶段严格按序进行,适用于需求较为稳定的项目。
3. 迭代模型将软件开发过程划分为多个迭代阶段,每个迭代阶段都包含需求分析、设计、编码和测试等活动,适用于需求较为不确定或需要持续改进的项目。
4. 敏捷模型强调快速响应需求变化和灵活合作,通过迭代、增量的方式进行开发,适用于需求频繁变更的项目。
三、需求工程1. 需求分析是软件开发的第一步,包括需求获取、需求分析、需求建模等过程,目的是明确系统的功能和性能需求,并与客户达成一致。
2. 需求获取可以通过面谈、问卷调查、观察等方式进行,需求分析则要对已收集到的需求进行分析、整理和归纳。
3. 需求建模使用UML(统一建模语言)等工具,将需求表示为用例图、活动图、时序图等形式,便于后续的系统设计和编码实现。
四、设计与架构1. 系统设计是软件开发的关键阶段,包括软件架构设计和详细设计等过程,目的是指导后续的编码和测试工作。
2. 软件架构设计确定系统的整体结构、模块划分和模块间的关系,常见的架构风格包括层次结构、客户-服务器、面向对象等。
3. 详细设计是对系统模块的具体设计,包括数据结构设计、算法设计和接口设计等,常用的设计方法有结构化设计和面向对象设计。
五、编码实现与调试1. 编码实现是将设计阶段得到的设计方案转化为计算机可执行的代码,采用合适的编程语言和开发工具进行。
2. 编码时要注重代码的可读性、可维护性和可重用性,采用良好的编程风格和命名规范。
软件工程复习资料-完整版

一、选择题:1、用例图中,用来表示用例的符号为( B ) 。
2、协作图中包含的元素包括(A ) 。
A. 对象 B. 链 C. 激活 D. 消息3、在类图中,哪种关系表达整体与部分的关系( D ) 。
A .泛化 B. 实现 C. 依赖 D. 聚合4、下列各种图形符号中,用来表示组成关系的符号为 (B )。
A. B. C. D.5 、(A )工具在软件的详细设计中不能使用。
A . DFD B. N-S 图 C. 流程图 D. PDL6 、 “软件危机”是指 (C )。
A. 计算机病毒的出现B. 利用计算机进行经济犯罪活动C. 软件开发和维护中出现的一系列问题D. 人们过分迷恋计算机系统7 、 快速原型是利用原型辅助软件开发的一种新思想,它是在研究 (A )的方法和技术中产生 的。
A. 需求阶段B. 设计阶段C. 测试阶段D. 软件开发的各个阶段8、从严格意义上讲,下列 4 个选项中属于顺序图的元素是(ABCD ) 。
A.对象B. 参与者C. 消息D. 激活9、下列 UML 图形中, (ABCD )属于 UML 的动态视图。
A. 协作图B. 状态图C. 活动图D. 顺序图10、数据字典是软件需求分析阶段的最重要的工具之一,其最基本的功能是( D ) 。
A. 数据库设计B. 数据通信C. 数据关系描述D. 数据定义11、详细设计与概要设计衔接的图形工具是 (D )。
A. DFD 图B. 程序图C. PAD 图D. SC 图12 、UML 中,大多数建模者把节点分为(AC )A . 设备 B. 构件 C. 处理器 D. 显示器13 、(C)是一种特殊形式的状态机,用于对计算流程和工作流程建模。
A .时间图 B. 流程图 C. 活动图 D. 状态图14 、(A )描述从状态到状态的控制流程,常用来对系统的动态特征进行建模。
A. 状态图B. 序列图C. 协作图D. 活动图15、下列特点属于描述用例的特点的是( D ) 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、简答题1.层次图和层次方框图之间区别何在?P92①层次图描绘软件的层次结构,层次方框图描绘数据结构②层次图中方框代表一个功能模块,层次方框图方框代表数据的子集或数据元素③层次图中连线表示模块间调用关系,层次方框图连线表示组成关系。
2.2、软件设计过程中为什么要采用模块化设计方法?P85参考答案:(1)、采用模块化原理可以使软件结构清晰,不仅容易设计,也容易阅读和理解;(2)、模块化使软件容易测试和调试,因而有助于提高软件的可靠性;(3)、模块化可以提高软件的可修改性;(4)、模块化有助于开发过程的组织和管理;3.用某种软件复杂性度量算法来度量不同类型的程序时。
得出的度量值是否真正反映了它们的复杂性?如果对同类型的程序进行度量,其结果是否就比较有价值?参考答案:开发规模相同,但复杂性不同的软件,花费的成本和时间会有很大的差异。
因此到目前为止,还没有一个软件复杂性度量的方法能够全面、系统地度量任一软件的复杂性,某一种度量方法只偏重于某一方面。
所以,用某种软件复杂性来度量不同类型的程序,所得到的度量值不一定真正反映它们的复杂性。
但对同一类里的程序,按某种视点来度量它们的复杂性,其结果还是比较有价值的。
4.数据流图的作用是什么?它有哪些基本成分?参考答案:数据流图可以用来抽象地表示系统或软件。
它从信息传递和加工的角度.以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节。
因此,数据流图既提供了功能建模的机制.也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型。
基本成分有:数据原点/终点数据处理数据流数据存储5.常用的估算软件规模的方法有哪些?试比较这些方法的优缺点。
代码行技术的优点,容易计算,缺点是太片面,因为源程序只是软件配置的很少一部分,不同语言实现同一个软件所需的代码行数不同;功能点数的特点:与编程语言无关,但是判断信息域复杂性级别和技术因素的影响程度时,存在着相当大的主观因素。
6.CMM的全称是什么?其基本思想是什么?为什么要对CMM进行分级?P321其基本思想是:软件开发和维护过程中的问题是由于管理软件过程的方法不当引起的,即使是应用新的软件技术,也不会自动提高软件的生产率和质量。
能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。
改进后的软件过程将有利于开发出高质量的软件,使更多的软件项目免受时间和费用超支之苦。
······························································································· 3分对于任何软件开发机构的软件过程的改进都是在完成一个又一个小的改进的基础之上不断进行的渐进过程,而不是一蹴而就的彻底革命。
CMM将软件过程从无序到有序的进化过程分为5个等级,用于测量软件机构的软件过程成熟度和评价其软件过程能力什么是软件配置管理?答:软件配置管理,简称SCM(Software Configuration Management),是在软件的整个生命周期内管理变化的一组活动。
具体地讲,这组活动包括:①标志变化,②控制辩化,③确保适当地实现变化,④向需要指导这类信息的人报告变化。
软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高生产率。
7.什么是基线?你是如何理解基线的?P319基线:已经通过正式复审的规格说明或中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。
基线是通过了正式复审的软件配置项。
一旦软件配置变成基线,那么,对于软件配置的改变,必须使用特定的、正式的过程来评估、实现和验证每个变化。
基线除了包含软件配置之外,还有可能包含软件工具。
8.什么是面向对象的方法学?它有哪些优点?P193面向对象的方法就是模拟人类认识世界解决问题的思维习惯开发软件的方法,这种方法认为:OO=对象+类+继承+对象之间的通讯。
······································································· 1分OO方法有如下四个方面的要点:①客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以有比较简单的对象以某种方式组合而成。
②把所有对象都划分成各种对象类,每个类定义一组数据(静态属性,状态信息,类实例专有数据)和一组方法(施加于对象上的操作,类实例所共有的)。
③按照子类与父类的关系,把若干个类组成一个层次结构的系统。
子类继承父类的方法和属性,同时可以重载某些方法。
④对象之间仅能通过传递消息相互联系·················································· 2分优点:①与人类习惯的思维方法一致,②稳定性好,③可重用性好,④较易开发大型软件产品,⑤可维护性好。
·································································································· 2分六、分析题1.试说明下面的两个程序段的功能是什么?可否用另一些等效的程序段来代替它,以提高其可读性。
(1)A=A+BB=A-BA=A-B(2)for(i=0;j<n;i++)for(j=0;j<n;j++)V[i][j]=(i/j)*(j*i)假设几种可能的条件是:T1: A>3 F1:A<=3 T2: B=1 F2: B≠1 T3: A=1 F3:A≠1 T4:M>1 F4:M<=13.下面是一段用Seidel迭代法求解线性方程组的程序。
其中A[n,n]是方程组的系数矩阵。
B[n]是方程组的右端项,X[n]是方程组的解向量。
eps是控制迭代精度的较小实数。
imax是控制迭代的最大次数。
flag是标志,值为0时表示迭代不收敛,值为l时表示迭代收敛。
for(k=0;k<n;k++)X[k]=0.0;X[n-1]=1.0;for(i=1;i<imax;i++){flag=1;for(j=0;j<n;j++){s=B[j];for(k=0;k<n;k++){if(j==k)s += X[k];s=s-A[j,k]*X[k];}if(abs(X[j]-s) > (abs(s) + 1.0)*epsflag=0;X[j]=s;}if(flag==1)break;}画出该C伪码的程序流程图,N-S图,程序流图,并计算程序的McCabe环形复杂度。
4.阅读下列关于软件可靠性方面的叙述,回答问题1和问题2。
软件的可靠度可定义为:在假定输入和硬件不发生错误的前提下,对于给定的环境和给定的输入,在指定的时间内能完成规定任务的概率。