大学软件工程复习资料
软件工程复习资料精选全文完整版
可编辑修改精选全文完整版一、单选题(共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.软件的可维护性软件可维护性指软件能够被理解、校正、适应及增强功能的容易程度。
4. 软件工程软件工程指用科学知识和技术原理来定义、开发、维护软件的一门学科。
或者说,软件工程就是运用工程学的基本原理和方法来组织管理软件的生产、研究、开发、管理、维护的过程、方法和技术。
5.数据字典字据字典:简称DD,就是用来定义数据流图中的各个成分具体含义的,它以一种准确的\无二义性的说明方式为系统的分析\设计及维护提供了有关元素的一致的定义和详细的描述。
6、静态测试静态测试是采用人工检测和计算机辅助静态分析的方法对程序进行检测。
7、面向对象:面向对象OO=类+对象+继承+通信8、需求分析需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。
9、软件危机软件危机(Software Crisis) 是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。
概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
10、软件生存周期软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。
软件生存周期包括:可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等。
简答:1.软件生存周期有哪几个阶段?①可行性研究②需求分析③总体设计④详细设计⑤编码⑥测试⑦维护2.白盒测试法有哪些逻辑覆盖标准?①语句覆盖②判定覆盖③条件覆盖④判定/条件覆盖⑤条件组合覆盖⑥点覆盖、边覆盖、路径覆盖3.软件的维护有哪4种类型?①校正性维护②适应性维护③完善性维护④预防性维护。
软工复习资源整理
软工复习资源整理软件工程(Software Engineering)是一门关于软件开发过程、方法和工具的学科。
在软件工程的学习和实践中,充足的复习资源对于提高学习效果和应对考试至关重要。
本文将为大家整理一些软工复习资源,以帮助大家更好地准备软工考试。
一、教材和参考书籍1. 《软件工程导论》:作者Ian Sommerville,这是一本系统而全面地介绍软件工程的教材,对软件工程的基本概念、原理和方法有深入的解析,是软工复习的基础。
2. 《软件工程:实践者的研究方法》:作者Roger S. Pressman,这本书强调软件工程的实际应用和项目管理,对软件开发过程、需求分析、设计和测试等方面有详细的介绍,适合进一步深入学习软件工程的同学。
3. 《软件项目管理案例教程》:作者美国卫斯理理工大学的Joey F. George,这本书以案例的方式介绍软件项目管理的各个方面,包括项目计划、进度控制、配置管理等,对软件工程项目管理的重要知识点进行了详细的说明。
二、在线学习平台1. Coursera:Coursera是一个在线学习平台,提供了众多软件工程相关的课程,如软件开发流程、敏捷开发方法、软件测试等。
通过这些课程的学习,可以系统地学习软件工程的各个方面知识。
2. Mooc学院:Mooc学院是中国的一个在线学习平台,提供了一系列软件工程相关的课程,如软件需求工程、软件开发过程、软件配置管理等。
学生可以根据自己的需求,选择合适的课程进行学习。
三、开源项目参与开源项目是学习软件工程的一个重要途径,通过参与开源项目,可以锻炼自己的软件开发能力和团队协作能力。
下面是一些比较知名的开源项目:1. Apache项目:Apache是一个开源软件基金会,旗下有很多优秀的开源项目,如Apache Tomcat、Apache Hadoop、Apache Maven等。
参与这些项目的开发可以学习到先进的软件开发方法和工程实践。
2. Linux内核:Linux是一个成熟的开源操作系统,其内核是由一群开发者共同维护。
软件工程复习资料
软件工程复习资料一、简答题1、软件过程模型有哪些?简述它们的特点。
过程模型分为五大类: (1)管理过程模型。
(2)瀑布模型(又称为生命周期模型)。
(3)增量过程模型:包括增量模型,RAD模型。
(4)烟花过程模型:包括原型开发模型,螺旋模型,协同开发模型。
(5)专用过程模型:包括机遇构建的开发模型,形式化方法模型,面向方面的软件开发模型。
2、什么叫软件危机?软件危机包含哪两点?软件危机产生的原因是什么?软件危机是指在计算机软件开发与维护过程中所遇到的一系列严重问题。
包括两点:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。
软件开发和维护过程中存在的许多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
具体表现如下:(1)软件是逻辑部件而不是物理部件。
(2)软件的规模越来越大,复杂性越来越大。
(3)轻视需求分析的重要性,轻视软件维护的错误观点和方法。
3、软件开发的各阶段的任务是什么?定义阶段:问题定义——任务:关于规模和目标的报告书,可行性研究——任务:系统的高层逻辑模型:数据流图,成本/效益分析:需求分析——任务:系统的逻辑模型:数据流图,数据字典,算法描述。
开发阶段:总体设计——任务:系统流程图,成本/效益分析,推荐的系统结构:层次图结构图,详细设计-任务: HIPO图或PDL图;编码和单元测试——任务:源程序清单,单元测试方案和结果,综合测试——任务:综合测试方案,结果集成测试,验收测试,完整一致的软件配置。
维护阶段:软件维护——任务:维护记录以及改正性维护,适应性维护,完整性维护和预防性维护4、两种软件工程方法学开发软件时要建立哪些模型?软件工程方法学包括:传统方法学和面向对象方法学。
常用的开发模型有:瀑布模型( 需求稳定,而且可以预先指定)原型模型(需求模糊或者随时间变化)增量模型(分析员先作出需求分析和概要设计,用户参与逐步完善)螺旋模型(将瀑布模型与原型化模型结合起来并加入了风险分析)喷泉模型(使开发过程具有迭代性和无间隙性)5、什么叫软件?软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合6、UML中的事物有哪些?结构事物UML中的名词,它是模型的静态部分,描述概念或物理元素。
软件工程复习资料(提纲+答案)
软件工程复习资料(提纲+答案)第一章软件工程的实质1、什么是软件?由什么组成?软件:是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档组成的完整集合。
可以写作为:软件=程序+数据+文档。
2、什么是软件危机?为什么会产生?(原因)软件危机:指的是在计算机软件的开发和维护过程中所遇到的一系列严重的问题。
原因:用户需求不明确、缺乏正确的理论指导、软件规模越来越大、软件复杂度越来越高3、为什么要进行软件开发?4、软件工程的三段论?三段论:软件项目管理论、软件项目开发论、软件过程改进论5、软件工程生存期模型概念、类型、每种类型的特点?答:软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。
软件生存周期模型确立了软件开发和演绎中各阶段的次序限制以及各阶段或机动的准则,确立开发过程所遵守的规定和限制,便于各种活动的协调,便于各种人员的有效通信,有利于活动重用,有利于活动管理。
常见的软件生存周期模型有瀑布模型、V模型、原型模型、增量式模型、螺旋式模型。
6、了解复用的原则第二章软件项目的需求分析1、需求分析的主要任务?(基本任务)答:需求分析阶段的基本任务是要准确的定义新系统的目标,满足用户需要,回答系统必须“做什么”的问题。
本阶段要主要有以下几方面工作:(1)问题识别,双方确定对问题的综合需求,包括:功能需求、性能需求、用户界面需求,以及可靠性、安全性、可维护性等方面的需求。
(2)建立模型,对获取的需求,进行分析细化,划分系统功能,确定系统构成,并建立系统的逻辑模型。
(3)编写文档,也就是完成“需求规格说明书”的编写工作。
2、需求分析分两大块(功能与非功能)功能需求描述系统所预期提供的功能或服务。
非功能需求是对系统提供的服务或功能给出的约束。
包括时间约束、开发过程的约束、标准等。
3、(P27)需求建模的基本方法?答:关联模型、行为模型(数据流模型和状态机模型)、数据模型、面向对象模型、结构化模型(技术:数据流图(DFD)、数据字典(DD)、系统流程图)以及其他方法(如原型法、功能列表等)4、结构化方法的代表?(P29)7状态图活动图8、理解好数据流图为什么要分层?9、UML中常用的9种图?(P32 把包图去掉)静态图:类图、对象图、构件图、实施图和包图。
软件工程复习资料
软件工程复习资料第一章:软件工程概述1. 计算机软件定义:计算机软件指计算机系统中的程序及文档。
程序是计算任务的处理对象和处理规则描述软件的发展:第一台计算机→高级语言→软件工程软件的特点:逻辑实体、被开发、无磨损和老化、硬件依赖、未自动化、成本昂贵、涉及社会因素现代软件 = 程序 + 软件工程现代软件企业 = 软件 + 商业模式软件构建管理、源代码管理、软件设计、测试、项目管理等是软件工程的核心,用户体验与用户界面是优化程序(算法,数据结构等)是基本功软件工程决定了软件的质量商业模式决定企业成2. 软件工程现代计算机软件的特殊性①非连续性人类通常容易理解连续事件,但软件系统不具备该特性②易变性修改软件代码相对容易,但代码的更改会带来意想不到的问题,如何正确地修改软件是一件很困难的事情③服从性软件不独立存在,需服从系统中其它组成部分的要求现代计算机软件的特殊性(对软件工程师而言)①许多不同的程序设计语言,软件工具和开发平台②许多不同的软件开发流程③软件团队中存在许多不同的角色软件工程定义:1968年NATO(北大西洋公约组织)会议上首次提出定义IEEE:软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;②对在①中所述方法的研究《计算机科学技术百科全书》中定义:应用计算机科学、数学及管理科学等原理,开发软件的工程软件工程框架软件工程:创造“足够好”的软件目标:生产具有正确性、可用性、开销合宜的产品过程:如何生产满足需求且达到目标的软件产品原则:适宜的开发模型、合适的设计方法、工程支撑、软件工程管理生命周期(6个阶段):系统工程、需求分析、设计、编码、测试、运行和维护3. 软件过程及其模型能力成熟度模型CMM/CMMI卡内基梅隆软件工程研究所(SEI)瀑布模型(P16)优点结构简单明了;历史较长(70年代W. Royce提出)、应用面广泛、为广大软件工作者所熟悉;已有与之配套的一组十分成熟的开发方法和丰富的支撑工具缺点缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发开发早期存在的问题往往要到交付使用时才发现,维护代价大原型模型(P18)设计者为了及早发现系统难点,或从用户处取得反馈意见,而构造的一个工作演示。
软件工程复习资料全
软件工程复习材料一、考试复习围:1、软件工程基本概念、基本原理2、需求分析,结构化分析、面向对象分析,结构化分析建模、面向对象分析建模3、软件设计,结构化程序设计,概要设计、详细设计4、软件测试二、考试题型:单项选择题、简答题、综合应用题(要求会画:数据流图、软件结构图、用例图、类图、N-S盒图、PAD图)三、复习容:1、什么是软件危机?人们把软件开发和维护中的各种问题称为“软件危机”。
2、软件危机主要包含哪两方面的问题?①如何开发软件以满足软件日益增长的需求。
②如何维护数量不断增长的已有软件。
3、软件危机的表现有哪些?①对软件开发成本和进度的估算很不准确。
②用户对完成的软件很不满意。
③软件产品的质量很不可靠。
④没有完整的文档。
⑤软件成本比重上升。
⑥软件开发生产效率低下,软件开发技术进步落后与需求的增长,造成“供不应求”的局面。
4、什么是软件工程?软件工程的定义:采用工程的概念、原理和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
5、.软件工程包括3个要素有哪些?方法、工具和过程。
6、软件生命周期各阶段有哪些?软件生命周期包括:软件定义、软件开发、软件维护三个时期。
其中:软件定义包括:问题定义、可行性研究、需求分析阶段;软件开发包括:总体设计、详细设计、编码、软件测试阶段。
7、需求分析的任务有哪些?需求分析的任务主要有两个方面:①通过对问题及环境的理解、分析和综合,建立分析模型。
②在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出来。
8、软件系统需求分类是哪些?软件系统需求可以分为功能需求、非功能需求和领域需求:1)功能需求描述系统所预期提供的功能或服务。
即定义系统应该做什么,系统要求输入什么信息,输出什么信息,以及如何将输入变换为输出。
它由开发的软件类型、软件未来的用户以及开发的系统类型决定。
大学软件工程复习资料
⼤学软件⼯程复习资料五、简答题1.层次图和层次⽅框图之间区别何在?P92①层次图描绘软件的层次结构,层次⽅框图描绘数据结构②层次图中⽅框代表⼀个功能模块,层次⽅框图⽅框代表数据的⼦集或数据元素③层次图中连线表⽰模块间调⽤关系,层次⽅框图连线表⽰组成关系。
2.2、软件设计过程中为什么要采⽤模块化设计⽅法?P85参考答案:(1)、采⽤模块化原理可以使软件结构清晰,不仅容易设计,也容易阅读和理解;(2)、模块化使软件容易测试和调试,因⽽有助于提⾼软件的可靠性;(3)、模块化可以提⾼软件的可修改性;(4)、模块化有助于开发过程的组织和管理;3.⽤某种软件复杂性度量算法来度量不同类型的程序时。
得出的度量值是否真正反映了它们的复杂性?如果对同类型的程序进⾏度量,其结果是否就⽐较有价值?参考答案:开发规模相同,但复杂性不同的软件,花费的成本和时间会有很⼤的差异。
因此到⽬前为⽌,还没有⼀个软件复杂性度量的⽅法能够全⾯、系统地度量任⼀软件的复杂性,某⼀种度量⽅法只偏重于某⼀⽅⾯。
所以,⽤某种软件复杂性来度量不同类型的程序,所得到的度量值不⼀定真正反映它们的复杂性。
但对同⼀类⾥的程序,按某种视点来度量它们的复杂性,其结果还是⽐较有价值的。
4.数据流图的作⽤是什么?它有哪些基本成分?参考答案:数据流图可以⽤来抽象地表⽰系统或软件。
它从信息传递和加⼯的⾓度.以图形的⽅式刻画数据流从输⼊到输出的移动变换过程,同时可以按⾃顶向下、逐步分解的⽅法表⽰内容不断增加的数据流和功能细节。
因此,数据流图既提供了功能建模的机制.也提供了信息流建模的机制,从⽽可以建⽴起系统或软件的功能模型。
基本成分有:数据原点/终点数据处理数据流数据存储5.常⽤的估算软件规模的⽅法有哪些?试⽐较这些⽅法的优缺点。
代码⾏技术的优点,容易计算,缺点是太⽚⾯,因为源程序只是软件配置的很少⼀部分,不同语⾔实现同⼀个软件所需的代码⾏数不同;功能点数的特点:与编程语⾔⽆关,但是判断信息域复杂性级别和技术因素的影响程度时,存在着相当⼤的主观因素。
大学软件工程复习资料
大学软件工程复习资料1.层次图和层次方框图之间差别安在?P92①层次图描述软件的层次构造,层次方框图描述数据构造②层次图中方框代表一个功能模块,层次方框图方框代表数据的子集或数据元素③层次图中连线表示模块间调用关系,层次方框图连线表示构成关系。
2.2、软件设计过程中什么缘故要采取模块化设计方法?P85参考谜底:(1)、采取模块化道理能够使软件构造清晰,不仅轻易设计,也轻易扫瞄和明白得;(2)、模块化使软件轻易测试和调试,因而有助于进步软件的靠得住性;(3)、模块化能够进步软件的可修改性;(4)、模块化有助于开创过程的组织和治理;3.用某种软件复杂性度量算法来度量不合类型的法度榜样时。
得出的度量值是否真正反应了它们的复杂性?假如对同类型的法度榜样进行度量,其成果是否就比较有价值?参考谜底:开创范畴雷同,但复杂性不合的软件,花费的成本和时刻会有专门大年夜的差别。
是以到今朝为止,还没有一个软件复杂性度量的方法能够或许周全、体系地度量任一软件的复杂性,某一种度量方法只侧重于某一方面。
因此,用某种软件复杂性来度量不合类型的法度榜样,所获得的度量值不必定真正反应它们的复杂性。
但对同一类里的法度榜样,按某种视点来度量它们的复杂性,其成果照样比较有价值的。
4.数据流图的感化是什么?它有哪些全然成分?参考谜底:数据流图能够用来抽象地表示体系或软件。
它从信息传递和加工的角度.以图形的方法描述数据流从输入到输出的移动变换过程,同时能够按自顶向下、慢慢分化的方法表示内容赓续增长的数据流和功能细节。
是以,数据流图既供给了功能建模的机制.也供给了信息流建模的机制,从而能够建立起体系或软件的功能模型。
全然成分有:数据原点/终点数据处理数据流数据储备5.常用的估算软件范畴的方法有哪些?试比较这些方法的优缺点。
代码行技巧的长处,轻易运算,缺点是太单方面,因为源法度榜样只是软件设备的专门少一部分,不合说话实现同一个软件所需的代码行数不合;功能点数的特点:与编程说话无关,然则确信信息域复杂性级别和技巧身分的阻碍水日常平凡,存在着相昔时夜的主不雅身分。
- 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。
软件的可靠度可定义为:在假定输入和硬件不发生错误的前提下,对于给定的环境和给定的输入,在指定的时间内能完成规定任务的概率。