Skip to content

Instantly share code, notes, and snippets.

@zhanhai
Created September 3, 2016 06:30
Show Gist options
  • Save zhanhai/bc26a73085b97742602e4e0859e4093f to your computer and use it in GitHub Desktop.
Save zhanhai/bc26a73085b97742602e4e0859e4093f to your computer and use it in GitHub Desktop.

分析和设计,是软件开发中的两个重要活动。前段时间突然发现自己没有很好的区分这两个活动,试图在没有分析之前,直接进行设计,实际上增大了软件实现的难度。

两者有什么区别呢?它们在软件开发中的作用是什么?

概念

"分析"是指通过梳理问题,得到问题执行的详细过程,包括:执行步骤,步骤涉及的数据、每个步骤负责的功能等等。而设计则用合适的方式,将分析结果在编程语言中表达出来。

两者的区别在于,分析是梳理,设计是表达。

方法

分析和设计都有各自的方法、原则和模式。

分析方法

分析的主要方法是分治(divide and conquer),通过对需求问题进行分割和分解,得到需求的详细执行过程。 分割是按照领域把问题分成若干个更小的问题,这些问题之间一般没有很强的依赖关系,每个问题负责不同的方面,我们可以逐个对这些问题进行更详细的分析。分割一般也叫垂直分割。
分解其实也是把问题分成更细粒度的问题,和分割的区别在于,这些问题之间有较强的依赖关系,比如:先后顺序、分支、循环等。这些子问题其实构成了父问题的不同步骤。

设计方法

开发人员可能相对来说,更熟悉设计活动。设计的主要原则就是SOLID,可以参考设计模式,最终的设计结果应不当是可测试,易维护,可扩展的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment