基线的含义:一步一个脚印

来源:互联网 发布:佛祖保佑java代码下载 编辑:程序博客网 时间:2024/04/28 16:05

[转帖]基线的含义:一步一个脚印

(2009-08-06 03:02:43)
转载
标签:

杂谈

分类: 项目管理

基线的含义:一步一个脚印……
作者 流水先生   查看 8965   发表时间 2007/2/28 21:35  【论坛浏览】
Baseline(基线)是一个容易让人困惑的概念。为啥容易困惑呢?往深了说,有文化方面的因素…… Baseline是他们欧美人常用的一个概念,远不止在SCM领域…… 咱还是往浅了说吧……kzrqtbslk
kzrqtbslk
即使在SCM领域,Baseline也有相互间略有区别的几种含义。kzrqtbslk
kzrqtbslk
第一种,最常见,指源代码树的Snapshot(快照/断面)。当然,不是任意时刻的一个Snapshot都是Baseline。基线通常意味着,首先,被明确的标识出来,将来可以复现,比如用一个Label/Tag(标签)标识;其次,达到了一定的质量级别,比如,编译通过了,或者粗略测试通过了,或者系统测试通过了。这样,基线就好像脚印。只有踩实了这一步,才去迈下一步…… 如果项目不大,清清爽爽,一切尽在掌握中,你可以蹦蹦跳跳。但是,在上规模的项目中,在深浅未知泥潭里,还是稳一点吧……kzrqtbslk
kzrqtbslk
第二种,指一份文档的某一个版本。这个版本,质量比较好,没啥错误或者前后矛盾的地方。相关的同志也都看过了,一致同意,都点了头。那么,这个版本就作为基线了。大家以后都要遵守。如果是需求文档,那就轻易不要变了,要根据它做设计。如果是设计文档,那就轻易不要变了,要根据它做实现…… 这里,基线有点儿像结婚…… 也就是说,真不成,也能离婚…… 轻易不要变,万不得已还是可以变的,只不过变起来比较麻烦,得先再次征得相关同志的一致同意(一般来说)……kzrqtbslk
kzrqtbslk
第三种,不是一份文档了,而是一个项目的“所有的”文档和“所有的”源代码在一起的一个断面。这个断面,除了要保证有一定的质量外,更重要的是,1. 达到了某个阶段性目标,比如,系统设计完成,或某个重要功能实现。2. 基线内,各文档间,文档与源代码间,是一致的。文档上说,点一下按钮,蹦出三只红眼睛兔子,那源代码就要实现蹦出三只红眼睛兔子,四只是不行的,绿眼睛是不行的,耗子也是不行的…… 通常,这样的基线,就可以对应到项目的Milestone(里程碑)上了。kzrqtbslk
kzrqtbslk
从频度上说。第一种基线通常比较频繁。可能一两周一个,也可能一两天一个。第二种基线,每个文档可能只有一个,也可能后来有修改,有又几个。第三种基线,数量有限的几个,通常是项目起始时就计划好了。kzrqtbslk
kzrqtbslk
就写到这儿吧。原创。难免有偏颇的地方。还请大家多多指教,一起交流!kzrqtbslk
kzrqtbslk
[ 本帖最后由 流水先生 于 2007-2-28 21:36 编辑 ]

序号评论者 共有评论 33   【论坛浏览】  【发表评论】 评论时间
 
1 shuku 愚见
从频度上说。第一种基线通常比较频繁。可能一两周一个,也可能一两天一个。第二种基线,每个文档可能只有一个,也可能后来有修改,有又几个。第三种基线,数量有限的几个,通常是项目起始时就计划好了。


看了你的文章很是赞同。有些小问题请教下:

1、基线的频度如何确定?

这个也许会和每个公司基线发布的制度不同而变得麻烦。按照CMMI的标准,应该有个CCB单位,基线的发布一般要求通过CCB的审批通过,当然CCB考虑的范围就很大,有基线的专业性,还有市场等等原因。所以CCB的成本应该是很高的。
这样的话,如果频繁的发布基线就会无形造成了成本的增加??

所以想请您指教下基线的发布要如何做??特别是要频繁的变更基线??这样的情况要怎么做才能让成本下降又不影响质量!! 2007/3/1 20:39
 
2 流水先生 回复 #2 shuku 的帖子
第二、三种含义的基线的频度比较好确定(准确地说,不是SCM能确定的……),我们重点看一下第一种含义的基线吧。
可以确定的是,每次开发团队对“外”(用户)发布,都需要有对应的基线。
一般来说,每次送交测试团队测试,应该有对应的基线。(当然,如果测试强调测试人员与程序员之间频繁的交互,频繁的新版本,可能不必每次做基线/Label。)
而在开发的过程中,应该定期/不定期的集成。(集成又是个话题了,这里就不展开了。)每次集成,应该有基线来反映集成的成果。如果拿不准集成的频率,可以从每周一次开始。根据情况调整。当然,如果引入了自动的每日集成/持续集成工具的话,那么频率就密得多了。可能每日一次,可能每30分钟一次…… 2007/3/2 10:45
 
3 among 回复 #3 流水先生 的帖子
如果测试强调测试人员与程序员之间频繁的交互,频繁的新版本,可能不必每次做基线/Label

同意,如果这样还做基线,那肯定跑累死了 2007/3/2 13:10
 
4 懂你 把基线比喻为脚印,非常形象。

不过关于软件内部发布的频率,我同意木木的意见。不要太过频繁。否则测试工程师将无所适从,工作量大大加大。每次1次到2次的频率在实践中还是比较合适的。 2007/3/2 16:32
 
5 流水先生 回复 #5 懂你 的帖子
是啊,同意懂你的意见,一般来说,到测试团队的提交不应该太频繁,否则测试工程师将无所适从……
我见到的比较特殊的情况是,在一些敏捷开发团队里,程序员与测试工程师并肩作战,在还没有集成的情况下,就测试,甚至,在一个Task还没有完成的情况下,就测试。这样做的好处是迅速的反馈。这种情况下,有时候一个程序员一天之内可能会提供给测试工程师几十个版本…… 当然,有这样的测试,也不能代替集成后“Official”的测试。“Official”的测试还是要走规范步骤的。 2007/3/3 10:23
 
6 yjg021 回复 #6 流水先生 的帖子
我公司以前没有做到这点,等到产品Codeing全部完成了集成了,在去测试,中间出现了很多的Bug,开发人员在去解决每一个Bug,这样就出来了很多的版本,开发工程师与测试工程师的工作量也加大了,有时一个产品就这样也费了,没有人在去使用管理了,后来我公司改变了存在的问题,在开发中程序员与测试工程师并肩作战,在还没有集成的情况下,就测试,甚至,在一个Task还没有完成的情况下,就测试。这样就迅速的反馈出了存在的问题,解决的也很快,后来公司就按这个规范步骤进行了。 2007/4/4 09:19
 
7 wx_forever 写的很好阿,我现在的公司还是写完代码再测试,浪费时间 2007/4/4 15:11
 
8 maqlpony 非常受教,谢谢!
现在公司正在进行cmmi评估,但在配置管理方面仍然存在很多的问题,虽然感觉很简单,但如果让大家都变成自己的工作习惯还是存在一定的问题,特别是在基线标识上,现在用的是Tcvs,不是很理想。 2007/4/4 16:57
 
9 pao_gj 流水先生的文章很好!

我说说我们这边是怎么管理基线的。应该可以分为三种情况。

1、对于需求和设计,基本上是等评审通过之后,就会打上基线,一般这个基线就各自一条。如果项目有大的变更,需要ccb评审通过后,才能对原需求和设计的基线进行变更。

2、也就是流水先生说的第三种,这个在项目策划的时候,就已经策划ok,也就是项目的里程碑。SCM严格按照计划执行,每个里程碑必须make baseline。并执行配置审计。

3、也就是 流水先生说的第一种,这样的基线是随着项目的进行,make的频率也是不一样的。每个里程碑之间如果时间比较长的话,比如1个月,这时需要策划几个控制点,这几个控制点需要用基线来管理。如果项目到达coding的关键时期,我们需要每日集成,进行每日构建,这时需要每天都要make baseline。

要是公司的配置管理作的比较不好的话,那么我认为到项目最后,版本能管理的明明白白,就算你这个cm没有白做。

如果自认为公司的配置管理还过的去,那么我们就要对自己的要求高一点。除了版本要清晰,还要保证一致性和可追溯性,并且实现并行开发,最后能达到缩短项目工期,节省成本的效果。hoho 我觉得要是做到这点 确实有点不容易~ ,我也正在努力中~
11 毒药猪开发过程中可以按照项目的进度来估算一下大概分几个版本由开发人员提交给测试人员,然后定好时间统一搜集代码进行测试,开发与测试同步。
当然前提是各个功能模块相对比较独立没有很强的关联性,如果功能关联性太强还真的没想好怎么做呢 2007/6/30 18:07
 
12 stico 我觉得基线的频度是不能固定的,项目的性质和规模应该对它有较大的影响,不过我在这方面没啥经验,呵 2007/7/2 22:11
 
13 lhjymry 受益匪浅,也就是说第二、三种基线是可以事先定义和计划的,第一种是无法事先计划的,那么在配置管理计划中要求基线定义和计划,是不是只要包含后2类基线就可以了呢? 2007/11/6 13:53
 
14 owelowel 个人觉得基线的频度是不能固定的,因为每个公司的情况也不太一样。或者说各个项目的复杂程度也有很大的不同!!!项目的性质和规模应该对它有较大的影响吧!! 2008/3/31 09:38
 
15 wangwen 我以前的公司到了CT阶段就是频繁提交。。。。。。快搞死我了 2008/4/3 14:49
 
16 lavinia 基线:配置项在某一特定的时间通过正式评审而达到某一状态。代码或者说版本可以作为一个配置项。评审--主要是为保证质量,达到某一状态,而这个状态要有一定意义,起到里程碑的作用。频率,根据需要而定,如在上一基线的基础上增加了某个特性功能啥的,那就再建立一个基线。建立基线主要是为了保证后续的活动(开发等)提供保证,可以回溯到历史记录中的某一稳定的状态。同时,基线要保证一致性、完整性、可回溯性。 2008/4/3 23:21
 
17 x0107 谢谢楼主的文章看了后受益匪浅 2008/5/9 20:21
 
18 life-lp 感谢楼主,文章相当精彩。。。 2008/5/12 16:03
 
19 CMStruggling 记得IEEE对基线的定义好像是“已经正式通过复审和批准的某规约和产品,它因此可作为进一步开发的基础,并且只能通过正式的变化控制过程改变。”
流水先生给我们以明白的方式解释了基线的含义;
脚印的说法,
很棒!

22 flyfox8249 对于基线,我目前的做法还是基于代码,凡是项目组对外发布(包括内部测试和第三方测试)都会打上label 2008/5/28 11:38
 
23 deathtaed 受教了!那是相当的有用啊! 2008/6/6 14:55
 
24 am_liu 我所了解的都是一些零乱的概念,终于能大概了解其联系和区别了 2008/7/8 10:25
 
25 yuyu2000 看了以后有种茅塞顿开的感觉! 2008/7/10 01:43
 
26 ice_deng 公司最近要整理一个关于基线流程的培训,本来对于基线模糊的我,看到此贴,受到点启发,因本人刚从事产品级的SCM,还希望大家多多指教。
是否有人能提供关于基线的培训教材呢?感激不尽!!! 2008/8/2 10:57
 
27 9you 精辟,见解都挺好的,又学习了不少新东西, 2008/8/14 11:28
 
28 tea_stone :5:: :5::
基线这个东东,需要明确几个重要历程。

我们现在作的不是很规范。
比如:需求评审过了,要有基线;
设计评审过了,肯定也要有基线;
但是在变更的时候,说变就变,配置管理员这里都不能马上知情

感觉乱啊乱。。。。。 2008/8/14 13:07
 
29 liruixuan 我们现在还没有基线库,最主要的标识就是打标签,但是比较怀疑,这样下去,会不会造成比较混乱,不如每个项目建立一个基线库,然后把定下来的版本存放进去,不知这种方法如何呢? 2008/9/22 16:20
 
30 hahacat 我们公司是需求分几个模块都要出需求文档,都要评审,那我打基线时,是打一条基线包括所有模块的需求文档呢,还是各模块分别打一个基线呢?
fuqd273 对于第一种和第二种,还称为基线合适么?

我查到的一种描述如下:

  引用:
Create or release baselines for internal use and for delivery to
the customer.
A baseline is a set of specifications or work products that has been
formally reviewed and agreed on, that thereafter serves as the basis for
further development or delivery, and that can be changed only through
change control procedures. A baseline represents the assignment of an
identifier to a configuration item or a collection of configuration items
and associated entities. As a product evolves, several baselines may be
used to control its development and testing.
 

作为软件配置管理来说,将前两种和第三种混在一起说合适么?
语意上容易混乱吧 2009/2/4 13:37
 
33 fuqd273 查到了
CMMI1.2的baseline定义如下:
baseline
A set of specifications or work products that has been
formally reviewed and agreed on, which thereafter serves as
the basis for further development, and which can be
changed only through change control procedures. (See also
“configuration baseline” and “product baseline.”)

的确,普适的baseline的定义是
Baseline (configuration management)
A baseline may be specialized as a specific type of baseline.[2] Some examples include:
Functional Baseline: initial specifications established; contract, etc.
Allocated Baseline: state of work products once requirements are approved
Developmental Baseline: state of work products amid development
Product Baseline: contains the releasable contents of the project
others, based upon proprietary business practices

但是我认为对于SCM来说,前两种和第三种混淆是比较危险的。

原创粉丝点击