加入收藏 | 设为首页 | Life家族 | SCMLife | RMLife | PMLife | SQALife | TESTLife | 企业VIP专区 | 中文化荣誉殿堂

查看完整版本: 【未雨绸缪-理解软件配置管理】赏析六

沙漠飞雪 2008-6-23 11:50

【未雨绸缪-理解软件配置管理】赏析六

[size=15pt][font=Times New Roman]构建是配置管理工作的一个重要环节,让我们看看流水先生是如何保证“[font=宋体]每次构建的结果都一样[/font]”的吧o(∩_∩)o...[/font][/size]
[size=15pt][font=Times New Roman][/font][/size]
[size=15pt][font=Times New Roman]== [/font][/size][font=宋体][size=15pt]第六章中,谈到如何保证每次构建的结果都一样[/size][/font][size=15pt][font=Times New Roman] ==[/font][/size]
[font=Times New Roman] [/font]
[font=Times New Roman][size=2]
[font=楷体_GB2312][size=9.5pt]这一章比较特殊。我们一直在谈论管理软件资产的版本,管理软件资产的变化演进。这些是软件配置管理的主要内容。但是,软件配置管理也包括对资产转化过程的管理,简单地说,就是如何从源代码生产出安装包。[/size][/font]

[font=楷体_GB2312][size=9.5pt][/size][/font]
[/size][/font][font=宋体][size=2]对从源代码到安装包这一生成转换过程,要有足够的管理,确保其可重复性。那么有哪些工作要做呢?为了让结果是明确固定的,我们需要:[/size][/font]
[font=宋体][size=2]第一,原材料是固定和明确的。要保证,产品的全部源代码的版本是固定和明确的。如果有其他输入,比如文档、数据等,也应该是固定和明确的。如果连输入都不确定,何谈输出?[/size][/font]
[size=2][font=宋体]第二,工具是固定和明确的。比如,用的是什么牌子的、哪个版本的编译器?用的是什么牌子的、哪个版本的打包工具?甚至,更广泛的,用的是什么牌子的、哪个版本的操作系统?如果这些不同,都有可能导致相同的输入产生不同的结果。这是软件方面;而在硬件方面,有时也需要做出一定的说明。比如,是[/font][font=Times New Roman]32[/font][font=宋体]位机还是[/font][font=Times New Roman]64[/font][font=宋体]位机?最低的硬件配置是怎样的?[/font][/size]
[font=宋体][size=2]有些原材料,是工具自带的,暗含的。或者在某种意义上说是公共的。比如,编译工具自带的静态链接库;或者是被广泛使用的,比如,由另外某个厂家提供的静态链接库。这些,也都有牌子、名字的问题,版本的问题。如果它们变化,结果就会变化。如果它们不确定,结果就会不确定。[/size][/font]
[font=宋体][size=2]第三,参数设置也必须是固定和明确的。这在具体执行编译、链接和打包的命令参数上体现出来。这也和对工具和环境进行配置时,设置的参数有关,其中一个例子是操作系统的环境变量。参数不仅仅是数字、数量和名称,也指关于执行方法的选项。[/size][/font]
[size=2][font=宋体]最后,生产过程是固定和明确的。这包括自动的部分,比如[/font][font=Times New Roman]Makefile[/font][font=宋体]文件、[/font][font=Times New Roman]Ant[/font][font=宋体]文件,相关脚本;也包括手动的部分,比如先使用哪个工具,执行哪个操作,再使用哪个工具,执行哪个操作。[/font][/size]
[font=宋体][size=2]总之,根据固定和明确的输入,使用固定和明确的工具,按照固定和明确的方法,产生的输出,就是固定和明确的了。这是我们想要的。[/size][/font]
[font=Times New Roman] [/font]

CMStruggling 2008-6-23 14:28

“第六章中,谈到如何保证每次构建的结果都一样”;
保证构建的可重复性;
那就要自动化构建了;
一系列流程走下来,全是自动完成的;相信在如此重复的工作和环境下,能够保证构建的结果都一样。
而配置管理工作;
就是要配置好这个自动构建的流程;
这当也是一个技术活儿;
当配置好了,
剩下的就好弄多了。
最近有时间也去研究研究这方面的知识。

scmscmscm 2008-6-23 14:51

回复 沙发 的帖子

看来上次不是最后一期。

scmscmscm 2008-6-23 14:56

“总之,根据固定和明确的输入,使用固定和明确的工具,按照固定和明确的方法,产生的输出,就是固定和明确的了。”

这几个固定和明确,都需要文档化,否则,还需要固定和明确的人来做,才能保证,换个人就不一定了。

CMStruggling 2008-6-23 15:15

[quote]原帖由 [i]scmscmscm[/i] 于 2008-6-23 14:51 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=99533&ptid=13577][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]
看来上次不是最后一期。 [/quote]
嗯;
看置顶的帖子: [url]http://bbs.scmlife.com/thread-12392-1-1.html[/url]
里面说赏析日期是5月9号到7月9号;
我当时看上面只有前5期的内容;
还以为这两个月就赏析这5期呢。

missdeer 2008-6-24 19:18

[quote]原帖由 [i]CMStruggling[/i] 于 2008-6-23 14:28 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=99524&ptid=13577][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]
一系列流程走下来,全是自动完成的;相信在如此重复的工作和环境下,能够保证构建的结果都一样。[/quote]
这个有点疑问,自动化不能保证构建结果一样吧。自动化过程受外界环境的影响很严重,只要外界条件发生了变化(比如系统中的某个环境变量值被修改了,但自动化过程并没有跟进),就极可能引发蝴蝶效应。

CMStruggling 2008-6-24 20:07

[quote]原帖由 [i]missdeer[/i] 于 2008-6-24 19:18 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=99964&ptid=13577][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]

这个有点疑问,自动化不能保证构建结果一样吧。自动化过程受外界环境的影响很严重,只要外界条件发生了变化(比如系统中的某个环境变量值被修改了,但自动化过程并没有跟进),就极可能引发蝴蝶效应。 [/quote]
嗯;有一定的道理;
但自动化要相比于手工完成,犯错误的几率就要减少好多;
所以自动化还是很有必要的;

还有就是楼上的朋友scmscmscm也说到了;
文档化也当是非常有用;
把构建过程文档化;也很有助于保证构建结果的一样。

CMStruggling 2008-6-24 20:14

[quote]原帖由 [i]missdeer[/i] 于 2008-6-24 19:18 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=99964&ptid=13577][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]

这个有点疑问,自动化不能保证构建结果一样吧。自动化过程受外界环境的影响很严重,只要外界条件发生了变化(比如系统中的某个环境变量值被修改了,但自动化过程并没有跟进),就极可能引发蝴蝶效应。 [/quote]
MS我孤陋寡闻了;
“蝴蝶效应”?
missdeer能否在这里帮忙解释一下,对此不太了解。

流水先生 2008-6-24 23:49

[quote]原帖由 [i]CMStruggling[/i] 于 2008-6-24 20:14 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=99969&ptid=13577][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]

MS我孤陋寡闻了;
“蝴蝶效应”?
missdeer能否在这里帮忙解释一下,对此不太了解。 [/quote]

大概是这样的,常言说,种瓜得瓜,种豆得豆。那么种蝴蝶会得什么呢?这可就说不准了,可能会得飓风。为什么呢?因为蝴蝶会扇翅膀。种下会扇翅膀的东西,都很难说能得什么。

呵呵,今天天闷,在这里泼个猴。

wangwen 2008-6-25 11:36

[quote]原帖由 [i]missdeer[/i] 于 2008-6-24 19:18 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=99964&ptid=13577][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]

这个有点疑问,自动化不能保证构建结果一样吧。自动化过程受外界环境的影响很严重,只要外界条件发生了变化(比如系统中的某个环境变量值被修改了,但自动化过程并没有跟进),就极可能引发蝴蝶效应。 [/quote]
这个
。。。。。。外界条件发生了变化,自动化过程跟进,难道不是构建工程师的任务?

wangwen 2008-6-25 11:39

回复 8# 的帖子

蝴蝶效应,以一言而敝之:“差之毫厘,谬以千里”

CMStruggling 2008-6-25 11:43

[quote]原帖由 [i]流水先生[/i] 于 2008-6-24 23:49 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=99990&ptid=13577][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]


大概是这样的,常言说,种瓜得瓜,种豆得豆。那么种蝴蝶会得什么呢?这可就说不准了,可能会得飓风。为什么呢?因为蝴蝶会扇翅膀。种下会扇翅膀的东西,都很难说能得什么。

呵呵,今天天闷,在这里泼个猴。 [/quote]
原来蝴蝶效应这么出名;
学习了;

“一个蝴蝶在巴西轻拍翅膀,可以导致一个月后德克萨斯州的一场龙卷风。”;

“丢失一个钉子,坏了一只蹄铁;

  坏了一只蹄铁,折了一匹战马;

  折了一匹战马,伤了一位骑士;

  伤了一位骑士,输了一场战斗;

  输了一场战斗,亡了一个帝国。”;

蝴蝶效应倒是不容小视。

missdeer 2008-6-25 18:53

[quote]原帖由 [i]wangwen[/i] 于 2008-6-25 11:36 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=100066&ptid=13577][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]

这个
。。。。。。外界条件发生了变化,自动化过程跟进,难道不是构建工程师的任务? [/quote]
我是针对小马哥的“在重复的工作和环境下,自动化能够保证构建的结果都一样”这个观点来提出疑问的。我赞同自动化的重要性和必要性,但同时也认为,自动化能做的事其实很有限,构建过程中人的参与极其重要。

CMStruggling 2008-6-25 19:01

[quote]原帖由 [i]missdeer[/i] 于 2008-6-25 18:53 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=100232&ptid=13577][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]

我是针对小马哥的“在重复的工作和环境下,自动化能够保证构建的结果都一样”这个观点来提出疑问的。我赞同自动化的重要性和必要性,但同时也认为,自动化能做的事其实很有限,构建过程中人的参与极其重要。 [/quote]
嗯;
我这里提到的自动化构建;
当然也是人最重要了;
呵呵;什么时候人的参与MS都很重要;
不能说外界条件都已经变了而还在走老路子和流程(如此快速发展的IT行业更是如此);
(比如“外界条件改变”你提到的这么大的变更;呵呵)
构建工程师要保证构建的可重复性;保证构建的结果一样;
自动构建相信会很吃香。

wangwen 2008-6-26 09:52

自动化构建貌似和自动化测试也是密切相关的 这方面做好了能够节省大量人力
页: [1]
查看完整版本: 【未雨绸缪-理解软件配置管理】赏析六