什么是软件体系结构?
软件体系结构过程涉及获得并分析客户要求,然后生成能满足客户需求的软件设计。成功的软件设计必须平衡因相互冲突的要求而产生的必然取舍,遵循设计原则和不断变化的良好实践技术;并完善现代硬件、网络和管理系统。强大的软件体系结构涉及大量的理论和实践课题经验,以及将看似模糊的业务方案和要求转换为扎实、实用的工作设计所需的构想。
软件体系结构包括定义能满足所有技术和业务要求的结构化解决方案,同时优化性能、安全性和可管理性等常见的质量特性。它需要根据各种因素作出一系列决策,而每项决策都会对软件的质量、性能、可维护性和全面成功产生相当大的影响。
现代软件很少是相互独立的。至少在多数情况下,它会与数据源(如公开软件用户使用的信息的企业数据库)交互。通常,现代软件还必须与其他服务和网络功能交互,以执行身份验证、获取和发布信息,并提供整合的用户体验。没有适当的体系结构,软件可能很难(甚至无法)部署、操作、维护并与其他系统成功集成,且无法满足用户要求。
我们可以将软件体系结构看作一款软件必须实现的目标与作为代码的实现细节之间的映射。将体系结构合理化可确保要求和结果之间的最佳匹配。架构合理的软件将在最初要求的参数内执行指定的任务,并以最大限度提高性能、安全性、可靠性及众多其他因素的方式来实现此目标。
在最高级别,体系结构设计应公开系统结构,但隐藏实现细节;实现所有用例和方案;设法解决所有利益相关者的要求;并尽可能满足所有功能和质量要求。
软件体系结构为何重要?
随着用户对其应用程序的期望不断提高,对现代软件的要求也日益复杂。简单的独立式桌面应用程序在大多数业务和商业应用情景中已不再能完全满足需求。在我们的互连世界里,应用程序必须与其他应用程序和服务交互,并在云等多种环境中以及在便携式设备上运行。过去常见的整体式设计已被组件化、面向服务的软件所取代,后者使用框架、操作系统、运行时主机和网络来实现几年前闻所未闻的功能。
这种复杂性不仅会影响设计,还会影响软件的部署、维护和管理。软件的总拥有成本 (TCO) 目前主要是由部署后成本组成。架构良好的应用程序能够减少部署应用程序所需的成本和时间,从而最大限度地降低 TCO,同时使应用程序持续运行,根据不断变化的要求更新应用程序并解决问题。它还将简化用户支持和管理。
为了取得成功,软件还必须满足几项关键标准。它必须提供安全性,使应用程序及其数据不受恶意攻击和意外错误的损害。它必须稳定可靠,从而尽可能减少故障和相关成本。它必须在所需参数内执行以满足客户需求,如最长响应时间或特定的工作负载能力。软件必须易于维护,以尽可能降低管理和支持成本;还必须具有足够的可扩展性,以顾及随时间推移而必然需要进行的更改和升级。
上述所有因素都涉及某些取舍。例如,通过复杂加密实现最安全的机制将会影响性能。实现范围广泛的配置和升级选项又会使部署和管理更加复杂。此外,设计越复杂,实现起来所需的成本也越高。优秀的体系结构将力求平衡上述因素,针对特定方案产生最佳结果。