分析和设计,是软件开发中的两个重要活动。前段时间突然发现自己没有很好的区分这两个活动,试图在没有分析之前,直接进行设计,实际上增大了软件实现的难度。
两者有什么区别呢?它们在软件开发中的作用是什么?
"分析"是指通过梳理问题,得到问题执行的详细过程,包括:执行步骤,步骤涉及的数据、每个步骤负责的功能等等。而设计则用合适的方式,将分析结果在编程语言中表达出来。
两者的区别在于,分析是梳理,设计是表达。
分析和设计都有各自的方法、原则和模式。
分析的主要方法是分治(divide and conquer),通过对需求问题进行分割和分解,得到需求的详细执行过程。
分割是按照领域把问题分成若干个更小的问题,这些问题之间一般没有很强的依赖关系,每个问题负责不同的方面,我们可以逐个对这些问题进行更详细的分析。分割一般也叫垂直分割。
分解其实也是把问题分成更细粒度的问题,和分割的区别在于,这些问题之间有较强的依赖关系,比如:先后顺序、分支、循环等。这些子问题其实构成了父问题的不同步骤。
开发人员可能相对来说,更熟悉设计活动。设计的主要原则就是SOLID,可以参考设计模式,最终的设计结果应不当是可测试,易维护,可扩展的。