Chapter 1: What is Software Architecture?
第一章:什么是软件架构?
What is Software Architecture?
什么是软件架构?
Software application architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability. It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application.
软件应用架构是定义一个结构化解决方案的过程。该方案满足所有技术以及运行相关的需求,同时优化通用质量属性,诸如性能,安全,以及可管理性。软件应用架构包含一系列基于广泛因素之上的决策,其中任何一个决策都对该应用的质量,性能,可管理性,以及整体上的成功有一定的影响。
Philippe Kruchten, Grady Booch, Kurt Bittner, and Rich Reitman derived and refined a definition of architecture based on work by Mary Shaw and David Garlan (Shaw and Garlan 1996). Their definition is:
Philippe Kruchten, Grady Booch, Kurt Bittner, 和 Rich Reitman 沿用并改进了Mary Shaw 和 David Garlan (Shaw and Garlan 1996) 对架构的定义,如下所示:
“Software architecture encompasses the set of significant decisions about the organization of a software system including the selection of the structural elements and their interfaces by which the system is composed; behavior as specified in collaboration among those elements; composition of these structural and behavioral elements into larger subsystems; and an architectural style that guides this organization. Software architecture also involves functionality, usability, resilience, performance, reuse, comprehensibility, economic and technology constraints, tradeoffs and aesthetic concerns.”
“软件架构包含一组有关一个软件系统的组织的重要决策, 包括组成该系统的结构化元素及其接口的选择;元素间彼此合作的确定行为;结构化和行为化元素在较大子系统中的编排;以及一个用于指导此组织的架构风格。软件架构也包括功能性,可用性,适应性,性能,复用,可理解性,经济以及技术上的约束,权衡,还有美学上的考虑。
In Patterns of Enterprise Application Architecture, Martin Fowler outlines some common recurring themes when explaining architecture. He identifies these themes as:
在企业应用架构模式一书中,Martin Fowler在解释架构的时候列出了一些重新出现的常见主题。他认为这些主题有:
“The highest-level breakdown of a system into its parts; the decisions that are hard to change; there are multiple architectures in a system; what is architecturally significant can change over a syste***ifetime; and, in the end, architecture boils down to whatever the important stuff is.”
[http://www.pearsonhighered.com/educator/academic/product/0,3110,0321127420,00.html]
“最高层次上系统的分散;难以更改的决策;一个系统中有多个架构;架构上可影响系统生命周期的重要因素;最后,简而言之,架构十分重要。”
In Software Architecture in Practice (2nd edition), Bass, Clements, and Kazman define architecture as follows:
在软件架构实践(第二版)一书中,Bass, Clements, 和 Kazman 定义架构为:
“The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. Architecture is concerned with the public side of interfaces; private details of elements—details having to do solely with internal implementation—are not architectural.”
[http://www.pearsonhighered.com/educator/academic/product/0,4096,0321154959,00.html]
“一个程序或者计算机系统的软件架构是该系统的一个或者多个结构,这些结构包含了多个软件元素,这些元素对外部可视的属性,以及元素彼此间的关系。架构关系到公开的接口;元素的私有细节——那些完全关于内部实现的细节——则与架构无关。”
第一章:什么是软件架构?
What is Software Architecture?
什么是软件架构?
Software application architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability. It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application.
软件应用架构是定义一个结构化解决方案的过程。该方案满足所有技术以及运行相关的需求,同时优化通用质量属性,诸如性能,安全,以及可管理性。软件应用架构包含一系列基于广泛因素之上的决策,其中任何一个决策都对该应用的质量,性能,可管理性,以及整体上的成功有一定的影响。
Philippe Kruchten, Grady Booch, Kurt Bittner, and Rich Reitman derived and refined a definition of architecture based on work by Mary Shaw and David Garlan (Shaw and Garlan 1996). Their definition is:
Philippe Kruchten, Grady Booch, Kurt Bittner, 和 Rich Reitman 沿用并改进了Mary Shaw 和 David Garlan (Shaw and Garlan 1996) 对架构的定义,如下所示:
“Software architecture encompasses the set of significant decisions about the organization of a software system including the selection of the structural elements and their interfaces by which the system is composed; behavior as specified in collaboration among those elements; composition of these structural and behavioral elements into larger subsystems; and an architectural style that guides this organization. Software architecture also involves functionality, usability, resilience, performance, reuse, comprehensibility, economic and technology constraints, tradeoffs and aesthetic concerns.”
“软件架构包含一组有关一个软件系统的组织的重要决策, 包括组成该系统的结构化元素及其接口的选择;元素间彼此合作的确定行为;结构化和行为化元素在较大子系统中的编排;以及一个用于指导此组织的架构风格。软件架构也包括功能性,可用性,适应性,性能,复用,可理解性,经济以及技术上的约束,权衡,还有美学上的考虑。
In Patterns of Enterprise Application Architecture, Martin Fowler outlines some common recurring themes when explaining architecture. He identifies these themes as:
在企业应用架构模式一书中,Martin Fowler在解释架构的时候列出了一些重新出现的常见主题。他认为这些主题有:
“The highest-level breakdown of a system into its parts; the decisions that are hard to change; there are multiple architectures in a system; what is architecturally significant can change over a syste***ifetime; and, in the end, architecture boils down to whatever the important stuff is.”
[http://www.pearsonhighered.com/educator/academic/product/0,3110,0321127420,00.html]
“最高层次上系统的分散;难以更改的决策;一个系统中有多个架构;架构上可影响系统生命周期的重要因素;最后,简而言之,架构十分重要。”
In Software Architecture in Practice (2nd edition), Bass, Clements, and Kazman define architecture as follows:
在软件架构实践(第二版)一书中,Bass, Clements, 和 Kazman 定义架构为:
“The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. Architecture is concerned with the public side of interfaces; private details of elements—details having to do solely with internal implementation—are not architectural.”
[http://www.pearsonhighered.com/educator/academic/product/0,4096,0321154959,00.html]
“一个程序或者计算机系统的软件架构是该系统的一个或者多个结构,这些结构包含了多个软件元素,这些元素对外部可视的属性,以及元素彼此间的关系。架构关系到公开的接口;元素的私有细节——那些完全关于内部实现的细节——则与架构无关。”