说到软件设计师都干点儿啥,很多人会想到写设计文档,画UML图,而我想从另一方面来说说
从职业类比说起
医生是个职业,医师、主治医师、主任医师是职称
律师是个职业,四级律师、三级律师、二级律师、一级律师是职称
程序员是个职业,你可以将软件设计师、软件架构师理解为职称
三种职业的相同点
医生一般是,通过检查确认身体的病因,寻找治疗方案,再进行治疗
抽象地说就是:分析问题,寻找解决方案,解决方案落地
律师一般是,通过对证据进行分析,在法律上找到解决纠纷的方法,打官司
抽象地说就是:分析问题,寻找解决方案,解决方案落地
程序员一般是,通过分析要实现的功能,梳理设计思路,写代码
抽象地说就是:分析问题,寻找解决方案,解决方案落地
这三种职业及其相似,都是在:分析问题,寻找解决方案,解决方案落地
三种职业的不同点
这三种职业的不同点也很明显,就是:问题所处的领域不同
不同职称有何区别
以医生为例,我父亲生病住院,主治医师当晚就说,可能是GBS。第二天主任医师查房,要求做CT和脊髓穿刺,排除中枢神经的一些病变并确诊是GBS。
抽象地说就是:主任能从更高的层次、更大的范围,去分析问题并寻找解决方案
所以,比起普通程序员,软件设计师也是一样,能从更高的层次、更大的范围,去分析问题并寻找解决方案
结论
软件设计师都干点儿啥?
软件设计师也是程序员,除了写代码之外,软件设计师可以解决更高的层次、更大的范围的问题。
更高层次和更大范围的问题的解决方案,描述起来需要用更宏观的方式,这就是UML。虽然解决方案最终也是用代码实现,但如果要描述并讨论解决方案,会由于代码太细致,导致只见树木不见森林。
UML只不过是描述解决方案的一种工具,并且在软件行业已经达成一致,所以它非常有利于交流。
进行软件设计
找需求人员把问题理解清楚,分析问题并思考解决方案,把解决方案用UML描述出来,这就是软件设计。
软件设计的过程不需要面面俱到的文档,只要能自己想清楚,并且用UML描述出来就行了。
思考的过程,会发现很多需求的细节,过程中应该和需求人员深入地讨论。
设计评审
往往会有多个方案拿不准,或者自己的方案担心有缺陷,这就需要设计评审了。
设计评审更不应该有面面俱到的文档,我的经验是:
把设计草图画在纸上,拍个照
把大家召集在一起,一定要有白板
大家一边看你的设计草图(投影或显示器),一边讨论,一边在白板上重绘
将白板上的结论拍照留底,直到所有问题讨论结束
写设计文档
设计文档就是把问题描述清楚,再把解决方案描述清楚就可以了。
解决方案就是设计评审通过时,大家在白板上绘制的照片。
具体的方法和模板,在下一篇有详细描述。