软件架构设计(三) 架构、架构师和架构设计

架构师角色、架构师执行的架构设计及由此生成的架构:架构架构是体现在它的组件中的一个系统的基本组织、它们彼此的关系、与环境的关系及指导它的设计和发展的原则。系统是

  架构师角色、架构师执行的架构设计及由此生成的架构:

架构

  架构是体现在它的组件中的一个系统的基本组织、它们彼此的关系、与环境的关系及指导它的设计和发展的原则。

  系统是组织起来完成某一特定功能或一组功能的组件集。系统这个术语包括了单独的应用程序、传统意义上的系统、子系统、系统之系统、产品线、产品组、整个企业及感兴趣的其他组合。系统用于完成他的环境中的一个或多个任务。

  环境或上下文决定了对这个系统的开发、运作、政策以及会对系统造成其他影响的环境和设置。

  任务是由一个或多个利益相关者通过系统达到一些目标的系统的一个用途或操作。

  系统利益相关者是对系统感兴趣的或与系统有关系的一个单独的团队或组织(或组织的一部分)。

  统一建模语言(UML,Unified Modeling Language)规范中的组件定义。组件代表一个系统模块化的一部分,他封装了自身的内容,在环境中他的表现是可替换的。一个组件根据供给借口和需求借口定义自己的行为。同样的,一个组件也属于某一个类型,其一致性有这些供给借口和需求借口(包括他们的静态语意和动态语意)来定义。因此,一个组件可以由另一个组件来替换。只要这两个组件类型一致。

  一个架构应该既关注结构又包括行为,应该关注重要的因素,遵循一种架构风格,受其利益相关者和环境的影响,基于基本逻辑是决策具体化。

  1、架构定义结构

  如果你要求某个人描述一下他正在处理的软件系统的架构,你可能会看到一张显示这个系统结构方面的图,无论是机构层、组件还是分布式节点方面的。结构确实是一个架构的本质特征。

  一个架构的机构状况会在很多方面描绘他自己,而架构的大部分定义都是故意模糊的。一个结构部件可以是一个子系统、一个程序、一个库、一个数据库、一个计算节点、一个遗留系统、一个现有产品等。

  架构的很多定义不仅承认结构部件本身,还承认结构部件的组合、它们的关系(和支持这些关系所需要的所有连接器)、它们的接口以及他们的分类。此外,每个部件都可以通过很多方法来提供。例如,一个连接器可以是一个套接字,同步的或者异步的。可以关联某以特定协议等。

  下图描述了在一个订单处理系统中含有一些结构部件的UML组件图:

  

  您可以看到三个组件 Order Entry、Customer Management、Account Management。Order Entry依赖于Customer Management,Order Entry还依赖于Account Management。

  2、架构定义行为

  架构除了定义结构部件之外,还定义这些结构部件之间的交互。这些交互提供了期望的系统行为。

  下图是一个UML时序图:

  

  3、架构关注重要的元素

  4、架构平衡利益相关者的需要

  5、架构基于合理证据是决策具体化

  6、架构会遵循一种架构风格

  7、架构受它的环境影响

  8、架构影响开发团队的结构

  9、所有系统都存在架构

  10、架构有特定的范围

架构师

  架构师是负责系统和团队的人,团队或组织。这里所提的架构师即可能是一个人也可能是一个团队。

  1、架构师是技术领导

  2、架构师的角色可能由一个团队来履行

  一个团队是拥有共同目的、执行目标、拥有使他们可以相互负责的方法的、技能相互补充的小部分人。

  最优秀的架构通常有一个团队而不是个人来创建,这仅仅因为当有多人参与进来时,见识更广和更深。

  3、架构师理解软件开发流程

  4、架构师掌握业务领域的知识

  5、架构师掌握技术知识

  6、架构师掌握设计技能

  7、架构师具备编程技能

  8、架构师是优秀的沟通人员

  与架构师相关的所有软技能中,沟通最重要。架构师应该既是优秀的聆听着,也是优秀的观察者。

  9、架构师进行决策

  10、架构师知道组织政策

  成功的架构师并不仅仅关注技术,他们还对政治敏感并知道组织中的权利。他们利用这些知识确保与恰当的人沟通,并确保在项目的适当周期获得支持。忽视组织政策是(相当)天真的。

  11、架构师是谈判专家

  对于架构设计的很多方面,架构师需要与很多利益相关者相互进行交流。其中的一些交流需要谈判技巧。

架构设计

  软件架构设计代表的事一个架构定义、文档编写、维护、改进和验证正确实现的活动。

  架构设计相关术语的元模型:

  

  这个元模型直接取自于IEEE1471标准,总结如下:

  • 一个系统拥有一个架构
  • 一个系统实现一个或多个任务
  • 一个系统拥有一个或多个利益相关者
  • 一个系统存在于一个环境
  • 一个环境影响一个系统
  • 一个架构由一个架构描述描述
  • 一个架构描述确定一个或多个利益相关者
  • 一个架构描述确定一个或多个关注点
  • 一个架构描述提供基本原理
  • 一个利益相关者拥有一个或多个关注点
  • 一个关注点对于一个或多个利益相关者很重要

  IEEE1471标准的一个附带好处是,它不仅适用于编写一个软件架构文档,还可以看作是架构师在工作中必须关注的概念推理框架。图中不属于IEEE1471标准的关系有:

  • 一个开发项目由一个团队担任
  • 一个开发项目遵循一个开发流程
  • 一个开发项目开发一个系统
  • 开发流程包括架构设计
  • 团队包括一个架构师
  • 架构师执行架构设计
  • 架构师创建一个架构
  • 架构师是利益相关者的一种
  • 架构设计产生一个架构
  • 基本原理验证一个或多个架构决策
  • 一个架构决策处理一个或多个关注点

  1、架构设计是一门科学

  2、架构设计是一门艺术

  3、架构设计跨越很多方面

  4、架构设计是一个渐进的活动

  经验表明架构设计不是项目早期一次性执行的一项活动。比较确切的说,架构设计适用于项目的整个声明周期,架构随着一系列递增和迭代的可执行软件的交付而成熟。

  5、架构设计受许多利息相关者驱动

  6、架构设计经常包括折中

  7、架构设计承认经验

  8、架构设计即由上而下也由下而上

架构设计的优点

  1、架构设计解决系统的质量问题

  2、架构设计促成达成共识

  3、架构设计支持计划编制流程

  4、架构设计促进架构的完整性

  5、架构设计有助于关于复杂性

  6、架构设计为重用提供基础

  7、架构设计降低维护成本

  8、架构设计支持影响分析