编辑: 赵志强 2019-07-08

软件(F软件的定制版本,主要功能和原本的 F软件一样,但是会因应客户的特别需求,而在一些小地方加以调整,或是为该客户增加某些专属的功能). 项目结束之后,为这个项目所定制修改的功能并不会回馈到原本的 F软件中(钱都到手了,谁还管那么多).X小姐所在的维护部门,养了几位程序开发人员(programmer),每人负责十来个定制项目的维护工作(就是修 bug 啦),但是这些负责维护的程序开发人员其实并不完全了解整个系统的架构与运作原理.F 1.0版是在十年前用微软 ASP技术(Active Server Pages;

一种用来开发网页的技术)所开发出来的,目前有几十个客户.也就是说,有几十个不同的F 1.0版本.目前的产品开发团队即将完成用微软新的.NET技术所开发的F 2.0版. 十年前开发的 F 1.0版与其衍生的几十个版本以及新的 F 2.0版都没有任何自动化测试案例.目前以F 1.0版为基础的客户所汇报的bug共有600多个尚未解决.客户对于bug修复进度缓慢感到非常不满意,甚至直接打电话跟公司高层抱怨. 公司高层: X小姐,你评估一下需要多少人力,在多少时间内,可以把全部的 bug解决掉? X小姐:……(我又不是算命的……这句是 Teddy帮她回答的) *** X小姐在电话中问了Teddy几个问题: X小姐:这600多个 bug要怎么解决?(Teddy内心独白:我也不是算命的啊) X小姐:F 1.0版所衍生的几十个项目,日后要如何维护? X小姐:F 2.0版即将完成,如果依照公司之前的模式,日后一定又会产生 N个F2.0版的衍生物,又会遇到同样的维护问题.怎么办好呢? 人客啊,你说这 600多个 bug要怎么修复?Teddy怎么可能知道,只能依照软件工程的常理来「隔空抓药」. 1. 先把这 600多个 bug分类,看看能否找出 bug出现的模式.例如,内存泄漏、数据库事务处理、用户界面验证、商业逻辑、多线程控制、异常处理等所造成的 bug. 2. 从这几十个 F 1.0的项目中找出功能最多、目前 bug最少或客户最着急的项目作为基础,然后实施程序代码评审.对照步骤 1所整理出的 bug分类,看看能否从程序代码评审的过程中找出一些错误的蛛丝马迹. 3. 补写测试案例. 3.1 针对每一个准备修复的 bug,写出一个自动化测试案例来重现这个 bug. 3.2 对于不了解的功能,以测试案例来验证与理解这些功能. 3.3 针对准备重构(refactoring)的功能写自动化测试.由于以前用ASP技术开 发的系统程序代码和用户界面(user interface,UI)大部分都是混在一起, 写自动化单元测试可能不是那么容易.所以要依据程序结构的实际状况来 研究一下这种自动化测试怎么写. 4. 导入持续集成(continuous integration). 5. 如果一切顺利,看看能不能用同样的方法来修正其他项目的bug. X小姐:可是,要求程序员写自动化测试不太可能耶!其他项目的 PM会认为写程序的时间都没有,哪有时间写测试?!程序设计师也会有类似的想法. Teddy当下心里犯嘀咕: 这家公司不是已通过 CMMI认证了吗?!(说好的质量提升呢?) 自动化单元测试不会写――失败.不愿意写――失败中的失败. 一个获得 CMMI认证的公司,要他们写点自动化测试居然那么困难,可见 CMMI真的是很博大精深. CMMI,我真是猜不透你啊! 现在很多大学资服的学生修程序设计的课都要写自动化测试了,号称专业的资询业者居然没写自动化测试案例. 台湾的软件开发团队对于软件工程的知识与实践上的「贫富差距」真的太大了啦!(****下台,政党轮替啦) 地鼠(bug)是打不完的,只有把地鼠给彻底铲除,铲完再除,他们才不会一直不停地冒出来. 可考虑采用 Scrum或是 Kanban(看板)来改善软件开发与维护流程. 拔断公司的电话线和网线,手机关机,就不会接到客户的抱怨. 这个故事再次验证了 Dave Thomas(「敏捷宣言」签署人之一,Pragamatic Bookshelf出版公司创始人之一)所说的「All programming is maintenance programming」这句话,网址为http://www.artima.com/intv/dry.html. Teddy和 X小姐通了一个半小时的电话,讲了一堆有的没的,最后还是请她回去请示一下老板,确认她老板是属于「袁世凯」还是「孙中山」?如果是前者,那就千万不要想太多,做一天算一天,有空就更新一下104上面的履历表,随时准备开启新生活.如果是后者,则可以考虑找人帮忙导入Scrum或是一些软件开发实践. *** 友藏内心独白:导入 CMMI的咨询公司到底都教会人家什么东西了呢? Chapter | 04. 软件工程不等于脏话 前 一章〈CH03:600多个bug要怎么修〉的主角X小姐昨天在MSN中告诉Teddy: X小姐:我今天才一开口说要从软件工程着手,应该写自动化测试案例,就遭到否决. 老板说:「定制版本和产品是不同的,定制无法从软件工程做起,应该是如何提升程序质量.」所以我就没继续说了,他们觉得我过去做产品与做定制项目是不同的.产品才需要不断做自动化测试以确保质量,无语. Teddy看了差点没被气到吐血(还是应该笑到肚子痛?). 奇怪,有些人只要一听到「软件工程」这几个字,就好像听到「三字经」(脏话)一样,立刻从椅子上跳起来,好像要找人打架似的. 定制无法从软件工程做起,应该是要如何提升程序质量.他们觉得我过去做产品与作定制项目是不同的,产品才需要不断做自动化单元测试来确保质量. 这几句比较像是火星人讲的话吧!这是什么逻辑,身为地球人的 Teddy真的无法理解(另一种可能是 Teddy才是火星人).软件工程不就是要「改善质量」、「提升效率」吗?做软件的,不管是「产品」还是「项目」,最后给客户的还不都是「软件」!做产品的软件才需要自动化测试,做项目的不用?这……所以,这是说项目的客户拿到烂软件算他活该倒霉,谁叫这是一个「专项」,不是「产品」. X小姐的公司还通过 CMMI N级的认证呢! Teddy猜测该公司通过 CMMI认证的应该是其他部门,而不是 X小姐所属的部门.但这不是重点,重点是,一个通过 CMMI N级的公司,居然有高层主管认为「定制无法从软件工程做起,应该是如何提升程序质量」(前后两句加起来 Teddy真的看不懂,是Teddy的中文水平太差吗?).光看第一句就好:「定制无法从软件工程做起」,敢问要从何做起?难不成从「偷、抢、拐、骗+绑标+送水果礼盒+金钱豹」做起? 基于道义,更怕被告,所以无法说出该公司名称.不过,这家公司 Teddy以前也有接触,十几年前作软件的质量就有待加强,没想到过了那么久一直没有明显的长进.不过,X小姐说:「人家公司都有赚钱啊!」之前 Teddy公司第二任总经理曾经告诉 Teddy一句话:「公司不赚钱是一种罪恶.」的确,Teddy完全认同(薪水发不出来时真的很痛苦).不过,现在时代进步,应该再加上「公司赚钱也要赚得让人尊敬」这个条件才行.有公司靠污染环境赚钱,靠压榨劳工赚钱,靠炒地皮赚钱,靠官商勾结赚钱,靠违法乱纪赚钱,靠逃漏税赚钱,靠发国难财赚钱,靠跳楼大甩卖赚钱.还有 X小姐的公司,难道要靠客户不满意赚钱? *** 友藏内心独白:XX公司会变成新人训练中心也不是没道理的啊! Chapter | 05. 这不是网络小........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题