企业架构思想在软件架构设计中的引入

标签: 随笔文章 | 发表时间:2012-06-16 23:16 | 作者:人月神话
出处:http://blog.sina.com.cn/cmmi
很多时候我们在谈企业架构的时候都是正对跨流程,跨业务和跨应用系统的总体规划和分析,企业架构核心好处就是真正体现业务驱动IT,将业务和IT能够真正的匹配起来思考整个企业层面的架构问题。而很多时候我们谈软件架构的时候仅从软件实现层面来考虑问题,针对一个业务系统的开发,我们有业务建模和软件架构,但是这两个却进行了分离而缺少了系统性的思考,所以原来我们喜欢用系统分析师这个词来综合业务分析师和软件架构师两个岗位的工作。

对于企业架构思想融入到软件架构中,即真正对软件架构层面的工作进一步整合,减少在系统分析过程中从现实业务层面来抽象IT层面的脱节。改变传统软件架构仅仅考虑实现层面和技术层面的问题。对于引入方法和具体内容,还是从软件架构的一些核心内容来谈。

对于传统的RUP方法强调用例驱动,架构为核心。对于用例驱动在架构层面首先有全局的用例模型,很多时候我们没有考虑如何真正建立全局用例模型,而结合业务建模可以看到仍然是流程分析,子流程,业务功能逐级展开后形成全局用例模型,那么全局用例模型就不简单是用例图能够涵盖的,全局用例模型通过流程驱动真正融为一个整体。

再回来看逻辑视图,对于逻辑视图现在我们更喜欢基于领域模型的方式来分析逻辑视图,对于逻辑视图建议仍然是不要一下进入到具体的类图和类关系图层面,而更加重要的还是理清楚核心的业务对象模型和对象间依赖,关联关系。可以从用例建模中识别核心业务对象并进行对象建模,形成核心的逻辑视图。

用例视图偏动态的流程和业务功能,而逻辑视图偏静态的业务对象和数据模型。这是架构设计关注的两个核心内容,在这个完成后带来另外一个问题即组件如何划分?可以讲我们现在进行架构设计划分组件的时候往往并没有深入的去考虑这个问题,只是给出高内聚松耦合的大原则。这也是在模块划分我一直考虑需要引入传统的类似CRUD矩阵分析等方法的原因。

对于组件的划分,从原来的流程和数据两条线再来分析组件划分方法可以看到,可以根据大的业务流程阶段,子流程来划分组件,不通的阶段或子流程划分为不同的组件,如供应商协同,招投标,合同管理,采购管理等。也可以根据核心的业务对象来划分不同的组件,如采购订单对应采购管理,合同对应合同管理,请购单对应请购管理等。不论是哪种方法最终要达到的目的都是减少组件间的交互和接口,很多时候组件划分工作不是一次就完成的而是需要通过反复的迭代,比如为了减少集成接口可能将某个业务功能从组件A移动到组件B等。对于组件划分的分析包括了组件划分完成后组件和组件间的接口和集成分析,组件和数据间的关系和CRUD分析,系统级流程在多组件间的协同和交互模拟等。而这可以看到正是开发视图和进程视图要解决的问题。

前面这些都分析完成后,自然引入集成架构和集成视图的概念,即组件划分完成后需要考虑组件间有哪些接口,接口识别仍然是前面跨组件系统分析交互点,接口识别清楚后可以画出完整的系统内组件集成架构。跨组件业务协同流程等。这些内容仍然都是架构设计的核心,否则分解到每个组件设计的时候出现只见树木不见森林的情况。不清楚组件在整个系统中的具体位置。

这些都清楚后才应该过渡到物理视图层面,物理架构主要关注系统非功能性的需求,如可用性、可靠性(容错性),性能(吞吐量)和可伸缩性。软件在计算机网络或处理节点上运行,被识别的各种元素(网络、过程、任务和对象),需要被映射至不同的节点;我们希望使用不同的物理配置:一些用于开发和测试,另外一些则用于不同地点和不同客户的部署。因此软件至节点的映射需要高度的灵活性及对源代码产生最小的影响。

从前面整个分析设计可以看到基本没有谈到技术框架,架构分层模型等内容,也再一次说明了架构设计重点在功能性架构和核心领域逻辑,而不是一开始就陷入到分层技术架构模型中。只有把前面的内容都搞清楚了才能给更好的考虑如何建立业务系统本身需要依赖的技术平台。

   青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [企业架构 思想 软件架构] 推荐:

企业架构思想在软件架构设计中的引入

- - 人月神话的BLOG
很多时候我们在谈企业架构的时候都是正对跨流程,跨业务和跨应用系统的总体规划和分析,企业架构核心好处就是真正体现业务驱动IT,将业务和IT能够真正的匹配起来思考整个企业层面的架构问题. 而很多时候我们谈软件架构的时候仅从软件实现层面来考虑问题,针对一个业务系统的开发,我们有业务建模和软件架构,但是这两个却进行了分离而缺少了系统性的思考,所以原来我们喜欢用系统分析师这个词来综合业务分析师和软件架构师两个岗位的工作.

软件架构

- - 研发管理 - ITeye博客
    对于外包业务类型的项目,软件架构设计的目的与产品类型的项目有所不同,在这里主要讨论外包类型项目的软件架构设计目的.     1、为大规模开发提供基础和规范,并提供可重用的资产,软件系统的大规模开发,必须要有一定的基础和遵循一定的规范,这既是软件工程本身的要求,也是客户的要求. 架构设计的过程中可以将一些公共部分抽象提取出来,形成公共类和工具类,以达到重用的目的.

再谈企业架构

- - 人月神话的BLOG
本篇为杂谈,谈下最近关于企业架构的一些思考. 对于企业架构有很多定义,简单来说的话可以说企业架构包括了三个方面的内容,一个是业务的现状和建模,一个是IT的现状和建模,还有就是业务和IT的匹配. 业务重点是流程和数据,IT的重点是应用和技术. 所有的企业架构基本都包括了这三个方面的内容,只是前面增加了企业愿景和业务目标驱动,后面增加了可落地的实施策略和计划.

软件架构设计

- - 企业架构 - ITeye博客
软件架构设计尚没有万灵的方法论支持,还是个非常新兴的行业,给出个人理解的行业软件架构设计过程,受个人水平有限,仅供参考:. 1.业务分析:针对目标行业的业务战略、蓝图、业务功能及流程进行分析,提出其中部分功能可以使用信息化进行处理,通过分析可以得出信息化要解决的问题. 2.解决方案设计:根据业务战略,形成行业信息化解决方案.

软件架构风格 - welfear

- - 博客园_我所说的,都是错的
文档名称:软件架构风格(software architecture style). 文档维护:Xuefeng Chang([email protected]). 文档创建:2013.07.27. 如果说设计模式是从代码角度为系统降低耦合度,那么架构风格便是从数据角度解耦. 架构是更加宏观和全面的视角,它不再是解决单一的技术问题,而是为系统提供更加.

再谈企业架构-业务架构

- - 人月神话的BLOG
前面已经谈到过企业架构的层次和维度方面的问题,在这里简单谈下企业架构中的业务架构和业务价值链方面的内容. 随着企业不断的发展和演进,各个业务功能单元会逐步成熟,也会形成多个端到端的流程,这些流程涉及到工程项目管理,供应链,财务,人力资源,产品研发等多个方面的内容. 我们再进行高端业务架构建模的时候采用的方法也基本是参考业界标准的价值链模型进行展开.

企业架构和IT规划咨询

- - 人月神话的BLOG
企业架构,业务架构,数据架构. 我们将核心价值链上的端到端总结为两个核心,其一是供应链的端到端流程和业务;其二是产品研发的端到端和业务. 各个企业由于类型不同往往对两条价值链各有 侧重. 生产代工类企业没有自己的产品研发,那么只有供应链;高科技研发企业可以做到卖产品核心技术和专利,不做具体供应链方面事情.

企业架构-应用架构构图

- - 人月神话的BLOG
在这里要谈的是在传统的企业架构-应用架构的基础上进一步体现SOA和企业私有云平台的思想,而非传统意义上简单的原有企业各个业务系统功能架构的堆砌. 这个思想包括两个方面的内容,一个是集中化和平台化,一个是SOA服务化和业务能力组件化. 对于该构图模式考虑两种,首先第一种是充分考虑平台层独立和平台层能力的体现:.

企业架构-分层和维度

- - 人月神话的BLOG
在企业架构思考中,价值链一定是一个核心的维度,价值链展开包括核心的企业业务线条,如包括内部,外部物流,产品研发,生产制造,市场,销售,售后等核心业务价值链,也包括人力,财务,综合,安全等支持业务线条. 在从业务到IT转换过程中,一般涉及到概念,逻辑,物理三个阶段,也是从业务规划到建设实施落地的过程,这个也是我们在分析核心的架构域的时候必须考虑的内容,包括业务,应用,数据各个方面基本都会涉及到这三个方面的内容.

谈企业架构和SOA的融合

- - 人月神话的BLOG
本篇讲主要强调下在常规的企业架构规划和顶层设计中与SOA规划设计之间的融合. 再次强调下SOA的核心思想是解耦,在首先满足解耦的要求下实现共享,协同和复用. 一个完整的业务系统被拆分了应用,服务和资源层能力三个方面的内容. 资源层的能力最终以粗粒度的服务方式暴露出来,应用的构建需要大部分的借助于共享服务层抽取和接入的各种服务能力.