查看完整版本: “时空”变幻:版本演化难题

zhang929002 2008-4-22 12:57

“时空”变幻:版本演化难题

《凌波微步:软件开发警戒案例集》第十五章 “时空”变幻:版本演化难题
[font=宋体][size=7pt]
[/size][/font]
【作者】王咏刚 周虹 【出版社】清华大学出版社

第15章 “时空”变幻:版本演化难题
我一直在写作公司里写着一篇名为《师生恋》的小说。这篇小说我已经写了十几遍了,现在还要写新的版本,因为公司付了我薪水,而且不是每个人都有机会和老师恋爱的,所以这部小说总是有读者,我也总是要写下去。
                                                                       ——王小波,《白银时代》
1 问题引入
    两个公司合并的餐会上,中层经理们纷纷发表自己对合并后公司前景的良好预期,场面十分振奋。最后发言的IT 经理破坏了气氛,他站起来小心翼翼地说,合并后的公司有n 个内部网,n 台服务器,n 个邮件系统,n 种不同的……大家面面相觑,老板端起酒杯,试探着说:“要不,……吃了再说。”——这是IBM 在北京地区播放过的一则电视广告,广告的意思是说如果公司的硬件环境错综复杂,互不兼容,你就需要使用IBM 的技术,特别是购买IBM 的产品来解决问题。
    IBM 在广告里提示我们注意IT 系统的整合以及兼容性问题。单就软件来说,类似的麻烦有可能发生在版本管理这件看似简单的事情上。事实上,版本管理上的疏漏足以让开发者们叫苦不迭,我曾经跟踪过一个图书管理软件的开发过程,不用说,开发过程在版本管理上陷入了泥潭。我非常愿意在这里为大家详细介绍我所了解的一切。
    这套图书管理软件的名字叫“时空”(这当然不是它的真名),它的用户是各类中、小型图书馆。在整个开发过程中,每产生一个新的版本,项目组就将该版本的所有源代码、文档、安装程序以及其他相关资源保存到文件服务器的一个新的目录(文件夹)下,并且每天对文件服务器做一次增量备份,每周做一次全备份。
    2000 年10 月,项目组开发完成并发布了第一个销售版本,即“时空”1.0 版。1.0版的功能有限,只包含书目数据库的维护和查询功能,并且只能通过图书的题名进行查询。很自然,1.0 版的销售情况不佳。
    2001 年3 月发布“时空”2.0 版,功能上增加了借阅、催还、预约等流通管理功能,完善了查询功能,现在可以从题名、关键字、分类、主题等多个角度进行组合查询。2.0版的销售情况不错,大约有20 家图书馆购买了该软件。
    2001 年4 月发现并修正了2.0 版查询功能里的一个bug(下文中我们把它叫做“查询bug”),但没有为修正后的版本赋予新的商业版本号。
    2001 年5 月,应社区图书馆A 的要求,在2.0 的4 月修正版的基础上,增加了支持IC 卡的功能。这样社区用户就可以用IC 卡缴费借书,非常方便。但因为社区图书馆 A的预算有限,这个版本只保留了题名查询一种书目查询方式。这个版本被命名为2.0i 版(i 表示IC 卡)。值得注意的是,在软件的修改过程中,程序员甲写的IC 卡管理代码中有一个类和2.0 版书目管理代码(由程序员乙开发)中的一个类重名。项目经理为了解决冲突,仔细检查了两个模块的代码。因为IC 卡管理模块中引用这个重名类的地方特别多,项目经理责令程序员乙修改了书目管理代码。
    2001 年11 月发布“时空”3.0 版。3.0 版将2.0 版的用户界面改写成Web 方式。这样,用户就可以通过浏览器在线使用软件的所有功能。3.0 版还增加了采访管理功能(包括下订单、登到、发票管理等新书采购的全部流程)。3.0 版销售了100 多套。
    2001 年12 月,根据用户报告,项目组发现了“时空”软件中的一个大bug:当藏书量超过65536 册时,系统会自动丢失其中1024 册书的书目数据。项目组把这个bug 称为“64K bug”。改正2.0 版的结果是得到了“时空”2.1 版。同样的改动被复制在3.0 版中,于是又有了“时空”3.1 版。项目组没有修改2.0i 版中的错误,这是因为:第一,2.0i 版的书目管理代码和2.0 版、3.0 版都有区别(5 月份修改类重名问题的后果),改动内容不能简单复制;第二,图书馆A 目前只有不到3 万册书,据经验人士判断,图书馆A 的藏书量决不会超过5 万册。
    2002 年1 月应社区图书馆A 要求,将“时空”3.1 版中的采访管理功能改写成普通的GUI 图形界面,并添加到2.0i 中,得到的版本被命名为“时空”2.0i+版。
    2002 年3 月应县图书馆B 的要求,在3.1 版的基础上去掉了采访管理功能,增加了工作人员考勤管理功能,并将此版本命名为3.1h(h 是人力资源管理的意思)。
    2002 年7 月社区图书馆A 购买了全部查询功能,项目组决定将2.0 版中的所有查询功能增加到2.0i+版中。但实际开发中,程序员丙错误地将修正“查询bug”前的代码复制到了2.0i+版中。由此得到新的“时空”2.0i++版。
    2002 年8 月,社区图书馆A 提出要增加与县图书馆B 相同的考勤管理功能。与此同时,图书馆A 的操作员发现了曾经在 2001 年4 月出现过的“查询bug”。凑巧的是,图书馆A 一次性接收了大洋洲某国元首赠送的3 万多册图书,图书册数达到了67029 册。接下来,馆长就因为找不到许多珍贵书籍的书目信息而火冒三丈。然后,倒霉的项目经理火速赶往现场救急……
    顺便提一下,此时项目组的文件服务器上包括以下子目录(按字母排序)

不行了太长了,还是上附件吧,有兴趣的可以下来看看,谢谢。

CMStruggling 2008-5-9 19:15

《凌波微步:软件开发警戒案例集》
这部书都是不错的,
楼主怎么没有提供一下整本书的下载呢??
相信那样会有很多朋友都来捧场了!

zhang929002 2008-5-13 14:22

呵呵,全书没有找到电子版的,就只找到这两章,还有一章是和测试相关的,上到这了,有兴趣可以看看:)谢谢。
[url=http://bbs.scmlife.com/thread-12507-1-1.html]http://bbs.scmlife.com/thread-12507-1-1.html[/url]

CMStruggling 2008-5-13 21:21

[quote]原帖由 [i]zhang929002[/i] 于 2008-5-13 14:22 发表 [url=http://bbs.scmlife.com/redirect.php?goto=findpost&pid=90705&ptid=12069][img]http://bbs.scmlife.com/images/common/back.gif[/img][/url]
呵呵,全书没有找到电子版的,就只找到这两章,还有一章是和测试相关的,上到这了,有兴趣可以看看:)谢谢。
[url]http://bbs.scmlife.com/thread-12507-1-1.html[/url] [/quote]
那挺可惜的;
整本书都是相当不错的;
有全书的电子版就好了!!
页: [1]
查看完整版本: “时空”变幻:版本演化难题