热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

软考复习软件工程05软件项目估算&进度管理

软件项目估算常用估算方法:基于已经完成的类似项目进行估算。基于分解技术计划进行估算。基于经验估算模型进行估算。成本估算方法自顶向下:从以前完成项目的总成本来估算现在的总成本,再进行




软件项目估算

常用估算方法:



  1. 基于已经完成的类似项目进行估算。

  2. 基于分解技术计划进行估算。

  3. 基于经验估算模型进行估算。


成本估算方法



  1. 自顶向下:从以前完成项目的总成本来估算现在的总成本,再进行分配。

  2. 自底向上:先分别估算每个自认为所需要的开发工作量,最后再进行相加。

  3. 差别估算方法:将待开发项目与已完成项目进行比对,找出其中差别所在,并估算每个差别对于成本的影响。

  4. 专家估算法

  5. 类推估算法

  6. 算式估算法


COCOMO估算模型

是一种精确的,易于使用的静态成本估算模型。

基本COCOMO模型:

1

中级COCOMO模型

COCOMO2


COCOMOII模型

也是一种层次结构的估算模型,分为三个阶段性模型。



  1. 应用组装模型。在软件工程的前期使用。

  2. 早期设计阶段模型。在需求已经稳定并且基层的软件体系结构意见建立时使用。

  3. 体系结构阶段模型。在软件构造过程中使用。


Putnam估算模型

是一种动态多变量的模型,假设在软件开发的整个生存周期中工作量有特定的分布。

PUTNAM


进度管理

软件项目进度管理目的是确保软件项目在规定的时间内按期完成。一个软件项目通常可以分为多个子项目和任务,这些任务之间存在一定的关系。项目管理的任务是定义所有的项目任务及其之间的依赖关系,制定项目的进度安排,规划每个任务所需的工作量和持续时间,并在开发过程中进行跟踪调整。


基本原则



  1. 划分。即对产品和过程进行分解。

  2. 相互依赖性。划分后各个活动或任务间的以来关系必须是明确的。

  3. 时间分配。必须为每个被调度的任务分配一定数量的工作单位,必须为每个任务制定开始和结束时间。

  4. 工作量确认。每个项目都有预定数量的人员参与。

  5. 确定责任。

  6. 明确输出结果。安排了进度计划的每个任务够应该有一个明确的输出结果。

  7. 确定里程碑。


进度安排

进度安排的常用图形描述方法有Gantt(甘特)图和项目计划评审技术(Program Evaluation & Review Technique,PERT)图。


Gantt图

是一种简单的水平条形图,他以日历为基准描述项目任务。水平轴表示时间线,每一个条形代表一个任务。左侧为任务名,水平条的起点和终点对应任务所需时间。

Gantt

Gantt图能清晰地描述每个任务从何时开始,到何时结束,任务的进展以及各个任务之间的并行性。但不能清晰地反映出各个任务之间的依赖关系,难以确定整个项目的关键所在,也无法反映计划中有潜力的部分。


PERT图

是一个有向图,图中的箭头表示任务,可以标上完成任务所需时间,图中的结点表示在该结点上一任务的结束和下一任务的开始,称为事件。事件本身不消耗任何资源,仅表示某个时间点。



  • 最早时刻:表示在此时刻之前从该事件出发的任务不可能开始。

  • 最迟时刻:从该事件出发的任务必须在此时刻之前开始。

  • 松弛时间:在不影响工期的前提下完成该任务有多少机动余地。松弛时间为0的路径是完成整改工程的关键路径。

PERT

如图所示,各个量的计算方法如下:



  • 最少时间(关键路径):及图中完成任务的最长路径。

  • 最早开始时间:某段工程开始点之前最长输入流之和。

  • 最晚开始时间:关键路径-开始点到整个工程最后结束点的距离(如有多条路径,选择最小值的那条)。

  • 最早结束时间:某段工程结束点之前最长输入流之和。

  • 最晚结束时间:关键路径-该结束点到整个工程最后结束点的距离(选最小值)。

  • 松弛时间:最晚开始时间-最早开始时间。

  • 松弛时间:最晚结束时间-最早结束时间。

  • 松弛时间:关键路径-所求活动在的最长路径。

例:根据上图,求出关键路径和FG松弛时间

关键路径的计算

首先计算出各个路径长度:

1.ABEGJ:3+15+2+7=27

2.ACFGJ:6+4+3+7=20

3.ACFHJ:6+4+20+10=40

4.ADFGJ:10+8+3+7=28

5.ADFHJ:10+8+20+10=48

6.ADFIHJ:10+8+4+10=32

7.ADFIJ:10+8+4+12=34

综上最长为48,故最少时间为48

FG松弛时间的计算:

根据上述公式,可分别计算出:

最早开始:10+8=18

最晚开始:48-3-7=38

最早结束:10+8+3=21

最晚结束:48-7=41

得出松弛时间:38-18=20或者41-21=20




推荐阅读
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
  • Imdevelopinganappwhichneedstogetmusicfilebystreamingforplayinglive.我正在开发一个应用程序,需要通过流 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
  • 作用域链迷惑性代码vara100;functiontest(){console.log(a);}functiontestFun(){vara200;test();}不假思索的想到出 ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
  • KVC:Key-valuecodingisamechanismforindirectlyaccessinganobject’sattributesandrelations ... [详细]
author-avatar
孙孟兰_580
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有