Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура программного обеспечения.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
167.79 Кб
Скачать

До 1995 года

Ян Шарп произнес эти слова в 1969 году на конференции NATO Conference on Software Engineering Techniques (B. Randell, J.N. Buxton eds., Software Engineering Techniques: Report of a Conference Sponsored by the NATO Science Committee. Scientific Affairs Division NATO, 1970). Сегодня, 37 лет спустя, они все еще не потеряли актуальности.

Есть некое дополнение к программированию, и его надо вытащить на свет. Это программная архитектура. Архитектура и проектирование — не одно и то же. В качестве примера рассмотрим ОС/360. Части ОС/360 запрограммированы чрезвычайно хорошо, в них использовано множество удачных идей и методов. Причина, по которой операционная система оказалась бесформенной кучей программ, состоит в том, что у нее не было архитектора. Ее проектирование было поручено нескольким группам инженеров, каждому из которых приходилось изобретать собственную архитектуру. И когда все части соединили, они не превратились в целое.

Многое из того, что мы истолковываем как теорию и практику, на деле является архитектурой и проектированием. Теоретиками и практиками могут быть как инженеры, так и архитекторы. Например, я не считаю, что Дейкстра занимается в основном теорией: вероятно, через некоторое время мы будем говорить об архитектурной школе Дейкстры.

Обычно спецификации программного обеспечения рассматриваются как функциональные: мы рассуждаем лишь о том, что программа должна делать. Но любой, кто отвечает за реализацию программного обеспечения, должен задуматься о большем. Ему необходимо выстроить проект — форму; в рамках которой будут творить программисты или инженеры. Ни один инженер либо программист, ни один инструмент программирования не поможет ни нам, ни софтверному бизнесу компенсировать недостатки проекта. Контроль, управление, обучение и другие вещи, о которых мы говорим, очень важны, но специалисты по реализации должны понимать замысел архитектора.

Вероятно, многие знакомы с хорошими программами. Задумавшись, почему та или иная программа хороша, вы поймете: разработчик полностью осознавал, чего хочет добиться, и прежде всего создавал форму. Некоторые из тех, кто способны создать форму, не в силах ее реализовать, и наоборот. Беда в том, что в отрасли, особенно в больших промышленных империях, почти не уделяется внимания архитектуре. На этой конференции присутствовали некоторые из первопроходцев в этой области, в том числе Тони Хоар, Эдсгер Дейкстра, Алан Перлис, Пер Бринч Хансен, Фридрих Бауэр и Никлаус Вирт. С тех пор и до конца 80-х слово «архитектура» использовалось преимущественно для обозначения системной архитектуры, т. е. физической структуры компьютерной системы, а иногда — системы команд семейства компьютеров. Ключевые положения, связанные с организацией программных систем, изложены в работах Фреда Брукса [2], Батлера Лампсона [3], Дэвида Парнаса [4-7] и Джона Миллса [8]. Правда, статья Миллса относилась скорее к процессам и прагматике программной архитектуры.

Концепция программной архитектуры как отдельной дисциплины зародилась в 1990 году (см. рисунок). Отец и сын Уинстон и Уолкер Ройсы в статье [9], вышедшей в 1991 году, впервые позиционировали программную архитектуру как связующее звено между технологиями и процессами. Эбергард Речтин посвятил программному обеспечению несколько разделов своей книги [10]. А Филипп Крачтен написал статью, связывающую итеративную разработку с архитектурой, и определил несколько представлений для использования в крупной командно-административной системе [11].

 

Дюэйн Перри и Александр Уолф опубликовали основополагающую статью [12]. В ней была предложена знаменитая формула «{элементы, формы, объяснения} = программная архитектура», к которой Барри Боэм вскоре добавил «ограничения». Для многих исследователей «элементы» в этой формуле означали «компоненты и соединители», которые и стали основой множества языков описания архитектуры (architecture description language, ADL), в том числе C2, Rapide, Darwin, Wright, ACME и Unicon. К сожалению, они не слишком прижились. В 1994 году вышла первая книга по программной архитектуре, написанная бывшими сотрудниками IBM Бернардом Виттом, Терри Бейкером и Эвереттом Мерритом [13].