08.09.2013 Views

Microsoft .NET: Architecting Applications for the Enterprise ... - BattleIT

Microsoft .NET: Architecting Applications for the Enterprise ... - BattleIT

Microsoft .NET: Architecting Applications for the Enterprise ... - BattleIT

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<br />

Architects and Architecture Today<br />

The purpose of software engineering is to control complexity, not to create it.<br />

—Dr. Pamela Zave<br />

At <strong>the</strong> beginning of <strong>the</strong> computing age, in <strong>the</strong> early 1960s, <strong>the</strong> costs of hardware were<br />

largely predominant over <strong>the</strong> costs of software. Some 40 years later, we fi nd <strong>the</strong> situation<br />

to be radically different.<br />

Hardware costs have fallen dramatically because of <strong>the</strong> progress made by <strong>the</strong> industry.<br />

Software development costs, on <strong>the</strong> o<strong>the</strong>r hand, have risen considerably, mostly because of <strong>the</strong><br />

increasing complexity of custom enterprise software development. Cheaper computers made<br />

it worthwhile <strong>for</strong> companies to add more and more features to <strong>the</strong>ir in<strong>for</strong>mation systems.<br />

What in <strong>the</strong> beginning was a collection of standalone applications with no connection to one<br />

ano<strong>the</strong>r that barely shared a database has grown over years into a complex system made of<br />

interconnected functions and modules, each with a particular set of responsibilities.<br />

This situation has created <strong>the</strong> need <strong>for</strong> a set of precepts to guide engineers in <strong>the</strong> design<br />

of such systems. The modern software system—or <strong>the</strong> software-intensive system, as it is<br />

referred to in international standards papers—can be compared quite naturally to any<br />

construction resulting from a set of detailed blueprints.<br />

Appropriated from <strong>the</strong> construction industry, <strong>the</strong> term architecture has become <strong>the</strong> appropriate<br />

way to describe <strong>the</strong> art of planning, designing, and implementing software-intensive systems.<br />

In software, though, architecture needs less artistry than in building. Well-designed buildings<br />

are pleasing to <strong>the</strong> eye and functional. Software architecture is less subjective. It ei<strong>the</strong>r functions<br />

as required or it does not. There is less room <strong>for</strong> artistry and interpretation, unless you want to<br />

consider <strong>the</strong> artistry of a well-crafted algorithm or a piece of user interface.<br />

One of this book’s authors had, in <strong>the</strong> past, frequent interaction with an architecture studio.<br />

One day, a question popped up <strong>for</strong> discussion: What’s architecture? Is it an art? Or is it just<br />

building <strong>for</strong> a client?<br />

In software, <strong>the</strong> term architecture precisely refers to building a system <strong>for</strong> a client.<br />

In this fi rst chapter, we’ll look at some papers from <strong>the</strong> International Organization <strong>for</strong><br />

Standardization (ISO), <strong>the</strong> International Electrotechnical Commission (IEC), and <strong>the</strong> Institute<br />

of Electrical and Electronics Engineers (IEEE) that provide an architectural description of<br />

software-intensive systems. From <strong>the</strong>re, we’ll give our own interpretation of software<br />

architecture and voice our opinions about <strong>the</strong> role and responsibilities of software architects.<br />

3

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

Saved successfully!

Ooh no, something went wrong!