技术开发 频道

什么是软件架构?

    一个架构呈现在每一个系统中 

    每个系统都有一个架构,即使这个架构没有被文档化,或者如果系统非常简单且包含单一元素。对架构文档化很有价值。文档化的架构比没有的考虑的更周全——因此也更有效,所以根据架构的进程可以更细致的考虑。

    相反地,如果架构没有文档化,那么很困难来证明满足了诸如可维护性,非常好的适应性等的需求。似乎大部分现今存在的无文档的架构都有些随意性而不是目的性。

    一个架构拥有一个特定的范围

    有许许多多种架构,最著名的是与建筑和其他工程相关的。甚至在软件工程领域,我们经常会遇到不同形式的架构。例如,除了软件构架的概念,我们会遇到诸如企业架构,系统架构,组织架构,信息架构,硬件架构,应用架构,基础设施架构等。你会见到其他类型的,每种类型都定义了一个架构的具体范围。

    不幸的是,产业界没有相互形式间的协定,所以导致了对同一形式的不同意思。但是,从图3中可以推断出这些形式的范围。当你们在考虑和讨论下面这张图的时候,你肯定会发现很多你不同意的元素或是在你们的组织中不同的使用方法。但是重要的是——这些形式的确存在,却没有一致的观点。

      图3:不同领域的范围

    图3展示的元素有:

    软件架构——这篇文章主要的关注点。
    硬件架构——包括CPU, 内存,硬盘,周边设备例如打印机,与连接这些元素的部分。
    组织架构——是一些关于商业进程,组织结构,规则和职责,与组织核心能力的部分。
    信息架构——包含组织好的信息结构。
    软件架构,硬件架构,组织架构和信息架构是全部系统架构的子结构。 企业架构,与系统架构很相似,包括硬件,软件,人员等。但是,企业架构与商业有很强的联系,因为它专注于商业对象的联系,专注于商业敏捷性和组织效率。企业架构可能穿插于公司间。
   
    正像人们期盼的那样,有相应形式的架构师(例如软硬件架构师等)和架构(例如,软硬件架构等)。
 
    现在我们已浏览过这些定义了,但还有很多未回答的问题。企业架构与系统架构间有什么不同?一个企业是一个系统?信息架构与数据集成软件应用中的数据架构是一样的?不幸的是,没有对这些问题的一致的答案。

    对现在来说,你会意识到这些不同,但是产业界不存在对这些内容的一致定义。因此,对你的建议只是选择那些与你的组成相似的形式并且合适的定义他们。至少你会获得某些一致性,并减少错误传达的可能。

    总结

    这篇文章关注于定义软件架构的核心特性。

    感谢

    这篇文章的内容来源于一本即将出版的新书,暂时叫做“软件架构建立过程”。最后,我衷心的感谢对内容提出宝贵意见的人们,他们是Grady Booch,Dave Braines,Alan Brown,Mark Dickson,Holger Heuss,Kelli Houston,Luan Doan-Minh,Philippe Kruchten,Nick Rozanski,Dave Williams,和Eoin Woods。

0
相关文章