商业软件的软件工程讨论

作者名:不详 来源:网友提供 06年6月8日

 

  几乎每一个软件工程师都学过软件工程,但媒体一提起中国软件业就异口同声地说:中国软件企业规模小,普遍处于软件作坊阶段,缺乏竞争力。事实上,到底有多少人真正了解软件工程?

软件开发人员、软件企业领导、学院里的教授、媒体,往往都不同程度地存在对软件工程的误解:

    误区一:软件企业的规模代表其竞争力

    误区二:软件工程等同于大学教科书上的生命周期法

    误区三:将软件工程片面化成单纯的Paper Work

    误区四:把文档和代码割裂开

    误区五:认为软件作坊是毫不可取,坚决打倒并杜绝的

    误区六:只向日本、印度学习甚至照抄其软件工程方法

    误区七:中国软件业要发展必须先发展软件蓝领

    误区七:不同的企业都要遵循同样的软件工程方法

    误区八:通过ISO9000和CMM认证是成为顶尖软件企业的必由之路

    误区九:规模大的企业才需要软件工程,软件作坊就不需要

    误区十:只注意软件稳定性,忽视软件可用性


我们必须注意到以下事实:

    事实一:最先进的技术往往都是小公司发明的,最成功的软件其雏形往往来自软件作坊

    事实二:美国是软件行业最发达的国家,印度、日本、中国等全世界其它所有国家全加起来都不及美国

    事实三:Microsoft并没有通过CMM认证

    事实四:美国几乎没有软件蓝领

    事实五:很多主流软件的代码,特别是非核心部分的代码规范度,常常与教科书上的范例 相差甚远,有时甚至还不如我们软件作坊的产品

    事实六:即使是最严格的书面文档,也会存在信息失真现象,有时失真还很严重

    事实七:产品需求一般都是在不断变化的,需求设计做得再好,也不一定适应交货时的市场需求

    事实八:代码即最详细的文档,还有很多软件开发工具可以自动生成文档


为了更好地为市场服务,一个商业公司的软件工程管理应当注意以下原则:

    原则一:不同企业,不同产品,不同目标导向,在软件开发中,软件工程的表现形式不 同。如开发产品 vs 承接外包工程,创新的产品 vs 没有技术难度的产品/项目,要针对对不同的情况选用不同的方式

    原则二:对商业公司来说,软件工程的目的是开发出适合市场需求的产品,而不一定是开 发出没有BUG的产品

    原则三:要更多向美国而不是日本印度学习

    原则四:一切取决于最后是否能让用户用得好,而不是是否符合书面文档的要求

    原则五:结合企业自身情况,借鉴而不是机械照搬ISO9000、CMM等制定本企业的软件开发管理体系

    原则六:无论规模大小(即使少到一个人)都可以贯彻软件工程规范

    原则七:经常与用户沟通,而不仅仅局限在需求设计和产品测试阶段,降低信息失真和用户需求变化的风险