系统设计是把需求转化为软件系统的最重要的环节。系统设计的优劣在根本上决定了软件系统的质量。系统设计要比纯粹的编程困难得多。“天下西湖三十六,最美是杭州”,千年前的苏东坡大学士对西湖精彩绝伦的系统设计,使杭州荣升为“天堂”,让后人只剩下赞叹和破坏的份了。
系统设计大体上包含四个方面的内容:体系结构设计、模块设计、程序算法设计、用户界面设计。
体系结构设计:这个环节在软件设计中十分重要。它如同人的骨架,如果某个家伙的骨架是猴子,那么无论怎么喂养和美容,这家伙始终都是猴子,不会是人。要进行体系结构设计之前必须了解和认识系统运行原理。
功能模块设计:如同人的器官,具有特定的功能。
把完成不同功能的程序写成“功能独立”的模块,“功能独立”不意味着模块之间保持绝对的独立。一个系统要完成某项任务,需要各个模块相互配合才能实现,此时模块之间就要进行信息交流。所以说:在设计模块的时候不仅要考虑“这个模块该提供什么样的功能”,还要考虑“这个模块应该怎样与其它模块进行交流信息”。
程序算法设计:如同人的血脉和神经,他让器官具有生命并能发挥功能。程序算法分布在体系结构和功能模块中,它将协调系统的各个功能。
用户界面设计:如同人的外表,最容易让人一见钟情或是一见恶心。像人类追求心灵美和外表美那样,软件系统也追求(内在的)功能强和(外表的)界面友好。
我门应该怎样才能做出运行速度高些(高性能),并且占用资源少些(高效率)的软件系统。旧社会的地主就是这么对待长工的:干活要快点,吃得要少点。这两个话题就要求了程序员必须通过优化程序算法和代码组织来提供软件系统的性能和效率。这个话题留给大家讨论。