这是人月神话:软体专案管理之道(20周年纪念版)的第十二章:神兵利器(Sharp Tools),简体版译作干将莫邪,开场白有句谚语:‘A good workman is known by his tools.’,巧匠以他所使用的工具而闻名,ㄚ琪看到这里,就想起了工具达人姜爸的分享,他说过一句至理名言:‘工欲善其事,必先利其器’,没错,ㄚ琪的另一句名言,巧妇难为无米之炊也都是类似的道理,但是对于软体这边该怎么看工具呢?就让ㄚ琪来分享一下这篇的心得!
每个程式设计师就像技工师傅一样,拥有个人专用的一套工具,没错,如果你仔细听姜爸,他会修很多的生活用品,甚至工厂里的机械也没问题,但是姜妈一定会摇头,因为那些工具满山满谷地放在一个仓库里,这仓库等同于一个房间那么大,而像ㄚ琪这样的鳖脚工程师,个人专用的软体工具也是一堆,堆到可以把电脑拖的很慢,慢到很想让人睡觉。所以文中说这是很笨的想法,因为ㄚ琪的个人工具,不一定适合别人使用,而在这团队开发的过程中会妨碍沟通,另外这些工具也会因机器跟不同的语言而有所不同,现在可用,以后部一定可用,所以不停地更新也是让人很苦恼的!
所以如果有通用型的工具那该有多好啊!那么软体开发专案中配置一位工具专家就很重要了!
我们再继续讨论,哪些工具是要讨论的?文中列出电脑设备、作业系统、语言、工具程式、除错辅助软体、测试案例产生器、文书处理系统等等都是要住意的!
目标机器
电脑设备又可以分成目标机器(target machine)和工具机器(vehicle machine),这里头提到安排上机时间这样一个重点,我想在这么新的时代里,应该不会有这个问题吧,现在又不像大学时,写程式要排Cyber的上机时间这么的难。
工具机器与资料维护
对于工具机器与资料维护这个主题来说,强调模拟器的使用,当然我们还得懂一下,可靠跟精确的差别。
而编译器和组译器工具机器,我想这也是一套学问啦,ㄚ琪现在也不断地在学习测试编译器的使用。
程式库与程式的管制,这很像是程式的版本控制,里头一些重点有每个程式设计师的自己写的程式副本、测试案例,以及为进行组件测试而自行制作的测试鹰架(scaffolding),他可以在局部自由区域(playpen),自由地做任何事。系统整合子程式库(system integration sublibrary),晋升(promote),现行版本子程式库(current version sublibrary)!
这里头有重要观念:控制,程式的整合与交付(release),这当中的正式区隔(formal separation),以及演进(progression)都是要注意的。
程式编写工具,这种工具的演进是很突飞猛进的,很多IDE的工具到处都可以找得到。
文件编写系统,我就不多说了。
效能模拟器(performance simulator),注意由外而内(outside-in)的建立模式,以及由上儿下的设计方式(top-down design)。
高阶与言和交谈式程式编写
两个重要工具的使用,高阶语言(high-level language)跟交谈式程式编写(interactive programming)。
用高阶语言的理由,熟知的有生产力和除错速度。
但不用的理由呢?不能让人为所欲为、目的码太大、执行速度太慢。
确实有这些问题,所以用跟不用的理由,再软体专案开发中,真的是要好好评估。至于要用什么高阶语言去写,我觉得书中所列的应该是旧的,就不提了!
交谈式程式最令我们所熟知的应该就是Basic程式了吧!好用,很多人多这样说,唯独我很少用,哈ㄚ!