软件设计漫谈之一:什么是软件设计?

2024-11-24 23:06:25
推荐回答(2个)
回答1:

“哇,设计!”每当说起这个词,你的脑海里是否很快闪出“天才”、“灵感”、“创意”。。。。。。等词汇,同时闪现出一些戴着又大又圆的黑边眼镜,一边踱来踱去,忽而又两眼一亮,大叫一声“I got it”的设计师形象?甚至想起了达芬奇、米开朗琪罗等艺术家?如果是这样的话,有两个消息要告诉你:坏消息是你理解错了,好消息是本文对你有帮助:) “什么是设计?”在回答这个问题的时候,如果你想去翻开某本厚厚的XXX规范或者协议,那么请你打消这个念头,我们不需要去看XXX标准或者协议的!@#¥%定义,那些定义没人看得懂,看懂了也没有用。我们需要通俗的说法,但通俗的就可能存在瑕疵,我们需要从通俗的说法中提炼出正确的说法。1 “设计就是找到解决问题的方法!”这个说法是最直接、也最容易理解的,因为不管什么设计,当然是要最终能够解决问题,如果问题都没有解决,那设计本身就是错误的,这样的设计当然是不可取的。但是,解决了问题就是设计吗?肯定不是,举个最简单的例子:如果你原意(不需要你很牛),你完全可以在main函数里面实现所有的功能,解决所有的问题,一个main函数写上几万甚至几十万都可以,功能上实现没有任何问题,但现实中你除了见到写“Hello, World”外,谁会这么做?所以,“是否解决问题”是区分正确和错误的设计的标准,而不是区分好的设计和差的设计的标准。2 “设计就是天才的创新!”这个是最迷惑人的一个说法,也正是这个说法,让很多人对设计师都有一种崇拜的感觉。同时由于有这个想法,就想当然的认为自己不是天才,因此没法做设计!现实中有这么多的问题需要天才才能解决么?其实你只要看看你周围就知道了:你的团队的设计师是天才么?你的做设计的朋友是天才么?如果你是设计师,你觉得你是天才么?答案很简单,你我周围没有那么多的天才,但设计师却不少;你我周围绝大部分问题都不是需要达芬奇、米开朗琪罗、爱因斯坦才能解决的。设计不是艺术,也不是科学研究,只是一项普通的工作而已,因此,只要你努力,你也可以做设计!当然,创新在设计中是必不可少的,没有灵感和创新,你就没法超越已有的设计;有了好的创新,才能够作出好设计!苹果公司做手机时间和诺基亚、魔头罗拉等相比要短得多,但苹果的Iphone却掀起了世界手机潮流,这就是创新的力量!所以,“天才的创新”不是设计的必要条件,但却是优秀和伟大设计的必要条件!3 “设计之道就是平衡之道”这个说法比较玄乎,但以我的经验和理解来看,这个说法是最接近正确的说法,理解这个说法的关键在于这个“平衡”是什么。其实说穿了也没有什么玄乎的,“平衡”其实就是满足需求的功能属性的前提下,如何平衡需求的质量属性(需求的功能属性和质量属性请参考我的上一篇博文《需求分析的故事——如何练就需求分析的火眼金晴?》)。为什么要平衡质量属性呢?简单来说就是因为质量属性是互相约束的,当一个属性变化时,必然会有另外的属性跟着改变,设计师必须在这些属性间进行平衡。举个简单的例子:性能和成本,要想提高性能,成本就会跟着上升,可能是硬件成本(购买更好更贵的CPU),也可能是软件成本(软件重构、重写)。这种情况下,设计的平衡之道就体现出来了,你不可能只要性能,不考虑成本;也不可能只考虑成本,不考虑性能;只能在两者之间取一个完美的平衡点。即使是好评如潮苹果的IPhone,在售价上相信也是超出了大部分人的承受能力。但是,把设计完全等同于平衡也是不正确的,如果永远都是在已有的东西里面做加减乘除,那么也就不会有创新了,只有创新才有可能解决所有的质量约束。比如:如果人类永远只盯着如何提高马车的速度和运力,那么火车就不会出现。 4 再谈什么是设计相信聪明的读者看到这里已经能够给出自己的答案了,我总结如下:设计是一项创新和平衡的活动!要么创造一个新的东西来满足所有要求,要么就在已有的要求之间进行平衡。

回答2:

软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。将问题或事物分解并模块化使得解决问题变得容易,分解的越细模块数量也就越多