Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Питер_Гудлиф_Ремесло_программиста_Практика_написания_хорошего_кода.pdf
Скачиваний:
16
Добавлен:
19.04.2024
Размер:
9.23 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

14

Программная архитектура

Фундамент проектирования программ

В этой главе:

Что такое программная архитектура?

В чем отличие программной архитектуры и проекта?

Свойства хорошей архитектуры

Обзор основных архитектурных стилей

Архитектура – это искусство чем#нибудь заполнить свободное пространство.

Филип Джонсон

Пойдите в город. Встаньте в центре. Огля% дитесь. Если вы не выбирали место специ% ально, вокруг окажется множество зданий разных годов постройки и стилей. Одни из них удачно вписываются в свое окружение. Другие выглядят совершенно не на своем месте. Некоторые удовлетворяют эстетиче% ским потребностям и имеют хорошие про% порции. Другие совершенно уродливы. Од% ни простоят еще 100 лет. Другие – нет.

Архитекторы, проектировавшие эти зда% ния, учли многочисленные факторы, преж% де чем взяться за карандаш и бумагу. Во время проектирования они тщательно и ме% тодично следили за тем, чтобы проект зда% ния был реализуем, и пытались найти рав% новесие между соперничающими силами:

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

X

 

 

 

 

 

-

 

 

 

 

 

d

 

F

 

 

 

 

 

 

t

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

342m

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

.

 

 

 

 

 

.c

 

 

p

 

 

 

 

g

 

 

 

 

df

 

 

n

e

 

 

 

 

-xcha

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

Глава 14. Программная архитектураClick

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Подпольное движение

Я включился в работу над проектом, в котором уже было написа% но много недокументированного кода. Проект развивался без плана и цели, без архитектора, руководящего процессом строи% тельства. Естественно, он превратился в малоприятное зрелище. Настал момент разобраться, как все это действительно работает, и был сделан чертеж архитектуры системы. При этом обнаружи% лось столько различных компонент (многие в значительной мере избыточные), ненужных взаимосвязей и различных методов об% мена данными, что диаграмма представляла собой невообрази% мое переплетение линий различного цвета (цвет тоже нес инфор% мацию) – как будто паука окунули в несколько банок с разными красками, после чего он сплел в помещении какую%то психоде% лическую паутину.

Потом меня осенило. Да мы же начертили схему лондонской подземки! Сходство было таким сильным, что вызывало ужас – практически непонятное постороннему, со многими маршрута% ми, ведущими в одну точку, и тем не менее значительное упро% щение действительности. Странствующему коммивояжеру та% кая система доставила бы немало хлопот.

Отсутствие архитектурного видения явно отразилось на про% граммном обеспечении. С ним было трудно работать и разби% раться, отдельные функции были разорваны на части, раскидан% ные по разным модулям. Программа дошла до того состояния, когда лучшее решение – выкинуть ее.

В сооружении программ архитектура играет такую же важную роль, как и в сооружении зданий.

требованиями пользователей, строительными технологиями, возмож% ностью ремонта, эстетикой и т. д.

Для изготовления программ не используются кирпичи и цементный раствор, но и тут надо удовлетворить аналогичному набору требова% ний, поэтому необходимо все тщательно обдумывать. Люди начали строить дома гораздо раньше, чем писать программы, и это дает себя знать. Мы все еще пытаемся разобраться, что считать хорошей про% граммной архитектурой.

В данном небольшом экскурсе в область программной архитектуры мы изучим некоторые стандартные архитектурные шаблоны и рас% смотрим, чем программная архитектура в действительности является, а чем – нет, и для чего она применяется.