软件架构可能不是你想象的那个样子
旺道跨圈推广 -> 最新发布
文章图片1

软件架构在敏捷社区中存在争议。在许多人的经验中,架构只会导致毫无价值的会议和无关紧要的文件,“地图不是领土”的说法可以恰当地概括这一观点。然而,架构不佳的应用程序很快就会变得像被遗弃在路边的车辆一样,破损且无法修复。那么,在毫无意义的两极之间是否有一个有用的中间地带呢?


产生这个问题的一部分原因是,对于软件系统架构工作的成果来说,建筑设计是一个不恰当的比喻。对照建筑设计师的工作,这个词会让人联想到预示着乌托邦式美好未来的设计。但是,软件系统的架构远比建筑架构更富于变化。建筑物是静态的,建筑设计师的工作只做一次。软件,就其本质而言,是不断变化的、动态的;当它停止变化时,就开始走向死亡了。


为了更好地理解软件架构,我们有必要追溯下建筑师(architect)这个词的起源。它来自于古希腊词 arkitekton,即ἀρχι-(arkhi-,“chief”)+ τέκτων(téktōn,“builder”)。建筑是由建造东西的人创造的。在建筑设计师的工作中,这种意义已经消失了。他们中的许多人从未浇筑过地基,也没有为建筑物搭过框架,更没有安装过水管或暖气管。设计和建造已经被分开了。但在软件领域却不是这样,构建方式会影响到构建内容,反之亦然。

软件架构关乎决策,而非结构

以建筑物作类比导致一些软件架构师过于关注结构和行为,而不是产生这些结构和行为的决策。这并不是说结构和行为不重要,而是它们是思想过程的结果。如果系统要随着时间的推移持续演进,就必须保留这个思想过程。知道某人为什么做某事与知道他们做了什么同样重要。如果代码组织得很好并且有注释的话,那么它们所做的事情应该很容易从代码中看出来,但是为什么要这样做却常常被忽略。


其原因是,软件的架构决策很少是一目了然的;几乎每一个架构决策都是在相互竞争的备选方案之间做出妥协。而且,有一些备选方案,如果你不尝试一下,看看它们是如何工作的,就很难看出它们的优点。知道试过什么,放弃了什么,往往比知道什么有效更有价值。有句老话说得好,好的判断来自于经验,而大部分的经验来自于坏的判断。


这也是为什么软件架构师必须仍然是开发人员的原因之一;如果不开发和测试一些东西,他们就无法理解或预测系统中的影响因素。软件架构师不应该作为某种酬金,付给那些已经从活跃的开发中退出,但拥有的知识被组织认为仍然有价值的人;它的意义应该不止于此。架构工作需要对系统有足够的了解,以便能够提出有益于质量属性的假设,还需要有编写代码和设计测试以评估假设的专业知识(或与能够评估这些假设的团队成员紧密合作)。

架构是一项技能,而架构师不是一种角色

事实上,就工作性质而言,使用像软件架构师这样的头衔传达了错误的信息。现实情况是,很多软件开发人员都在做架构工作,只是他们没有意识到这一点。只要他们对如何满足质量属性做出决策,就会影响到系统的架构。充分了解背后的决策如何影响系统实现质量目标的能力,是改进系统架构的第一步。


那么,人们需要掌握什么样的技能来提高其架构工作的质量呢?有以下几个方面:

  • 多关注质量属性,这是好的架构应该解决的关键的横切(cross-cutting)需求。功能需求很容易受到团队关注,因为它们往往是有形的,甚至是系统帮其用户做的一些肉眼可见的事情。但是,系统的质量属性决定了它是否能长期存在下去,如可扩展性、性能、安全性、承载能力和可维护性,等等。
  • 有能力将整个系统的问题概念化并加以解决。质量属性往往是由能影响整个系统而不是仅仅影响某个部分的因素决定的。虽然模块化设计和关注点分离对构建良好的系统至关重要,但它们也使团队成员更难对系统有一个整体的认识。
  • 理解系统的完整生命周期。这就要求我们不仅要有开发系统的经验,还要有测试系统、部署系统、在生产环境中运行系统、长期维护系统的经验,以及在系统需要重大创新时对其进行实质性的现代化改造。了解系统的生命周期以及它如何应对变化,对于做出明智的决策,限制技术债务至关重要,因为随着时间的推移,技术债务会威胁到系统的生存。
  • 平衡关切以及调和折中的能力。架构工作很少会有正确答案。架构经常涉及到在相互冲突的质量属性要求(QAR)和约束条件之间做出权衡。
  • 从经验中学习和合成新方法的能力。这种能力是指直接进行尝试(运行实验),并将实验结果概括为可以进一步指导实验的原则。其中一些原则采取了“标准”形式。这个术语有点误导性,因为标准需要不断地通过实验来检验,以确定它们何时不再有用。我们看到,许多开发人员对组织的“标准”感到沮丧,因为它们在过去某个时候是有意义的,但现在却把团队困在了过去。
  • 展示领导力的能力。能够提出关注点,能够让持有不同观点的人展开讨论并达成共识,这有助于团队面对并克服复杂的架构问题。团队中的任何人都可以这样做,而任何负责架构设计的人都必须做到这一点。

架构意味着持续探索

现代软件应用程序架构设计是一项基础性的探索活动。现如今,构建应用程序的团队每天都会遇到新的挑战:前所未有的技术挑战,以及为客户提供解决新问题和其他各种问题的新方法。这种持续性的探索意味着架构不能根据过去的经验预先确定;团队必须找到满足质量要求的新方法。


关于探索对于架构发现的重要性,请考虑这样一个例子:假设你是一个从事软件系统开发工作的团队的一员。根据最初的设计,该系统是为了处理存储在 SQL 数据库中的结构化表格数据。现在,这个系统需要增强,以便可以处理非结构化数据,包括图像和视频,而且数据量预计会比系统目前处理的多得多。你考虑在技术栈中引入 NoSQL 数据库来处理新的数据类型,但由于你的团队在这项技术上没有多少经验,所以要选择合适的数据库产品,进行配置并满足新的数据量要求,实验必不可少。


在团队解决这些技术问题的过程中,关于哪些方法能最好地满足所期望的 QAR,他们形成了自己的假设,这些假设会随着时间变化。他们构建一部分解决方案来检验这些假设,并根据结果做出决策。这些关于如何满足 QAR 的决策叠加起来就是系统的架构。团队可能会以不同的方式沟通这些决策,包括使用文档和图表。但是,文档和图表不是架构,重要的是决策以及做出决策的原因。


关于这些决策,以下信息很重要:

  • 如果有必要的话,说明推翻一项决策的成本。如果你必须更换一个服务、一个 DBMS、甚至一个框架,那么要知道更换的代价有多大。在某些情况下,这可能意味着重写应用程序。
  • 清楚地阐明所有限制或假设。了解使用约束和假设可能会帮助到将来要对你的工作进行更新的团队。例如,知道你做了并发用户个数不超过 X 的假设,并导致你对并发线程或进程做出某些决定,这有助于你未来的同事了解,如果超过这个约束,他们可能需要做出什么改变。
  • 你是如何满足具体的质量属性要求(QAR)的。对于每个 QAR,你应该描述你做了什么来确保它可以得到满足,不仅仅是在理论上,还要说明你运行了什么测试来证明。链接到具体的测试用例及其相关的自动测试。这样,当 QAR 发生变化时,就能够很容易地重新评估系统的架构质量。
  • 在做出决策之前,你考虑过哪些选项。知道你考虑了什么以及放弃了什么,往往比知道你最终的决策更有用;它展示了你的思考过程,其他人可以从中看出你做决定时可能受到了什么样的限制。如果这些限制将来消失了,那么知道你为什么做出某些决策将有助于未来的开发者做出更好的决策。


文章图片2


图 1:QAR、决策和技术债务的关系

  • 在知情的情况下产生了哪些技术债务。有些决策将不可避免地导致技术债务;例如,使用 SQL 数据库来满足可靠性目标的决策会对技术债务有一些副作用(见图 1)。现在,早已成为过去式的“千年虫问题”就源于开发人员当时有意识的决策。为了减少了数据存储、内存使用和处理时间,他们在存储标准日期时没有存储世纪数据。产生这个问题的原因是,他们没有想到应用程序会存在这么久,在那些限制不合时宜之后还存在很长时间。如果他们能更准确地传达他们的决策并描述潜在的影响,可能人们就不会在上个世纪末出现如此强烈的反应。

小结

作为一门学科,软件架构需要做出彻底的改变。人们对它的看法受制于很多关于它需要解决什么问题以及它应该如何去解决这些问题的旧观念。将软件架构视为一项持续性活动,致力于做出关于系统如何满足质量属性的假设,然后通过实证来证明系统能满足这些属性,这是软件架构持续性方法的根本所在。同样需要改变的是,将软件架构从与开发脱节的委员会中分离出来,交到能够真正实现并使其变成可执行程序的人(开发人员)手中。只有这样,我们才能从如今的应用中获得我们需要的弹性和可持续性。


作者简介:

Pierre Pureur 是一位经验丰富的软件架构师,拥有广泛的创新和应用开发背景,和金融服务行业有广泛的接触,拥有广泛的咨询经验和全面的技术基础知识。他过去曾担任一家大型金融服务公司的首席企业架构师,领导大型架构团队,管理大规模并发应用开发项目,指导创新举措,以及制定战略和商业计划。他与人合著了“Continuous Architecture in Practic”(2021)和“Continuous Architecture”(2015)。他还就这一主题发表了许多文章,并在多个软件架构大会上发表演讲。


Kurt Bittner 有超过 30 年在反馈驱动的短周期内交付可工作软件的经验。他曾帮助各种组织采用敏捷软件交付实践,包括大型银行、保险、制造和零售组织,以及大型政府机构。他曾为甲骨文、惠普、IBM 和微软等大型软件交付机构工作或与之合作,并曾担任 Forrester Research 的科技行业分析师。他的主要工作是帮助企业建立强大的、自组织的高效团队,提供客户喜爱的解决方案。他写了四本软件开发主题相关的著作,其中包括 The Nexus Framework for Scaling Scrum。他在科罗拉多州博尔德市工作,担任 Scrum.org 的企业解决方案副总裁。


原文链接:

Software Architecture: It Might Not Be What You Think It Is

教育培训机构-如何策划节日招生?
做教育培训,最重要的事情莫过于招生了。面对不同的学员,招生方…于招生。目标不同,活动策划也会不一样。② 活动主题要鲜明不仅主题要鲜明,主题之间要有连续性。就像看连续剧一样,一集接一集,一环扣一环。策划好一系列活动,一个接一个来,从多个角度延续活动的宣传,突出主题,引起关注度。常用的招生方式有:体验课招…-------------想要获得更多运营技巧、doc文案,
教育培训:如何提高满班率和续班率
什么是满班率?就是实际人数除以计划招生人数,这个值就是满班率…员有流失是正常的,但要保证一个概率。在保障老学员续期的基础上,我们也要大胆创新,开设网络课程,拓宽招生区域。实地课程录制后,进一步发行到商弈云课上,通过商弈云课系统转成真实流量,网上有人点击观看,点赞,可以按点播量分佣金。助你在日常的营销推…-----------------------想要获得更多运
培训机构难盈利的问题出在哪里,如何实现盈利?
竞争白热化实地培训班、托管辅导班竞争白热化了,利润越来越稀薄…现没有多少盈利。还有一部分负责人在刚招生时,掌握了不少资金,开始盲目扩张,盲目做课程推广,以期待获得更多生源和收费,从而使培训班陷入了这种恶性循环的陷阱里。其实这些到手的钱,并不是你的利润,而是你未来要支出的钱。如遇到行业快速发展时期,或者…-----想要获得更多运营技巧、doc文件,请“关注”并“转
“差异化”经营是网络培训赚钱的关键所在
“差异化经营”这个词,相信大多数人都耳熟能详,但要做到的却是…。在现有的基础上更新升级或者资源整合就是对现有的产品或者技术,进行升级版本,或者通过一些资源整合,成一个项目。你的技能以前是用来生产或制造产品,现在是把技能升级成知识培训,转换云课堂。直白一点就是可以让老师自行录好课程并上传到学校的商弈云课…在着缺点和不足之处。在创新改革时,要从功能、服务、价格等方面
教育培训行业是如何运作的?
以前读书时,学校附近有个小摊卖鸡蛋灌饼。刚开始的时候只有一家….%,剩下的一对一和多人大班其实市场份额都很小。家长报培训班,是希望孩子能够学到知识。老师通过课上教学和课后辅导来满足孩子的需求,达到成绩提高的目标。我见过上百人的大培训班,为什么一个班这么多人?因为是名师讲课,但人太多坐后面,基本听不到重…是你的核心竞争力。想要得到用户的认同,你就必须做到产品质量好
旺道:实体店怎么做网络营销?
年纪大了,体力不好了,便赚不了什么钱了。所以,一定要在年轻的…写文案都是非常头痛的事情,那么下面我会给大家提供一个解决方案。在互联网营销系统里面有很多细节营销,软文营销就是其中一种,但好多小白头痛写文章,所以可以用这个方法也一样可以植入广告语,或者是图片广告,轮显切换广告,使用 旺道营销系统,也就是每…以帮你吸引海量精准粉丝。有了粉丝,你通过广告、产品、服务就可
旺道:圈里圈外,铁饭碗距离瓷饭碗究竟有多远?
中国人爱混圈子,从线下一直混到线上,各种奇形怪状的圈子勾勒出…不能推则敷衍了事,盼着混到主任科员退休;一种是老黄牛式,踏踏实实、兢兢业业工作,但拙于人际关系,活干得最多,但依旧不见晋升迹象;还有一种是提线木偶式,你扯一下线他动一下,好像脑子和身体是分离的。我突然一拍脑袋,这是提前衰老的迹象啊,工作内容…即使选择留在铁饭碗圈里,也应保有随时离开的思想警惕和进行必要
旺道:微信要双开了,朋友圈推广更好做了
现在手机只能登一个微信,如两个,三个微信的小伙伴们就只能退出…动推广工具、 设置头像点击头像图标,点“+”选择图片,可以上传你的企业,个人头像,产品服务等。旺道微信朋友圈广告免费朋友圈广告-旺道、 设置推广主题点“广告”,再点“+”设置推广的主题(类别),填好中文主题,以及你的网址。教你不花一分钱做朋…简直就是一劳永逸哟。如果你点开发布的文章看不到广告,那就是你
旺道:如何能让网站多个关键词排名百度首页?
最近接了一个单,做婴儿游泳馆加盟的。优化推广范围是全国,但是…泳馆加盟哪家好”、“婴儿游泳加盟多少钱”这类与我息息相关的词。如何能让网站多个关键词排名百度首页?但客户并不认同,客户说这个词指数低,或者说搜的人不多。是,这是一方面原因。但是,指数低有什么关系,你是卖产品还是卖指数。搜的人不多有什么关系,…实现广告效果最大化,来满足大众化的广告需求。对于这样的四两拔
旺道:如何成为网络营销达人?这个技能帮你节省80%的时间
在某次名师讲坛上,听到了一个让人警醒的故事。说有个村子缺水,…准的产品。现在已经不是新鲜事物,好多企业因为百度竞价的高额费用,头疼不已,所以做网站关键词优化排名,成为了企业必选的推广项目。做优化也要做到有成效,不然就是一分钱也是昂贵的。用 旺道智能机器人 就可以持续代替人工去做,它非常聪明,只要你够耐…手,设备先进,你多努力奔跑也于事无补。简单说,要去一个地方,

此文章来源来互联网,如果你有任何版权冲突,可以联络我们,微信号:WANCOME,QQ:1444641。加我们时,请说明来意,我们将优先处理你的问题。




旺道商弈  | 圈广告  | 一键推  | 圈推广  | 圈营销  | 圈推广  | 跨圈推
粤ICP备10213132号
旺道商标注册证号:8608864
Copyright © 2016 环企网络信息科技有限公司 版权所有