16. 证明你的设计在实践中可行

  在设计的时候应当先建立一个技术原型, 或者称为“端到端”原型。以证明你的设计是能够工作的。

  你应该在开发工作的早期做这些事情,因为,如果软件的设计方案是不可行的,在编码实现阶段无论采取什么措施都于事无补。技术原型将证明你的设计的可行性,从而,你的设计将更容易获得支持。

  17. 应用已知的模式

  目前,我们有大量现成的分析和设计模式以及问题的解决方案可以使用。

  一般来说,好的模型设计和开发人员,都会避免重新设计已经成熟的并被广泛应用的东西。
http://www.ambysoft.com/processPatternsPage.html 收藏了许多开发模式的信息。

  18. 研究每个模型的长处和弱点

  目前有很多种类的模型可以使用,如下图所示。用例捕获的是系统行为需求,数据模型则描述支持一个系统运行所需要的数据构成。你可能会试图在用例中加入实际数据描述,但是,这对开发者不是非常有用。同样,数据模型对描述软件需求来说是无用的。每个模型在你建模过程中有其相应的位置,但是,你需要明白在什么地方,什么时候使用它们。

  19. 在现有任务中应用多个模型

  当你收集需求的时候,考虑使用用例模型,用户界面模型和领域级的类模型。

  当你设计软件的时候,应该考虑制作类模型,顺序图、状态图、协作图和终的软件实际物理模型。

  程序设计人员应该慢慢意识到,仅仅使用一个模型而实现的软件要么不能够很好地满足用户的需求,要么很难扩展。

  20. 教育你的听众

  你花了很大力气建立一个很成熟的系统模型,而你的听众却不能理解它们,甚至更糟-连为什么要先建立模型都不知道。那么你的工作是毫无意义的。

  教给你开发人员基本的建模知识;否则,他们会只看看你画的漂亮图表,然后继续编写不规范的程序。

  另外, 你还需要告诉你的用户一些需求建模的基础知识。给他们解释你的用例(uses&nbspcase)和用户界面模型,以使他们能够明白你要表达地东西。当每个人都能使用一个通用的设计语言的时候(比如UML-译者注),你的团队才能实现真正的合作。

  21. 带工具的傻瓜还是傻瓜

  你给我CAD/CAM工具,请我设计一座桥。但是,如果那座桥建成的话,我肯定不想当第一个从桥上过的人,因为我对建筑一窍不通。

  使用一个很的CASE工具并不能使你成为一个建模专家,只能使你成为一个CASE工具的使用者。成为一个的建模专家需要多年的积累,不会是一周针对某个价值几千美元工具的培训。一个的CASE工具是很重要,但你必须学习使用它,并能够使用它设计它支持的模型。

  22. 理解完整的过程

  好的设计人员应该理解整个软件过程,尽管他们可能不是精通全部实现细节。

  软件开发是一个很复杂的过程,还记得《object-oriented&nbspsoftware&nbspprocess》第36页的内容吗?除了编程、建模、测试等你擅长工作外,还有很多工作要做。

  好的设计者需要考虑全局。必须从长远考虑如何使软件满足用户需要,如何提供维护和技术支持等。

  23. 常做测试,早做测试

  如果测试对你的软件来说是无所谓的,那么你的软件多半也没什么必要被开发出来。

  建立一个技术原型供技术评审使用,以检验你的软件模型。

  在软件生命周期中,越晚发现的错误越难修改,修改成本越昂贵。尽可能早的做测试是很值得的。

  24. 把你的工作归档

  不值得归档的工作往往也不值得做。归档你的设想,以及根据设想做出的决定;归档软件模型中很重要但不很明显的部分。 给每个模型一些概要描述以使别人很快明白模型所表达的内容。

  25. 技术会变,基本原理不会

  如果有人说“使用某种开发语言、某个工具或某某技术,我们不需要再做需求分析,建模,编码或测试”。不要相信,这只说明他还缺乏经验。抛开技术和人的因素,实际上软件开发的基本原理自20世纪70年代以来没有改变过。你必须还定义需求,建模,编码,测试,配置,面对风险,发布产品,管理工作人员等等。

  软件建模技术是需要多年的实际工作才能完全掌握的。好在你可以从我的建议开始,完善你们自己的软件开发经验。

  以鸡汤开始,加入自己的蔬菜。然后,开始享受你自己的丰盛晚餐吧。