结构化设计,另一个是面向对象设计,就个人经验而言,面向对象的设计更好。
如果你工作中不得不采用结构化的设计,你必须熟练地掌握数据流图和控制流图
的分析和设计,一般来讲,如果你把一个软件中用到的数据模型设计好了,针对
功能化的流程,不难设计出数据流图,但下一步设计控制流图才是挑战,如果你
按照需求走不通设计好的控制流图,那么你或别人在按照这个设计编程实现时,
必定也走不通,没有奇迹会发生,还是在设计阶段严格要求吧,又有一点需要牢
记:返工是最慢的。当你在进行控制流图的设计时,也不要妄想得到需求人员提
供给你明确的指点,通常他们要是能够把需求的功能和操作次序写完整的话,你
应该就感恩戴德了,从需求中整理出功能、操作的拓扑次序和条件是你作为系统
分析员的职责。看看,要是没有一点图论的基础和拓扑学的入门知识,你是当不
好一个职业系统分析员的,即使你天赋不错,必要的数学和逻辑素质仍然不可或
缺。也不用气馁,永远没有最好的设计,只有更好的设计,反复地进行设计迭代
,勇于推翻旧的设计,你将快速进步。如果你在工作中是采用面向对象进行设计
的,那就更有利了,有关面向对象设计的书太多了,不用作者在此多费口舌,建
议精读一本经典的书,比如北大邵维忠等编译的《面向对象的分析》,有些方法
和技巧可能过时,但其逻辑的基本原理是非常正确的,其本质是,你在逻辑上是
如何认识这个世界的,你就是如何设计软件体系结构的,然后读读其它书,触类
旁通,自己创造机会多实践,成功自然会到来的,总之,不管是结构化设计还是
面向对象设计,评价一下自己的软件系统设计方案吧,有好多指标呢,比如是否
均匀和平衡?局部独立性强不强?有没有歧异的结构?有没有层次太多或太少?
有没有某个层次太大、太广?是不是逻辑结构先复杂了再化简的?还是只会设计
简单的,复杂不起来(这一点是笨哦,如果出现多次,请你不要意气用事,转行吧
)?最重要的一点,是否容易理解、实现和改进?你自己会得出评价的。如果有机
会看到别人的设计,一定不要错过学习的机会,自己推导一遍,认真比较比较,
获益会较多。
走到这一步,你就应该关注设计模式了,首先还是学习,这方面的好书有的是,
但一般在工作中用到的设计模式较为单一,应该多尝试一下其它的设计模式。其
次必须要明白设计模式不是设计思路,也不能代替设计思路,比方你要从A到B修
一条路,设计模式只是让你选择,是修水泥的还是柏油的?是高架路还是普通的
,但线路必须你自己定,而线路就是设计思路,模式对思路是有影响,但不能代
替,所以如果你的智商高达250,我相信你直接用汇编语言也能写出面向对象的程
序来。第三在此有一个陷阱,很多系统分析员生搬硬套设计模式,全然不懂如何
融会贯通,在你的一项具体工作中,往往是以一种设计模式为主,其它模式为辅
的,思维不拘泥于形式才是关键,而且也为你到达更高的软件设计的境界做好准
备。
唉!都不知该怎么向下写好了,因为已达到作者水平的极限了,我胡乱说一点,
你凑合看吧。软件设计最终的层次是:以无法为有法、以无限为有限,这句话是
李小龙说的,不是我说的。再拾人牙慧一把,类比一个故事吧,金大侠在《倚天
屠龙记》里讲到张无忌初学太极,学会的标志是把刚学的招数全忘了,记住的是
太极的道理和精神,和李小龙有些相似喔,软件设计也一样,忘记所有的设计模
式,随心所欲进行设计才是至高境界,所以你能到达多高的软件设计的境界最终