架构类型

经常听到系统架构、软件架构、信息架构、数据架构等等,那么怎么去区分这些概念呢?

 

附录

http://www.codingthearchitecture.com/pages/book/types-of-architecture.html

Types of architecture

Treat enterprise architectures with a pinch of salt

Architecture applies to various aspects of software systems development, understandably so given its generic and flexible terms of reference. The classification of an architecture into a particular type may be obvious from its context and is, arguably, irrelevant to its success. Nonetheless, it can be useful to have an understanding of the breadth of the discipline - it may also help to put the subject of these essays into perspective.

Consider the various types of architecture that the IASA Glossary lists:

  • Application
  • Business
  • Data
  • Enterprise
  • Hardware
  • Information
  • Infrastructure
  • Network
  • Platform
  • Performance
  • Security
  • Software
  • Solution
  • System
  • Technical
  • Technology
  • Web

We won't delve too deeply into the definitions provided for each of these here but it suffices to say that they refer to each other, overlap greatly, create cyclic dependencies and are subjective in places. This is probably a fair reflection of how the term "architecture" is understood within the industry, albeit with the added complication of people not necessarily agreeing on which words to use for each term. The IASA terms offer valuable insight but are perhaps a little overwhelming as a starting point and don't (yet) offer a lingua franca for the discipline.

Within the field of software development, several forms of "architecture" are commonly referred to and, as such, form a good basis for a more philosophical consideration of what "architecture" might mean. Since they are perhaps the more universally used and provide good coverage of the information systems domain we'll explore them further and use them as a basis for our terminology.

Technical Architecture

The term "technical architecture" is a common first attempt to describe architecture but without the need to be specific about what type of architecture you're referring to. Therein lies a failing when using this term: it is too unspecific to be particularly meaningful when discussing a responsibility or project requirement.

Formally, a technical architecture can refer to any of the "architectures" that a system may have. It is thus arguably a more general term than "architecture" which is commonly understood to mean "system architecture". Often thetechnical architecture is used to refer to the collection of architectures defined for a system.

Thus it is recommended to avoid using the term "technical architecture" when attempting to define a specific area of architectural concern.

It may well be that the term "technical architect" is popular as it doesn't pigeon-hole its owner. It may also be that the term "software architect" doesn't sufficiently elevate the architect from the development team to their satisfaction. In either case, the authors believe that software, if done properly, is nothing to be ashamed of and that "software architect" offers a succinct, if not complete, description of the skills involved in the sort of hands-on architecture that we typically undertake.

System Architecture

"System architecture" refers to the way in which desired functionality is met by hardware and software components as well as how these components relate to each other and the intended users of the system. The term "architecture" is often generically used to refer to the system architecture, at least within the context of software systems development. The system architecture can span several different business functions.

System architecture

Since the system architecture deals with the system as whole it naturally focuses on the system-wide design decisions and similarities. While it needs to consider the implication of these decisions for individual business functions it may not resolve them fully within each so as to move those decisions closer to where they are best addressed, namely the application architecture relating to each function.

Application Architecture

"Application architecture" is really a subset of the system architecture. The scope of the application architecture, as opposed to the system architecture, is often determined by business function.

Application architecture

It is typical for the application architecture to be defined to a lower level than the system architecture, particularly as it needs to refine the system architecture to provide the design decisions that relate specifically to the business function rather than to the system as a whole.

Enterprise Architecture

Enterprise architecture is a term often mistakenly used by architects that work on "enterprise" systems or systems that involve components that are touted as enterprise-level. However, enterprise architecture is more concerned with mapping the business processes and needs to the technical capabilities of the organisation, including personnel, strategy, distribution and how the business' changing needs will be met.

Enterprise architecture

The enterprise architect role is therefore extremely wide-reaching, being enterprise-wide, and requires careful inspection of all the business' functions and their strategic requirements. Many people may contribute to the enterprise architecture, but that doesn't make them responsible for it and thus doesn't make them enterprise architects.

Summary

It's worth being aware of the various types of architecture that are commonly mentioned, particularly within the context of your own organisation. Treat enterprise architectures with a pinch of salt - they are often just the system architecture or application architecture for some enterprise software.

 

http://www.quora.com/What-is-the-difference-between-Software-Architecture-and-Systems-Architecture

Benjy WeinbergerFoursquare (2011-present), Twitter (2... (more)
1 vote by Miguel Paraz
 
All these terms are somewhat vague and interchangeable, and they often don't mean much outside of creating artificial diversity of titles in an engineering organization. But, as I see it, and for what it's worth:

Software Architecture can refer to the structure of a code base: how it's broken down into packages, what the APIs and dependencies are, degrees of generality, reuse and modularity, and so on. It relates to the static, build-time composition of blocks into a finished binary. 

Systems Architecture can refer to the structure of a service: how it's broken down into subsystems, how those break down into individual servers, how they communicate, how they handle the consistency and availability tradeoffs, how they balance durability and latency, how they scale and so on. It relates to the dynamic, run-time composition of blocks into a running service.

For an analogy to the world of real architecture, you might compare "how to construct a stadium" with "how to manage the flow of people through a stadium on game day".
  
Suggest Edits
 
 
 
 
 
Comment •  • Embed • Thank • 8 Aug, 2011
 
Benjy Weinberger
 
Dale Fletterphilosopher
2 votes by Lacey Rae Trebaol and Miguel Paraz
 
I just read a good answer to this question in the book Evaluating Software Architectures by Clements, et al.

    "Finally we should say a word about software versus system architecture--that is, the architecture of software-intensive systems. This is a book about the evaluation of software architectures, but we often hear the question, 'Well what about the architecture of the syste, not just the software? it's just as vital.' We couldn't agree more. System architectures embody the same kinds of structuring and decomposition decisions that drive software architectures. Moreover, they include hardware/software tradeoffs as well as the selection of computing and communication dquipment, al of which are completely beyond the realm of software architecture. System architectures hold the key to success or failure of a system every bit as much as the software architecture does for the software. Hence, they deserve to be evaluated every bit as much and for exactly the same reasons.

    "The methods presented in this book will, we believe, apply equally well to system architectures as to software architectures. if modifiability is a concern, the methods can be used to guage the expense of making changes over the system' ofifetime; if performance is a concern, the methods can be used to spot bottlenecks and problem areas in the system as well as the software; and so forth.

    "Why, then, do we call it a book about software architecture evaluation? Because that is the realm in which the methods were invented, developed, tested, and matured. In the remainder of this book when we speak of architecture, you can always safely prefix it with software. You can prefix it with system depending on how applicable you feel the methods are to system architectures and how confident you are about our intuition in the matter."

To add my 2cents, I believe that of the decisions made during the design of a software intensive system, those decisions regarding software are far more numerous, less obvious, and influential over the qualities that will be expressed in the final product.

http://en.wikipedia.org/wiki/Software_architect

Software architect is a computer programmer who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms.

Contents

  [hide

[edit]History

With the popularity of multi-tier application development, the choices of how an application can be built have also increased. Given that expansion, the risk that a software development project may inadvertently create a "new" end product that, in essence, already existed has grown markedly. A new 'software architect' role has become necessary during software development.[citation needed]

The software architect concept began to take hold when object-oriented programming (OOP) was coming into more widespread use (in the late 1990s and early years of the 21st century).[citation needed] OOP allowed ever-larger and more complex applications to be built, which in turn required increased high-level application and system oversight.

The main responsibilities of a software architect include:

  • Limiting choices available during development by
  • Recognizing potential reuse in the organization or in the application by
  • Subdivide a complex application, during the design phase, into smaller, more manageable pieces[citation needed]
  • Grasp the functions of each component within the application[citation needed]
  • Understand the interactions and dependencies among components[citation needed]
  • Communicate these concepts to developers[citation needed]

In order to perform these responsibilities effectively, software architects often use tools or standardized model and symbol sets such as Unified Modeling Language[dubious ] and OOP[citation needed] to represent systems or develop artifacts. UML has become an important tool for software architects to use in communicating the overall system design to developers and other team members, comparable to the drawings made by building architects.

[edit]Duties

The role of software architect generally has certain common traits:

Architect makes high-level design choices much more often than low-level choices. In addition, the architect may sometimes dictate technical standards, including coding standards, tools, or platforms.

Software architects may also be engaged in the design of the architecture of the hardware environment, or may focus entirely on the design methodology of the code.

Architects can use various software architectural models that specialize in communicating architecture.

[edit]Other types of IT-related Architects

The enterprise architect handles the interaction between the business and IT sides of an organization and is principally involved with determining the AS-IS and TO-BE states from a business and IT process perspective. Unfortunately many organizations are bundling the software architect duties within the role of Enterprise Architecture. This is primarily done as an effort to "up-sell" the role of a software architect and/or to merge two disparate business-related disciplines to avoid overhead.

An application architect works with a single software application. This may be a full- or a part-time role. The application architect is almost always an active software developer[citation needed] .

Other similar titles in use, but without consensus on their exact meaning, include:

The table below indicates many of the differences between various kinds of software architects:

Architect TypeStrategic ThinkingSystem InteractionsCommunicationDesign
Enterprise Architect Across Projects Highly Abstracted Across Organization Minimal, High Level
Solutions Architect Focused on solution Very Detailed Multiple Teams Detailed
Application Architect Component re-use, maintainability Centered on single Application Single Project Very Detailed

In the software industry, as the table above suggests, the various versions of architect do not always have the same goals.[1]

[edit]See also

[edit]References

[edit]External links

posted @ 2013-03-27 15:55  blockcipher  阅读(327)  评论(0)    收藏  举报