系统设计的好坏在根本上决定了软件系统的优劣。可以说“差的系统设计必定产生差的软件系统”,但是不能保证“好的系统设计必定产生好的软件系统”。因为在设计之前有需求开发工作,在设计之后还有编码,测试和维护工作,无论哪个环节出了差错,都会把好事搞砸了。 据说上帝把所有的女士都设计成天使,可是天使们在下凡的时候,有些人双脚先着地,有些人脸先着地。上帝的这一疏忽让很多女士伤透了心。所以我们在开发软件的时候,一定要吸取这个教训。 一.合适性系统设计的源头是需求,这是由商业目标决定的。高水平的设计师高就高在“设计出恰好满足客户需求的软件,并且使开发方和客户方”获取最大的利益,而不是不惜代价设计出最先进的软件。评估体系结构好不好的第一个指标就是“合适性”,即体系结构是否符合适合于软件的“功能性需求”和“非功能性需求”。人们一般不会在需求文档中指定软件的体系结构,需求与体系结构之间并没有一一对应的关系,甚至没有明显的对应关系。所以设计师可以充分发挥主观能动性,根据需求的特征,通过推理和归纳的方法设计出合适的体系结构。经验不丰富的设计师往往把注意力集中在“功能性需求”而疏忽了“非功能性需求”,殊不知后者恰恰是最能体现设计水平的地方。比如设计住宅。住宅的最基本的功能性需求是“吃喝拉撒睡”,全世界人民“吃喝拉撒睡”的方式都是差不多的。住宅的非功能性需求主要是让人住得舒服。住宅的种类非常多,如茅草屋、窑洞、筒子楼、酒店、别墅等等。窑洞的体系结构与别墅的有天壤之别,你能说后者一定比前者好吗?不能,因为没有可比度。如果一名建筑师受政府委托给广大的中国陕北农民设计住宅,他应当设计更好的窑洞而非别墅。理由很简单,因为广大的陕北农民住不起别墅,而那里的条件特别适合于建窑洞。窑洞对于当地的农民而言是非常实用而且成本低廉的住宅。对于软件系统而言,能够满足需求的设计方案可能有很多种,究竟该选择哪一种呢?这时候商业目标是决策依据,即选择能够为开发方和客户方带来最大利益的那个方案。大部分开发人员天生有使用新技术的倾向,而这种倾向对开发商业产品而言可能是不利的,切记切记! 二.结构稳定性体系结构是系统设计的第一要素,详细设计阶段的工作如用户界面设计,数据库设计,模块设计,数据结构设计等等,都是在体系结构确定之后开展的,而编程和测试是最后面的工作。如果体系结构经常变动,那么建筑在体系结构之上的用户界面、数据库、模块、数据结构等也跟着经常变动,用“树倒猢狲散”来比喻很恰当,这将导致项目发生混乱。当前中国有几句流行的至理名言:“稳定压倒一切”、“发展才是硬道理”。发展的前提条件是稳定,社会如此,开发软件产品也是如此。所以体系结构一旦设计完成,应当在一定的时间内保持稳定不变,只有这样才能使后续工作顺利开展。前面讲了,体系结构是依据需求而设计的。如果需求变更了,很有可能导致体系结构发生变更,那么“保持结构稳定”岂不是成了空想?高水平的设计师应当能够分析需求文档,判断出哪些需求是稳定不变的,哪些需求是可能变动的。于是根据那些稳定不变的需求设计体系结构,而根据那些可变的需求设计软件的“可扩展性”。 三.可扩展性可扩展性是指软件扩展新功能的容易程度。可扩展越好,表示软件适应“变化”的能力越强。由于软件是“软”的,那是否所有的软件必须设计能扩展新功能呢?这要视软件的规模和复杂性而定。如果软件规模很小,问题很简单,那么扩展功能的确比较容易。要是软件的代码只有100行,这时就无所谓“可扩展性”了,你想怎么扩展都可以。如果软件规模很大,问题很复杂,倘若软件的可扩展性不好,那么该软件就像用卡片造成的房子,抽出或者塞进去一张卡片都有可能使房子倒塌。是否任何软件在设计的时候都要考虑可扩展性呢?不见得,如果确信某个软件在它淘汰之前永远都不会变更(如一次性产品),那么在设计阶段就没必要考虑可扩展性,这样省事省力。可扩展性越来越重要,社会的商业越来越发达,需求变化就越快。需求变化必将导致修改(或扩展)软件的功能,如果软件的扩展性比较差的话,那么修改(或扩展)功能的代价会很高。现代软件产品通常采用“增量开发模式”开发商不断地推出软件产品的新版本,从而不断地获取增值利润。如果软件的可扩展性比较差的话,每次开发新版本的代价就会很高。虽然开发商抓住了商机,但却由于设计水平差而导致没有赚取多少利润,真是要活活气死。体系结构的稳定性是根据那些稳定不变的需求而设计的,体系结构的可扩展性则是依据那些可变的需求而设计的。从字面上看,稳定性和可扩展性似乎有点矛盾。两者之间存在辩证的关系:如果系统不可扩展的话,那么就没有发展前途,所以不能只关心稳定性而忽视可扩展性;而软件系统“可扩展”的前提条件是“保持结构稳定”,否则软件难以按计划开发出来,稳定性是使系统能够持续发展的基础。所以稳当性和扩展性都是体系结构设计的要素。人们对物质有喜新厌旧的天性,你可以经常改变房子的装潢和摆设,但不能每次都去拆墙,挖地基。在软件开发过程中,变化是司空见惯的事情。如果每次变化都导致体系结构发生大的变化,那简直就是“伤筋动骨”,这样的体系结构无疑是败笔之作。分层开发是一种重要的体系结构,有着良好的可扩展性,而且在扩充或修改功能时,基本不会破坏原有结构的稳定性。可以参看我的分层开发思想与小笼包 一文。 四.可复用性复用就是指“重复利用已经存在的东西”。复用不是人类懒惰的表现,而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。复用有利于提高产品的质量、提高生产效率和降低成本。由经验可知,通常在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地,可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产效率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做的又快又好。企业成功地开发了某个软件产品之后,如果下个新产品能够复用上个产品的体系结构的话,那么新产品的系统设计的成本和风险将大大降低。可复用性是设计出来的,而不是偶然碰到的。要使体系结构具有良好的可复用性,设计师应当分析应用域的共性问题,然后设计出一种通用的体系结构模式,这样的体系结构才可以被复用。
评价一个平面设计作品的好坏,除了要客观的评价之外,并且要达到各方面的标准和被大众所接受和喜爱,并且作品具必须具有非常好的细节处理。总之判断一个平面设计作品的好坏有很多,下面是一些评判标准。
1、思想
设计必须有思想,也就是我们常说的构思,其它设计如此,平面设计也一样。我要表达什么,我想向空间的参观者和感受者传递什么信息,是设计前必须考虑的问题。
明确思路,并把握之,使其贯穿于整个设计之中,这样才能保持设计的一致性和连贯性,保持空间之间的流动的完整。有了思想,才有成功的可能。
2、空间
空间是平面设计的前题,空间是平面设计中,设计元素之间的延续和发展。空间的尺度和均衡关系是设计需考虑的首要因素。而功能决定了空间,不同功能的空间有着
相应的比例关系,处理好这些关系是平面设计的第一步。不同功能的空间有着其相应的性格,并根据所处的环境和使用者的情况,展现出不同的表情。把握这层关系
并从文脉中找出设计思想。是整个设计的灵魂所在。
3、留白
设计的过程中,很容易犯的另一个毛病就是就是天地墙六个面均想设计得丰富,运用
很多的符号和手法,以至于堆得满满的,让人喘不过气来。素不知学会留白才是最重要的。要从三维甚至是四维的空间去考虑,应该想到,你设计的是一个空间而不
是各自独立的平面,如何抓住该空间的重点,是关键。
4、减法
平面设计容易犯的另一个错误就是很容易被细部迷惑,沉迷于某个或几个
细部的处理而忽略整体空间的效果。这些细部可能是一种设计符号、一种元素、甚至是一种材料,感觉很美,就一定要用上,哪个都舍不得放弃。全然不顾是否合
理,结果空间变成了大杂烩时,也就什么都不是了。常在平面空间中看到的"世界之窗"就是如此。所以设计要学会做减法,而不是加法,当能把空间做到"增一分
则盈,减一分则亏"时,就成功了。
5、尺度
尺度的把握也是关键。很多设计在图纸上看起来很漂亮,但实际做出来就不是那么回事。这同样也是
关系到空间的问题。每下一笔,均应考虑到这条线不是独立的,它是存在于个立体的空间中,并和该空间的其他线条相关联、相影响。尺度的把握不单是细部的把
握,更重要的是空间的把握,延伸出来,更是空间和空间的尺度关系、空间和时间的尺度关系。
6、疏密
中国画以及篆刻艺术中有句很经典的话,
叫做"疏可走马,密不容针",按今天的理解,就是疏密有致,有张有弛。对平面设计同样是经典。就如同在平面设计中讲究的均衡和对比等,在三维甚至是四维空
间中,空间的处理同样强调整体的均衡、和谐及对比,它不仅表现在空间与空间之间的比例关系,还表现在同一空间中的重点的表现以及取舍的问题,分析找出并把
握好重点,是对设计者的考验。
7、定位
个人设计的阶段性不可避免的跟着整个国际脉络及市场需求动走。但重要的是根据自身的艺术修养在其中抽取合适的元素,吸取精华,融合成自己的东西。含蓄内敛,不急于探寻自己的定位,当内涵与风格相融,定位是自然的结果。
8、修养
设计师本身艺术修养决定了其设计作品的好坏和品味。作为设计师必须不断地通过学习来提高自己在艺术、文化等各方面的修养。我们常说的某某的"感觉好",其中
的"感觉"不是其一时的灵感,而是通过不断提高和磨练,累积形成的文化沉淀而得到的结果,并于不经意中将其流露于作品之中。
所有的事情都有个过程。设计是需要真功夫的,就因为设计之路上有苦有甜,所以才衬托出设计的人生色彩。评判一个好的设计作品,只要具有以上的所有的标准并且把握的非常合理,那么这个设计作品将会是一个非常成功的设计作品。