创新也好,开发也好,都是一个发现问题、认识问题、分析问题、解决问题的过程。发现问题靠得是好奇心所带来的敏锐观察力;认识问题靠得是广博的见识;解决问题属于专业/特长能力。都没什么好说的,就谈谈如何分析问题作为本次总结的收尾。
分析问题最主要的手段就是系统分析法,有兴趣的还是自己认真翻书去学习而不是网上搜搜别人嚼过的馍馍。对于一些重要的基础性理论或方法论,最好还是买些经典教.书沉下心钻研一翻。所以笔者只讲讲自己的心得。
系统分析中最重要的是理清楚系统边界,哪些属于系统内,哪些属于系统的环境。区分系统组成要素和环境要素的最简单的办法就是看你对这个要素有无控制权。
系统分析的任务主要是两块:系统的结构分析以及系统的行为分析。但是系统结构决定了系统行为,所以这两者又有着密切联系,不能完全孤立的进行。结构分析主要是看系统组成要素之间以及系统组成要素与环境要素之间如何馈送能量、物质和信息,但我们做的是创新或开发,并不是将当下的现实世界搬到计算机里,所以系统的结构和现实并不是完全对应的。系统的行为分析主要是动态查看各要素之间的馈送是扰动其它要素的行为以及探查这种扰动的传播范围。工程师一定要善于画图,系统图可以用来进行结构分析,时序图可以用来进行行为分析。当然,最终是要把整个系统在脑子里运行起来。
分析问题是在“认识问题”环节把握了问题的本质的基础上要进一步的明了问题的原因、起效与作用机制,然后为“解决问题”环节提供展开框架。所以分析问题环节不能说把系统分析清楚了就结束了,还必须对系统的结构和行为进行调整以便于接下来能低成本而高效率的解决问题。这种调整的核心就是封闭要素间的连接,解决问题的效率和成本取决于系统的复杂度,而系统复杂度则取决于两个方面:其一是由要素的状态所组合成的系统状态空间大小;其二是要素间的连接数量。系统状态空间的整体规模取决于问题的本质,所以是没有办法调整的,但整个状态空间中并不是所有的状态都是有效的和对我们有用的。我们可以通过限制、修改这些要素间的连接从而实现对无效的、无用的系统状态的消减来大幅度降低需要考虑的系统状态空间的规模。同时,对要素间连接的限定与调整(也就是对系统结构的调整)也是对系统扰动的传播进行限定以加快系统收敛、提高系统稳度、降低内外部冲击对系统所造成的抖动的范围和幅度。
所以,要想在后期能低成本和高效率的解决问题,在分析问题这一环节就需要采取调整系统结构(主要是隔离要素)和层次化这两种降阶手段来收窄整个系统的状态空间并限定系统扰动范围。
就开发程序而言,最可怕的就是异步动作的存在。所以对异步行为的引入在分析问题阶段就一定要慎之又慎。最好是把异步行为本身的系统状态限定死,行为也尽可能的简单,千万不要再引发起一连串其它要素的动作,否则程序可能对很多故障行为无法特定触发、无法跟踪、无法调试、无法判定,最终就是无法控制。
系统再怎么降阶也不可能会变得很简单,所以系统状态的划分(引入子系统)一定要保证边界鲜明而有足够的跃迁壁垒,最好对系统状态的切换要形成序列化以减少状态变迁图中的环路从而避免状态变迁由于耦合而导致的弹跳。
7/11/2011
|