软件工程有面向过程,也有面向对象,同样需求分析也有面向过程和面向对象的方法,这两种个都是认识世界的方式。
什么是面向过程##
面向过程会把世界看成是是关联的、存在很多密不可分或因果关系的一个个小系统构成,这种分析方法在需求复杂度低时很管用,我们把每个小系统的开始和结束以及每一个步骤和影响都定义出来,那么就能定义整个系统行为。但如果需求变的复杂起来的话,把所有的因素都考虑完全并模拟出来就显得很困难。
什么是面向对象##
而面向对象则是把世界看成是一个个向相互独立的对象或系统,相互之间并无因果关系,只有在某个外部力量的驱动下才会依据某种规则传递信息。每个对象不再需要从整个系统的角度来分析,需要关心的只是与它有关系的哪几个对象,这就使得我们分析对象时的信息量降低不少。比如一次成型一辆汽车太困难,我们可以将汽车分解成很多个零件分布制造、在依照预先设计好的接口把它们安装起来,形成最终的产品。这个工业界非常普遍的方法就是一种面向对象的思维方式,
举个栗子##
如果你分析的习惯是在调研需求时最先弄清楚有多少业务流程,先画出业务流程图、然后顺藤摸瓜找出业务流程中的每一个岗位或部门,弄清楚每一个参与者所做的事情和填写表单的结果,并关心用户是如何把这份表单传递给下一个环节的,那很不幸,你还在做面向过程的需求分析;
如果你的分析习惯是在调研需求时最先弄清楚有多少部门或岗位,然后找到每一个岗位了解他们平时都做什么,这件事交给谁办,做完了要传达给谁?做这些事都需要填写什么表单吗?那么恭喜你已经面向对象了~
读《thing in uml》有感