软件架构阅读笔记02

软件架构师的工作内容是什么?

软件架构从一组要求开始。这些要求的表达形式可能是图表、流程图、模型或记录的软件必须执行的操作任务列表。通常,客户或合作伙伴还会表达一些不太精确的要求,如外观或某些用户界面执行常见任务应采取的方式。此外,这些要求还必须包含新软件将与之连接的现有软件、系统、硬件和网络的相关信息;以及部署和维护计划等其他因素,当然还包括项目的可用预算。

软件架构师必须考虑客户的需求。不过,“客户”这一常用语通常包含三个相互冲突的职责领域:业务要求、用户要求及系统要求。业务要求通常定义一系列因素,如业务流程、性能因素(如安全性、可靠性和吞吐量)以及预算和成本限制。用户要求包括软件的界面设计、操作功能和易用性。系统要求包括硬件、网络和运行时环境功能和限制。图 1 显示了上述不同要求的不同之处,因此架构师必须设法实现一款适合重叠区域的设计。


图 1 — 典型客户的相互冲突的要求

软件架构师都有各自的方法,用来收集和分析要求并定义相应的体系结构。不过,他们通常需要回答的问题包括“用户将如何使用应用程序?”,“如何将应用程序部署到生产中并加以管理?”,“应用程序有哪些质量特性要求(如安全性、性能、并发性、国际化和配置)?”,“如何设计灵活并可随时间推移加以维护的应用程序?”,以及“有哪些架构趋势可能会在目前或应用程序部署后对应用程序产生影响?”

最后一个问题既有趣又很重要。优秀的软件设计不仅能在目前满足客户要求,而且在可预见的将来也能如此。这会影响架构师必须作出的以下相关决策:硬件、组件、框架、运行时平台、管理软件系统及软件中内置或软件必须与之集成的众多其他功能。

与软件设计和开发领域的多数任务一样,设计体系结构既是一个前期过程,又是一个迭代过程。许多初始任务(如要求分析、技术研究及目标确定)通常在流程开始时进行。下一步是确定设计的关键方案。这些就是软件必须满足的基本要求及软件必须在其中运行的限制。架构师可以通过这些信息生成应用程序的概述。此概述包括高层次的细节,如应用程序类型(Web、手机、桌面或云),部署体系结构(通常是一种分层设计,其组件通过硬件和网络边界通信),需要遵循的适当体系结构风格(如 n 层、客户端服务器或面向服务),以及最适合相关方案的实现技术。

自此,架构师可以开始生成候选设计,满足之前确定的高层次要求和最重要的要求。然后会针对关键方案对该设计进行审查和测试,通常会结合客户提供的反馈及试用或测试版本,以确保提供最佳解决方案。这在首次迭代过程中是不可能的,但随着这个循环过程的反复进行,设计将集中于要求和关键方案。图 2 显示了这种迭代方法。


图 2 — 迭代体系结构设计过程

随着设计变得更为精细,并确定了单个任务和组件,架构师就可以在每个阶段进一步完善和补充细节。例如,确定体系结构风格和部署方法后,架构师即可作出分层和组件之间通信的相关决策。这可能涉及根据目前和将来的要求选择协议,并预先考虑到即将发布的标准中定义的新技术和功能。

架构师工作的最终产品通常是一组从几个方面定义应用程序的图表、模型及文档,以便在结合使用时为开发人员、测试团队、管理员和管理人员提供实现该设计所需的所有信息。此类信息将说明各个组成部分及应用层的结构和布局;日志记录和验证等交叉关注点的处理方式;测试和部署计划;以及为开发人员、管理员和支持人员提供帮助的文档。

此外,最终设计还必须规定应用程序必须满足的质量特性。这些都是架构师与客户商讨后经过深思熟虑并权衡再三后的结果。其中包括安全要求的定义及安全实现计划,在目标平台上部署时所需的可伸缩性及性能,实现可维护性和可扩展性的方式,以及实现与其他系统的互操作性的功能。

软件架构师需要具备哪些技能?

显而易见,软件架构师必须具备各种软、硬技能。在要求分析和审查阶段,架构师必须与客户合作,与合作伙伴及其他团队成员磋商,并充当经理、用户和系统管理员之间的“中间人”。擅长这些软技能可产生更好的初始计划及一组更准确的要求,从而在以后节省时间和精力。

此外,软件架构师必须具备必需的硬技能,以了解现代软件系统、框架和硬件如何为相关要求提供支持;网络和操作系统因素如何影响设计决策;以及这些领域的趋势和变化如何对设计产生影响。在进行初始要求分析后,软件架构师还必须运用设计模式、通信和消息传送标准、代码功能、安全问题和性能限制方面的硬技能。这一切都要求熟练掌握将用来实现最终软件的各种技术。

当然,软件体系结构还需要会构想。能够看到系统如何结合在一起并进行交互操作,如何对系统进行分区和部署,系统如何与用户交互通常只有在架构师可以在头脑中看到整体解决方案时才能确定。这需要一种组织化的方法和对细节的大量关注,以整理和理解所有的要求和限制,并在流畅而全面的技术设计中逐渐转化这些要求和限制。不过,还需要具备天分和想像力才能直观呈现最终结果,然后通过有条不紊的工作努力实现理想的解决方案。

原文地址:https://www.cnblogs.com/z245894546/p/11003774.html