在从事软件项目的开发工作中,发现项目的工期估算和控制是最大的问题。在项目的初期,尤其是从零开始做的项目,往往项目的周期估算很不准确。凭主观经验验的估算的工期往往与实际相差很远。

我从事的所有项目,都是基于数据库开发的普通应用类项目。从以往的经验来看,这些项目的开发复杂度与周期,往往与数据库中的表的数量有关系。表越多,开发周期越长。

根据以往的经验,总结了一个项目周期的估算公式。这里先明确公式中的各个变量:

TC=数据库中的表数量

TP=处理每张表所需要的代码行数,这是一个经验值,根据开发工具、开发模式的不同而不同,建议取值1000。

MP=每人每天可完成的可靠代码量,要据每个人而不同。

FK=数据库中的外键关联的数目。

FKx=外键复杂度系统,这是应该是经验值,建议可以采用1.01-1.02之间的数。

TM=项目时间占日常工作时间的百分比。

MN=项目组的成员数

MNx=项目组成员效率的系数,这是应该是经验值,建议可以采用0.7-0.9之间的值

具体公式如下:

总开发天数=(TC*TP)/Sum(MP*TM)*pow(FKx,FK)*(1/MN*MNx)

上面的公式中,Sum(MP*TM)表示项目数中每天完成的代码量应是每人完成的代码量之和。pow(FKx,FK)表示随着项目中的表的关联关系增多,项目中代码的复杂程序也会上升。(1/MN*MNx)表示人员之间的合作效率不是100%。不是说一个人做一个月的项目,两个人就做半个月。

上面的公式是指没有基本设计、详细设计的情况下的。如果有基本设计,详细设计,需要在整个值后同再乘上个1.3或是2,或是之间的数。

依据上面的公式,可以在做完数据库表的设计后估算出项目今后所需要的时间,而不是凭着经验空想。

以上观点,只是个人的认识,不代表它是正确的。

严家俊

2011年3月3日 夜  于家中

项目工程的工期的估算——基于数据库应用相关推荐

  1. 基于java的搜索引擎系统设计与实现(项目报告+开题报告+答辩PPT+源代码+数据库+部署视频)

    项目报告 基于Java的搜索引擎的设计与实现 我们处在一个大数据的时代,伴随着网络信息资源的庞大,人们越来越多地注重怎样才能快速有效地从海量的网络信息中,检索出自己需要的.潜在的.有价值的信息,从而可 ...

  2. css网页设计实例代码_大型电商平台设计实例:电商平台项目工程、数据库选型、代码库...

    电商平台微服务体系架构 经过一系列的微服务设计, 下面使用一张维导图完整表示这个电商平台的微服务架构设计模型,如图 3-6 示. 这是一个为简单的电商平台微服务架构设计模型,并且使用了粗粒度的微服务划 ...

  3. hibernate 读取mysql表结构_为什么要用hibernate 与基于数据库表结构的项目开发

    最近开始学习hibernate,其实并不知道要学习什么,有什么用.后来问了一下同事,他就说快捷方便简单,很多事情不用自己做他会帮你做好,但是我觉得不应该是这样的, 于是我就去搜了一下,就搜到了一篇帖子 ...

  4. (精品)基于Web的酒店客房管理系统的设计与实现毕业论文+开题报告+项目源码(SSM)及数据库+查重报告

     源码获取:我的博客资源页面可以下载!!!! 项目名称 (精品)基于Web的酒店客房管理系统的设计与实现毕业论文+开题报告+项目源码(SSM)及数据库+查重报告 视频介绍 (精品)基于Web的酒店客房 ...

  5. 大型电商平台设计实例:电商平台项目工程、数据库选型、代码库

    电商平台微服务体系架构 经过一系列的微服务设计, 下面使用一张维导图完整表示这个电商平台的微服务架构设计模型,如图 3-6 示. 这是一个为简单的电商平台微服务架构设计模型,并且使用了粗粒度的微服务划 ...

  6. 基于java的健康管理系统设计与实现(项目报告+开题报告+答辩PPT+源代码+数据库+部署视频)

    项目报告 面向特定群体的健康管理平台设计与实现 随着网络技术的不断发展,网站的开发与运用变得更加广泛.这次采用java语言SSH框架(Spring,Struts,Hibernate)设计并实现了面向特 ...

  7. linux命令cd回退_GitHub - gmpy/cdirs: cdirs 用于在linux中快速切换目录,对庞大的项目工程效果显著.其基于标签且无缝取代cd命令,学习成本非常低...

    cdirs cdirs 用于在目录间任意跳转,对庞大的项目工程效果显著. 支持标签目录,支持任意目录跳转到标签标记的目录 支持回退目录,快速返回到上级目录,摆脱多次"../../../..& ...

  8. 基于c#的串口设备通讯c#项目工程含虚拟串口软件与串口通信工具(C#源码)

    利用pc与串口通讯,在工业领域使用的很多: 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在 ...

  9. SpringBoot整合mybatis、shiro、redis实现基于数据库的细粒度动态权限管理系统实例(转)...

    SpringBoot整合mybatis.shiro.redis实现基于数据库的细粒度动态权限管理系统实例 shiro 目录(?)[+] 前言 表结构 maven配置 配置Druid 配置mybatis ...

最新文章

  1. graphpad柱状图怎么加图例_如何用Graphpad prism添加多个图例
  2. IOS--常用类--NSArray
  3. Java Review - 并发编程_独占锁ReentrantLock原理源码剖析
  4. echarts散点图使用
  5. webRTC+coturn穿透服务器的安装与搭建
  6. MATLAB拉格朗日插值
  7. MATLAB调用C/C++函数的方法
  8. 研发管理:该吵架就要吵架
  9. Android简历模板
  10. 窗体 dialog 弹出时动画效果
  11. iRingg for Mac(iPhone铃声制作工具)
  12. android上传速度测试,使用Android获取当前的互联网速度(移动和Wifi)
  13. Ansible事实变量常见fact
  14. 软件架构模式 mark Richards - 读后总结 3 - 微内核架构
  15. 30多岁零基础想转行学编程,来得及吗?
  16. 看似不负责任的菩提祖师,却用另外一种方式,造就了孙悟空的人生
  17. BZOJ4716 假摔
  18. linux培训 通知
  19. HTML脚本文件名,在gruntjs minify/uglify之后更改html中的链接或脚本文件名
  20. PDF不能编辑的问题如何解决?

热门文章

  1. @程序员,你在颓丧的时候怎么办?
  2. 词云——python实现
  3. AMPP (Apache、MySQL、PHP、Perl)集成开发
  4. java我的世界联机要加速器_《我的世界》JAVA版明年起需使用微软账号才能游玩...
  5. NAT与NAPT技术详解
  6. 深入浅出节流函数 throttle
  7. 《Optical Flow in the Dark》光流
  8. quartus ii 9.0 安装教程
  9. python-轻松切换各种python版本(pyenv)
  10. Win10 新功能 改变显示器色彩