胜兵先胜而后求战,败兵先战而后求胜—《孙子兵法》。
这部分有些内容比较陈旧,但原理和思路还是一致的。
通常来说,概念架构满足"架构=组件+交互"且只关注高层组件,之后对齐进行笼统的界定,给为他们之间的关心,此外,概念架构不涉及接口细节。这儿需要牢记的是,重大需求塑造概念设计,这儿的重大需求就是预架构中的功能、质量及约束3类需求中的关键部分。
概念架构阶段的3个步骤
初步设计:基于关键功能,借助鲁棒图进行以发现职责为目的的初步设计,对于新系统很重要。
高层分割:对系统黑盒进行切分,可以借助架构模式。
考虑非功能需求,通过"目标-场景-决策表"分析非功能需求。
初步设计的主要任务是发现职责,可以借助"职责协调链"。在分析直接协调链时,首先需要引入一个工具,鲁棒图,其包含3中元素,分别是边界对象,控制对象和实体对象。(由于VISIO不支持,这个图就忽略了,可以用序列简图表述)
高层分割:首先一个系统分割为项目交互的几个系统,之后将每个系统分化为多个子系统(不必须,一切都需根据情况,不要过度设计)。这儿的子系统通常就是分层(layer),如下图所示。
Tip: Layer表示逻辑分层, Tier表示物理分层(比如数据库服务器,Web服务器,应用服务器等的分离)。
考虑非功能需求:比如对于持续可用性的要求,就需要数据库服务器配置故障转移集群,Web服务器负载均衡。
架构设计一门解决复杂问题的艺术,因此"分而治之"的思想一定不能少,在该阶段,通常使用多视图的方法来展示架构思想,其特点是:利于思考(分而治之),便于交流(分离了关注点)。得到广泛认可的是RUP4+1视图,不过这儿重要的是思想(每个思维角度,一个视图),不是必须要提供指定的4+1视图(逻辑视图、部署视图、进程视图、实现视图和用例图),最后的Tip中展示了自身日常做项目中的视图方式。
在此,将按照温昱思路,介绍一下他的五视图,作为实践的参考。
逻辑架构:主要工作包括划分子系统、定义接口等,通常借助接口-包图来表述。划分子系统的方法包括分层的细化、分区的引入、机制的提取。
其相关原则为:职责不同的单元划归不同的子系统;通用性不同的单元划归不同的子系统;需要不同开发技能的单元划归为不同子系统(前天、后台、高保真);兼顾工作量的相对均衡,进一步划分太大的子系统(项目管理的80小时原则)。此外,定义接口时一定不能自说自话,需要足够的沟通。
运行架构:在涉及大量并发时,需要考虑,不常用。
开发架构:这部分主要是开发语言、相关框架的选择,项目文件的结构和形式,在实际中很重要,统一和合理的结构可以大幅挺好开发和沟通效率。在软件开发中,维护成本实际上是最大的,因此合理的重用非常重要,其优先级为重用完成APP-》重用框架-》重用库和程序=》重用标准算法和设计模式。
物理架构:这部分的思维重点是"开销"和"争用",因此架构的目标就是降低开销和避免征用。
数据架构:数据的分布方案是一个难点,通常可以借助一下6个策略。
3个应用原则:把握系统特点,决定分布策略(合适原则);不同分布策略,可以综合应用(综合原则);对"对么""好么"进行评估(优化原则)。
Tip:
在实际的项目中,实际的架构情况如下图所示,至于细节的服务契约定义(依据序列图发现接口)和数据库的详细设计(依赖PRD发现所需字段)等都可以和一线开发经理一起决定。
参考资料
-
温昱. 一线架构师实践指南[M]. 北京:电子工业出版社, 2011.
出 处:http://www.cnblogs.com/xiong2ge/
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。