
2.4 哪一个维度更重要
波音公司、微软、NASA、Raytheon和其他一些公司已经学会如何以满足自身需要的方式开发软件。在策略上,这些组织都有自己的一套,他们已经学会如何避免典型错误、打好开发基础并能够进行有效的风险控制。在具体举措上,方法千差万别,但每个组织都强调人员、过程、产品与技术。
不同项目有不同的需求,但关键是接受你无法改变的那些限制条件,然后将重点放在其他维度上,以获得预期的项目利益。
项目类型——系统软件、商用软件和个人办公软件
本书描述三类项目:系统软件、商用软件和个人办公软件。
系统软件包括操作系统、设备驱动程序、编译器和代码库。基于本书的目的(尽管存在差别),也包括与系统软件有许多共同特性的嵌入式软件、固化软件、实时系统和科学计算软件。
商用软件是指由一个组织使用的内部系统,它们运行在一组有限的硬件设备上,也许只运行在单台计算机上,典型例子有工资系统、财务系统和资产管理系统等。本书中,我将IS、IT和MIS软件也归入商用软件类中。
个人办公软件是商业化销售的盒装软件。它包括水平市场软件(如文字处理软件与电子表格软件等)和垂直市场软件(如财务分析、字幕编辑器和法律案例管理系统等)。
我也会用到一些在以上三类软件中没有提及的其他术语。商业软件是指任何用于商业销售的软件。内部软件是指只用于内部应用而不用于商业销售的软件。军事软件是指用于军事目的的软件。交互式软件是指用户可直接参与互动的任何软件,包括今天正在写的大多数软件。
如果正在开发汽车加油系统,你就不会用4GL或可视化编程环境去开发实时嵌入软件,你需要比这些工具更好性能与更好低层控制能力的工具。为了最大限度地避免掌握这些技术所需要的培训,你不得不尽可能强调技术,然后再综合协同人员、过程和产品。
如果正在开发一个业务应用商用程序,也许,你会选用4GL、某种可视化编程环境或者CASE工具,并会尽可能通过培训掌握它。你可能在为一个缺乏人员激励措施的乏味的公司工作,那么你应该在公司允许的范围内,尽可能强调人的因素,然后再综合协同过程和产品。
如果你在做功能驱动的封装商品软件,你就不能过多地减少产品功能去满足紧缩进度计划的要求。你只能尽可能地削减产品功能,然后重视人员、过程和技术因素,以此来满足计划进度的要求。
结论:仔细分析你的项目,决定4个维度因素中哪个是制约因素,哪个具有最大的优势,然后尽最大可能优化每一维的因素,这是快速开发成功的关键。