我们讨论上面的认知理论,其实是在讨论我们建立“知识”的具体方法。然而如上面讨论的,我们从一个系统中获得的知识因人、因方法而不同;既便是相同的方法,由于其实施者的不同以及方法(本质中存在的)误差,也会不同。这就是作为架构师,任何两个人都不可能得到相同的架构结果的根本原因。所有的最终架构都是在实施过程中的调和,以及某些决策者、决策机构的“决定”。
大多数的外在特性是容易从系统中辨识出来的。例如,我们要做一个办公系统(OA,Office Anywhere),那么我们可以肯定几点事实:(1)这一系统总是某些办公室成员使用的;(2)这一系统总是提供上述人员的日常工作所需的功能;(3)这一系统既包括对现实工作的映射,也包括一些试图改变现行工作的电子化需求。
这几点事实显而易见,是由系统本身决定的①。我们可以因此找到一些系统的组成部分:(1)观察办公室成员的工作,所以需要邮件、日程、考勤、审批等功能;(2)考虑到电子化管理,所以需要新闻发布、消息通信、文件管理、讨论区等功能。据此很快我们就可以描述出这一系统的架构,
①事实上并不尽然,我只是有意地忽视了这一过程的复杂性。
但这些只是一些共性的功能,也就是大家都需要的。随着你对办公室成员的调查进一步地展开,你必然面临一些特定的需要,例如:(1)人力,即档案、招聘、培训;(2)营销,即客户、活动;(3)经营,即资产。
据此我们进一步补充这一系统的架构,yipindushu.com
回溯我们对这些“功能性模块”进行分类的依据,我们可以为这个系统的三个主要部分命个名,分别为“日常办公”、“电子化管理”与“特定业务”:几幅架构图的演进关系并不难理解,但有一点点差异:图4-2至图4-3的标题中的版本号是“v0.0…x",而在图4-4中却是“v0.0.0.1”。更深层次的问题是:何以认为前者连“一个架构的阶段性版本都算不上",而图4-4却可以称为“一个最最最初级的架构版本”?我们可以依赖种种视角对系统加以观察,并添加种种分类依据来得到前两幅图所示的“v0.0.…x”版本的架构。但是,这些“识别”与“分别”的方法,无助于你得到“v0.0.0.1”中的几个关键概念:日常办公、电子化管理与特定业务。关键的区别在于,在你做出这些定义之前,现实系统(我的意思是需要你开发这个系统的客户、办公室成员或部门)并不会向你提出这三个概念;除非你主动提及,否则这些概念也不会对现实系统的实务有任何影响;除非你将这些概念独立出来,否则即便现实系统的确是由这些规律内在地驱动着的,也不会有人发现。
但是,是何种思维方式,让你:从现实系统中“发现”这三项知识,并将它们设定为这样的一些概念,并为这些概念设定了有别于其他的依据?又或者问:你何以在系统中做出一些设定,而非仅仅陈述现实系统的事实?五了解系统的一些具体方法,大体来说类似于图4-5所示的一个认知过程的方法树。
版权声明
本站素材均来源与互联网和网友投稿,欢迎学习分享
【主要编程范式及其语言特性关系6:http://www.yipindushu.com/xuexifangfa/16566.html
推荐文章
02-17
1 高中化学如何学习01-24
2 成人应试选择题的学习方法09-13
3 鼓舞人心的正能量语录大全汇总集03-01
4 高中生高效的学习方法02-26
5 如何学习蛙泳