3.采用轻量流程,及早测试和定期审查
如果有一种设计(或重新设计)过程的指导原则的话,这就是完成一点工作后,审查你的结果,然后再完成更多的工作。重复这种循序渐进的方式,直到得到你想要的结果。
轻型过程是那种不需要冗长的官僚主义审批或无休止的会议就能达成一致的过程。它们通常只需要最小的输入和输出的可接受水平。它们失去的是臃肿和官僚主义,得到的是对变化的反应和广泛的采用!
这种作法的基础是棘手的文档资料问题。你必须记录你做了什么、如何做的。否则,你去审查什么以及如何改进?
我们并不是说那种危害热带雨林和让读者昏昏欲睡的文档资料。我们是指人们(技术人员和其他人员)可以阅读并按照它采取行动的文档资料。
我们的工程团队选择了Confluence――一种商用工具――来协作记录他们的工作。他们利用这种软件创建记录他们每个工作周期同意开发什么的最小但有效的文档资料。他们记录他们开发什么,他们如何开发以及让其运行需要什么。我们看到了这种方法的价值并把它(方法和工具)推广给参与软件开发过程的每一个人。
最初,我们建议了发行我们从工程团队得到的软件的任务顺序。它覆盖我们如何从源代码控制管理系统拿到软件;软件包叫什么以及每个元素(可执行代码、数据库脚本等等)将如何运行、运行在什么平台上。那么,我们利用每个元素的哑代码进行模拟使用。我们测试了我们的顺序,记录了我们模拟使用时做了些什么。这些工作成为安装说明的基础。
下一步是让要部署真正版本的人只使用我们的文档资料进行另一次模拟使用。在他们模拟使用过程中,扩展、补充和改进我们的安装说明。由于每个人都为文档资料做出了贡献,因此这个过程变成人人参与的过程;由于他们成为其中的一分子,这个过程得到更广泛的采用并带来更好的质量。
在每一次发行后,我们都审查这个过程。我们研究文档资料,确定在发行过程中进行的修改。每一次我们都分析文档资料如何能够得到改进,并根据分析结果对发行过程进行改进。
4.及早建立发行基础设施
发行基础设施是部署软件和让用户能够使用它所需要的任何东西。你对客户的责任不只是你开发了伟大的软件,它还包括软件可供客户访问和使用。
建立好的发行过程的关键在于在工程团队完成软件开发前,确定你需要什么发行基础设施才能将软件提供给客户。
发行基础设施涉及硬件、存储、网络连接、带宽、软件许可证、用户配置文件和访问权限。人员服务和技能也是发行基础设施的组成部分。例如,如果你需要安装和配置专家软件,将这种技能可用性或获得它的成本排除在你的基础设施计划之外是不明智的。
尽早发现获得所需硬件中隐藏的瓶颈或缺少的技能(比如,配置安全的网络)至关重要。你必须在它们阻碍你提交软件之前解决它们。
这项工作份量并不轻。我们的项目刚一启动,我们就努力让我们的发行基础设施部署到位。甚至在6周的研制期后,我们仍在等待测试服务器所需的专用内存和硬盘。