估算项目工时

    一个项目在前期调研的时候就要估计一下项目开发的周期大约有多长。有很多不同的估计方法,适合不同的项目类型。我平时设计 LabVIEW 编写的应用程序中用到过三种估计方法:代码量度量(Size-Based Metrics)、工作量估计(Effort Estimation)和专家估计(Wideband Delphi Estimation)。

    代码量度量的估计方法就相当于使用其它文本编程语言时的代码行估计法。一个软件需要多商行代码、每行代码要花多少时间,是相对来说比较容易统计的。所以代码行估计法是最流行的估计项目工时的方法之一。LabVIEW 的代码不是按行来计算的,它以节点数为计量单位。
    在 LabVIEW 的菜单上选择 Tools->Profile->VI Metrics 就可以调出如下的面板。这个 VI 度量面板可以帮你统计的的 LabVIEW 代码中总共有多少个节点。


图1:VI度量工具

    利用代码量度量方法估算工时的具体实施步骤大致如下:
    首先,先把项目拆分成小的模块。功能单一的小模块更容易进行准确估算。然后估计实现每个小模块需要多少 LabVIEW 代码(节点个数)。所有模块节点数的和就是整个项目所需的节点数,每个节点所需工时是已知的,所以整个项目的工时也就估计出来的。

    利用代码量度量方法估算工时,是需要有一些历史经验才行的。比如某种规模的功能模块到底需要多少节点,只有有过项目经验,统计过,才能心里有谱;写一个节点需要多少时间,对于不同类型的公司,不同经验的程序员,这一数值都是不同的。自己公司的每节点编程耗时,也只有做过之后才有数。

    如果缺少历史统计数据,可以使用精确度稍差一些的工作量估计法来估算项目工时。工作量估计法与代码量度量方法是很类似的。首先要把项目拆分成便于估算的小模块。但是,由于不便于对程序节点数进行估算,就只能评直觉,估计每个模块所需的工时,然后累加出项目总工时。

    Wideband Delphi Estimation 方法也可以用于缺少历史统计数据的情况,并且它的结论比工作量估计法要精确。只是这种方法实时起来比较麻烦,一般只有比较重要的项目,我们才会用此方法。
    Wideband Delphi 方法的实时过程大致如下。首先组织一个十人左右的团队,队员是来自不同部门但与此项目紧密相关的人,比如开发者、文档人员、测试人员等等。
    让所有队员各自估计一下项目所需的时间。
    把所有人凑到一起,把估计的结果汇总,让大家看看估计值的分布情况。然后由每个队员讲一下影响自己做估计的因素,包括有利的因素和不利的因素。比如有人会提出,我们的项目与某某项目很类似,可以借用那个项目中的很多代码。另一个人说,我们的项目用到一个什么非常难掌握的技术,可能会花费很多时间等等。
    等大家讨论过后,再各自重新估计项目的工时。
    然后在汇总,在讨论……
    经过几轮讨论估计后,大家估计出来的工时的差距就比较小了。取大家的平均值作为最终结果即可。

《我和 LabVIEW》

记录梦境 7 – 外星人入侵

    我正在路上闲逛的时候,突然手机响了,是正在美国出差的小李打来的。他说他正在看电视呢,新闻里说:最近几天的全球大气活动突然一反常态,接下来几天恐怕会有全球性的大灾害,灾害程度难以预计,只怕一些基本生活供给都要中断了。小李提醒我说,美国这边已经乱了,大家到处再收集粮食呢。这种新闻在中国一定不会播出的,要我赶紧去超市大采购,把未来几天的食物准备好。
    我听了之后非常感动,说:小李啊,真没想到你这么关心我。都这时候了还惦记着通知我呢。
    小李听了之后一下说:那当然啊,咱俩啥关系,能不互相照顾吗?我老婆这几天生病,出不了门,你顺便帮我家也采购些吃的吧。

    我一想,这下得买多少东西啊。于是打了个电话给老猴,这家伙刚买了新车,不用白不用。

    老猴刚把车开上高速公路,天就阴了下来。我们右边天空的乌云迅速集结起来,并开始高速旋转。不一会,在云团中心形成了一个黑色的柱子,并开始伸向地面。我兴奋的大叫:是龙卷风哎,我还是头一次看见真的龙卷风呢。我极力的怂恿老侯把车开到里龙卷风近一点的地方,我好仔细观察一下。老侯说我神经病,继续朝前开他的车。可是就在这时候,天上又出现了几个龙卷风的风柱,在我们前方的告诉公路上来回扫荡。老侯也有点慌了,左躲右闪,避开每一个风柱。好在老猴车技不错,看见旁边的汽车都被圈上了天,我们区幸免于难。刚躲开龙卷风,我们又被个绿色的光团跟踪上了,我回头一看,我的妈呀,这不会就是球型闪电吧。老侯拐来拐去,也甩不掉光团的跟踪。最后做了一个弱智的决定-急掉头。
    汽车掉头的时候,速度一下慢了下来,正好被光团逮个正着。我发现真个汽车都被沐浴在淡绿色的光中,似乎慢慢漂浮了起来。这时候,我突然觉得眼前一黑,就失去了知觉。

    再度清醒过来的时候,我和老侯仍然坐在汽车里,但是汽车已经被运到一座高大建筑物的大厅里了。汽车周围站着几只和人类一样高的大虫子,长得有点像蟑螂和蝗虫的杂交品种。
    蟑螂们正在互相议论着什么,大概正在讨论如何处理我们两个俘虏。我对老猴哭丧着脸说:“坏了,咱俩肯定是被卷到时空隧道里了。这会不只是多少年后了,人类都灭绝了,地球都被蟑螂给占领了”。
    蟑螂们发现我和老侯清醒过来了,就一把把我和老侯从车里拽了出来,架着我们向外走。

    我们走到外面后,我才有机会观察了一下周围的环境。我刚刚所在的是一座高大的建筑物,坐落在一片高地平原上。目光所及之处,只有稀稀落落几棵灌木,非常荒凉。大楼正对这一个百米深的陡峭峡谷,蟑螂们押着我和老侯沿悬崖边的小路向西走去。走了没多远,小路就开始沿着峭壁向峡谷下方延伸。
    我伸脖朝峡谷下面看了一眼,哇,没想到这下面竟然是生机勃勃的。峡谷下面被围栏围住了一群一群的牲口,都是常见的猪牛羊什么的。一些蟑螂正在忙着给牲口们喂食。

    我们沿着小路一直走到了谷底,路的尽头是一个幽深的山洞。山洞里已经挤着几百个人了,这一定是蟑螂们养人的地方了。蟑螂打开山洞口的栅栏门,把我和老侯扔了进去。见有新人来,洞里的人都围拢过来,向我们打听情况。
    洞里的人也是最近几天才被抓来的。经过我们一番讨论,大家都觉得这些蟑螂蝗虫是外星人,侵占了地球,俘虏了地球上原有的生物和人。他们饲养的牲口是用来做食物的,而人类则成了他们的苦力。接下来的几天,我们洞里的人一起商定了一个逃跑计划。

    我们每天的工作是去峡谷上方的高地上去建房子。蟑螂对我们看管的并不严格,只是偶尔会有三五只蟑螂前来查看工程进度。平时管理我们的是工头,几个毫无骨气的马屁精。为了讨好主子,他们几个居然还学会了蟑螂语,经常在我们面前狐假虎威。我们称这几个工头叫伪军,他们平时也不住在山洞,而是住在高地的小屋中。这倒是给我商讨逃跑创造了好机会。
    在高地上干活的时候是比较容易逃的。因为晚上我们是被所在山洞里的,洞口是被手臂那么粗铁栅栏围死的,根本没法除去。而在高地上盖房子的时候,我们唯一的障碍就只有工地周围的木围栏,翻过去之后我们就自由了。
    我们终于选好了逃跑的日子。那天一大早就有两只蟑螂来巡查,没发现什么异常就回去了,我们知道今天蟑螂们不会再过来了。带到确信蟑螂们已经走远了,有人大喊了一声:“行动”。于是我们几百个人同时冲向围栏的大门。几个工头正蹲在门楼下面乘凉聊天呢,突然一抬眼就看到我们气势汹汹的冲了过来,他们也马上明白我们要干什么了。几个工头直到拦不住我们,都已经傻在哪里了。
    只有一个胆大的,还企图拦住我们。等我们冲到门口的时候,他战战兢兢的对我们说:“外面都已经被蝗军占领了,逃到哪里都一样的。蝗军对我们不错的,我们在这里有吃有喝……”
    我再也没耐心听他在这罗嗦了,趁他不注意的时候,捡起一块砖头啪一下拍在他头上。其他难友一看我带了头,也一拥而上,把几个伪军胖揍一顿,然后冲出了围栏。

《生活随笔》

预防近视要从婴儿抓起

    今天早上看书,看到《心理学》关于视觉的一章了。其中一个非常有用的信息,以前居然从没听说过。这是一项关于婴儿睡眠和近视眼的统计数据。
    有497名儿童参与了这项实验,参与者被分为三组。实验从他们一出生就开始了。其中,第一组婴儿始终在黑暗的环境中睡眠(0岁到2岁),实验人员对这批婴儿进行了长期跟踪调查,在他们成年之后,他们中10%的人患上了近视眼;第二组婴儿始终在有昏暗灯光环境中睡眠,这组人在成年后,有34%的成员患上了近视;第三组的婴儿始终在明亮环境中睡眠,他们在成年后患近视眼的比率高达55%。
    这个实验虽不能证明婴儿睡觉时的光亮与成年后近视眼之间有直接因果关系,但这样高的相关性也足够引起我们的重视了。
    如果大家不想让自己的后代患上近视眼,一定要记得在卧室安装全遮光的窗帘,在孩子睡觉时拉好窗帘,关闭灯光。
 

编辑