高级软件工程复习资料
软件工程复习资料精选全文完整版
可编辑修改精选全文完整版一、单选题(共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.信息域由信息内容、信息结构和信息流三部分构成。
每个问题域本质上就是一个信息域。
二、简答与选择题2.1 什么是模型?为什么要建立模型?建模的原则是什么?模型:对现实的抽象表示,是抽象的产物!为什么要建立模型?:(1)建模是可以清楚、准确、可视地说明与定义系统的结构与行为的方法;(2)可以作为指导系统构造的基础与模板;(3)作为涉众交流的工具与成果;(4)对分析与决策的结果规范化、文档化(成果)。
建模的原则是什么?按需构建:仅当需要模型时,才按需要构建选择构建:选择要创建什么模型,对如何动手解决问题和如何形成解决方案有着意义深远的影响。
分层构建:可以在不同的精度级别上表示每一种模型。
一致构建:最好的模型是与现实相联系的组合构建:单个模型或视图是不充分的,对每个重要的系统最好用一组几乎独立的模型从多个视角去处理,这些视图一起从整体上描绘了软件蓝图数据字典:尽可能使用草图讨论,重要程度不足的草图模型直接入文档,重要性高的图使用CASE工具绘制成蓝图入文档。
2.2 什么是问题域和系统责任?举例说明其区别与联系?问题域:待开发系统的应用领域,即在客观世界中由该系统处理的业务范围。
系统责任:被开发系统应具有的职能。
(1)例如要为银行开发一个业务处理系统,银行就是这个系统的问题域。
银行的日常业务,行政管理及与此有关的人和物都属于问题域。
(2)系统责任和问题域语义上有很大部分是重叠的,但有区别。
2.3 简述面向对象分析的基本步骤和过程(objects & classes- relationship–attributes &services - data dictionary- packages)1.分析问题域,明确用户需求2.确定对象和类3.确定系统各部分的分类和组成结构4.找出并建立每个对象及其相互之间的联系。
软件工程复习资料-答案
软件工程复习资料一、填空题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. 软件工程概述软件工程是一门研究如何构建和维护软件系统的学科。
它涵盖了软件开发的各个方面,包括软件需求、设计、编码、测试、维护等。
本节将对软件工程的基本概念和重要原理进行介绍。
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 ) 。
高级软件工程-考试复习
交付的源代码行数(Delivered Lines of Code,DLOC):与DFP有关。
9.3种COCOMO模型估计软件工作量
项目类型:固有型、嵌入型和半独立型。
A.基本COCOMO模型(basicmodel)
该模型为静态、单变量,以估算出的源代码行数计算。
核心思想:通过增加抽象层,把变化部分从那些不变部分里分离出来。
分类:创建型、结构型、行为型。
4大基本要素:模式名称、问题、解决方案和效果。
5.设计模式的5大原则
单一职责原则(SingleResponsibility):一个类->仅有一个引起它变化的原因->职责->变化的轴线。
“开-闭”原则(Open Closed):对功能扩展是开放的,对修改是关闭的。在进行扩展的时候,不需要对原来的成宿进行修改。抽象原则和可变性封装原则。
Hypervisor:bare-metal & hosted.
6.SDN,openFlow,FlowVisor
SDN,由软件控制(管理及路由协议)和硬件数据通道(针对每个包的查询、交换和缓存)组成。抽象出一个网络操作系统,一方面抽象了底层网络设备的具体细节,同时还为上层应用提供了统一的管理视图和编程接口。
一种划分:用户需求(目标需求)、系统需求(产品需求)、软件设计描述(设计层需求)
另一种划分:业务需求、用户需求、功能需求、非功能需求。
上下文模型(系统环境模型)、状态机模型(行为模型)、结构模型(包括体系结构模型和数据结构模型),数据流模型(行为/上下文)、E-R模型(数据结构模型),对象建模(结构和行为的结构。
13.XP架构和主流方法
软件工程复习资料(提纲+答案)
软件工程复习资料(提纲+答案)第一章软件工程的实质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.《Java核心技术》:由SUN公司的两位工程师编写,系统全面地介绍了Java语言的基础知识和进阶技巧,是Java程序员的必备参考书。
2.《Python编程:从入门到实践》:一本适合初学者的Python编程入门书籍,通过实际案例的演示和习题的训练,帮助读者快速入门Python编程。
3.《C++ Primer》:这是一本C++领域的经典教材,可以帮助读者全面掌握C++语言的基本概念和高级特性。
二、系统设计和架构学习资料1.《大型网站技术架构》:由阿里巴巴集团首席架构师李智慧所著,内容详尽介绍了大型网站的设计原理和重要技术,对于理解和掌握系统设计和架构非常有帮助。
2.《设计模式:可复用面向对象软件的基础》:这本书介绍了23种常用的设计模式,对于应用程序的设计和可维护性有着重要的指导作用。
三、数据库学习资料1.《SQL必知必会》:适合初学者的SQL学习资料,通过简单明了的语言和大量实例,帮助读者快速掌握SQL的基本知识和操作技巧。
2.《MongoDB权威指南》:对于学习和使用MongoDB的人来说,这本书是一本非常有价值的参考书,它详细介绍了MongoDB的各种特性和使用方法。
四、软件开发工具学习资料1.《Git权威指南》:介绍了Git版本控制工具的基本概念和使用方法,对于团队协作开发和代码管理非常有帮助。
2.《Maven实战》:Maven是Java项目构建和管理的重要工具,这本书详细介绍了Maven的使用和配置,对于软件工程师来说是一本不可或缺的参考资料。
以上是我为软件工程师们推荐的一些复习资料,希望能够对大家的学习有所帮助。
当然,选择适合自己的学习资料也需要根据自身的实际情况和学习需求来确定。
软件工程期末复习要点归纳总结
软件工程期末复习要点归纳总结软件工程是指在软件开发的全过程中,应用工程的原理、方法和经验对软件进行开发、运行和维护的过程。
在软件工程这个学科中,包括了软件需求、软件设计、软件构建、软件测试、软件维护等多个阶段和技术。
下面是软件工程期末复习的要点归纳总结:1.软件开发过程模型-瀑布模型:各个阶段按顺序进行,每个阶段完成后不可回溯。
-增量模型:将软件划分为多个增量,每个增量独立进行开发。
-螺旋模型:将软件开发过程分为多个循环,每个循环都包括需求分析、设计、开发和测试。
-迭代模型:将软件开发过程分为多个迭代,每个迭代包括需求分析、设计、开发和测试。
2.软件需求工程-需求获取:通过需求采集、用户访谈、问卷调查等方式获取需求。
-需求分析:对需求进行整理、分类、抽象和规范化,得出系统需求。
-需求规格说明:将需求规格化为需求文档,包括用例、用例图、领域模型等。
-需求验证:通过评审、原型验证等方式验证需求的正确性和完整性。
3.软件设计-结构化设计:通过模块化、自顶向下、逐步求精的方式进行软件设计。
-面向对象设计:通过类、继承、多态等面向对象的概念进行软件设计。
-架构设计:设计软件的整体框架和组件之间的关系。
-接口设计:设计软件的各个组件之间的接口。
4.软件构建-编码:根据设计文档进行编码,可以使用编程语言、集成开发环境等工具。
-调试:通过调试工具,对程序进行调试,找出存在的问题并进行修复。
-集成:将各个模块集成到一起,进行整体测试,确保功能的正确性。
-部署:将软件部署到目标环境中,确保软件能够正常运行。
5.软件测试-单元测试:对软件的最小单元进行测试,如函数、方法等。
-集成测试:对软件的各个模块进行整合测试,确保模块之间的协调性。
-系统测试:对整个系统进行测试,确保系统满足用户需求。
-验收测试:由用户对软件进行测试,验证软件是否满足用户需求。
6.软件维护-改正性维护:修复软件中的错误。
-适应性维护:根据用户需求,对软件进行功能扩展。
软工复习资料
软工复习资料软件工程是计算机科学与工程学科的重要分支,它研究的是软件系统的设计、开发、测试和维护等方面的理论和方法。
在软件工程的学习和实践过程中,掌握一些复习资料是十分必要的,有助于学生更好地理解和掌握软工的相关知识。
本文将介绍一些软工复习资料,希望对读者有所帮助。
一、教材类资料教材是软件工程学习的重要依据,掌握一本优秀的教材对于学习软工是非常有益的。
以下是一些常用的软工教材推荐:1. 《软件工程导论》(第9版)霍华德·P.佩特森等著该书是软件工程学习的经典教材,系统地介绍了软件工程的基本概念、原理和方法,适合初学者阅读。
2. 《软件工程》(原书第9版)伊恩·索莱文等著这本教材是软工领域的权威之作,全面介绍了软件工程的理论和实践,对于深入理解软工概念和方法非常有帮助。
3. 《软件需求工程》(第3版)伊恩·索莱文等著该书详细介绍了软件需求的概念、分析和规范等内容,是研究软件需求工程的学生必备参考资料。
二、参考书籍类资料除了教材外,还有一些学术专著和参考书籍也是软工复习资料的重要来源。
以下是一些值得推荐的参考书籍:1. 《架构之美》布鲁斯·巴特勒等著这本书介绍了软件架构的基本原理和实践方法,通过实例分析,让读者更好地理解和应用软件架构。
2. 《软件测试:一种实用方法》(第3版)桥本还等著软件测试是软工过程中不可或缺的环节之一,这本书详细介绍了软件测试的原理、方法和工具,对于深入理解和应用软件测试非常有帮助。
3. 《敏捷软件开发:原则、模式与实践》罗伯特·C.马丁等著敏捷开发是当前软件工程领域的热门话题之一,这本书系统地介绍了敏捷开发的原则、模式和实践经验,对于学习敏捷开发非常有益。
三、在线课程和视频资料除了书籍,还可以通过在线课程和视频资料来学习和复习软工知识。
以下是一些建议的在线学习资源:1. Mooc网Mooc(大规模开放在线课程)网站上有很多软件工程相关的在线课程,课程内容丰富,可以根据自己的兴趣和需求进行选择。
高级软件工程复习题
Advanced software engineeringChapter 1 An Introduction to Software Engineering1.Why software engineering is important?非正规的软件开发不奏效,费用高不可靠难以维护,应该使用新的技术和方法来控制大型软件系统固有的复杂性,这就是软件工程。
2. What is software? What is software engineering?软件(software)是计算机程序和所有使程序正确运行的相关文档和配置信息。
软件工程(software engineering)是关于软件生产的各个方面的工程学科。
3. What is the difference between software engineering and computer science?计算机科学侧重理论和基础,而软件工程侧重于软件开发和交付的实际活动。
4. What are the attributes of good software?软件应具有用户所需的功能和性能,而且应该可维护、可靠、可用5. What is CASE?旨在使软件过程活动自动化的软件系统,常用作方法支持6. What is the difference between software engineering and system engineering?系统工程侧重基于计算机系统开发的所有方面,包括硬件、软件和处理工程。
软件工程只是它的一部分。
7. What are software engineering methods?软件开发的结构化研究方法,包括:系统模型、标记法、规则、设计忠告和过程指南8. What are the key challenges facing software engineering?要面临一流系统、不断增长的多样性以及减少递交次数等问题的挑战9. Issues of professional responsibility严格保守雇主或客户的机密,实事求是的表述自己的工作能力,知晓专利权、著作权等知识产权的法律,不滥用他人的计算机。
软件工程师复习资料整理清单
软件工程师复习资料整理清单一、引言在软件工程师的职业道路上,复习是非常重要的一环。
复习资料的整理不仅有利于知识的巩固,还可以提高复习效率。
本文将为大家提供一份软件工程师复习资料整理清单,帮助大家系统地准备复习内容。
二、基础知识1. 编程语言:包括但不限于Java、C++、Python、JavaScript等常用编程语言的语法、特性、面向对象思想等方面的知识。
2. 数据结构与算法:复习线性表、树、图等常用数据结构,并了解各种排序算法、查找算法、常见算法思想等。
3. 计算机网络:了解计算机网络的基本概念、协议、网络层次结构以及常见的网络攻击与防范措施等。
三、软件开发1. 软件设计原理:掌握面向对象设计原则、设计模式等,了解软件设计的思路和方法。
2. 软件测试与调试:了解常用的测试方法和工具,并掌握如何进行软件调试和故障排查等技巧。
3. 软件质量与维护:了解软件质量管理的基本概念和方法,了解软件维护的流程和技巧。
四、数据库1. 关系型数据库:了解关系型数据库的基本概念、SQL语言以及常用的关系型数据库管理系统(如MySQL、Oracle等)的使用。
2. 非关系型数据库:了解非关系型数据库的特点、分类和应用场景,并了解一些常见的非关系型数据库(如MongoDB、Redis等)。
3. 数据库设计与优化:了解数据库的设计原则、范式理论以及常见的数据库优化策略等。
五、项目管理与团队协作1. 软件开发流程:了解软件开发过程中的需求分析、设计、编码、测试等各个环节,并掌握常用的软件开发模型(如瀑布模型、敏捷开发等)。
2. 版本控制工具:学习使用常见的版本控制工具(如Git、SVN 等),了解分支管理、代码合并等基本操作。
3. 团队协作与沟通:了解团队协作的重要性,学习有效的沟通技巧和团队合作方法。
六、实践项目1. 实践项目经验:通过参与实际开发项目,积累项目经验,掌握项目管理的流程和技巧。
2. 开源项目参与:参与开源项目的开发,学习优秀的代码风格和设计思想,并与其他开发者进行交流与合作。
软件工程复习资料全
软件工程复习材料一、考试复习围:1、软件工程基本概念、基本原理2、需求分析,结构化分析、面向对象分析,结构化分析建模、面向对象分析建模3、软件设计,结构化程序设计,概要设计、详细设计4、软件测试二、考试题型:单项选择题、简答题、综合应用题(要求会画:数据流图、软件结构图、用例图、类图、N-S盒图、PAD图)三、复习容:1、什么是软件危机?人们把软件开发和维护中的各种问题称为“软件危机”。
2、软件危机主要包含哪两方面的问题?①如何开发软件以满足软件日益增长的需求。
②如何维护数量不断增长的已有软件。
3、软件危机的表现有哪些?①对软件开发成本和进度的估算很不准确。
②用户对完成的软件很不满意。
③软件产品的质量很不可靠。
④没有完整的文档。
⑤软件成本比重上升。
⑥软件开发生产效率低下,软件开发技术进步落后与需求的增长,造成“供不应求”的局面。
4、什么是软件工程?软件工程的定义:采用工程的概念、原理和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。
5、.软件工程包括3个要素有哪些?方法、工具和过程。
6、软件生命周期各阶段有哪些?软件生命周期包括:软件定义、软件开发、软件维护三个时期。
其中:软件定义包括:问题定义、可行性研究、需求分析阶段;软件开发包括:总体设计、详细设计、编码、软件测试阶段。
7、需求分析的任务有哪些?需求分析的任务主要有两个方面:①通过对问题及环境的理解、分析和综合,建立分析模型。
②在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出来。
8、软件系统需求分类是哪些?软件系统需求可以分为功能需求、非功能需求和领域需求:1)功能需求描述系统所预期提供的功能或服务。
即定义系统应该做什么,系统要求输入什么信息,输出什么信息,以及如何将输入变换为输出。
它由开发的软件类型、软件未来的用户以及开发的系统类型决定。
软件工程复习资料选择题简化版
一、单项选择题1.软件开发旳瀑布模型最经典地刻画了软件生命周期旳阶段划分, 而与其最相适应旳软件开发措施是( C )A 构件化措施B 面向对象措施C 构造化措施D 原型化措施2.与软件开发措施亲密有关旳应是支持该措施实行旳软件工具, 将它们有机地集成起来则构成一种( A )A 软件工程环境B 软件开发规范C 软件生产线D 软件开发工具3.软件生命周期一般可以分为两个大旳阶段, 它们分别是( B )A 分析和设计B 开发和运行C 编码和测试D 规划和设计4.软件构造图能描述软件系统旳总体构造, 它应在软件开发旳哪一种阶段提出?( B )A 需求分析B 总体(概要)设计C 详细设计D 代码编写5.软件需求阐明书中应包括多方面旳内容, 下述哪个不是软件需求阐明书中应包括旳内容?( D )A 数据描述B 功能描述C 性能描述D 构造描述6.软件测试措施一般有黑盒测试和白盒测试, 而黑盒测试重要是根据程序旳( C )旳测试。
A 构造B 流程C 功能D 逻辑7、在面向对象中, 为了实现信息隐蔽而把对象旳所有属性内容和服务旳实现过程结合成为一种独立旳实体。
这种数据组织旳构造方式属于( B )。
A 继承B 封装C 构造与连接D 消息8、在软件旳使用过程中, 根据顾客提出旳新增系统功能和改善性能旳规定而对软件进行修改或再开发, 以扩充软件功能、增强软件性能、改善加工效率、提高软件质量旳工作属于( D )。
A 适应性维护B 防止性维护C 改正性维护D 完善性维护9、耦合性用来度量模块之间联络旳次数和强度, 模块之间旳耦合性越低越好, 内聚性越高越好。
下面哪个属于中度耦合( A )。
P191A 数据耦合B 控制耦合C 外部耦合D 内容耦合10、程序测试是一项复杂旳工作, 一般测试者在进行测试中都需要设计( B )。
A 数据构造B 测试实例C 测试阶段D 测试措施1.软件是一种( B )产品。
A 有形B 逻辑C 物质D 消耗2.软件危机旳重要原因有( C )。
(完整word版)软工复习材料
2.1 软件工程&软件过程概述什么是软件,软件的特点软件是在计算机系统支持下,能够完成特定功能和性能的程序、数据和相关的文档。
(书本)软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。
(课件)软件=知识+程序+数据+文档(书本)软件=程序+规程+数据+文档(课件)软件的特点:软件是抽象的逻辑产品,而不是物理产品。
灵活性和不会磨损和老化。
1.软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
2.软件存在潜伏错误,硬件错误一般能排除。
3.软件开发成后,只需对原版进行复制。
4.软件在使用过程中维护复杂:(1)纠错性维护-改正运行期间发现的潜伏错误;(2)完善性维护-提高或完善软件的性能;(3)适应性维护-修改软件,以适应软硬件环境的变化;(4)预防性维护-改进软件未来的可维护性和可靠性。
(5)软件不会磨损和老化。
什么是软件危机,软件危机的表现软件危机是指在软件开发和维护中所遇到的一系列严重的问题。
软件危机的表现(1)对软件开发成本和进度的估计常常很不准确。
(2)用户对已完成的软件不满意的现象时有发生。
(3)软件产品的质量往往是靠不住的。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料。
软件工程的定义、目标及原则定义是:1 将系统化的、规范化的、可量化的的方法应用于软件的开发、运行和维护的过程;2对1中所述方法的研究目标:是在给定成本,进度的前提下,开发出满足用户或市场需求的高质量的软件产品。
原则:抽象、信息隐藏、模块化、局部化、一致性、完全性和可验证性。
软件质量要素产品转移:可移植性、可重用性、互操作性产品运行:正确性、可靠性、效率、完整性、实用性产品校正:可维护性、灵活性、可测试性8个质量要素:(1)正确性(2)可用性(3)可靠性(4)有效性(5)可维护性(6)可移植性(7)安全性(8)可复用性人月神话(1)缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来影响还大。
软工复习资源整理
软工复习资源整理软件工程(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是一个成熟的开源操作系统,其内核是由一群开发者共同维护。
高级软件工程期末复习内容
高级软件工程期末考试内容基于构件的软件开发目标长期以来的软件开发状况多数软件都是针对某个具体的应用系统从头进行开发的导致:出现了大量的同类软件重复开发,造成大量人力、财力的浪费,而且软件的质量也不高对比:汽车工业的生产模式在已有的部件基础上通过组装进行生产:有专门的部件生产工厂,汽车设计者在设计中选择市场上已有的合适的部件避免了大量的重复劳动,提高了产品质量和生产效率,促进分工合作我们的目标:将制造业中的组装式生产模式引入到软件开发中基于构件的软件开发(Component-Based Software Development)简称CBSD:是指使用可复用构件来开发应用软件基于构件的软件工程(Component-Based Software Engineering)简称CBSE构件(Component)的典型定义Pressman书中的定义:构件是某系统中有价值的、几乎独立的并可替换的一个部分,它在良好定义的体系结构语境内满足某清晰的功能Brown的定义:构件是一个独立发布的功能部分,可以通过其接口访问它的服务“计算机科学技术百科全书”的定义:软件构件是软件系统中具有相对独立功能,可以明确标识,接口由规约指定,与语境有明显依赖关系,可独立部署,且多由第三方提供的可组装软件实体;软件构件须承载有用的功能,并遵循某种构件模型;可复用构件是指具有可复用价值的构件构件:是可以被直接复用的软件实体,由构件接口与构件实现两部分组成构件分类:纵向:系统级构件应用构件共性面向领域横向:界面构件(控件)业务构件数据访问构件一、分布对象技术发展过程程序= 算法+ 数据结构软件= 程序+ 文档模块化是软件的规模与复杂性,发展到一定程度时产生的必然结果关注焦点的不同,形成了不同的技术:数据与操作的封装--->面向对象技术利用网络计算环境--->分布计算技术利用已经开发出的代码---> 软件复用技术不论哪种技术模块形式及模块之间的协作方式是关键问题面向对象技术:对象、对象之间的关联分布计算技术:不同节点上的运行程序及程序之间的通信软件复用技术:软件构件、软件构件的组装从运行时刻不同模块所处的进程考虑,两个模块之间存在如下三种关系:同一进程内部:子程序共享变量同一机器的不同进程:操作系统提供进程间通讯不同机器上:消息传递:TCP/IP、远程过程调用:RPC(DCE)模块化继续发展的结果之一即为分布对象分布对象技术是面向对象技术、分布式计算(网络计算)技术、软件复用技术的结合三者具有内在的一致性:自治、协作分布对象技术的核心:分布对象模型,以及分布对象间的互操作分布对象技术的实现:OMG的CORBA、微软的DCOM、Java阵营EJB构件的要素规格说明:1建立在接口概念之上,作为服务提供方与客户方之间的契约2一个或多个实现3受约束的构件标准4包装方法5部署方法3C构件模型关于构件的一个指导性模型由构件的三个不同方面的描述组成概念(concept):关于“构件做什么”的抽象描述,可以通过概念去理解构件的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高级软件工程复习资料1.需求工程包括的基本活动及其任务?答:需求工程的活动可以分为5个独立阶段:1)需求获取:通过与用户的交流,对现有系统的观察及对任务进行分析,准确地理解所要解决的问题;2)需求建模:为最终用户所看到的系统建立概念模型,作为对需求的抽象描述,并尽可能多地捕获现实世界的语义;3)形成需求规格:生成文档,准确地描述所要开发的是什么。
软件需求规格说明书(SRS)包括问题分析的结果,并对该问题可接受的解决方案加以特征描述,其质量取决于何种程度上反应了需求分析的结果以及实用性如何。
需求规约(RS)通常既指该过程也指其结果,即SRS。
4)需求验证:以需求规格说明为输入,通过形式化方法或原型化的符号执行、模拟执行等途径,分析SRS本身的正确性,包括一致性、完备性,通常称为“验证(Verification)”,以及SRS是否满足用户的需求,称为“确认(Validation)”。
5)需求管理:支持系统的需求演进,如需求变化和可跟踪性问题。
2.如何画分层数据流图?基本原则是什么?(答案来自维基百科)答:数据流图DFD是描述系统中数据流程的一种图形工具,它标志了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。
如果系统的规模较大,仅用一个DFD图难以描述,会使得系统变得复杂、庞大而又难以理解。
为了降低系统的复杂性,一般采取“逐层分解”的方法,绘制分层的DFD图。
绘制分层DFD图的步骤一般是:1.确定整个系统的范围和功能,绘制顶层的DFD图。
2.逐层分解顶层DFD图,获得若干中间层DFD图。
3.根据获得的中间层DFD图绘制各个底层的DFD图。
绘制分层DFD图的原则一般是:先全局后局部,先整体后细节,先抽象后具体。
************感觉不靠谱,再补充点,仅供参考**************************** 数据流图中只能有四种基本元素:描述一个处理.输入数据在此进行变换产生输出数据.其中注明处理的名称.描述一个输入源点或输出汇点.其中注明源点或汇点的名称.描述一个数据流.被加工的数据及其流向.流线上注明数据名称,箭头代表数据流动方向.描述一个数据存储.通常用于代表一个数据表,其中注明数据表的名称.画数据流图的步骤和原则:基本步骤:自外向内,自顶向下,逐层细化,完善求精.基本原则:①数据流图上所有图形符号只限于前述四种基本元素.②顶层数据流图必须包括前述四种基本元素,缺一不可.③顶层数据流图上的数据流必须封闭在外部实体之间.④每个加工至少有一个输入数据流和一个输出数据流.⑤在数据流图中,需按层给加工框编号.编号表明该加工处在哪一层,以及上下层的父图与子图的对应关系.⑥规定任何一个数据流子图必须与它上一层的一个加工对应,两者的输入数据流和输出数据流必须一致.此即父图与子图的平衡.⑦可以在数据流图中加入物质流,帮助用户理解数据流图.⑧图上每个元素都必须有名字.数据流和数据文件的名字应当是"名词"或"名词性短语",表明流动的数据是什么.加工的名字应当是"名词+宾语",表明做什么事情.⑨数据流图中不可夹带控制流.⑩初画时可以忽略琐碎的细节,以集中精力于主要数据流.***********************没找到标准、答案自选***************************3.模块分解的最终目的?遵循什么标准?答:模块分解的最终目的:将复杂问题分解为较小问题,可以达到“分而治之”的效果,可以减小解题所需的总的工作量。
遵循的标准:满足信息隐蔽;尽量内聚度高,模块间偶合度低;模块大小在(50-100语句);模块调用深度不能过大;模块的扇入(直接调用该模块)应尽量大,扇出(直接调用下级模块数)不宜过大;设计单入口和单出口的模块;模块的作用域应在控制域之内:(作用域:受模块内一个判定影响的所有的模块的集合;控制域:该模块本身和被该模块直接或间接调用的所有的模块的集合;)模块的功能应是可以预测的,相同输入得到相同输出4.数据库设计有哪些步骤?每个步骤的主要任务?数据库设计包括六个主要步骤:1、需求分析:了解用户的数据需求、处理需求、安全性及完整性要求;2、概念设计:通过数据抽象,设计系统概念模型,一般为E-R模型;3、逻辑结构设计:设计系统的模式和外模式,对于关系模型主要是基本表和视图;4、物理结构设计:设计数据的存储结构和存取方法,如索引的设计;5、系统实施:组织数据入库、编制应用程序、试运行;6、运行维护:系统投入运行,长期的维护工作。
5.软件项目管理的理解软件项目管理包括如下内容:1)软件项目的计划:定义项目的目标,以及达到目标的方法;2)软件项目的估算:估算资源、成本和项目进度;3)软件项目的组织:包括组织结构和人员配备,其中组织结构又可以分为三种模式:按课题组划分的模式、按职能划分的模式、矩阵型模式(前两种的结合);4)软件项目的领导;5)软件项目的控制。
6.软件项目团队的组织结构?假如你是某应用软件(会给出你具体软件规模)的项目经理,你准备采用什么样的团队组织结构,给出理由(根据题目自己选择答案)。
通常有三种组织结构模式:1. 按课题组划分的模式:把开发人员按课题组成小组,小组成员自始至终承担课题的各项任务。
该模式适用于规模不大的项目,并且要求小组成员在各方面有技术专长。
2. 按职能划分的模式:把开发项目的软件人员按任务的工作阶段划分为若干工作小组。
要开发的软件在每个专业小组完成阶段加工后沿工序流水线向下传递。
这种流水作业的方式使用于多项目并行的情况。
3. 矩阵形模式:这种模式是以上两种模式的复合。
一方面按工作性质成立一些专门小组,另一方面每一个项目都有它的经理人员负责。
每一个软件开发人员属于某一个专门小组,有参加某一个项目的工作。
该模式的优点有一方面参加专门组的成员可以在组内交流在各个项目中取得的经验,这更有利于发挥专业人员的作用;另一方面,各个项目有专门的人员负责,有利于软件项目的完成。
这种模式比较适合于规模比较大的项目。
组织结构的最后一层是程序设计小组的组织形式。
常见的小组组织形式有三种,这三种形式可以灵活使用。
1. 主程序员制小组:相当于组长负责制,小组的核心由一位主程序员,另外配备两到三位技术员、一位后援工程师组成。
这种组织结构突出主程序员的领导,强调主程序员与其他技术人员的联系。
2. 民主制小组:在民主制小组中,遇到问题可以在组员之间平等地交换意见,工作组目标的制定以及决定的作出都由全体人员参加。
这种组织形式强调发挥每个成员的积极性,并要求每个成员发挥主动精神和协作精神。
3. 层次式小组:在层次式小组中,组内人员分位三级:组长(项目负责人)一人负责全组工作,他直接领导两到三名高级程序员,每位高级程序员通过基层小组,管理若干位程序员。
这种结构比较适合于项目本身就是层次结构的课题。
典型的软件开发人员参与情况曲线图7.软件项目的LOC和FP度量1)LOC度量:即面向规模的度量,通过规范化质量和生产率测量的方法得到,这种测量是基于所生产软件的规模(Size)确定的。
为了与其他项目中的同类度量相比较,选择代码行作为规范化,这样,就可以为每个项目产生一组简单的、面向规模的度量标准,如:每千行代码(KLOC)的错误数、每千行代码行(KLOC)的缺陷数、每千行代码行(KLOC)的成本等不过面向规模的软件度量,通常并不被认为是软件开发过程中最优的方法,因为有很多因素直接影响代码的行数。
2)FP度量:即面向功能点的度量,功能点法是通过建立一个标准来确定某个特定的测量参数(简单、平均或复杂)的功能点数,但权重的确定多少带有一定的主观性。
FP = 总计数值*[0.65+0.01*SUM(Fi)]Fi为权重调整值面向功能点(FP)和面向规模(LOC)两种度量方法之间的关系为:LOC=AVC*功能点的数量,其中AVC是指该语言在实现一个功能点时所要用的平均代码行数。
8.中间COCOMO模型、COCOMO II 模型根据KDSI估算工作量MM或ECOCOMO(构造性成本模型)是一种精确的、易于使用的、基于模型的成本估算方法。
COCOMO用3个不同层次的模型来反映不同程度的复杂性,他们分别为:基本模型:是一个静态单变量模型,它用一个以已估算出来的源代码行数(LOC)为自变量的函数来计算软件开发工作量。
用于系统开发的初期,估算整个系统的工作量和软件开发所需要的时间。
中间模型:在用LOC 为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。
用于估算各个子系统的工作量和开发时间。
详细模型:包括中间COCOMO 模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设计等各步骤的影响。
用于估算独立的软部件。
******************以下内容是基于详细COCOMO模型计算的*************E=a*(KDSI)其中:E为开发成本:DSI为项目源代码行数,但不包括注释行数,DSI以千行为一个基本单位,即1KDSI=1024DSI:a、b为两个常数,具体值由项目的种类而定。
MM= a*错误!未找到引用源。
*(f1+f2+…+f15) 其中:MM表示开发工作量(单位人月),KDSI表示源指令条数,单位是千行,fi(i=1~15)表示15项项目影响调节因子,a表示模型系数,b 表示模型指数。
**************************************************************** 9.软件配置的概念,包括的内容,基线的概念,软件配置管理的必要性。
软件配置管理(SCM)是在软件的整个生命周期内管理变化的一组活动。
这组活动包括:1.标志变化;2.控制变化;3.确保适当地实现变化;4.向需要知道这类信息的人报告变化。
软件配置管理技术可以使软件变更所产生的错误达到最小并最有效地提高生产率。
SCM分为四大功能领域:配置标识、变更控制、配置状态统计、配置审核。
配置标识:包括标识软件系统的结构,标识独立部件,并使它们是可访问的。
配置标识的目的,是在整个生命周期中标识系统各部件并提供对软件及其软件产品的跟踪能力。
配置变更控制:包括在软件生命周期中控制软件产品的发布和变更,目的是建立确保软件产品质量的机制。
它回答:什么是受控的?受控产品怎样变更?谁控制变更?何时接受,恢复,验证变更?配置状态统计:包括记录和报告变更过程,目标是不间断记录所有基线项的状态和历史,并进行维护,它解决以下问题:系统已经做了什么变更?此问题将会对多少个文件产生影响?配置审核:将验证软件产品的构造是否符合需求、标准、或合同的要求,目的是根据SCM的过程和程序,验证所有的软件产品已经产生并有正确标识和描述,所有的变更需求都已解决。