background preloader

Software Architecture

Facebook Twitter

Pattern-Oriented Software Architecture Volume 1: A System of Patterns (9780471958697): Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal, Michael Stal. Domain-Driven Design: Tackling Complexity in the Heart of Software - Eric Evans. "Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing.

Domain-Driven Design: Tackling Complexity in the Heart of Software - Eric Evans

"His book is very compatible with XP. It is not about drawing pictures of a domain; it is about how you think of it, the language you use to talk about it, and how you organize your software to reflect your improving understanding of it. Eric thinks that learning about your problem domain is as likely to happen at the end of your project as at the beginning, and so refactoring is a big part of his technique. "The book is a fun read.

Eric has lots of interesting stories, and he has a way with words. --Ralph Johnson, author of Design Patterns "If you don't think you are getting value from your investment in object-oriented programming, this book will tell you what you've forgotten to do. --Dave Collins, author of Designing Object-Oriented User Interfaces --Luke Hohmann, author of Beyond Software Architecture --Kent Beck. Software architecture. Software architecture is the high level structure of a software system, the discipline of creating such structures, and the documentation of these structures.

Software architecture

It is the set of structures needed to reason about the software system, and comprises the software elements, the relations between them, and the properties of both elements and relations.[1] The architecture of a software system is a metaphor, analogous to the architecture of a building.[2] Software architecture choices include specific structural options from possibilities in the design of software. For example, the systems that controlled the space shuttle launch vehicle have the requirement of being very fast, and very reliable, in principle. Therefore an appropriate real-time computing language would be chosen. Similarly, multiple redundant independently produced copies of a program running on independent hardware and cross-checking results would be a software system architecture choice to satisfy the need for reliability. Component-based software engineering.

An example of two components expressed in UML 2.0.

Component-based software engineering

The checkout component, responsible for facilitating the customer's order, requires the card processing component to charge the customer's credit/debit card (functionality that the latter provides). Component-based software engineering (CBSE) (also known as component-based development (CBD)) is a branch of software engineering that emphasizes the separation of concerns in respect of the wide-ranging functionality available throughout a given software system. It is a reuse-based approach to defining, implementing and composing loosely coupled independent components into systems. Common layers in an information system logical architecture.

The "Layers" architectural pattern has been described in various publications.[1] The terms "tier" and "layer" are often used interchangeably.

Common layers in an information system logical architecture

Most experts recognize a distinction between the two, where 'tier' is used when representing the physical layout of the various mechanisms in a system's infrastructure, while 'layer' is used when representing the orientation of the different physical or conceptual elements that make up an entire software solution. For example, a three-layer solution could easily be deployed on a single tier, such as a personal workstation.[2] Common layers[edit] In a logical multilayered architecture for an information system with an object-oriented design, the following four are the most common: The book Domain Driven Design describes some common uses for the above four layers, although its primarily focus is the domain layer.[6] Another common view is that all types are not always exclusive to one particular layer.

See also[edit] References[edit] External links[edit] Layer (object-oriented design) Jump up ^ Pattern-Oriented Software Architecture - A System of Patterns John Lakos, Large-scale C++ software design.

Layer (object-oriented design)

Addison-Wesley, 1997. Software architectural model. An architectural model (in software) is a rich and rigorous diagram, created using available standards, in which the primary concern is to illustrate a specific set of tradeoffs inherent in the structure and design of a system or ecosystem.

Software architectural model

Software architects use architectural models to communicate with others and seek peer feedback. An architectural model is an expression of a viewpoint in software architecture. Some key elements in software architectural model are: rich: for the viewpoint in question, there should be sufficient information to describe the area in detail. The information should not be lacking or vague. References[edit] External links[edit] See also[edit] Service-oriented modeling framework (SOMF)

Software Architecture: Architectural Layering. Diagramming - Making an attractive, yet still technical architecture diagram. Software Architecture: Introduction.