在这里只是简单谈谈设计的基本含意,抛砖引玉。
设计的本质就是把软件的需求说明转变成可以运行的程序的整个过程。设计是一种脑力劳动,或者说是一个启发过程。设计是一个复杂的过程,现在从几个方面阐述它。
设计可以表现在多层次上面,设计方法可以是自底向上或是自顶向下,在实际的工作中,这两者结合使用,相辅相成。首先使用自顶向下的方法把软件系统划分成多个层次,再在每个层次上面自顶向下或自底向上推动设计。层次从上到下通常表现为子系统,然后是模块,子程序,最后是内部子程序。这里模块和子程序的区别在于模快包含了一些子程序和相关的数据,而子程序只是一些功能集合。
在早期,大家都采用结构化设计,使用程序看起来更富逻辑性,直到面向对象(OO)方法的出现。OO是设计方法的高层发展,和结构化设计并不矛盾。现在又有了面向方面(OA)发起了另一场革命,使设计方法更深入发展。这三种方法也不是互斥的,三者相互协作,大大提高了设计的质量。
设计过程是一个启发的过程,非常复杂。多数情况下我们需要迭代多次才能达成最后的目标,还有一些是使用增量式开发过程来完成设计。我推荐大家使用迭代,明确定义每次迭代的目标,这样每一步都走得很踏实。迭代使我们逐步细化设计,逼近最终产品,而且结果是容易验证的,整个过程是自信和愉快的。
在这当中还要提到一个通用的准则:解决问题的方法。遇到问题时,首先要问自己这个问题到底是什么(What)?搞清楚问题的真正原因,然后再制定几个方案并评估它们做出最后的选择(How)。接着是实现你的方案,有了前面的准备阶段,这一步实在是简单到顶。最后你要去验证你的方案是否达到你的目的,这也很简单。
什么样的设计才算是优秀呢?
- 简单
- 低耦合高内聚
- 易扩展
- 易移植
- 易重用且重用度高
- 标准化程度高
符合这些条件的设计通常就是非常可靠的设计。