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.
Software architecture is often described as the organization or structure of a system, where the system represents a collection of components that accomplish a specific function or set of functions. In other words, architecture is focused on organizing components to support specific functionality. This organization of functionality is often referred to as grouping components into “areas of concern.” Below figure illustrates common application architecture with components grouped by different areas of concern.
What Is An Architectural Style?
An architectural style, sometimes called an architectural pattern, is a set of principles—a coarse grained pattern that provides an abstract framework for a family of systems. An architectural style improves partitioning and promotes design reuse by providing solutions to frequently recurring problems. You can think of architecture styles and patterns as sets of principles that shape an application.
Category | Architecture styles |
Communication | Service-Oriented Architecture (SOA), Message Bus |
Deployment | Client/Server, N-Tier, 3-Tier |
Domain | Domain Driven Design |
Structure | Component-Based, Object-Oriented, Layered Architecture |
Summary of Key Architectural Styles
The following table lists the common architectural styles described in this chapter. It also contains a brief description of each style.
Architecture style | Description |
Client/Server | Segregates the system into two applications, where the client makes requests to the server. In many cases, the server is a database with application logic represented as stored procedures. |
Component-Based Architecture | Decomposes application design into reusable functional or logical components that expose well-defined communication interfaces. |
Domain Driven Design | An object-oriented architectural style focused on modeling a business domain and defining business objects based on entities within the business domain. |
Layered Architecture | Partitions the concerns of the application into stacked groups (layers). |
Message Bus | An architecture style that prescribes use of a software system that can receive and send messages using one or more communication channels, so that applications can interact without needing to know specific details about each other. |
N-Tier / 3-Tier | Segregates functionality into separate segments in much the same way as the layered style, but with each segment being a tier located on a physically separate computer. |
Object-Oriented | A design paradigm based on division of responsibilities for an application or system into individual reusable and self-sufficient objects, each containing the data and the behavior relevant to the object. |
Service-Oriented Architecture (SOA) | Refers to applications that expose and consume functionality as a service using contracts and messages. |
Combining Architectural Styles
The architecture of a software system is almost never limited to a single architectural style, but is often a combination of architectural styles that make up the complete system. For example, you might have a SOA design composed of services developed using a layered architecture approach and an object-oriented architecture style.
Conclusion:
Entire article above is taken from MSDN Library. In order to understand more about fundamentals of architecture and design. by clinking on the link:
http://msdn.microsoft.com/en-us/library/ee658093.aspx
It starts by describing what is software architecture is, why is it important. It discusses the general issues you must consider, such as requirements and constraints and the intersection between the user, the business, and the system on which the application will run. This is followed by a description of the key design principles, and the architectural patterns and styles in common use today. Finally, this section provides an insight into the approach you should follow when designing your architecture. For more information, see the following chapters:
- Chapter 1 "What is Software Architecture?"
- Chapter 2 "Key Principles of Software Architecture"
- Chapter 3 "Architectural Patterns and Styles"
- Chapter 4 "A Technique for Architecture and Design"
I have read your article, it is very informative and helpful for me.I admire the valuable information you offer in your articles. Thanks for posting it.. architect coimbatore
ReplyDeleteI believe you have made some really fascinating points. Not too many others would actually think about this the direction you just did. I am really impressed that there is so much about this subject that has been revealed and you made it so nicely, with so considerably class. Outstanding one, man! Very wonderful things right here.
ReplyDeletearchitects in erode