架构设计包括了功能性架构和技术架构设计两个部分的内容,功能性架构解决业务流程和功能问题,而技术架构解决非功能性需求等问题。两种架构都包括了动态和静态两个方面的内容,对于功能性架构中动态部分为业务流程驱动全局用例,用例驱动的用例实现等;对于技术架构中动态部分为架构运行机制,而静态部分为框架,分层等方面的内容。 功能性架构包括了全局用例设计,这个自己是用例分析和设计的一个延续,而全局用例分析建议的思路仍然是业务流程,业务用例建模到系统用例建模的过程。全局用例分析清楚后能够开始考虑子系统和模块的划分,造成系统的功能架构图,固然在划分过程当中必定要考虑到经过CRUD矩阵等分析方法来分析模块如何划分合理,如何保证模块自己高内聚和松耦合。 在全局用例分析完成后涉及到数据模型的设计,数据建模仍然从业务驱动,从最初的业务对象和单据入手,到最终的数据概念模型和逻辑模型等。架构设计中全局数据模型不必定覆盖全部的数据对象和数据表;可是核心的主数据,核心业务单据数据必定要覆盖到,模型到的层次到逻辑模型便可。若是用面向对象的分析方法,这里须要出的是UML建模中的概念模型和逻辑模型,体现核心对象和类,核心对象和类之间的关系。 将全局用例分析和数据模型创建融合在一块儿,能够看到这二者结合起来会造成一个系统完成的领域模型层。一直认为领域模型思路应该引入架构设计,只有领域模型才是真正关注功能性架构,而不用立刻关注到具体的技术分层和技术实现。 前面二者作完后能够看到一个大系统被分解为了多个子系统或模块,那么接着要考虑的就是模块间的集成架构,分析完集成架构模块间的接口基本就出来了。接口设计应该是架构设计的另一个核心内容。要明白架构设计一个重要做用就是架构设计完成后各个模块能够并行开始概要设计,详细设计和开发工做。只要你们都遵循架构设计约定的接口规则便可以了。 集成架构考虑完另一个核心内容就是公共可复用组件的抽取和识别,包括了功能组件和技术组件,须要识别出来哪些是可复用的,如何进行复用。对于复用层次自己又包括了数据层复用,逻辑层组件复用,界面层UI组件的复用等。复用是架构价值体现的的另一个关键点。 这些都作完后,接着一个步骤应该在架构设计阶段作的就是对架构输出成功进行模拟验证,前面完成了分解动做,必须经过模拟验证来看看后续分解内容可否很好的集成和组装。不少时候咱们作架构设计的时候每每不作这块内容,致使架构设计一些内容变成空中楼阁,没法落地。 再回来看技术架构设计,首先谈下静态部分的内容。这里面就包括了软件开发的分层架构,开发框架等内容,包括开发规范约定,技术平台和语言的选择,使用的规约等都须要考虑。不少时候咱们看到谈架构的时候说到的三层或多层架构,仅仅是完整架构设计里面很小的一部份内容。 除了分层架构外,接着考虑的就是各类非功能性须要,咱们在架构上须要如何设计。这里面包括了事务,缓存,异常,日志,安全,性能,可用性,容错能力等。这些逐个点都要在架构设计中说清楚如何考虑,因为这些自己就属于一个应用系统中技术平台要考虑的内容,所以应该设计为较为公用的技术组件供上层的业务组件使用。要明白不少时候为什么谈到AOP或可插拔架构,只有这样去考虑问题,才会考虑真正的功能性架构设计和功能实现和非功能性技术架构这块充分解耦,实现进一步的灵活装配。 再回到架构设计视图层面,还须要考虑的就是整个应用系统的部署架构,部署架构自己也包括了逻辑视图和物理视图,应用最终开发出来了如何进行部署,这涉及到了IT基础架构方面的细化,也须要考虑清楚。