为梦而战
全部博文(185)
分类: LINUX
2015-03-28 19:04:32
不同涉众看待架构的视角是不同的,架构师要为不同的涉众而设计。
1) 架构师要为“上游”客户负责,满足他们的业务目标和约束条件;
2) 架构师要为“上游”用户负责,使他们关心的功能需求和运行期质量属性得以满足;
3) 架构师必须顾及处于协作分工“下游”的开发人员;
4) 架构师还必须考虑“周边”的管理人员,为他们进行分工管理、协调控制和评估监控等工作提供清晰的基础。
总之,架构师应当为项目相关的不同角色而设计——只有这样,软件架构师才能和它“包含了关于如何构建软件的一些最重要的设计决策”的“地位”相符。
软件架构为谁而设计
架构视图是一种设计架构、描述架构的核心手段;架构视图具有很强的实践导向性,每个视图分别关注不同的方面,针对不同的实践目标和用途;架构视图的本质是“分而治之”,为软件架构的理解、交流和归档提供了方便。
架构设计视图主要包括:逻辑架构视图、开发架构视图、运行架构视图、数据架构视图、物理架构视图。其中最常用的是逻辑架构视图和物理架构视图。
多视图不仅是归档方式,更是架构设计的思维方式。
软件的逻辑架构规定了软件系统由哪些逻辑元素组成以及这些逻辑元素之间的关系。具体而言,组成软件系统的逻辑元素可以是逻辑层(Layar)、功能子系统、模块。
设计逻辑架构的核心任务是比较全面地识别模块、规划接口,并基于此进一步明确模块之间的使用关系和使用机制。因此,设计逻辑架构的基本内容包括:
1) 识别模块;
2) 规划接口;
3) 明确模块之间的使用关系和使用机制。
软件的物理架构规定了组成软件系统的物理元素,这些物理元素之间的关系,以及他们部署到硬件上的策略。
物理架构可以反映出软件系统动态运行时的组织情况。此时,上述物理架构定义中所提及的“物理元素”就是进程、线程,以及作为类的运行时实例对象等,而进程调度、线程同步、进程或线程通信等则进一步反应物理架构的动态行为。
架构设计,指导后续的详细设计和编程;而详细设计和编程,贯穿和利用这些设计;
q 逻辑架构中关于职责划分的决策,体现层、功能子系统和模块等的划分决定,从静态视角为详细设计和编程实现提供切实的指导;有了分解就必然产生协作,逻辑架构还规定了不同逻辑单元之间的交互接口和交互机制,而编程工作必须实现这些接口和机制;
q 所谓交互机制,是指不同软件单元之间交互的手段。交互机制的例子有:方法调用、基于RMI的远程方法调用、发送消息等。
q 至于物理架构,它关注的是软件系统在计算机中运行期间的情况。物理架构设计视图中规定了软件系统如何使用进程和线程完成期望的并发处理,进程线程这些主动单元(Active Unit)会调用哪些被动单元(Passive Unit)参与处理,交互机制(如消息)为何等问题,从而为详细设计和编程提供切实指导。
逻辑架构和物理架构对后续开发的作用
【分而治之】逻辑架构进行“逻辑分解”,物理架构进行“物理分解”,它们分别关注软件的不同方面,利于思维聚焦(相当于化“大问题”为“小问题”)。
【迭代式设计】不同架构视图的设计交替进行、迭代展开。逻辑职责的划分逐渐清晰,促进物理分布设计;反之亦然(死抠“未知”抠不出来,就利用当前“已知”探索更多“未知”,循环进行)。