架构( architecture)
架构主要分为3类:逻辑架构,物理架构和系统架构;分别代表了软件系统中各要素的关系,软件如何部署到硬件系统上,软硬件如何部署组成一个完整的应用系统;除了上面的划分以外,我们还经常说:产品架构,业务架构,公司的组织架构;分别代表了公司有那些产品,每个产品的定位和不同的方向;公司的具体业务划分和业务关系;公司为了更好的提供产品和服务业务,划分的组织架构;
从上面来看,架构是全局的划分和整体设计,注重的是设计和规划;也可以认为是开始一件事情的模版和蓝图,可以快速开始的框架和规范,以及事物清单;
但是平时我们讲的架构大多代表了软件架构,也就是我们讲的软件架构设计,逻辑架构设计;架构又分为很多视图,一个典型的视图集包括:4+1视图;
它包括:
用例视图:包括用例和场景,这些用例和场景包括在构架方面具有重要意义的行为、类或技术风险。它是用例模型的子集。
逻辑视图:包括最重要的设计类、从这些设计类到包和子系统的组织形式,以及从这些包和子系统到层的组织形式。它还包括一些用例实现。它是设计模型的子集。
实施视图:包括实施模型及其从模块到包和层的组织形式的概览。 同时还描述了将逻辑视图中的包和类向实施视图中的包和模块分配的情况。它是实施模型的子集。
进程视图:包括所涉及任务(进程和线程)的描述,它们的交互和配置,以及将设计对象和类向任务的分配情况。只有在系统具有很高程度的并行时,才需要该视图。在 Rational Unified Process 中,它是设计模型的子集。
配置视图:包括对最典型的平台配置的各种物理节点的描述以及将任务(来自进程视图)向物理节点分配的情况。只有在分布式系统中才需要该视图。它是部署模型的一个子集。 构架视图记录在软件构架文档中。您可以构建其他视图来表达需要特别关注的不同方面:用户界面视图、安全视图、数据视图等等。对于简单系统,可以省略 4+1 视图模型中的一些视图。
架构(Architecture)有两个要素
它是一个软件系统从整体到部分的最高层次的划分。 一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。 详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(Task-flow)。所谓架构元素,也就是组成系统的核心”砖瓦”,而联结通讯的预期结果,任务流则描述系统如何使用这些元件和联结器完成某一项需求。
建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定。 在建造一个系统之前会有很多的重要决定需要事先作出,而一旦系统开始进行详细设计甚至建造,这些决定就很难更改甚至无法更改。显然,这样的决定必定是有关系统设计成败的最重要决定,必须经过非常慎重的研究和考察。
架构师
软体设计师中有一些技术水平较高、经验较为丰富的人,他们需要承担软件系统的架构设计,也就是需要设计系统的元件如何划分、元件之间如何发生相互作用,以及系统中逻辑的、物理的、系统的重要决定的做出。<br />这样的人就是所谓的架构师(Architect)。在很多公司中,架构师不是一个专门的和正式的职务。通常在一个开发小组中,最有经验的程序员会负责一些架构方面的工作。在一个部门中,最有经验的项目经理会负责一些架构方面的工作。<br /> 但是,越来越多的公司团体认识到架构工作的重要性,并且在不同的组织层次上设置专门的架构师位置,由他们负责不同层次上的逻辑架构、物理架构、系统架构的设计、配置、维护等工作。<br />架构师分类<br />按照职责的不同,架构师通常分为企业架构师、信息架构师、数据库架构师、业务架构师、技术架构师、系统架构师等。
随着技术和时代的发展以及互联网技术的要求,对架构师的要求变的更加的多样和严格;不仅要承担原有的工作,同时还需要承担更多的责任和任务;
架构师除了面向业务和技术以为,增加了一项面向开发人员的要求;架构师承担的架构设计任务,不但要满足业务,符合技术标准,评估当前较新的技术标准规范进行设计外,设计的技术架构也要满足开发人员的开发要求,要能够简单,易学,快速开发等要求;
架构师本身需要了解和熟悉当前市面上的最新的技术和设计规范,知道各种技术的优缺点和使用场景,每种技术架构的组合特点,知道不同的问题域使用哪种架构来进行解决,还需要不断的对当前的技术架构进行维护和升级,解决开发人员使用过程中遇到的问题和难题,并把最新的架构设计出来,并进行培训;
架构师设计的架构,要根据不同的业务场景和技术要求进行针对性当下业务场景和技术要求的架构设计;同时架构师也用过储备通用性的架构设计技术,在不同的场合下进行使用通用的架构设计进行解决问题,只有在特定场景下,通用规范无法解决的时候,架构师需要针对性的进行架构设计;这里涉及到两个概念通用性架构涉及和特异性架构设计;
架构设计师另外一个重要的工作任务是变现架构使用文档,方便开发人员进行使用架构进行开发工作;同时要对开发人员进行培训架构的使用和规范的执行;
总的来讲相比开发人员以开发任务为首要任务的话,技术架构师需要更加关注于团队整体的开发知识和技能统一和标准化,基础开发架构的研发和制定,技术的预备研发和技术难点的攻克;同时还包括知识,技术,经验,工具,技能,最佳实践的标准的制定,开发诉求的收集,团队知识库的整理,筛选,验证,培训,推广和普及
- 制定并优化开发流程和开发规范,并确保开发团队正确的进行执行,协助团队开发过程中遇到的问题,并实时的进行检查,防止团队出现混乱和偏差
- 技术保障:优化技术架构,跟进和研究最新架构技术,融合和提升当前架构,解决架构使用过程中的问题,提升整体团队技术水平,解决疑难问题
- 项目进度保障:框架搭建,数据模型设计,核心模块编写,并提供技术协助,承担部分开发工作
- 代码质量保障:要随时进行代码Review,代码走查,发现当前开发人员项目中代码中的问题,并及时进行指正
- 知识技能保障:组织技术团队的技术培训,分享,共享,学习,考试
- 开发过程和开发结果保障:发现当前开发过程中的问题,分析开发结果的好坏并进行问题分析,提出解决方案,并进行落实解决方案