读Die Kunst der Softwarearchitektur收获

1,架构与架构师
1.1 架构
架构这个词来源于建筑学。建筑学中把架构定义为:人们对一个结果内的元素及元素之间的关系的一种主观映射和各种技术的实现。同时,建筑学中也认为,架构最主要的是指系统架构,而系统架构的主要任务是界定系统级的功能和非功能需求、规划并设计实现系统级的各项要求,用时利用各种科学技术来实现各个子系统的结构构建。
由此引申而来,一般认为软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。

关于软件架构的定义,一直没有一个统一的说法,这里摘录一些比较主流的定义:
软件体系结构是由具有特定形式的体系结构元素或设计元素构成,包括处理元素、数据元素和连接元素。
软件体系结构包括组件、组件的外部可见性以及相互的关系。其中软件组件的外部可见性是指软件组件提供的服务、性能、特性、共享资源使用等。该定义强调体系结构分析需要从系统中抽象出用于分析、决策的信息。
软件架构包含了关于以下问题的重要决策: 软件系统的组织、选择组成系统的结构元素和它们之间的接口,以及当这些元素相互协作时所体现的行为、如何组合这些元素,使它们逐渐合成为更大的子系统、用于指导这个系统组织的架构风格
从这些定义中我们可以发现架构关注的东西:元素、关系、决策。

架构也有其生命周期,一般可分为:初步构建阶段、逐步优化阶段、成熟阶段、老化阶段、消亡阶段。
 
1.2 架构师
架构师就是去完成架构的那个人。软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。
本书中对软件架构师的主要职责做出了定义:
平衡:持续不断的在各个维度和不同的需求之间进行平衡。平衡各个stakeholder的要求;平衡时间、成本、特征、质量等各个点。
Trade-Off是一种现实,也是架构师最需要修炼的能力。
一致:保持各个stakeholder需求的一致性、保持产品和系统概念的一致性。
人月神话中提到为了保证系统概念的一致性,需要一定的专制。我想架构师就是这个专制者。
分解:将大规模系统的复杂性分解,最常规的办法是将大系统分解成许多子系统,从而降低复杂度。
软件设计的根本问题就是分解复杂性。
集成:将分解后的系统集成。从而保证各个子系统能够有效的沟通协作,有机的成为一个整体。
纵览:纵观整个系统及其存在的商业背景以便于制定出重要的设计指导规则和控制规则。委负责具体部分的设计人员提供全方位的视角和商业情节。
简洁和优美:尽量保持整个设计的见解和优美,这是架构的最大艺术。
保持完整:保持系统的要求能够平衡均匀的、有侧重的、逐步的、完整的得到实施。
吻合:在产品或项目启动、设计、开发、运行维护、服务等完整的生命周期内,架构师的工作要吻合各个stakeholder的要求
由此引申出架构师应该具备的一些能力:专业技能、商业经验、沟通能力、平衡决策能力、多任务处理能力、规划能力、驱动能力。
————————————————
版权声明:本文为CSDN博主「luoxinwu123」的原创文章
原文链接:https://blog.csdn.net/luoxinwu123/java/article/details/8002710
posted @ 2020-06-12 09:57  互联.王  阅读(108)  评论(0编辑  收藏  举报