14.01.2015 Views

Application Architecture Guide 2.0 BETA 1 - Willy .Net

Application Architecture Guide 2.0 BETA 1 - Willy .Net

Application Architecture Guide 2.0 BETA 1 - Willy .Net

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Chapter 1 - Fundamentals of <strong>Application</strong> <strong>Architecture</strong><br />

Objectives<br />

• Learn the fundamentals of application architecture.<br />

• Understand key application architecture terms and principles.<br />

• Learn the key forces shaping today’s architectural landscape.<br />

Overview<br />

This chapter lays a foundation for practical application architecture. It starts by describing<br />

architecture and design at a high level and then dives deeper into specific aspects of application<br />

architecture and design. The remainder of the guide follows the same approach. Finally, this<br />

chapter defines key terms and principles. Understanding these will help you to gain the most<br />

benefit from this guide, and be more successful as an application architect.<br />

What Is <strong>Application</strong> <strong>Architecture</strong><br />

Software architecture is often defined as the structure or structures of a system. Several wellknown<br />

industry experts have expanded that definition with information on the decisions that<br />

must be made related to architecture. Here we look at a somewhat formal definition of<br />

architecture, and then take a more informal view.<br />

Kruchten, Booch, Bittner, and Reitman on <strong>Architecture</strong><br />

Philippe Kruchten, Grady Booch, Kurt Bittner, and Rich Reitman derived and refined a definition<br />

of architecture based on work by Mary Shaw and David Garlan (Shaw and Garlan 1996). Their<br />

definition is:<br />

“Software architecture encompasses the set of significant decisions about the organization of a<br />

software system including:<br />

• Selection of the structural elements and their interfaces by which the system is composed.<br />

• Behavior as specified in collaboration among those elements.<br />

• Composition of these structural and behavioral elements into larger subsystems.<br />

• Architectural style that guides this organization.<br />

Software architecture also involves functionality, usability, resilience, performance, reuse,<br />

comprehensibility, economic, and technology constraints, tradeoffs and aesthetic concerns.”<br />

Fowler on <strong>Architecture</strong><br />

In Patterns of Enterprise <strong>Application</strong> <strong>Architecture</strong>, Martin Fowler outlines some common<br />

recurring themes when explaining architecture:<br />

• The highest-level breakdown of a system into its parts.<br />

• The decisions that are hard to change.<br />

• There are multiple architectures in a system.<br />

36

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!