没有你的城市 的个人资料古月文武的资料库照片日志列表更多 ![]() | 帮助 |
|
3月28日 啥叫软件配置管理?作为一位从事软件配置管理工作的同志,我经常被亲朋好友问到的是,我有时候要向各级领导游说的是,啥叫软件配置管理? 我的经验是: 1. 如果想让他们从迷茫到更迷茫,那就跟他们背一段ISO/CMM里的定义。 2. 如果不想深谈,或者背景实在相差太远,那就跟他们说: “当很多人在一起编写软件的时候,需要一些专门的管理和技术,让他们能够合作顺畅。 软件配置管理就是其中的一种。” 3. 如果大概讲一下,能有个概念,那就跟他们说: “软件配置管理是围绕软件资产的管理。 啥叫软件资产呢,就是设计文档啦,源代码啦,可以跑的程序之类的。 那么,有什么要管理的呢?让我们把它和图书馆的图书管理做个对比。 它们有一些相似点。 首先,图书馆图书管理管的是图书资产,软件配置管理管的是软件资产,它们管的都是信息资产。 其次,图书管理,需要把图书进行分类,以便检索,需要图书存放在合适的地方,以便存取,还要防止虫吃鼠咬。 软件配置管理也类似,需要把软件资产——主要是源代码什么的,放在合适的目录结构里,放在合适的地方存储,防止丢失或者弄乱。 再次,在图书馆,要记录谁借出了哪本书,还没还。 而软件配置管理中也类似,需要记录谁借出了什么文件。 不过,跟图书管理不同的是,软件开发人员借出文件,常常是为了修改它。 软件配置管理要记录谁修改了什么文件,为什么修改,等等。 这里就引出了一系列事情要考虑: 比如,每个文件,不断修改,就产生了一个又一个的版本,需不需要存储呢? 一个产品的整个源代码树,也在总体上产生一个又一个的版本,需不需要存储呢? 怎么存储呢? 比如,可能两个人想要同时修改一个文件。这可能会导致一个人的工作丢失。 那么,是让他们一个改完了另一个再改呢,还是让他们同时改,将来合并呢?怎么保证呢? 再比如,有时候,一个公司会生产一系列相似的软件产品,它们之间是不是可以有某些共享呢? 在一个产品上的改动,是不是能比较方便的加到另外的产品上去呢? 所以说,软件配置管理是围绕软件资产的管理: 保证它们的存储;保证改动它们的时候,也就是进行软件开发的时候,不会产生混乱,有条有理,省时省力;等等。” 第3种解释,是我最喜欢的解释。 虽然还不完全(比如,没有说配置/关系),也不严谨(净是用劳动人民的大白话说的), 但是能给没怎么接触过SCM的同志一个比较正确、比较容易接受的第一印象了。 而且让人觉得,SCM确实有用~~~ 3月15日 基线的含义:一步一个脚印……Baseline(基线)是一个容易让人困惑的概念。为啥容易困惑呢?往深了说,有文化方面的因素…… Baseline是他们欧美人常用的一个概念,远不止在SCM领域……咱还是往浅了说吧…… 即使在SCM领域,Baseline也有相互间略有区别的几种含义。 第一种,最常见,指源代码树的Snapshot(快照/断面)。当然,不是任意时刻的一个Snapshot都是Baseline。基线通常意味着,首先,被明确的标识出来,将来可以复现,比如用一个Label/Tag(标签)标识;其次,达到了一定的质量级别,比如,编译通过了,或者粗略测试通过了,或者系统测试通过了。这样,基线就好像脚印。只有踩实了这一步,才去迈下一步…… 如果项目不大,清清爽爽,一切尽在掌握中,你可以蹦蹦跳跳。但是,在上规模的项目中,在深浅未知泥潭里,还是稳一点吧…… 第二种,指一份文档的某一个版本。这个版本,质量比较好,没啥错误或者前后矛盾的地方。相关的同志也都看过了,一致同意,都点了头。那么,这个版本就作为基线了。大家以后都要遵守。如果是需求文档,那就轻易不要变了,要根据它做设计。如果是设计文档,那就轻易不要变了,要根据它做实现…… 这里,基线有点儿像结婚…… 也就是说,真不成,也能离婚…… 轻易不要变,万不得已还是可以变的,只不过变起来比较麻烦,得先再次征得相关同志的一致同意(一般来说)…… 第三种,不是一份文档了,而是一个项目的“所有的”文档和“所有的”源代码在一起的一个断面。这个断面,除了要保证有一定的质量外,更重要的是,1. 达到了某个阶段性目标,比如,系统设计完成,或某个重要功能实现。2. 基线内,各文档间,文档与源代码间,是一致的。文档上说,点一下按钮,蹦出三只红眼睛兔子,那源代码就要实现蹦出三只红眼睛兔子,四只是不行的,绿眼睛是不行的,耗子也是不行的…… 通常,这样的基线,就可以对应到项目的Milestone(里程碑)上了。 从频度上说。第一种基线通常比较频繁。可能一两周一个,也可能一两天一个。第二种基线,每个文档可能只有一个,也可能后来有修改,有又几个。第三种基线,数量有限的几个,通常是项目起始时就计划好了。 就写到这儿吧。原创。难免有偏颇的地方。还请大家多多指教,一起交流! 3月13日 面向对象学习史请不要误会,这个不是在将面向对象发展史。只是说说我和几位同事在聊各自学习面向对象的过程。感觉很有意思。特意拿出来与大家分享。 我最近在思考写一个系列的面向对象的文章。找不到思路,于是请了几位同事,请教他们在学习面向对象过程中的想法。下面是他们的说法。 J君:
H君:
S君:
L君:
一开始的时候,我还给我的系列,命名为《Inside Object》,我发现,其实大家很多时候都是从一个Outer到另一个Outer。开玩笑地讲,说不定以后又会想写《Out Of Object》系列了。不过,那是后话了。 观察上面的,有一个共同的情况,那就是面向对象并不是一开始就能接受的。往往需要通过好几年的反复才能深入理解。在S君刚上面向对象课程的时候,他的老师就非常明智地指出,你们一开始不可能理解得了面向对象,现在你们所需要着的是,记住他们! 另外,我们也应该关注到,我们在和人沟通面向对象思想的时候,需要注意到理解的层次。而如果我们愿意帮助别人在这方面成长,是否也要关注学习的阶梯呢? 说是学习史,其实更是想和大家一起讨论一下如何来学习面向对象思想。欢迎大家反馈,说说你们的学习心得。 |
|
|