软件工程预测模型之COCOMO

原文为GeeksforGeeks网站Link

分类

Cocomo(Constructive Cost Model)是基于代码行的回归模型。它是软件项目的程序成本估算模型,通常用作可靠地预测与项目相关的各种参数的过程,例如大小、工作量、成本、时间和质量。它由Barry Boehm在1981年提出,该研究基于63个工程,使他成为了记录最好的模型之一。

模型的关键参数有两个,工作量和进度。

  • 工作量: 完成单个任务所需要的人工,通常用人月来表示。
  • 进度: 完成整个工程所需要的时间,和工作量成比例。通常用时间单位表示,如周,月等。

已经提出了不同的 Cocomo 模型来根据所需的准确性和正确性来预测不同级别的成本估算。所有这些模型都可以应用于各种项目,其特性决定了在后续计算中使用的常数值。下面提到了与不同系统类型有关的这些特性。

Boehm定义了三种不同的项目类型:

  • 成熟的(Organic,本来应该翻译成有机的,但我觉得成熟的更加合适):如果所需的团队规模足够小,问题得到很好的理解并且过去已经解决,并且团队成员对问题有一定经验。

  • 半成熟的(Semi detached,翻译原因同上):如果团队规模、经验、各种编程环境的知识等重要特征介于成熟与陌生之间,则软件项目被称为半成熟类型。与成熟项目相比,被归类为半成熟的项目相对来说不太熟悉和难以开发,需要更多的经验和更好的指导和创造力。例如:不同芯片类型的嵌入式系统。

  • 陌生的(Embedded,翻译原因同上):需要最高级别的复杂性、创造力和经验要求的软件项目属于这一类。此类软件需要比其他两个模型更大的团队规模,并且开发人员需要有足够的经验和创造力来开发此类复杂的模型。

Cocomo模型按照细致程度分成三个等级:

  • 基础模型(Basic COCOMO Model)
  • 中级模型(Intermediate COCOMO Model)
  • 细致模型(Detailed COCOMO Model)

基础模型可用于快速且稍微粗略地计算软件成本。由于缺乏足够的因素考虑,其准确性受到一定限制。中级模型考虑了成本驱动,细致模型额外考虑了各个项目阶段的影响,如每个阶段的成本驱动因素,并分阶段进行计算,从而产生更精确的结果。

工作量估计的计算

  1. 基本模型

E f f o r t = a ( K L O C ) b Effort = a(KLOC)^b Effort=a(KLOC)b

t i m e = c ( E f f o r t ) d time = c(Effort)^d time=c(Effort)d

人 员 需 求 = E f f o r t / t i m e 人员需求 = Effort/time =Effort/time

项目类型abcd
成熟的2.41.052.50.38
半成熟的3.01.122.50.35
陌生的3.61.22.50.32

上边的公式对于COCOMO的基础模型和后边的模型都适用。

基础模型的计算代码

// C++ program to implement basic COCOMO
#include<bits/stdc++.h>
using namespace std;

// Function for rounding off float to int
int fround(float x)
{
	int a;
	x=x+0.5;
	a=x;
	return(a);
}

// Function to calculate parameters of Basic COCOMO
void calculate(float table[][4], int n,char mode[][15], int size)
{
	float effort,time,staff;

	int model;
	
	// Check the mode according to size
	
	if(size>=2 && size<=50)
		model=0;	 //organic
	
	else if(size>50 && size<=300)
		model=1;	 //semi-detached
	
	else if(size>300)
		model=2;	 //embedded

	cout<<"The mode is "<<mode[model];

	// Calculate Effort
	effort = table[model][0]*pow(size,table[model][1]);

	// Calculate Time
	time = table[model][2]*pow(effort,table[model][3]);

	//Calculate Persons Required
	staff = effort/time;

	// Output the values calculated
	cout<<"\nEffort = "<<effort<<" Person-Month";

	cout<<"\nDevelopment Time = "<<time<<" Months";

	cout<<"\nAverage Staff Required = "<<fround(staff)<<" Persons";
	
}


int main()
{
	float table[3][4]={2.4,1.05,2.5,0.38,3.0,1.12,2.5,0.35,3.6,1.20,2.5,0.32};

	char mode[][15]={"Organic","Semi-Detached","Embedded"};

	int size = 4;

	calculate(table,3,mode,size);
	
	return 0;
}

Output:
The mode is Organic
Effort = 10.289 Person-Month
Development Time = 6.06237 Months
Average Staff Required = 2 Persons

中间模型

基本的 Cocomo 模型假设工作量只是代码行数和根据不同软件系统评估的一些常数的函数。然而,实际上,任何系统的工作量和进度都不能仅根据代码行来计算。为此,各种其他因素,如可靠性、经验、能力。这些因素被称为成本驱动因素,中间模型利用 15 个这样的驱动因素进行成本估算。

成本动因的分类及其属性:

  1. 产品属性:

所需的软件可靠性范围
应用程序数据库的大小
产品的复杂性

  1. 硬件属性

运行时性能约束
内存限制
虚拟机环境的波动
所需周转时间

  1. 人员属性

分析师能力
软件工程能力
应用经验
虚拟机体验
编程语言经验

  1. 项目属性

软件工具的使用
软件工程方法的应用
所需的开发时间表

所涉及的因素参数如下表所示:

成本驱动因素非常低中等非常高
产品因素:
软件可靠性需求0.750.881.001.151.40
应用数据库的规模0.941.001.081.16
产品的复杂度0.750.851.001.151.30
硬件属性:
运行时性能参数1.001.111.30
内存参数1.001.061.21
虚拟环境的波动0.871.001.151.30
周转时间需求0.941.001.071.15
个人属性
分析能力1.461.191.000.860.71
项目经验1.291.131.000.910.82
软件工程师能力1.421.171.000.860.70
虚拟机经验1.211.101.000.90
编程语言经验1.141.071.000.95
项目属性
软件工程方法应用1.241.101.000.910.82
软件工具的使用1.241.101.000.910.83
开发进度需求1.231.081.001.041.10

项目经理分别针对上面的因子进行评分,并将其相乘,所取得的结果被称为努力因子(EAF)。中级COCOMO的计算公式如下:

E f f o r t = ( a ( K L O C ) b ) × E A F Effort = (a(KLOC)^b)\times EAF Effort=(a(KLOC)b)×EAF

该公式涉及的参数值如下表:

软件项目ab
成熟的3.21.05
半成熟的3.01.12
陌生的2.81.20

细致模型

细致模型将中间版本的所有特征与成本驱动因素对软件工程过程每个步骤的影响的评估相结合。细致模型对每个成本动因属性使用不同的工作量乘数。在细致模型cocomo中,将整个软件分为不同的模块,然后我们在不同的模块中应用 COCOMO 来估算工作量,然后对工作量求和。

细致模型COCOMO的六个阶段是:

  • 规划和要求
  • 系统设计
  • 详细设计
  • 模块代码和测试
  • 集成和测试
  • 成本建设模型

工作量是作为程序规模的函数来计算的,并且根据软件生命周期的每个阶段给出了一组成本驱动因素。

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件工程(原书第9版)》是系统介绍软件工程理论的经典教材,自1982年初版以来,随着软件工程学科的不断发展,不断更新版本,影响了一代又一代软件工程人才,对学科本身也产生了重大影响。本版保留了上一版中的软件工程的基本材料,但对各章都进行了修改和更新,并增加了很多有关其他主题的新材料。 《软件工程(原书第9版)》包含四个部分:第一部分是对软件工程的一般性介绍,包括软件工程过程和敏捷开发,以及面向对象的设计和设计模式的使用;第二部分介绍可依赖性和信息安全性问题;第三部分介绍高级软件工程;第四部分介绍软件管理,重点介绍技术管理问题。 《软件工程(原书第9版)》适合作为软件和系统工程专业本科生或研究生教材,同时也是软件工程师难得的优秀参考书籍。 目录编辑 《软件工程(原书第9版)》 出版者的话 译者序 前言 第一部分软件工程导论 第1章概述 1.1专业化软件开发 1.1.1软件工程 1.1.2软件工程的多样性 1.1.3软件工程和web 1.2软件工程人员的职业道德 1.3案例研究 1.3.1胰岛素泵控制系统 1.3.2用于心理健康治疗的患者信息系统 1.3.3野外气象站 要点 进一步阅读材料 练习 参考书目 第2章软件过程 .2.1软件过程模型 2.1.1瀑布模型 2.1.2增量式开发 2.1.3面向复用的软件工程 2.2过程活动 2.2.1软件描述 2.2.2软件设计和实现 2.2.3软件有效性验证 2.2.4软件进化 2.3应对变更 2.3.1原型构造 2.3.2增量式交付 2.3.3boehm的螺旋模型 2.4rational统一过程 要点 进一步阅读材料 练习 参考书目 第3章敏捷软件开发 3.1敏捷方法 3.2计划驱动开发和敏捷开发 3.3极限编程 3.3.1极限编程中的测试 3.3.2结对编程 3.4敏捷项目管理 3.5可扩展的敏捷方法 要点 进一步阅读材料 练习 参考书目 第4章需求工程 4.1功能需求和非功能需求 4.1.1功能需求 4.1.2非功能需求 4.2软件需求文档 4.3需求描述 4.3.1自然语言描述 4.3.2结构化描述 4.4需求工程过程 4.5需求导出和分析 4.5.1需求发现 4.5.2采访 4.5.3脚本 4.5.4用例 4.5.5深入实际 4.6需求有效性验证 4.7需求管理 4.7.1需求管理规划 4.7.2需求变更管理 要点 进一步阅读材料 练习 参考书目 第5章系统建模 5.1上下文模型 5.2交互模型 5.2.1用例建模 5.2.2时序图 5.3结构模型 5.3.1类图 5.3.2泛化 5.3.3聚合 5.4行为模型 5.4.1数据驱动的建模 5.4.2事件驱动模型 5.5模型驱动工程 5.5.1模型驱动体系结构 5.5.2可执行uml 要点 进一步阅读材料 练习 参考书目 第6章体系结构设计 6.1体系结构设计决策 6.2体系结构视图 6.3体系结构模式 6.3.1分层体系结构 6.3.2容器体系结构 6.3.3客户机-服务器体系结构 6.3.4管道和过滤器体系结构 6.4应用体系结构 6.4.1事务处理系统 6.4.2信息系统 6.4.3语言处理系统 要点 进一步阅读材料 练习 参考书目 第7章设计与实现 7.1利用uml进行面向对象设计 7.1.1系统上下文与交互 7.1.2体系结构的设计 7.1.3对象类识别 7.1.4设计模型 7.1.5接口描述 7.2设计模式 7.3实现问题 7.3.1复用 7.3.2配置管理 7.3.3宿主机-目标机开发 7.4开源开发 要点 进一步阅读材料 练习 参考书目 第8章软件测试 8.1开发测试 8.1.1单元测试 8.1.2选择单元测试案例 8.1.3组件测试 8.1.4系统测试 8.2测试驱动开发 8.3发布测试 8.3.1基于需求的测试 8.3.2情景测试 8.3.3性能测试 8.4用户测试 要点 进一步阅读材料 练习 参考书目 第9章软件进化 9.1进化过程 9.2程序进化的动态特性 9.3软件维护 9.3.1维护预测 9.3.2软件再工程 9.3.3通过重构进行预防性维护 9.4遗留系统管理 要点 进一步阅读材料 练习 参考书目 第二部分可依赖性和信息安全性 第10章社会技术系统 10.1复杂系统 10.1.1系统总体特性 10.1.2系统非确定性 10.1.3成功标准 10.2系统工程 10.3系统采购 10.4系统开发 10.5系统运行 10.5.1人为错误 10.5.2系统进化 要点 进一步阅读材料 练习 参考书目 第11章可依赖性与信息安全性 11.1可依赖性特征 11.2可用性和可靠性 11.3安全性 11.4信息安全性 要点 进一步阅读材料 练习 参考书目 第12章可依赖性与信息安全性描述 12.1风险驱动的需求描述 12.2安全性描述 12.2.1危险识别 12.2.2危险评估 12.2.3危险分析 12.2.4风险降低 12.3可靠性描述 12.3.1可靠性度量 12.3.2非功能性的可靠性需求 12.3.3功能可靠性描述 12.4信息安全性描述 12.5形式化描述 要点 进一步阅读材料 练习 参考书目 第13章可依赖性工程 13.1冗余性和多样性 13.2可依赖的过程 13.3可依赖的系统体系结构 13.3.1保护性系统 13.3.2自监控系统体系结构 13.3.3n-版本编程 13.3.4软件多样性 13.4可依赖的编程 要点 进一步阅读材料 练习 参考书目 第14章信息安全工程 14.1信息安全风险管理 14.1.1生存期风险评估 14.1.2运行风险评估 14.2面向信息安全的设计 14.2.1体系结构设计 14.2.2设计准则 14.2.3部署设计 14.3系统生存能力 要点 进一步阅读材料 练习 参考书目 第15章可依赖性与信息安全保证 15.1静态分析 15.1.1检验和形式化方法 15.1.2模型检测 15.1.3自动静态分析 15.2可靠性测试 15.3信息安全性测试 15.4过程保证 15.5安全性和可依赖性案例 15.5.1结构化论证 15.5.2结构化的安全性论证 要点 进一步阅读材料 练习 参考书目 第三部分高级软件工程 第16章软件复用 16.1复用概览 16.2应用框架 16.3软件产品线 16.4cots产品的复用 16.4.1cots解决方案系统 16.4.2cots集成系统 要点 进一步阅读材料 练习 参考书目 第17章基于组件的软件工程 17.1组件和组件模型 17.2cbse过程 17.2.1面向复用的cbse 17.2.2基于复用的cbse 17.3组件合成 要点 进一步阅读材料 练习 参考书目 第18章分布式软件工程 18.1分布式系统的问题 18.1.1交互模型 18.1.2中间件 18.2客户机-服务器计算 18.3分布式系统的体系结构模式 18.3.1主从体系结构 18.3.2两层客户机-服务器结构 18.3.3多层客户机-服务器结构 18.3.4分布式组件体系结构 18.3.5对等体系结构 18.4软件作为服务 要点 进一步阅读材料 练习 参考书目 第19章面向服务的体系结构 19.1服务作为可复用的组件 19.2服务工程 19.2.1可选服务的识别 19.2.2服务接口设计 19.2.3服务实现和部署 19.2.4遗留系统服务 19.3使用服务的软件开发 19.3.1工作流设计和实现 19.3.2服务测试 要点 进一步阅读材料 练习 参考书目 第20章嵌入式软件 20.1嵌入式系统设计 20.1.1实时系统建模 20.1.2实时编程 20.2体系结构模式 20.2.1观察和反应 20.2.2环境控制 20.2.3处理管道 20.3时序分析 20.4实时操作系统 要点 进一步阅读材料 练习 参考书目 第21章面向方面的软件工程 21.1关注点分离 21.2方面、连接点和切入点 21.3采用方面的软件工程 21.3.1面向关注点的需求工程 21.3.2面向方面的设计和编程 21.3.3检验和有效性验证 要点 进一步阅读材料 练习 参考书目 第四部分软 件 管 理 第22章项目管理 22.1风险管理 22.1.1风险识别 22.1.2风险分析 22.1.3风险规划 22.1.4风险监控 22.2人员管理 22.3团队协作 22.3.1成员挑选 22.3.2小组的结构 22.3.3小组的沟通 要点 进一步阅读材料 练习 参考书目 第23章项目规划 23.1软件报价 23.2计划驱动的开发 23.2.1项目计划 23.2.2规划过程 23.3项目进度安排 23.4敏捷规划 23.5估算技术 23.5.1算法成本建模 23.5.2cocomo Ⅱ模型 23.5.3项目的工期和人员配备 要点 进一步阅读材料 练习 参考书目 第24章质量管理 24.1软件质量 24.2软件标准 24.3复查与审查 24.3.1复查过程 24.3.2程序审查 24.4软件度量和量度 24.4.1产品量度 24.4.2软件组件分析 24.4.3度量歧义 要点 进一步阅读材料 练习 参考书目 第25章配置管理 25.1变更管理 25.2版本管理 25.3系统构建 25.4发布版本管理 要点 进一步阅读材料 练习 参考书目 第26章过程改善 26.1过程改善过程 26.2过程度量 26.3过程分析 26.4过程变更 26.5cmmi过程改善框架 26.5.1分阶段的cmmi模型 26software engineering,9e 出版者的话 译者序 前言 第一部分软件工程导论 第1章概述 1.1专业化软件开发 1.1.1软件工程 1.1.2软件工程的多样性 1.1.3软件工程和web 1.2软件工程人员的职业道德 1.3案例研究 1.3.1胰岛素泵控制系统 1.3.2用于心理健康治疗的患者信息系统 1.3.3野外气象站 要点 进一步阅读材料 练习 参考书目 第2章软件过程 2.1软件过程模型 2.1.1瀑布模型 2.1.2增量式开发 2.1.3面向复用的软件工程 2.2过程活动 2.2.1软件描述 2.2.2软件设计和实现 2.2.3软件有效性验证 2.2.4软件进化 2.3应对变更 2.3.1原型构造 2.3.2增量式交付 2.3.3boehm的螺旋模型 2.4rational统一过程 要点 进一步阅读材料 练习 参考书目 第3章敏捷软件开发 3.1敏捷方法 3.2计划驱动开发和敏捷开发 3.3极限编程 3.3.1极限编程中的测试 3.3.2结对编程 3.4敏捷项目管理 3.5可扩展的敏捷方法 要点 进一步阅读材料 练习 参考书目 第4章需求工程 4.1功能需求和非功能需求 4.1.1功能需求 4.1.2非功能需求 4.2软件需求文档 4.3需求描述 4.3.1自然语言描述 4.3.2结构化描述 4.4需求工程过程 4.5需求导出和分析 4.5.1需求发现 4.5.2采访 4.5.3脚本 4.5.4用例 4.5.5深入实际 4.6需求有效性验证 4.7需求管理 4.7.1需求管理规划 4.7.2需求变更管理 要点 进一步阅读材料 练习 参考书目 第5章系统建模 5.1上下文模型 5.2交互模型 5.2.1用例建模 5.2.2时序图 5.3结构模型 5.3.1类图 5.3.2泛化 5.3.3聚合 5.4行为模型 5.4.1数据驱动的建模 5.4.2事件驱动模型 5.5模型驱动工程 5.5.1模型驱动体系结构 5.5.2可执行uml 要点 进一步阅读材料 练习 参考书目 第6章体系结构设计 6.1体系结构设计决策 6.2体系结构视图 6.3体系结构模式 6.3.1分层体系结构 6.3.2容器体系结构 6.3.3客户机-服务器体系结构 6.3.4管道和过滤器体系结构 6.4应用体系结构 6.4.1事务处理系统 6.4.2信息系统 6.4.3语言处理系统 要点 进一步阅读材料 练习 参考书目 第7章设计与实现 7.1利用uml进行面向对象设计 7.1.1系统上下文与交互 7.1.2体系结构的设计 7.1.3对象类识别 7.1.4设计模型 7.1.5接口描述 7.2设计模式 7.3实现问题 7.3.1复用 7.3.2配置管理 7.3.3宿主机-目标机开发 7.4开源开发 要点 进一步阅读材料 练习 参考书目 第8章软件测试 8.1开发测试 8.1.1单元测试 8.1.2选择单元测试案例 8.1.3组件测试 8.1.4系统测试 8.2测试驱动开发 8.3发布测试 8.3.1基于需求的测试 8.3.2情景测试 8.3.3性能测试 8.4用户测试 要点 进一步阅读材料 练习 参考书目 第9章软件进化 9.1进化过程 9.2程序进化的动态特性 9.3软件维护 9.3.1维护预测 9.3.2软件再工程 9.3.3通过重构进行预防性维护 9.4遗留系统管理 要点 进一步阅读材料 练习 参考书目 第二部分可依赖性和信息安全性 第10章社会技术系统 10.1复杂系统 10.1.1系统总体特性 10.1.2系统非确定性 10.1.3成功标准 10.2系统工程 10.3系统采购 10.4系统开发 10.5系统运行 10.5.1人为错误 10.5.2系统进化 要点 进一步阅读材料 练习 参考书目 第11章可依赖性与信息安全性 11.1可依赖性特征 11.2可用性和可靠性 11.3安全性 11.4信息安全性 要点 进一步阅读材料 练习 参考书目 第12章可依赖性与信息安全性描述 12.1风险驱动的需求描述 12.2安全性描述 12.2.1危险识别 12.2.2危险评估 12.2.3危险分析 12.2.4风险降低 12.3可靠性描述 12.3.1可靠性度量 12.3.2非功能性的可靠性需求 12.3.3功能可靠性描述 12.4信息安全性描述 12.5形式化描述 要点 进一步阅读材料 练习 参考书目 第13章可依赖性工程 13.1冗余性和多样性 13.2可依赖的过程 13.3可依赖的系统体系结构 13.3.1保护性系统 13.3.2自监控系统体系结构 13.3.3n-版本编程 13.3.4软件多样性 13.4可依赖的编程 要点 进一步阅读材料 练习 参考书目 第14章信息安全工程 14.1信息安全风险管理 14.1.1生存期风险评估 14.1.2运行风险评估 14.2面向信息安全的设计 14.2.1体系结构设计 14.2.2设计准则 14.2.3部署设计 14.3系统生存能力 要点 进一步阅读材料 练习 参考书目 第15章可依赖性与信息安全保证 15.1静态分析 15.1.1检验和形式化方法 15.1.2模型检测 15.1.3自动静态分析 15.2可靠性测试 15.3信息安全性测试 15.4过程保证 15.5安全性和可依赖性案例 15.5.1结构化论证 15.5.2结构化的安全性论证 要点 进一步阅读材料 练习 参考书目 第三部分高级软件工程 第16章软件复用 16.1复用概览 16.2应用框架 16.3软件产品线 16.4cots产品的复用 16.4.1cots解决方案系统 16.4.2cots集成系统 要点 进一步阅读材料 练习 参考书目 第17章基于组件的软件工程 17.1组件和组件模型 17.2cbse过程 17.2.1面向复用的cbse 17.2.2基于复用的cbse 17.3组件合成 要点 进一步阅读材料 练习 参考书目 第18章分布式软件工程 18.1分布式系统的问题 18.1.1交互模型 18.1.2中间件 18.2客户机-服务器计算 18.3分布式系统的体系结构模式 18.3.1主从体系结构 18.3.2两层客户机-服务器结构 18.3.3多层客户机-服务器结构 18.3.4分布式组件体系结构 18.3.5对等体系结构 18.4软件作为服务 要点 进一步阅读材料 练习 参考书目 第19章面向服务的体系结构 19.1服务作为可复用的组件 19.2服务工程 19.2.1可选服务的识别 19.2.2服务接口设计 19.2.3服务实现和部署 19.2.4遗留系统服务 19.3使用服务的软件开发 19.3.1工作流设计和实现 19.3.2服务测试 要点 进一步阅读材料 练习 参考书目 第20章嵌入式软件 20.1嵌入式系统设计 20.1.1实时系统建模 20.1.2实时编程 20.2体系结构模式 20.2.1观察和反应 20.2.2环境控制 20.2.3处理管道 20.3时序分析 20.4实时操作系统 要点 进一步阅读材料 练习 参考书目 第21章面向方面的软件工程 21.1关注点分离 21.2方面、连接点和切入点 21.3采用方面的软件工程 21.3.1面向关注点的需求工程 21.3.2面向方面的设计和编程 21.3.3检验和有效性验证 要点 进一步阅读材料 练习 参考书目 第四部分软 件 管 理 第22章项目管理 22.1风险管理 22.1.1风险识别 22.1.2风险分析 22.1.3风险规划 22.1.4风险监控 22.2人员管理 22.3团队协作 22.3.1成员挑选 22.3.2小组的结构 22.3.3小组的沟通 要点 进一步阅读材料 练习 参考书目 第23章项目规划 23.1软件报价 23.2计划驱动的开发 23.2.1项目计划 23.2.2规划过程 23.3项目进度安排 23.4敏捷规划 23.5估算技术 23.5.1算法成本建模 23.5.2cocomo Ⅱ模型 23.5.3项目的工期和人员配备 要点 进一步阅读材料 练习 参考书目 第24章质量管理 24.1软件质量 24.2软件标准 24.3复查与审查 24.3.1复查过程 24.3.2程序审查 24.4软件度量和量度 24.4.1产品量度 24.4.2软件组件分析 24.4.3度量歧义 要点 进一步阅读材料 练习 参考书目 第25章配置管理 25.1变更管理 25.2版本管理 25.3系统构建 25.4发布版本管理 要点 进一步阅读材料 练习 参考书目 第26章过程改善 26.1过程改善过程 26.2过程度量 26.3过程分析 26.4过程变更 26.5cmmi过程改善框架 26.5.1分阶段的cmmi模型 26.5.2连续cmmi模型 要点 进一步阅读材料 练习 参考书目 术语表5.2连续cmmi模型 要点 进一步阅读材料 练习 参考书目 术语表
软件工程黑书全书知识点详细汇总 考纲目录 第一章 基本概念 2 1、软件的概念和特点 2 2、软件危机的概念和产生的原因 3 3、软件工程的定义、三要素和发展过程 (重点,考过多次问答题) 4 第二章 过程模型 4 1、软件生命周期概念、软件过程概念、能力成熟度模型 CMM 概念 4 2、常见的软件过程模型:瀑布、增量、原型、螺旋、喷泉等,比较各自优缺点 5 1、瀑布模型(经典生命周期模型) 6 2、增量过程模型(增量模型+RAD模型) 6 3、演化过程模型(原型模型+螺旋模型) 7 4、喷泉模型(Water Fountain Model) 9 5、基于构件的模型Component-baseed Development Model) 10 6、敏捷开发过程(Agile Development) 10 第三章 需求分析 11 1、需求分析的概念 12 2、需求分析的过程:需求确认与需求变更 12 3、需求确认的步骤:需求获取→需求提炼→需求描述→需求验证 13 4、需求分析三类建模:功能模型、数据模型、行为模型。面向过程 和面向对象的需分析过程中,三类模型各包含哪些内容?--------------- 15 5、 掌握数据流图和用例图作法。 31 第四章系统设计 32 1、系统设计分为概要设计和详细设计 32 2、设计相关的8个概念(抽象、体系结构、设计模式、模块化、信息隐藏、功能独立、细化、重构),着重考察体系结构、模块化、信息隐藏、功能独立。 33 3、系统设计从数据、体系结构、接口和组件四方面进行设计。面向过程和面向对象的系统设计,各自包含哪些设计内容? 37 4、掌握流程图和顺序图作法 43 第五章 质量保证 48 1、质量保证的概念 48 2、测试策略 V 模型概念,测试与开发的各阶段对应关系。 48 3、单元测试的内容、集成测试的分类、系统测试的分类、验收测试的分类。 48 4、回归测试的概念 48 5、测试技术常见术语的概念:软件缺陷、验证和确认、测试与质量保证、质量与可靠性、调 试与测试、测试用例 48 6、白盒测试、黑盒测试、静态分析各有哪些方法? 48 7、掌握逻辑覆盖与等价类划分测试方法。 48 第六章 软件维护 49 1、软件维护的基本概念 49 2、理解软件维护的四个基本类型:纠错性、适应性、完善性、预防性维护。哪种占比重最大? 哪种最小? 49 3、可维护性的决定因素 49 4、软件维护过程模型、软件再工程、逆向工程的概念 49 第七章 项目管理 49 1、项目管理四要素:人员、产品、项目、过程(概念) 49 2、软件度量有哪些方法:生产率估计(基于规模(KLOC)、基于功能点(FP))、工作量度 量(算法成本模型、COCOMO 模型)。掌握直接测量(基于规模)方法。 49 3、项目计划与风险管理的概念 49

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值