|
对于研究软件工程流程及推动CMMI软件能力成熟度模型的人都知道,工程流程有三个要素:作业程序、技术设备、以及人员。
这三个要素中,其实最重要的是「人员」,因为人员选择、使用「技术与设备」,人员订定与遵循「作业程序」。
而另一个重点乃是--「作业程序」与所使用的「技术与设备」有着重大的关联性。某一个公司以前成功的作业程序,在导入新的技术与设备时不见得能再次获得成功,一个公司的成功程序,在另一个公司并不见得同样能获得成功。因此,软件过程改善的工作,含有与项目相同的基因--独特性。
在国 内的环境中,项目之所以失败,「人员」这项因素扮演了极为重要的角色,而有过经验的人都会同意,软件程序中的bugs多半是程序设计师造成的,例如:判断 式中打错比较符号、变量有效领域定义错误、循环层次设计错误、变量属性定义错误、函数参数传递错误...等等,不一而足。当项目时间紧迫的时候,由于人员 的工作压力较大,犯错的机会更升高。凡此种种都增加了项目的风险、项目的成本及未来维护的成本。
为了去除这些不必要的成本浪费,提升 软件的质量首要工作就是去改变系统开发方法,让项目不再是去撰写(Coding)程序,而是去建构(Building)系统。以建筑大楼做模拟, Coding就像是盖房子有了设计图之后,却要从窑烧砖块、锻炼钢筋骨材、水管开模打造开始;Building就不同了,是依照设计图,用合乎规格的砖块、钢筋、管路等等,把房子盖出来。这么做的好处是,因为组件(包括网页)都已经是写好的程序代码,因此,同样的设计文件,给不同系统的建构人员 (builder),做出来的结果都是一样的,连程序代码也是一模一样。由于这些组件都是事先经过验证与确认,因此,程序代码百分之百正确。这使得测试与验证的工作负荷大幅降低,因此剩下来的工作,就是去确认系统功能是不是符合使用者的需求,也因为系统是建构出来的,所以修改也就非常的容易,不需要一行行去看程序代码。当然,这需要一个整合的开发环境。
这样的开发环境不存在吗?事实上,这种工具存在多年,从最早期的Code Generator,一直到现在,已经出现可以直接整合网页建构工具、连接数据库、直接建立各种数据表、加入工作流程引擎、加入依需要发送实时讯息的功能、甚至于做到Data Minig,支持非结构化的查询等,都已经存在,对于系统建构人员不需要写任何一行程序。重点是这种工具的调校比人的调校要容易得多了,发生问题时,都是结构化的问题,除错也比人为所造成的错误容易。
有了这个整合式的开发环境之后,组织就依据这个开发环境的需要去训练人员,然后依据组织的特性与架构、人员的技术层次等去设计作业程序。管理者要求所属人员依据作业程序执行各项工作,再就所获得的绩效去修改作业程序、筹获更新的技术设备、提升人员的技术等级,这就是软件流程改善的真义。
值此提升软件质量、增加软件附加价值及强化国内信息业界的竞争能力的时候,实在不需要急切以导入CMMI为首要,而是先要设法改变开发方法与技术,以袪 除严重的人为软件质量疏漏,降低开发的成本,同时把省下来的软件除错、矫正、测试的成本,投入到分析、设计阶段的创意与附加价值,如此,才是我国快速提升软件产业竞争力的快捷方式。
上一篇:林泰龙系列之从「海贼王」动漫看知识工作者的管理 下一篇:林泰龙系列之CMMI不适于软件包及数字内容的开发? |
|