架构师心目中的关键词

2024-01-03 23:38
文章标签 架构师 关键词 心目

本文主要是介绍架构师心目中的关键词,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前些日子,在闲聊中,一位媒体朋友问我:软件架构师(Software Architect)究竟与普通程序员有什么区别,软件架构师平时都在想些什么?这一问,倒提醒了我。想来自己从事软件架构设计这个行当也有十多年了,现在确实有必要以文字的形式,把自己这些年来对于软件架构设计这项充满魅力、极其有趣的工作的所思所想、经验所得,好好整理一下。 

软件架构设计是一门建立在科学、工程基础之上的艺术。根据我本人的体会,以下术语和词汇大概就是那些让一位软件架构师在其职业生涯中时刻萦绕于心、挥之不去的核心关键词: 

权衡与平衡(Balancing the Tradeoffs)


软件架构师必须学会的第一件事情是:懂得如何进行权衡,在各个相互矛盾的设计要素、限制和约束条件之间巧妙地取得平衡。 

与人类所从事的其他工程活动一样,软件开发、软件工程本质上也是一种平衡的艺术。如何才能把握软件开发艺术的平衡之道?在现实的软件开发中,一名架构师必须首先掌握科学的、工程的思维方式和方法,也就是客观的、系统的、符合逻辑的思维。错乱的逻辑必然导致错误的结论,基于错乱逻辑设计出来的软件也必然会破坏软件架构内在的和谐之美,因而是丑陋的。 

抽象、建模与设计(Design with Abstraction and Modeling)


一位软件架构师必须 主动地 选择工作在合适的抽象层次上。在必要的情况下,他/她必须能够脱离具象的编程语言(如 Java、C++、VB.Net、JavaScript、Ruby 等等)进行思考,能够透过现象看本质,准确抓住事物的本质。 

如果一位“架构师” 只会 工作在代码实现(Implementation)层,遇到任何问题就忍不住要写上几行代码、砌上几块砖头,摆摆看,否则就无法顺利思考,却不知道、不会利用图形、符号、公式等 抽象的、敏捷的手段 来描述自己的思考和设计,那么这位“架构师”的能力是有严重缺陷的。 

预见性和前瞻性(Prediction and Anticipation)


一位软件架构师必须比团队中的普通程序员、初级程序员看的更远。 

如果一位开发“能手”和“高手”,经验丰富却目光短浅, 只知道 解决眼前的现实问题,不知道在有限的可用时间内往前多看几步,考虑一下面向未来问题和潜在风险的应对之道,他是不足以享有“架构师”头衔的。 

简化之美(The Beauty of Simplification)


简化是这个世界上任何科学、工程技术 —— 逻辑艺术 —— 的本质要求。 

E=mc^2 告诉我们,我们人类身处的这个宇宙存在着永恒的简单真理。作为被科学家和工程师利用电子技术构造出来的虚拟世界 —— 软件,这个空间、小宇宙自然也不例外。在软件工程界,我们笃信:只有简单而有效,才是真正的软件之美。 

为什么我们要白白耗费资源,开发出冗余的、重复的、七绕八拐的低效程序?软件架构师必须带领他/她的程序员团队,始终坚持对软件架构艺术之美 —— 简化的追求。 

模式与重用(Patterns and Reuse)


软件架构师必然首先是一名聪明的程序员,他/她知道何时、何处省力,如何省力:运用巧力来轻松完成原本繁重的开发工作。 

节省工作量的最好一个办法就是重用。如果软件开发的 10 倍率银弹存在的话(张恂一直认为 谈论布氏银弹的存在与否并无多大的实际意义 ), 软件重用无疑是一颗最有效的银弹 。重用自己的或别人的代码、程序、构件、模块、子系统乃至整个系统,可以让过去需要 10 天完成的工作在 1 天之内完成,让过去需要 1 年完成的工作在 1 个月之内完成,这样的例子遍地都是,有什么办不到的呢? 

软件模式的应用 本质上是对软件设计思想、设计知识的重用。毋庸置疑,世界上任何一位软件架构师,都知道而且应当知道软件设计模式存在的宝贵价值和重要意义。 

质量、效率与资源(Quality, Efficiency and Resources)


如何在有限的,甚至往往是“窘迫”的时间进度、经费和人力资源等重重压力之下,带领团队开发出真正符合客户需要的、高质量的,同时又具有长久生命力的软件产品或系统,能够不断为企业和客户创造价值,这是所有软件架构师必须担当的一项首要职责、艰巨任务。当然,这又是一个相当复杂的、涉及到科学、工程、艺术、社会人际关系和公司政治等多方面因素的权衡问题。 

敏捷、迭代与演进(Agile Iterative Evolution)


高质量的、好的软件架构从来都不是一蹴而就的。把一个项目切分成 5 个连续阶段,通过 需求阶段 完成需求分析, 设计阶段 完成概要设计和详细设计, 实现阶段 完成程序编码, 测试阶段 完成系统测试, 部署阶段 完成安装部署,这种传统的、错误的线性开发思维违背了软件开发的复杂现实,成为导致国内外大量软件开发项目失败的主要杀手。 

我们应该避免采用这种高风险的传统瀑布式开发流程,转为采用迭代递增、演进的方式来设计和发展软件架构,这是过去 30 多年来世界软件工程界以及软件架构师们学到的最宝贵经验之一。 

开发出敏捷、灵活、柔性,易于适应变化,能够不断地满足客户需求,不断地为企业创造利润,以及便于维护、扩展和升级的软件架构,需要优良、合理、高效的软件开发工艺流程的支撑。实现这一目标并非超乎现实的幻想,过去 20 年来世界上的领导企业和软件开发机构已经为我们提供了大量系统、架构、框架和平台的成功开发案例。 

软件架构师应该与项目经理、团队成员们一道为自己的团队挑选、定制一种适用的软件开发过程。敏捷迭代开发要求软件架构师通过软件开发的迭代、演进周期,把握好前馈与反馈、前构与重构的平衡,不断地利用编码、集成、运行、测试以及与用户、客户的沟通等活动来验证软件架构的设计思路、解决方案的正确性和有效性,从而最大限度地降低架构开发风险。 

前构与重构(Prefactoring over Refactoring)

这篇关于架构师心目中的关键词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/567443

相关文章

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

系统架构师-ERP+集成

ERP   集成平台end:就懒得画新的页

zblog自定义关键词和描述,zblog做seo优化必备插件

zblog自定义关键词和描述,zblog做seo优化必备插件     首先说下用到的一款插件:CustomMeta自定义数据字段 ,我们这里用到的版本是1.1,1.1+版增加了列表页标签支持!     插件介绍:文章,分类等添加自定义数据字段。1.1+版适用于 Z-Blog 2.0 B2以上版本。     在zblog2.0beta1里面,这个插件是集成到了程序里面,beta2里面默认没有了

一个统计文件中关键词数量的小程序-优化版本

public class computeWxxFileNum{public static void main(String[] args) throws IOException {//读文件File sourceFile = new File("e:\\55-tmp\\xxx.log");FileReader in = new FileReader(sourceFile); LineNumber

一个统计文件中关键词数量的小程序

public class computeFileNum{public static void main(String[] args) throws IOException {File sourceFile = new File("e:\\55-tmp\\xxx.log"); FileReader in = new FileReader(sourceFile); LineNumberReader

系统架构师考试学习笔记第三篇——架构设计高级知识(19)嵌入式系统架构设计理论与实践

本章考点:         第19课时主要学习嵌入式系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分)。在历年考试中,案例题对该部分内容都有固定考查,综合知识选择题目中有固定分值的考查。本课时内容侧重于对知识点的记忆、理解和应用,按照以往的出题规律,嵌入式系统架构设计基础知识点基本来源于教材内。本课时知识架构如图19.1所示。 一、嵌入式系统发展历程

系统架构师考试学习笔记第三篇——架构设计高级知识(18)面向服务架构设计理论与实践

本章考点:         第18课时主要学习面向服务架构设计理论与实践。根据考试大纲,本课时知识点会涉及单选题型(约占2~5分)和案例题(25分),本课时内容偏重于方法的掌握和应用,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,概念知识的考查内容多数来源于实际应用,还需要灵活运用相关知识点。         本课时知识架构如图18.1所示。 一、SOA的相关概念 (

【网络安全 | 甲方建设】开发、测试、部署关键词详解

原创文章,不得转载。 文章目录 需求与开发原生需求重构新增服务调用 测试与覆盖率单元测试增量代码单测UT覆盖率CR前覆盖率APP回归测试回归测试自动化冒烟 部署与环境Stable环境部署待部署服务名称代码分支待部署代码分支PR链接灰度发布蓝绿发布Canary发布热修复(Hotfix)Mock环境Redis非Cluster模式Nacos变更 持续集成与交付持续集成(CI)持续交付(C

影响关键词排名稳定的因素有哪些?

网站上线了很久关键词还是没有出现排名,很多站长都非常关心这个问题,为什么我正常优化的网站就是没有排名呢?下面,曾庆平SEO为大家分析一下影响关键词排名的因素有哪些,快看一下自己的网站是不是出现了以下问题。 一、网站内部结构 首先网站一定要充分考虑两个方面,一个是用户,一个就是搜索引擎。 (1)用户喜欢什么样的网站?网站主题是不是够明确?用户在进入网站后如果在几秒内看不懂网站的主题就会退