Архитектурные объекты на территории зеленых насаждений | Ландшафтная архитектура и зеленое строительство
Архитектурные объекты на территории зеленых насаждений размещают с целью создания посетителям наиболее благоприятных условий для отдыха, развлечений, занятий физической культурой и т. д. Типы сооружений бывают разные — от памятников архитектуры, дворцов, зданий многофункционального назначения, зрелищных сооружений до беседок. А. П. Вергунов предложил следующие категории архитектурных объектов, размещаемых на озелененных территориях:
1. Крупные сооружения, которые могут доминировать в прилегающей к ним зоне парка, стать его ведущей композиционной темой, организовать или подчинить большое открытое пространство — певческие эстрады, стадионы, кооперированные парковые центры и т. д.
2. Сооружения средних размеров и различного назначения, без которых обычно не обходится ни один парк—кафе, рестораны, выставочные павильоны и другие помещения, имеющие локальное композиционное значение, требующие координации в той или иной форме с окружающим их фоном.
3. Элементы архитектурно-художественного оформления парка и сада, которые обогащают их внешний облик и несут определенную идейную нагрузку,— скульптура, фонтаны, некоторые малые архитектурные формы, осветительные установки.
4. Объекты, которые размещаются обычно в пределах отдельных функциональных зон. Это объемные и плоскостные сооружения, оборудование спортивных и детских секторов, аттракционы, пляжи, имеющие ярко выраженную архитектурную специфику, которая вытекает прежде всего из функции и в композиционном отношении значительно меньше, чем предыдущая группа сооружений, связана с пейзажем.
5. Утилитарные сооружения, рассеянные по всей территории — садовая мебель, информационные стенды, киоски, мощение аллей и площадок, ограды, хозяйственные и технические сооружения и т. д. Хотя эти объекты играют второстепенную роль в пейзаже и композиционно подчинены природным компонентам и архитектурным доминантам, они в большинстве случаев имеют некоторое декоративное значение и должны стилистически подчиняться общему характеру садово-паркового ансамбля.
Размещение архитектурных объектов в зеленом окружении имеет давнюю историю. По существу сады, парки стали возникать вокруг архитектурных сооружений — жилых домов. Позже с целью придания будущему парку особой торжественности, живописности основополагающим для его создания стал выбор места для размещения дворца, дома. Учитывался рельеф, наличие водоема, характер растительности, живописность ландшафта за пределами отведенного участка. Дворец становился главным элементом в композиции и определял архитектурно-планировочное решение всей территории. Архитектура здания решалась из условия его расположения в зеленом окружении. Служебные постройки, оранжереи (пропорции, форма, цвет) подчеркивали достоинства основного здания, как правило, размещались в едином комплексе и только в редких случаях выносились на обособленный участок или участвовали в организации входа на территорию. При размещении основного здания у водоема его располагали так, чтобы перспектива раскрывалась вдоль продольной оси водной поверхности, создавая глубокую живописную композицию.
Выбор сооружений для включения в композицию современного парка или сада предопределяется прежде всего функциональным назначением конкретного объекта, его местом и ролью в планировочной структуре города. Перечень сооружений зависит от размера отведенной территории, предполагаемого профиля работы и количества посетителей.
Искусственные сооружения различного профиля на озелененных территориях приобретают специфический характер и размещаются в разнообразных комбинациях. Групповое размещение сооружений в соответствии с их функциональным назначением позволяет сохранить большие массивы зеленых насаждений, уменьшить антропогенное воздействие на них.
Большие возможности предоставляют сборно-разборные, надувные пневматические конструкции; их использование позволяет быстро реагировать на сезонные колебания посещаемости парка.
Каждый из специализированных объектов имеет «свое лицо». В мемориальных парках искусственные сооружения, благоустройство носят строгий, локаничный характер, создается атмосфера торжественности. В детских парках сооружения трактуются как элементы игровой среды.
Среди сооружений парка важную роль играют открытые театры многоцелевого назначения (концерты, демонстрация кинофильмов, показательные спортивные выступления, музыкальные представления). В Тампере (Финляндия) построен открытый театр, где амфитеатр со зрителями вращается вокруг сцены. Фоном сцены служит естественный живописный ландшафт.
Архитектурно-планировочные решения выставок в парках зависят от природно-климатических условий, окружения, размеров и рельефа участка, а также видов экспонатов и требований, предъявляемых к организации экспозиции.
В современных парках получили распространение павильоны-библиотеки, читальные сады, павильоны для тихих игр. Они включают пространства в закрытых и полуоткрытых павильонах и связанные с ними террасы, площадки, лужайки под открытым небом. В некоторых павильонах удачно применяются раздвижные стеклянные стены. На живописной опушке с плотным травяным покровом и отдельно стоящими взрослыми деревьями создают внутренние дворики с декоративными бассейнами, скульптурой, устанавливают перголы и навесы, часть площадок мостят естественным камнем или бетонной плиткой. Такие павильоны целесообразно размещать на окруженных зеленью небольших полянах, на некотором расстоянии от основных потоков посетителей и шумных зон.
Сокиринский парк: 1 — площаль перед входом; 2 — вход; 3 — служебные постройки; 4 — главная аллея; 5 — дворец; 6 — центральная поляна | Уманский парк «Софиевка»: 1 — пруд; 2 — павильон Флоры; 3 — причал; 4 — каменный мост; 5 — шлюз; 6 — русло р. Каменки; 7 — аллея |
Отдых в парках, предназначенных для массовых посещений, требует наличия вместительных ресторанов, комплексов, совмещающих питание и развлечение, а также небольших кафе.
Большое влияние на состав и тип парковых сооружений оказывают природно-климатические условия. На севере сооружения носят более замкнутый характер, они компактны, набор малых архитектурных форм минимален, а на юге сооружения максимально раскрываются на природу, широко применяются фонтаны, навесы.
Каждый архитектурный элемент должен рассматриваться как составная часть данного природного ландшафта, и каждый элемент должен отвечать местным национальным традициям.
Крупные массивные здания не только не соответствуют масштабу человека, но и могут подавить свое природное окружение. В каждом конкретном случае необходимо продумать роль архитектурного объекта в пейзаже. Он может размещаться в ландшафте свободно, может доминировать и объединять композицию, может подчеркнуть масштабность, внести цветовой контраст, но в любом случае его размещение должно быть рациональным и композиция высокохудожественной.
При всем разнообразии парковых сооружений их отличительной чертой является легкость объемно-пластической формы, конструкции и зависимость от масштаба человека. Пропорции здания необходимо выбирать исходя из его соотношения с пространством. Один из возможных примеров — создание силуэта, формы сооружения по ассоциации с элементами местного ландшафта.
Легкость, прозрачность архитектурных форм помогают ощутить большую пространственную свободу. Здание в парке должно не только смотреться на фоне природы, ландшафт может просвечиваться сквозь архитектуру. Сооружение может стать своеобразной рамой, акцентирующей внимание на детали пейзажа. В то же время одно из основных требований, предъявляемых к парковым сооружениям,— раскрытие интерьера на природу.
Центральная часть парка может быть подчеркнута включением в нее главного архитектурного сооружения — клуба, зеленого театра, выставочного комплекса, но их целесообразно располагать так, чтобы они не доминировали в пейзаже парка.
Такое размещение позволяет организовать движение посетителей парка по главным аллеям и избежать транзитного перемещения по территории парка. Меньшие по объему (второстепенные) здания с соответствующей их положению спокойной архитектурой также следует приблизить к главной аллее. Небольшие сооружения — беседки, павильоны, скамейки, размещенные вдоль главной аллеи, привлекают внимание и отмечают направление движения посетителей.
Главный вход располагается на пути основного потока посетителей из города. Кассы, информационный центр должны не только иметь привлекательную архитектуру, но, главное, обеспечить быстрое обслуживание посетителей. Рекомендуется на входной площадке иметь несколько взрослых деревьев, они дадут тень, обогатят силуэт, но им надо создать условия для нормального роста.
Важное значение имеет колористическое соответствие между объектом и фоном, не обязательно тождественное, но не вносящее дисгармонию в пейзаж.
В некоторых случаях требуется искусственный объект (технические, хозяйственные постройки) скрыть в ландшафте. Объект можно окружить «зелёной стеной» (хвойные, вечнозеленые деревья и кустарники, вьющиеся растения), разместить в складках местности или в подземном пространстве.
Размещение малых форм (киосков, пергол, беседок, аттракционов, туалетов, урн и т. д.) связано прежде всего с их функциональным назначением, но следует помнить, что они включаются в композицию пейзажа, участвуют в формировании эстетической среды. Малые формы размещают, как правило, не нарушая декоративных достоинств пейзажей, в подчиненном с композиционной точки зрения отношении к пространственно планировочному решению территории, исходя из направления движения потоков, обеспечения максимальных удобств посетителям.
Беседки пользуются особой популярностью в садах и парках, их размещают в соответствии с характером формирования ландшафта, специализацией и вместимостью озелененного участка. Беседки создают из местных строительных материалов, а их форма, размеры, цвет зависят от места расположения и предназначения.
В последние годы получили большое распространение гидропарки, которые вносят в облик города специфический архитектурно-художественный элемент. Их открытые пейзажи контрастируют с плотной массой многоэтажной застройки. Гидроархитектура не может копировать традиционные приемы садово-паркового искусства и типично городские «мотивы». Специалисты находят новые своеобразные пути решения архитектурных объектов у воды. Например, в новом парке в Краснодаре у р. Старая Кубань архитектурные сооружения имеют горизонтальные «стелющиеся» формы и членения, которые повторяют линии пойменного пейзажа. Есть в них что-то и от корабельной архитектуры. Некоторые здания как бы вырастают из земли, сливаются с естественными и искусственными складками рельефа, например, крыши незаметно переходят в пологий естественный склон холма, террасы продолжаются береговыми откосами и т.д.
В.А. Горохов
Часть 2. Итеративное уточнение архитектуры
Определение архитектуры приложений с помощью Rational Software Architect
Жан-Луи Марешо (Jean-Louis Maréchaux)
Опубликовано 12. 09.2012
Серия контента:
Этот контент является частью # из серии # статей: Определение архитектуры приложений с помощью Rational Software Architect
http://www.ibm.com/developerworks/rational/library/?sort_by=&show_abstract=true&show_all=&search_flag=&contentarea_by=Rational&search_by=Define+application+architectures+with+Rational+Software+Architect&product_by=-1&topic_by=-1&industry_by=-1&type_by=All+Types&ibm-search=Search
Следите за выходом новых статей этой серии.
Этот контент является частью серии:Определение архитектуры приложений с помощью Rational Software Architect
Следите за выходом новых статей этой серии.
Планирование архитектуры ― это гибкий способ предложения технических решений, которые определяют дальнейший ход разработки и тестирования сложных программных систем. Для того чтобы наметить целевую архитектуру сложной программной системы, архитектор обычно выполняет следующие действия (см. первую статью цикла):
- Выявление значимых требований
- Определение предполагаемой архитектуры
- Определение исходной модели развертывания
- Определение модели домена
Но обдумывание архитектуры ― не разовое действие. Это непрерывные усилия, которые опытные группы проектировщиков вкладывают в свою работу. Постепенно наращивая систему, группа выявляет новые технические проблемы и ищет новые архитектурные решения.
Как правило, на разных этапах разработки выполняются следующие действия по уточнению архитектуры.
- Уточнение архитектурных механизмов: технические концепции удовлетворения архитектурно значимых требований, определенных на первом шаге.
- Уточнение элементов проекта: архитектурно значимые элементы проекта.
- Уточнение архитектуры развертывания: единицы и топологии развертывания.
Итеративное совершенствование архитектуры
Обычно не нужно определять структуру всех компонентов своей системы. Как и все остальное в ходе проектирования, это делается лишь тогда, когда имеет смысл. Однако некоторые части сложных программных систем должны быть описаны подробнее других. Потому что некоторые компоненты могут быть труднее для понимания и реализации или они могут влиять на важнейшие элементы других подсистем. Некоторым организациям нужны более подробные спецификации, чтобы передать разработку деловому партнеру или географически распределенной группе. Иногда нужно более тщательно определить и задокументировать архитектуру для того, чтобы выполнить нормативные требования.
Уточнение архитектурных механизмов
Когда необходимо уточнить структуру компонента, можно начать с определения архитектурных механизмов его реализации.
Цель этого этапа заключается в определении аналитических классов, необходимых для того, чтобы реализовать значимые требования к системе. Иными словами, нужно определить все элементы, необходимые для решения конкретных задач.
Для наглядности можно связать эти классы с аналитическим стереотипом. Для представления класса, действующего в качестве интерфейса к системе, используется стереотип Boundary. Компонент, осуществляющий контроль над другими классами, описывается классом Control. Класс, содержащий данные, определяется стереотипом Entity.
Графическое представление этих аналитических стереотипов приведено на рисунке 1.
Рисунок 1. Аналитические стереотипы
На рисунке 2 аналитический стереотип показан в применении к значимому требованию к системе. В примере Yummy Inc. требование к системе обработки заказов включает в себя несколько элементов (аналитических классов), таких как клиент, меню и обработка платежей.
Рисунок 2. Аналитические элементы пакета обработки заказов
После определения аналитических классов (рисунок 2) также может потребоваться определение статических и динамических аспектов некоторых значимых требований.
Затем для каждого значимого сценария определяются его статические и динамические аспекты. Rational Software Architect помогает архитектору ПО решить эту задачу, предоставляя шаблон реализации сценариев использования.
По умолчанию шаблон (рисунок 3) содержит схему классов для записи статического аспекта (участники) и набор циклограмм для описания динамического поведения (основной поток, альтернативный поток n и т.п.).
Рисунок 3. Шаблон реализации сценариев использования для функций заказа по меню.
Каждая схема соответствует своему аспекту компонента. Схема классов (рисунок 4) отображает все классы, участвующие в реализации сценария использования (статика), в то время как циклограмма (рисунок 5) иллюстрирует взаимодействие между ними (динамика).
Рисунок 4. Схема классов для функции заказа по меню
Рисунок 5. Циклограмма для функции заказа по меню
В конце этого шага с помощью UML-моделей будут разработаны реализации некоторых значимых требований, предъявляемых к системе. Это важная часть архитектуры, когда нужно отобразить статическую структуру и поведение некоторых компонентов сложной программной системы.
Так как аналитическая модель не зависит от технологии, ее можно использовать в качестве отправной точкой для разных реализаций.
Уточнение структурной модели
Определив в аналитической модели способ реализации значимых требований, можно приступать к проектированию отдельных компонентов.
Если аналитическая модель абстрактна, то структурная модель должна быть ближе к реальной реализации. Обычно архитектор определяет набор целей и ограничений, связанных с технологией, используемой для реализации решения. Структурную модель, как правило, не разрабатывают с нуля. Это развитие той аналитической модели, которая уже определена (рисунки 2 и 3).
В нашем примере система ресторанного интернет-обслуживания Yummy Inc. разрабатывается на платформе Java EE. Для обеспечения персистентности данных используется API Java Persistence (см. раздел Ресурсы), логика приложения реализуется с помощью Session Beans, а доступ к службе доставки осуществляется с помощью Web-сервисов.
При создании архитектуры и проектировании рекомендуется определять разные уровни решения и способ их взаимодействия. N-уровневая архитектура Java EE способствует разделению задач между уровнями.
В перспективе Architectural Layers системы Rational Software Architect шаблон структуры содержит представление, на котором можно определить зависимости между уровнями (рисунок 6).
Рисунок 6. Представление Architectural Layer Dependencies для системы Online Catering
Когда архитектурные уровни определены, архитектор выполняет первую итерацию проектирования. Шаблон проекта Rational Software Architect содержит готовую структуру для этого. В спецификации компонента обычно есть интерфейсы и данные, используемые для взаимодействия с этим компонентом (рисунок 7). Как правило, это первое, что определяет архитектор ПО. Для каждого компонента важно указать данные, которыми он манипулирует, и его интерфейс, включая доступные операции.
Рисунок 7. Пакеты проектов для системы Online Catering
Обратите внимание, что поскольку на данном этапе уже выбрана платформа реализации, структурную модель можно обогатить информацией, относящейся к конкретной технологии. В нашем примере постоянные объекты помечены с помощью стереотипа JPA, чтобы показать, как объектная модель отображается на базу данных.
Для некоторых компонентов сложной программной системы может понадобиться углубленное проектирование. Помните, что структура детализируется только в том случае, если это помогает группе в реализации и выпуске приложения. На рисунке 8 представлена подробная схема классов, составленная с конкретной целью. Группа хочет создать Java-код из структурной модели с использованием некоторых преобразований, которые обеспечивает Rational Software Architect (подробнее о преобразованиях см. в разделе Ресурсы).
Рисунок 8. Подробная схема классов для генерации кода
Архитектор программного обеспечения не всегда отвечает за создание детального проекта отдельных компонентов. В зависимости от размера и опыта группы роль проектировщика ПО можно поручить одному или нескольким разработчикам, например, старшим программистам (грани между архитектурным проектированием, структурным проектированием и разработкой бывают расплывчатыми).
Уточнение архитектуры развертывания
Архитекторы отвечают за создание систем, удовлетворяющих бизнес-требованиям. Один из ключевых аспектов сложных программных систем ― способ их развертывания на физической архитектуре. Первоначальная модель развертывания обычно определяется при планировании архитектуры (см. ссылку на первую статью этого цикла в разделе Ресурсы). В ходе проекта архитекторы уточняют архитектуру развертывания, добавляя нефункциональные требования и ограничения, относящиеся к производственной среде.
Инструменты планирования процесса развертывания Rational Software Architect позволяют создавать топологии, демонстрирующие отношения между ИТ-ресурсами. Также можно планировать и проверять сценарии развертывания (подробнее о планировании и автоматизации процесса развертывания с помощью Rational Software Architect см. разделе Ресурсы).
Rational Software Architect помогает выполнить анализ развертывания на разных уровнях абстракции. Можно создавать логические топологии для принятия решений по операционной архитектуре сложной программной системы (рисунок 9). Логическая топология описывает систему на высоком уровне абстракции. В ней указывают, как организованы и связаны компоненты приложения и где они должны размещаться. Обратите внимание, что для лучшей прослеживаемости блоки, соответствующие решению, иногда не создаются с нуля, а выводятся из UML-элементов.
Рисунок 9. Пример логической топологии для системы Online Catering
Увеличенный вариант рисунка 9.
Архитекторы также могут определять топологию для описания способа развертывания приложения. Модель этого типа описывает полный сценарий развертывания конкретного приложения и конкретную инфраструктуру, на которой оно развертывается (рисунок 10).
Рисунок 10. Пример подробной модели развертывания системы Online Catering
Увеличенный вариант рисунка 10.
Поэтапное построение системы
Группы, работающие над сложной программной системой, всегда должны помнить, что основным показателем успеха является работающее программное обеспечение. Описание действий, необходимых для разработки приложения, выходит за рамки этой статьи, но важно не забывать, что успешные группы занимаются созданием архитектуры параллельно с проектированием.
Постоянное обдумывание архитектуры является частью усилий по разработке, и группа не должна писать новый код или изменять существующий, не подумав о том, как это изменение повлияет на приложение в целом. Популярный метод изменения существующего кода называется рефакторингом (см. раздел Ресурсы). Rational Software Architect предоставляет богатый набор инструментов для облегчения разработки и рефакторинга кода. С помощью инструмента рефакторинга можно изменить структуру кода (рисунок 11). А функция архитектурного обнаружения позволяет выделить в коде приложения шаблоны и антишаблоны (рисунок 12). Обе функции помогают улучшить код и выявить проблемы на ранних стадиях разработки программного обеспечения.
Рисунок 11. Инструмент рефакторинга в Rational Software Architect
Рисунок 12. Поиск шаблонов
Если при обдумывании архитектуры вы создали какие-то модели, то их можно преобразовать в код. Rational Software Architect содержит набор преобразований для создания кода Java, элементов Java EE или артефактов SOA (рисунок 13). Можно также генерировать модели из существующего исходного кода.
Рисунок 13. Преобразования в Rational Software Architect
Так по мере постепенного построения системы создается рабочее ПО, соответствующее конструктивным решениям, принятым в ходе планирования архитектуры.
Заключение
Гибкие методы проектирования способствуют применению коротких итераций для построения системы шаг за шагом. Если подход Big Design Up Front (см. BDUF в разделе Ресурсы) оказался неэффективным и применяется главным образом в водопадных моделях, то это не означает, что из гибких проектов нужно выкинуть планирование архитектуры и структуры. Проектирование должно быть продуманным и последовательным. Продуманным, потому что уже в начале проекта можно предвидеть некоторые технические требования, основываясь на очереди нерешенных задач (планирование архитектуры). Последовательным, потому что в ходе итераций разработки проект адаптируется и обогащается при решении новых технических задач, с которыми сталкивается группа.
В первой статье этого цикла мы сосредоточились на типичных задачах планирования архитектуры и согласования технической концепции с предъявляемыми требованиями. В этой, второй статье мы описали, как архитектура уточняется в ходе итераций разработки. Rational Software Architect предоставляет шаблоны моделей для описания архитектуры сложной программной системы с разных точек зрения на протяжении всего жизненного цикла проекта (рисунок 14).
Рисунок 14. Модели для различных архитектурных представлений
Обдумывание архитектуры ― это непрерывный процесс, который группы опытных разработчиков внедряют в свою работу. Он не всегда приводит к созданию формальной схемы. Имейте в виду, что если UML не подходит для вашего контекста, то ничто не мешает использовать вместо него эскизы Rational Software Architect, как если бы вы рисовали на доске. Эскизы Rational Software Architect носят менее формальный характер, чем UML-схемы, но могут служить хорошей альтернативой для конкретного проекта.
Ресурсы для скачивания
Похожие темы
- Оригинал статьи: Define application architectures with Rational Software Architect: Part 2: Iteratively refine the architecture.
- Определение архитектуры приложений с помощью Rational Software Architect: Часть 1. Планирование архитектуры
- Моделирование топологии развертывания: учебный модуль о построении топологий развертывания с помощью Rational Software Architect.
- Бесплатный самоучитель по моделированию с применением Rational Software Architect.
- Проект Design Management: новое решение, помогающее группе сотрудничать в области планирования архитектуры и проектирования.
- Big Design Up Front (BDUF): страница, посвященная подходу BDUF.
- Java Persistence API: упрощенная модель программирования для обеспечения персистентности логических объектов.
- Вики по Rational Software Architect: множество ресурсов, полезных при проектировании, разработке, реализации и развертывании приложений.
- Подготовка архитекторов программного обеспечения: способ приобрести необходимые навыки и получить сертификацию.
- IBM Practices: вся необходимая информация об IBM Practices
- OpenUP: процесс разработки ПО с открытым исходным кодом с применением итеративного и поэтапного подходов в рамках структурированного жизненного цикла.
- IBM agility@scale: короткий видеоролик, посвященный IBM agility@scale.
- IEEE Recommended Practice for Architectural Description for Software-Intensive Systems: информация о стандарте IEEE 1471.
- Deployment topologies with Rational Software Architect: статья о том, как создавать топологии развертывания с помощью Rational Software Architect.
- What’s new in IBM Rational Software Architect v8.0: введение в новые функции Rational Software Architect версии 8.
- Страница продукта IBM Rational Software Architect: техническая документация, статьи, инструкции, учебные курсы, загрузки и информация о продуктах Rational Software Architect.
- Architectural Blueprints — The «4+1» View Model of Software Architecture: работа Филиппа Крухтена.
- Страница ресурсов по UML: официальный сайт UML.
- Загрузите любую или обе ознакомительные версии:
Процессоры 64-битные, 32-битные. Архитектура процессора
Вопрос: Архитектура процессора — что это?
Ответ: Термин «архитектура процессора» в настоящее время не имеет однозначного толкования. С точки зрения программистов, под архитектурой процессора подразумевается его способность исполнять определенный набор машинных кодов. Большинство современных десктопных CPU относятся к семейству x86, или Intel-совместимых процессоров архитектуры IA32 (архитектура 32-битных процессоров Intel). Ее основа была заложена компанией Intel в процессоре i80386, однако в последующих поколениях процессоров она была дополнена и расширена как самой Intel (введены новые наборы команд MMX, SSE, SSE2 и SSE3), так и сторонними производителями (наборы команд EMMX, 3DNow! и Extended 3DNow!, разработанные компанией AMD). Однако разработчики компьютерного железа вкладывают в понятие «архитектура процессора» (иногда, чтобы окончательно не запутаться, используется термин «микроархитектура») несколько иной смысл. С их точки зрения, архитектура процессора отражает основные принципы внутренней организации конкретных семейств процессоров. Например, архитектура процессоров Intel Pentium обозначалась как Р5, процессоров Pentium II и Pentium III — Р6, а популярные в недавнем прошлом Pentium 4 относились к архитектуре NetBurst. После того, как компания Intel закрыла архитектуру Р5 для сторонних производителей, ее основной конкурент — компания AMD была вынуждена разработать собственную архитектуру — К7 для процессоров Athlon и Athlon XP, и К8 для Athlon 64.
Вопрос: Какие процессоры лучше, 64-битные или 32-битные? И почему?
Ответ: Достаточно удачное 64-битное расширение классической 32-битной архитектуры IA32 было предложено в 2002 году компанией AMD (первоначально называлось x86-64, сейчас — AMD64) в процессорах семейства К8. Спустя некоторое время компанией Intel было предложено собственное обозначение — EM64T (Extended Memory 64-bit Technology). Но, независимо от названия, суть новой архитектуры одна и та же: разрядность основных внутренних регистров 64-битных процессоров удвоилась (с 32 до 64 бит), а 32-битные команды x86-кода получили 64-битные аналоги. Кроме того, за счет расширения разрядности шины адресов объем адресуемой процессором памяти существенно увеличился.
И… все. Так что те, кто ожидает от 64-битных CPU сколь-нибудь существенного прироста производительности, будут разочарованы — их производительность в подавляющем большинстве современных приложений (которые в массе своей заточены под IA32 и вряд ли в обозримом будущем будут перекомпилированы под AMD64/EM64T) практически та же, что и у старых добрых 32-битных процессоров. Весь потенциал 64-битной архитектуры может раскрыться лишь в отдаленном будущем, когда в массовых количествах появятся (а может, и не появятся) приложения, оптимизированные под новую архитектуру. В любом случае, наиболее эффективен переход на 64-бита будет для программ, работающих с базами данных, программ класса CAD/CAE, а также программ для работы с цифровым контентом.
Вопрос: Что такое процессорное ядро?
Ответ: В рамках одной и той же архитектуры различные процессоры могут достаточно сильно отличаться друг от друга. И различия эти воплощаются в разнообразных процессорных ядрах, обладающих определенным набором строго обусловленных характеристик. Чаще всего эти отличия воплощаются в различных частотах системной шины (FSB), размерах кэша второго уровня, поддержке тех или иных новых систем команд или технологических процессах, по которым изготавливаются процессоры. Нередко смена ядра в одном и том же семействе процессоров влечет за собой замену процессорного разъема, из чего вытекают вопросы дальнейшей совместимости материнских плат. Однако в процессе совершенствования ядра, производителям приходится вносить в него незначительные изменения, которые не могут претендовать на «имя собственное». Такие изменения называются ревизиями ядра и, чаще всего, обозначаются цифробуквенными комбинациями. Однако в новых ревизиях одного и того же ядра могут встречаться достаточно заметные нововведения. Так, компания Intel ввела поддержку 64-битной архитектуры EM64T в отдельные процессоры семейства Pentium 4 именно в процессе изменения ревизии.
Вопрос: В чем заключается преимущество двухъядерных процессоров перед одноядерными?
Ответ: Самым значимым событием 2005 года стало появление двухъядерных процессоров. К этому времени классические одноядерные CPU практически полностью исчерпали резервы роста производительности за счет повышения рабочей частоты. Камнем преткновения стало не только слишком высокое тепловыделение процессоров, работающих на высоких частотах, но и проблемы с их стабильностью. Так что экстенсивный путь развития процессоров на ближайшие годы был заказан, и их производителям волей-неволей пришлось осваивать новый, интенсивный путь повышения производительности продукции. Самой расторопной на рынке десктопных CPU, как всегда, оказалась Intel, первой анонсировавшая двухъядерные процессоры Intel Pentium D и Intel Extreme Edition. Впрочем, AMD с Athlon64 X2 отстала от конкурента буквально на считанные дни. Несомненным достоинством двухъядерников первого поколения, к которым относятся вышеназванные процессоры, является их полная совместимость с существующими системными платами (естественно, достаточно современными, на которых придется только обновить BIOS). Второе поколение двухъядерных процессоров, в частности, Intel Core 2 Duo, «требует» специально разработанных для них чипсетов и со старыми материнскими платами не работает.
Не следует забывать, что, на сегодняшний день для работы с двухъядерными процессорами более или менее оптимизировано в основном только профессиональное ПО (включая работу c графикой, аудио- и видео данными), тогда как для офисного или домашнего пользователя второе процессорное ядро иногда приносит пользу, но гораздо чаще является мертвым грузом. Польза от двухъядерных процессоров в этом случае видна невооруженным взглядом только тогда, когда на компьютере запущены какие-либо фоновые задачи (проверка на вирусы, программный файервол и т.п.). Что касается прироста производительности в существующих играх, то он минимальный, хотя уже появились первые игры популярных жанров, полноценно использующие преимущества от использования второго ядра.
Впрочем, если сегодня стоит вопрос выбора процессора для игрового ПК среднего или верхнего ценового диапазона, то, в любом случае, лучше предпочесть двухъядерный, а то и 4-ядерный процессор чуть более высокочастотному одноядерному аналогу, так как рынок неуклонно движется в сторону мультиядерных систем и оптимизированных параллельных вычислений. Такая тенденция будет господствующей в ближайшие годы, так что доля ПО, оптимизированного под несколько ядер, будет неуклонно возрастать, и очень скоро может наступить момент, когда мультиядерность станет насущной необходимостью.
Вопрос: Что такое кэш?
Ответ: Во всех современных процессорах имеется кэш (по-английски — cache) — массив сверхскоростной оперативной памяти, являющейся буфером между контроллером сравнительно медленной системной памяти и процессором. В этом буфере хранятся блоки данных, с которыми CPU работает в текущий момент, благодаря чему существенно уменьшается количество обращений процессора к чрезвычайно медленной (по сравнению со скоростью работы процессора) системной памяти. Тем самым заметно увеличивается общая производительность процессора.
При этом в современных процессорах кэш давно не является единым массивом памяти, как раньше, а разделен на несколько уровней. Наиболее быстрый, но относительно небольшой по объему кэш первого уровня (обозначаемый как L1), с которым работает ядро процессора, чаще всего делится на две половины — кэш инструкций и кэш данных. С кэшем L1 взаимодействует кэш второго уровня — L2, который, как правило, гораздо больше по объему и является смешанным, без разделения на кэш команд и кэш данных. Некоторые десктопные процессоры, по примеру серверных процессоров, также порой обзаводятся кэшем третьего уровня L3. Кэш L3 обычно еще больше по размеру, хотя и несколько медленнее, чем L2 (за счет того, что шина между L2 и L3 более узкая, чем шина между L1 и L2), однако его скорость, в любом случае, несоизмеримо выше, чем скорость системной памяти.
Кэш бывает двух типов: эксклюзивный и не эксклюзивный кэш. В первом случае информация в кэшах всех уровней четко разграничена — в каждом из них содержится исключительно оригинальная, тогда как в случае не эксклюзивного кэша информация может дублироваться на всех уровнях кэширования. Сегодня трудно сказать, какая из этих двух схем более правильная — и в той, и в другой имеются как минусы, так и плюсы. Эксклюзивная схема кэширования используется в процессорах AMD, тогда как не эксклюзивная — в процессорах Intel.
Вопрос: Что такое процессорная шина?
Ответ: Процессорная (иначе — системная) шина, которую чаще всего называют FSB (Front Side Bus), представляет собой совокупность сигнальных линий, объединенных по своему назначению (данные, адреса, управление), которые имеют определенные электрические характеристики и протоколы передачи информации. Таким образом, FSB выступает в качестве магистрального канала между процессором (или процессорами) и всеми остальными устройствами в компьютере: памятью, видеокартой, жестким диском и так далее. Непосредственно к системной шине подключен только CPU, остальные устройства подсоединяются к ней через специальные контроллеры, сосредоточенные в основном в северном мосте набора системной логики (чипсета) материнской платы. Хотя могут быть и исключения — так, в процессорах AMD семейства К8 контроллер памяти интегрирован непосредственно в процессор, обеспечивая, тем самым, гораздо более эффективный интерфейс память-CPU, чем решения от Intel, сохраняющие верность классическим канонам организации внешнего интерфейса процессора. Основные параметры FSB некоторых процессоров приведены в табл
Процессор | частота FSB, МГц | Тип FSB | Теоретическая пропускная способность FSB, Мб/с |
Intel Pentium III | 100/133 | AGTL+ | 800/1066 |
Intel Pentium 4 | 100/133/200 | QPB | 3200/4266/6400 |
Intel Pentium D | 133/200 | QPB | 4266/6400 |
Intel Pentium 4 EE | 200/266 | QPB | 6400/8533 |
Intel Core | 133/166 | QPB | 4266/5333 |
Intel Core 2 | 200/266 | QPB | 6400/8533 |
AMD Athlon | 100/133 | EV6 | 1600/2133 |
AMD Athlon XP | 133/166/200 | EV6 | 2133/2666/3200 |
AMD Sempron | 800 | HyperTransport | <6400 |
AMD Athlon 64 | 800/1000 | HyperTransport | 6400/8000 |
Процессоры компании Intel используют системную шину QPB (Quad Pumped Bus), передающую данные четыре раза за такт, тогда как системная шина EV6 процессоров AMD Athlon и Athlon XP передает данные два раза за такт (Double Data Rate). В архитектуре AMD64, используемой компанией AMD в процессорах линеек Athlon 64/FX/Opteron, применен новый подход к организации интерфейса CPU — здесь вместо процессорной шины FSB и для сообщения с другими процессорами используются: высокоскоростная последовательная (пакетная) шина HyperTransport, построенная по схеме Peer-to-Peer (точка-точка), обеспечивающая высокую скорость обмена данными при сравнительно низкой латентности.
Источник: 3dnews.ru
Что такое архитектура приложений?
Архитектура приложения — это организационный дизайн всего программного приложения, включая все подкомпоненты и внешние приложения. Существует несколько шаблонов проектирования, которые используются для определения архитектуры этого типа, и эти шаблоны помогают сообщать, как приложение завершит необходимые бизнес-процессы, как определено в системных требованиях.
Программное приложение представляет собой систему, предназначенную для автоматизации конкретных задач логически, чтобы удовлетворить набор требований. Он использует базовые операционные системы и базы данных для хранения и выполнения задач в приложении. Архитектура приложения — это проект, который определяет, как программа будет взаимодействовать с серверами и компонентами в доменах прикладных уровней.
С расширением функциональности в программном обеспечении были созданы модульные компоненты, которые специализируются на определенных областях бизнес-процессов в приложении. Архитектура определяет все компоненты в дизайне и как они будут взаимодействовать в приложении. Это определение включает все уровни приложения.
Во всех приложениях есть три основные области управления: уровень представления, бизнес-уровень и уровень доступа к данным. Каждый домен в приложении несет определенную ответственность за то, что при соединении с другими уровнями удовлетворяют основные бизнес-требования приложения.
Архитектура приложения используется в качестве плана, чтобы гарантировать, что базовые модули приложения будут поддерживать будущий рост. Рост может произойти в областях будущей функциональной совместимости, увеличения спроса на ресурсы или повышения требований к надежности. С завершенной архитектурой заинтересованные стороны понимают сложность базовых компонентов, если в будущем должны быть необходимы изменения.
С созданием современного объектно-ориентированного программирования организационный дизайн стал важным компонентом в определении того, как приложение будет функционировать. Это связано с широким использованием приложений N-Tier на большинстве предприятий. Приложения N-Tier позволяют развертывать подкомпоненты или модули на нескольких серверах внутри предприятия.
При определении архитектуры приложения также важно определить архитектуру сервера приложений. Эта архитектура сервера накладывает аппаратный дизайн, который будет способствовать развертыванию программных компонентов. Хорошие архитектуры серверов приложений должны поддерживать как горизонтальные, так и вертикальные парадигмы роста.
Архитектура прикладной службы определяет, как приложение будет использовать ключевые бизнес-компоненты для других модулей в приложении. Благодаря определению доступных интерфейсов взаимодействие между уровнями приложений лучше понимается заинтересованными сторонами в организации.
Почему многие никак не могут принять этот стиль
Одни дома без преувеличения можно назвать произведением искусства, другие просто не замечают, а есть такие сооружения, которые не оставляют никого равнодушным. Особенно это касается объектов современной архитектуры, именно они вызывают сильный эмоциональный отклик и не всегда положительный. Несмотря на то, что архитекторы стремятся создавать идеальные пространства для работы, отдыха и жизни человека, их произведения подвергаются постоянной критике, а иногда и полному неприятию.
Непонятная для многих современная архитектура никого не оставляет равнодушным
Архитектура уже давно вышла за рамки определения такого понятия, как искусство, ведь благодаря ей удается создать пространство и декорации, отражающие культурные особенности и технические возможности того времени и места, где находится человек. Учитывая многовековую историю существования человечества, на улицах наших городов и сел можно встретить постройки всех эпох, которые зодчие создавали в разных стилях и направлениях. И если одни вызывают восхищение, то другие – полное неприятие.
У самых истоков модерна (Елисеевский магазин построен в 1902-1903 гг, Санкт-Петербург)
К понятию «современная архитектура» относятся несколько стилей и течений, которые формируются уже более 100 лет. На протяжении столь длительного периода появляются уникальные работы архитекторов. Самое главное, в каком бы направлении они не творили, будь то чистой воды модерн, брутализм, конструктивизм, деконструктивизм, минимализм, хай-тек или неомодернизм, все вызывает повышенный интерес. Причем мнение людей как обывателей, так и специалистов-экспертов о том или ином объекте кардинально разнятся.
Фантастическая архитектура Института Солка, которую многие считают слишком футуристической
Если учитывать неоспоримый факт, что вновь созданные объекты более приспособлены для организации максимально комфортного пространства для обитания людей, то вопрос о неизбежном изменении сложившегося облика городов уходит на второй план. Но и эстетическое восприятие окружающего пространства пока никто не отменял, и если современный объект диссонирует с устоявшейся архитектурной картинкой, то вызывает бурю недовольства, а иногда и активного протеста местных жителей и корифеев.
Современная архитектура Нидерландов
Справка: Современная архитектура возникла еще вначале прошлого века, когда архитекторы утверждали, что творческое выражение должно быть свободным от исторического багажа и скорее архитектурные формы должны подчиняться функционалу, а не общепринятым догмам. Архитекторы старались избегать ненужных деталей в дизайне, считая, что простота и обычные элементы тоже могут быть прекрасны. Сторонники классических правил утверждали и до сих пор это делают, что современная архитектура с ее философией – полная безвкусица, серость и безликость.
Произведения искусства, созданные Фрэнком Райтом (Дом над водопадом, Музей Гуггенхайма в Нью-Йорке)
Но это с какой стороны посмотреть. Если взять, к примеру, воплощенные в жизнь проекты Фрэнка Лойда Райта и Рудольфа Шиндлера, которые стояли у истоков модернизма, то «ни монотонного, ни бесчеловечного» в них попросту нет. А «безликими и угрюмыми» язык не повернется эти творения назвать, хотя в их внешнем облике не найдете ни резных арок, ни помпезных колонн, ни роскошных элементов и т.д. Они обладают не только практичностью и функциональностью, но и особенной красотой (при абсолютном минимализме декора!), от которой просто захватывает дух.
Проекты Рудольфа Шиндлера уже признаны достоянием, хотя в свое время подвергались критике (Laurelwood Apartments Студио-Сити, особняк Фицпатрика-Леланда)
Да, они, как и многие другие модернисты, отошли от общепринятых правил в архитектуре, в их работах просматривается индивидуальный стиль и видение. В свое время кто-то сразу влюбился в простоту и практичность построенных ими домов, а приверженцы классических норм и правил их нещадно критиковали. Но несмотря ни на что, эти творения занимают достойное место в современной архитектуре, ведь они стали знаковыми сооружениями и настоящей достопримечательностью. А это потому, что авторам удалось сочетать практичность и простоту с окружающим ландшафтом, как городского пространства, так и природных зон.
Бывают и такие странные сочетания современного дома-оригами со старинной архитектурой (Мальмё, Нидерланды)
К сожалению, не всем удается найти такую гармонию и нужные точки соприкосновения, и тогда появляются довольно несуразные объекты, которые явно выделяются на общем фоне городской архитектуры.
Вот, что получается, когда пытаются заниматься стилизацией, с отсылкой на прошлое (историческая часть Подола, Киев)
Конечно же, приверженцы создания единой, хотя и убогой в своем подражании картинки общего стиля будут в восторге, но достопримечательностью такое здание не станет никогда (лишь примером того, как нельзя строить!). Учеными доказано, что «хорошая» или «плохая» архитектура напрямую влияет на качество жизни и характер окружающего пространства, поднимая настроение или подавляя человеческих дух.
Спальные районы, застроенные в 60-70 гг. прошлого века, малопривлекательные и одинаковые в разных странах (многоэтажки Венгрии и России)
Конечно, если взять массовую застройку жилых кварталов безликими массивными многоэтажками, которые не имеют никакой эстетики, да и комфорта зачастую тоже, то такую «современную архитектуру» можно действительно ненавидеть и считать эти объекты полным отстоем, убивающим на корню даже самый оптимистичный взгляд на жизнь. Хотя массовое строительство многоквартирных высотных домов архитектурой назвать сложно, а порой даже невозможно.
Современные архитекторы и дизайнеры уже совсем по-другому смотрят на эстетику многоэтажных домов
Но все не так плачевно выглядит, если за дело берутся действительно профессионалы, не гоняющиеся за сроками сдачи и количеством жилых метров. В этом случае спальные районы выглядят не менее привлекательными (согласно теперешним веяниям в моде) нежели исторические центры, где преобладает викторианский стиль или ампир, который в то время когда они возводились, были тоже модными.
Современные жилые комплексы могут вызывать только восхищение и функционалом и эстетикой
Согласитесь, в наше время возводить многоэтажные дома в готическом или романтическом стиле было бы полной нелепостью. Это должны понимать и те, кто никак не хочет воспринимать и принимать современную архитектуру, как неизбежное явление человеческого общества.
Ничего лишнего, а взгляд притягивают (Башни бывшего Всемирного торгового центра до трагического события в 2001 г)
Конечно же, по-другому дело обстоит, если в стиле модерн строились небоскребы, общественные здания, спорткомплексы, аэропорты и вокзалы. Здесь обвинить современных архитекторов в безликости никак нельзя. Благодаря тому, что в стройиндустрии активно используются новые материалы и технологии, а это позволяет повышать этажность зданий, увеличивать масштабность арок и площадь окон, усложнять формы строений и т.д.
Первые манхэттенские небоскребы, построенные в 30-х гг. прошлого века (Нью-Йорк, США)
Даже в первых объектах современной архитектуры заметен интерес к ненавязчивому декору, причем кирпич сам становится яркой деталью оформления фасада, не говоря о моде на плиточную облицовку (майоликовые панно) и наличии кованых металлоконструкций. Это то, что касается внешней стороны архитектурных сооружений, в интерьере в первую очередь внимание уделялось комфорту и функционалу при простоте форм и минимуме декора.
Непонятый брутализм в послевоенной архитектуре
В послевоенные годы архитекторы больше стали тяготеть к брутализму и монументализму. Поиск новых средств выразительности посредством грубых и массивных бетонных конструкций больше всего подвергается критике и неприятию. Несмотря на то, что такое увлечение очень быстро погасло, оставшиеся объекты до сих пор активно отвергаются. Хотя в современных постройках все чаще можно увидеть массивные бетонные элементы кубической формы, но такое видение красоты и практичности авторов проектов и они тоже имеют право на существование.
Элементы брутализма снова в моде
Противники течения в современной архитектуре утверждают что здания, построенные бруталистами к этому времени практически все заброшены, потому что в таких «уродливых» домах никто не хочет жить (если это жилые сооружения). Если же это музеи, учреждения или вокзалы, то их покинули потому, что «они навевают ужас».
Пригород Парижа заброшен из-за отсутствия работы, а не из-за «уродливости» зданий
Как стало известно авторам Novate.Ru, эти утверждения — чистой воды домыслы тех, кто во всем критикует произведения бруталистов. В действительности некоторые здания и даже жилые микрорайоны были покинуты, но совсем по другим причинам и никакого отношения к внешнему виду они не имеют.
При проектировании собственного дома каждый волен выбирать сам: стилизацию под Версаль или гармоничное слияние с природой
Слова архитектора и дизайнера, обладателя множества профессиональных премий Хади Тегерани, как нельзя лучше объясняют, почему появляются провалы при строительстве и полное неприятие некоторых объектов: «Современная архитектура терпит крах, когда не соответствует человеческому бытию и его целостности. Она должна давать человеку все составляющие его жизненного благополучия, которое, как пазл, складывается из различных и в равной степени значимых деталей, таких как экология, экономический аспект, адекватное пространство жизнедеятельности, свет, фактура материалов, форма, эмоции и эстетика».
Видение современной архитектуры в Японии и США
И самое интересное, что в каждой стране и даже местности свое видение и понимание современной архитектуры и того, что приемлемо, а что вызывает противостояние. Это обусловлено многими факторами – начиная от менталитета и уровнем жизни и заканчивая формами и материалами для построек. Поэтому если при строительстве современные архитекторы будут учитывать восприятие эстетики населения, географию местности, культуру и традиции, тогда противостояния не будет.
Современные шедевры из стекла, бетона и стали
Даже если это здание из бетона, стекла и стали и оно будет иметь простую, технологичную форму без явных элементов декора сооружение вызовет повышенный интерес, но никак не протест.
Современный детский сад в России и в Германии (наши бы родители испугались вести в такой сад!)
Как показывает практика то, что создают современные архитекторы в Германии (если в проекте учли все вышесказанное), большинство немцев воспринимает как абсолютно нормальное явление – в России же эти объекты обязательно вызовут негодование, шквал возмущения и осуждение. Или то, что очень органично выглядит в Японии – американцы никогда не примут и будут считать безликим и просто никаким.
Современная архитектура довольно многообразна и не все ее принимают и понимают
Естественно, с течением времени термин «современная архитектура» стал намного обширней, чем был изначально, ведь появилось множество течений и ответвлений, которые с каждым днем меняют приоритеты. Но это и понятно, новые темпы жизни, инновационные материалы, часто меняющиеся модные тенденции диктуют свои правила и потребности и, не все творения архитекторов и дизайнеров общественность сможет оценить по достоинству.
Архитектура информационной системы
Виды архитектуры информационной системы
Любая информационная система (ИС) включает в себя три компонента:
- Управление данными;
- Бизнес-логику;
- Пользовательский интерфейс.
Данные хранятся в базах данных, а управление ими осуществляется с помощью системы управления базами данных (СУБД). Бизнес-логика определяет правила, по которым обрабатываются данные. Она реализуется набором процедур, написанных на различных языках программирования. Пользователь работает с интерфейсом, где логика работы ИС представлена в виде элементов управления – полей, кнопок, списков, таблиц и т.д.
Однако, эти три компонента в разных ИС взаимодействуют друг с другом различными способами.
Определение 1
Архитектурой информационной системы называется концепция, согласно которой взаимодействуют компоненты информационной системы.
Существуют следующие виды архитектур ИС:
- Локальная;
- Файл-серверная;
- Клиент-серверная;
- Трехслойная.
Локальные информационные системы
Локальные информационные системы широко использовались до появления компьютерных сетей. В этом случае все компоненты ИС располагаются на одном компьютере. Очевидным недостатком этой архитектуры является возможность работать в ИС только одному пользователю. Другие пользователи не имеют возможности получить доступ к данным даже для чтения.
Файл-серверная архитектура
С появлением компьютерных сетей возникла возможность хранить данные в файлах на выделенном специально для этой цели компьютере. Такой компьютер называется файловым сервером или просто сервером. Компьютеры пользователей соединены с сервером сетью, поэтому доступ к данным, могут получить несколько пользователей одновременно. Однако, кроме функции хранения данных и обеспечения доступа к ним, сервер никаких функций не выполняет. Приложения, обрабатывающие данные, находятся на пользовательских компьютерах.
Пример 1
Предположим, что в базе данных на сервере хранится список сотрудников крупного предприятия. На предприятии 1500 сотрудников и 10 подразделений. Пользователю нужно получить число сотрудников, работающих в каждом подразделении. Для решения этой задачи пользователь должен запросить данные всех 1500 сотрудников с сервера по сети, после чего на пользовательском компьютере выполнится процедура, которая осуществит подсчет сотрудников в каждом подразделении. Результатом процедуры будет 10 строк. Таким образом, чтобы получить 10 строк придется передать по сети 1500 строк.
Обработка данных на пользовательском компьютере всегда сопровождается передачей по сети большого количества «лишней» информации. Основными недостатками файл-серверной архитектуры являются:
- высокая загруженность сети и, как следствие, низкая скорость работы;
- сложность поддержания непротиворечивости данных, из-за их несогласованной обработки разными пользователями.
Клиент-серверная архитектура
До определенного момента на СУБД возлагались лишь задачи хранения данных и организации доступа к ним. С развитием технологий в состав СУБД разработчики стали включать новый компонент – процедурный язык программирования. С его помощью в СУБД стало возможным создавать процедуры для обработки данных, которые можно вызывать повторно. Такие процедуры называются хранимыми процедурами. Наличие хранимых процедур дало возможность осуществлять некоторую часть обработки данных на сервере.
Пример 2
Рассмотрим задачу из примера 1 в условиях клиент-серверной архитектуры. Пользователь отправит на сервер запрос, который запустит процедуру. Процедура выполнится непосредственно на сервере. Она подсчитает количество сотрудников в каждом подразделении и отправит полученные 10 строк по сети на клиентский компьютер. Таким образом, произойдет существенная экономия трафика: вместо 1500 строк будет передано по сети всего 10.
Клиент-серверная архитектура позволяет разгрузить сеть и поддерживать непротиворечивость данных за счет их централизованной обработки. Однако, языки хранимых процедур не приспособлены для полноценной реализации бизнес-логики. Поэтому бизнес-логика в клиент-серверных ИС по-прежнему реализуется на клиентских компьютерах. Такой подход имеет следующие недостатки:
- любые изменения в бизнес-логике требуют обновления на клиентском компьютере;
- клиентские компьютеры должны быть достаточно производительными;
- слабая защита данных от взломов.
Трехуровневая архитектура
Все недостатки клиент-серверной архитектуры связаны с тем, что на клиентском компьютере лежит слишком большая нагрузка, которую можно было бы перенести на сервер. Поэтому дальнейшее развитие технологий двигалось в направлении переноса нагрузки с клиентских компьютеров на сервер. В дополнение к хранимым процедурам разработчики стали использовать серверные языки программирования. Это дало возможность создавать в ИС промежуточный уровень — сервер приложений.
Определение 2
Сервер приложений – это комплекс программ, выполняемых на сервере и реализующих бизнес-логику ИС .
Использование сервера приложений позволяет максимально разгрузить клиентские компьютеры и сделать обработку данных еще более централизованной, что повышает скорость и надежность ИС.
Архитектурные формы и стили — Основные элементы зданий
Архитектурные формы и стили
В различные эпохи архитектурным формам соответствовали свои художественные приемы оформления, которые изменялись с изменением уровня развития технических средств и эстетических представлений, т.е. ценностного отношения между природой и человеческой деятельностью.
Архитектура и строительство — искусство возводить здания и сооружения, предназначенные для удобства и блага человека, — имеют ценнейшее историческое наследие от классических форм Древней Греции до современных композиций (построений) и архитектурных трансформаций (изменяющихся объемов сооружений), интерьера.
Во всем мире во множестве зданий и сооружений классические архитектурные формы обрели четкую художественную систему сочетания архитектурно-конструктивных решений, гармонии и пропорции здания, его деталей, функциональности интерьера (внутренний вид) и эстетики экстерьера (наружного вида) здания или ансамбля (группа зданий). Еще в античный период Греции сложились три таких классических сочетания: дорический, ионический и коринфский. Эти сочетания носят названия «ордер». Основная конструктивная схема всех ордеров — стоечно-ба-лочная конструкция, которая включает стойки (колонны) и опирающиеся на них балки (архитрав). В художественной трактовке конструктивной схемы проявляются отличительные особенности ордеров. Нижняя несущая часть — стилобат — служит основанием здания, в частности, подножием колонн. Следующая несущая часть ордера — колонна — один из определяющих художественных элементов. Колонны держат на себе верхнюю горизонтальную часть ордера — антаблемент. Каждая из названных частей состоит из более мелких элементов, декоративное богатство которых нарастает снизу вверх.
Колонна компонуется из трех основных деталей. Самая нижняя — база — опорная подушка, передающая нагрузку на стилобат. Из базы вырастает фуст — ствол колонны, который утончается кверху по лекальной кривой. Такое утонение называется энтазисом. Капитель — деталь, венчающая колонну и воспринимающая нагрузку антаблемента. Антаблемент также имеет троичное построение: архитрав, фриз, карниз.
Оценить богатство декора ордеров возможно только познакомившись с отдельными архитектурными формами, из которых складываются детали ордеров. Именно эти классические образы архитектурных форм предстоит создавать мастеру реставрационных строительных работ.
Художественные композиции архитектурных деталей ордеров слагаются из различных сочетаний простейших элементов декора с геометрической формой профиля, называемых обломами.
Рис. 1.16. Архитектурный ордер и его части
Отличия в построении и художественной проработке деталей проявляются в архитектонике (связи и взаимообусловленности элементов целого), деталировке колонн и антаблементов. Различие ордерных систем определяют в основном пропорции, ритм конструктивных членений архитектурных форм и деталей. Пропорции выражают соотношения размеров (длины, ширины, высоты) самого сооружения и его деталей; их измеряют в модулях. За модуль принимают нижний радиус колонны. Ритм отражает частоту повторения архитектурных деталей.
К горизонтальным членениям фасада относятся: цоколь, карниз (венчающий и промежуточный), архитрав, фриз, пояс, сандрик, парапет. Вертикальными членениями, к которым можно причислить и опоры, являются: выступы, колонны, пилястры, пилоны, столбы, полуколонны, анты, кариатиды, атланты, лопатки. Применение смешанных форм имеет место в таких конструкциях, как балкон, лоджия, эркер, фронтон, аркада, портик, колоннады, портал, оконные и дверные проемы.
Цоколь — горизонтальная наземная часть стены, начинающаяся непосредственно с фундамента и несколько выступающая наружу за лицо стены. Цоколь выполняется из особо прочных и водостойких материалов. Чтобы подчеркнуть значение цоколя и отличить его от стоящей на нем стены, его декоративно обрабатывают. Это достигается большими размерами облицовочных камней, фактурой отделки и другими средствами. Назначение цоколя — придать сооружению внушительный и устойчивый вид. Здание без цоколя кажется лишенным прочной основы. Художественное оформление цоколя чрезвычайно разнообразно и всегда должно быть по замыслу связано с отделкой всего фасада. Его верхняя часть представляет собой в разрезе форму выкружки, гуська, каблучка или другого профиля. Цоколь может иметь не один выступ от лица стены, а два-три, отделенных один от другого широкими плоскостями.
В отдельных случаях, когда требуется подчеркнуть монументальность, цоколь делают более высоким и массивным. Если здание строят с подвалом, в цоколе устраивают окна. Для него часто применяют облицовку гранитом или другими твердыми породами камня с различными способами отделки (полировка, шлифовка). Цоколь также обрабатывают крупными, грубо отесанными камнями, уложенными в горизонтальные ряды. Если высота его достаточно велика, то для облицовки цоколя применяют толстые каменные плиты, квадры, которые по контуру отесывают в виде узкой ленты, а также менее крупные, одинаковой формы и размеров камни с рустами.
Стилобат — наземная часть здания в виде отдельных мощных площадок, положенных одна на другую и расширяющихся книзу ступенчатыми уступами. На площадки стилобата укладывают добавочные камни, образующие ступени лестницы для входа в здание.
Карниз, венчающий здание, составляет конструктивный переход от наклонной (в большинстве случаев) плоскости крыши к вертикальной стене и служит для предохранения верхней части стены от намокания при стекании воды с крыши. Декоративно карниз, являясь одним из важнейших элементов архитектурной выразительности здания, завершает его.
Карниз большей частью делается из того же материала, что и стены, а именно: из кирпича, дерева и др. Во многих случаях каменные многоэтажные здания имеют карнизы из железобетона или из каменных и бетонных сборных элементов, накладываемых один на другой и образующих ступенчатый профиль, либо тянутые, штукатурные и лепные карнизы, сделанные по стальному каркасу и сетке. Вынос карниза или наибольший отступ его от стены делают разным в зависимости от архитектурного оформления здания. Промежуточные, междуэтажные карнизы имеют двоякое назначение: прежде всего они защищают стены от потока дождевой воды, а также являются средством горизонтального членения фасадной стены.
Столб — отдельная опора самой разнообразной формы в поперечном сечении (круг, прямоугольник, многоугольник, крест), применяется для поддержания балок перекрытия или свода. Столб по всей своей высоте имеет одинаковую толщину (сечение), в нижней части цоколь или базу, а в верхней — карниз или капитель. Пилон — мощный столб квадратного или прямоугольного сечения (рис. 1.17) обычно подпирает своды. Колонна-столб круглого, реже квадратного или иной формы сечения имеет нижнюю часть — базу, и верхнюю — капитель. Колонна кверху суживается, чем и отличается от столба.
Построение колонны осуществляется строго по правилам ордера данного стиля, с соблюдением присущих этому ордеру форм, пропорций и размеров.
Рис. 1.17. Пилон
Рис. 1.18. Пилястра
Колонна — декоративный элемент вертикального членения. Точная, ритмичная (на одинаковом расстоянии друг от друга) установка ряда колонн и внешняя их отделка требуют исключительного внимания и тщательности исполнения. Колонна, как и пилястра (рис. 1.18), имеет одновременно и декоративное, и конструктивное значение.
Аркада — это несколько совершенно одинаковых арок, опирающихся на ряд колонн, реже на простенки. Полуколонна, как и пилястра, выступает из массива стены до половины своей толщины. Правила ее построения те же, что для пилястр и колонн. Реже встречаются и трехчетвертные колонны, выступающие из массива стены на 3/4 своей толщины.
Наиболее характерная деталь колонны, определяющая отличие ордеров, — капитель (рис. 1.19).
Рис. 1.19. Капитель архитектурных ордеров: а — дорического; б — ионического; в — коринфского
Дорический ордер (см. рис. 1.19, а). Дорическая массивная колонна не имеет базы, фуст (ствол) ее обязательно имеет каннелюры — вертикальные желобки на стволе колонны.
Ионический ордер (см. рис. 1.19, б). Основные особенности: более стройная колонна; имеет развитые базу и капитель.
Стержень колонны украшен более глубокими каннелюрами, чем в дорическом ордере, с узкими промежутками. Каннелюры у базы и капители заканчиваются полукругами. Утонение колонны мало заметно и начинается на 1/3 от ее основания. Непременную принадлежность базы составляют вал и выкружка.
Наиболее характерной частью является капитель с завитками (волютами), верхнюю часть которой составляет абак в виде плиты с профилем каблучка. Между двумя завитками расположены ионики. Антаблемент состоит из архитрава, фриза и карниза. При этом архитрав украшен орнаментованным профилем. Фриз используется для разнообразных скульптурных композиций. Карниз имеет зубчики-сухари.
Коринфский ордер (см. рис. 1.19, в). Характерное отличие коринфского ордера — утоненная колонна с богато орнаментованной капителью.
В капители различают абак в виде плиты с полочкой и четвертным валом со сторонами, несколько вдавленными внутрь. Под абаком расположены волюты, поддерживающие его угловые свесы, а другие, меньших размеров завитки, сходящиеся по вдавленным частям абака, поддерживают помещенную в этом месте розетку. Под завитками расположены в два яруса акантовые листья, большие и малые.
Архитрав располагается уступами с введением небольших про-фильков, фриз — гладкий с рельефным орнаментом. В карнизе имеются следующие элементы: каблучок, ряд зубцов и четвертной вал. Выше расположены модульоны в виде лежащих кронштейнов, поддерживающих слезниковый камень.
Главное назначение отдельных элементов архитектурных ордеров — воплощать принцип пропорциональности.
Каждая новая ступень в развитии общества приводила к новым стилям в строительстве и архитектуре. Творимая человеком архитектурная среда отражает действительность, которой присущи именно свои понятия о красоте.
Сравнивая произведения архитектуры во времени, историки классифицируют следующие периоды: Древняя Греция и Рим; средневековье; романский период; готика; ренессанс; барокко; классицизм; архитектура XX в. (модерн, конструктивизм, эклектика).
Римская архитектура представляет собой последний и самый прогрессивный этап в строительном и архитектурном развитии
Рис. 1.20. Собор Сан-Марко в Венеции
античного рабовладельческого общества. Монументальные римские постройки на территории Европы остались в наследство молодым государствам — Византии, Италии, Испании, Франции.
Например, собор Сан-Марко в Венеции (1095) обнаруживает стремление строителей подражать античной архитектуре (рис. 1.20). Церковь возводилась на протяжении века.
Такая византийская купольная система в плане с греческим крестом послужила прототипом древнерусского православного зодчества.
Романский стиль (рис. 1.21). Архитектурные сооружения романского периода (XI—XIII вв.) представляют собой массивные геометрические объемы, поверхности стен прорезаны маленькими окнами. Орнамент незамысловатый, используется редко. В этом стиле заметно сильное влияние римской античной архитектуры в крупных деталях (полуциркульные арки), сохранен общий силуэт и пропорции колонн. Романская архитектура по сравнению с другими архитектурными периодами довольно бедна декоративными формами. Капители колонн, первоначально приближаясь к античным формам, затем упростились до простых рубленых геометрических форм.
Рис. 1.21. Романский стиль:
а — фриз из полуциркульных арок; б — двойной арочный фриз из кирпича; в — кубическая капитель; г — капитель из пальметт
Готика. В XII—XV вв. новый архитектурный стиль получил название — готика. Характерная особенность готического стиля — стрельчатый свод, состоящий из двух пересекающихся друг с другом сегментных дуг (рис. 1.22).
В результате своей вариабельности стрельчатый свод по многим позициям превосходил полуциркульный свод. Массивная каменная кладка раннего средневековья сменилась ажурными каменными конструкциями. Вертикальные опоры и колонны, а также наклонные каменные конструкции (аркбутан, контрфорс) переносят собранные в пучок статические нагрузки на фундамент (рис. 1.23). В начальный период готики преобладала форма базилики. Со временем наиболее распространенной стала зальная форма помещений, равновеликие нефы которой сливались внутри в единое пространство.
Рис. 1.22. Вход в католический собор (готика)
Ренессанс (XV—XVI вв.). Французское слово renaissanse (возрождение) традиционно используется для обозначения периода подъема итальянского искусства (1450—1550), а также искусства стран Европы с 1500 г., на которое Италия оказала большое влияние.
Рис. 1.23. Готическая сводчатая базилика
В архитектуре эпохи Ренессанса живописно переплелись по-зднеготические тенденции с пришедшими из Италии романтическими формами. В противоположность готическому усложнению стены с подчеркнутым скелетом каменной кладки. Ренессанс вновь обратился к массивным и визуально устойчивым архитектурным объектам, наружные стены которых были украшены орнаментами в подражание античным формам; ризалиты были разнообразны по форме и размерам (рис. 1.24).
Рис. 1.24. Палаццо (дворец-особняк). Арх. А. Палладио (1566)
Над созданием архитектурных сооружений работали талантливые мастера-художники, архитекторы, строители. Тем самым возникала материальная среда, которая благоприятствовала светской жизни, занятиям искусствами, литературой, музыкой.
Барокко (XVI—XVII вв.). Итальянский Ренессанс свои архитектурные формы наследовал стилю барокко {barocco — причудливый), который превзошел его по сложности, многообразию и живописности. Фасад здания характеризуется изобилием профилированных карнизов, пилястр, сложных скульптурных деталей, где все подчинено единому архитектурному замыслу — вихрю, движению, симметрии — «каменной симфонии» (рис. 1.25). Асимметричный орнамент этого периода — орнамент из раковин и завитков — дал название другому стилю — рококо (рис. 1.26).
Классицизм (XVIII—XIX вв.) — направление в искусстве, обратившееся к античному наследию как к норме и идеальному образцу, на идеях философского рационализма, на представлениях о разумной закономерности мира, о прекрасной облагороженной природе, стремление к строгой организованности логичных, ясных и гармоничных образов.
Рис. 1.25. Окна. Стиль барокко
Стремление претворить в современном строительстве благородную простоту и спокойное величие античного искусства иногда приводило к полному копированию античных построек (рис. 1.27). Центрами строительства в стиле классицизма стали Россия, Германия, Англия и другие страны.
Архитектура XX в. Конец ХГХ в. характерен интенсивной строительной деятельностью, не сравнимой с предыдущими эпохами. Жилые и производственные здания, транспортные сооружения, управленческие комплексы возникали в огромном количестве.
Рис. 1.26. Орнамент. Стиль рококо ленности и скопление рабочего
Архитектура XIX в. ориентировалась на формы прошлого. И если в период классицизма возвращались к античности, то в конце XIX в. было заметно тяготение к средневековой архитектуре, ренессансу, необарокко.
Рис. 1.27. Ротонда. Внутренний интерьер
Этот архитектурно-ретроспективный плюрализм привел к смешению стилей (эклектика), из которых довольно ясно образовались два новых течения: модерн и конструктивизм. Стремясь преодолеть эклектику, представители модерна использовали инженерно-конструктивные средства и свободную планировку для создания необычных, подчеркнуто индивидуализированных зданий, элементы которых подчинялись орнаментальному ритму и образно-символическому замыслу (рис. 1.28).
Рис. 1.28. Балкон в стиле модерн
Главные проблемы архитектуры XX в. сосредоточены в общественно-социальной сфере. В результате общественного развития, стремительного роста материальных и духовных потребностей возник дефицит организованного и застроенного архитектурного пространства.
Рис. 1.29. Интерьер конференц-зала здания ЮНЕСКО. 1957 г.
Технологии, разработанные для рационального массового производства строительных конструкций для жилых и промышленных зданий из унифицированных элементов, предусматривали жесткую стандартизацию и привели к новому стилю — конструктивизму. Конструктивизму удалось создать простые функционально оправданные формы, целесообразно сочетая оптимальность конструктивных решений и раскрепощенность архитектурных объемов (рис. 1.29).
Читать далее:
Фундамент
Крыша
Перегородки
Перекрытия
Карниз
Стены
Основные элементы зданий
определение архитектуры по The Free Dictionary
3. структура, дизайн, форма, состав, конструкция, каркас, макет, анатомия архитектура мышечных волокон см. типы арки цитаты
«Архитектура в целом — это застывшая музыка» [Фридрих фон Шеллинг Philosophie der Kunst ]
«Архитектура — это искусство того, как тратить пространство впустую» [Филип Джонсон New York Times ]
«Архитектура — это искусство всех видов искусства. тот, который действует медленнее, но надежнее всего на душу »[Эрнест Димнет Чем мы живем, ]
Архитектура
Архитектурные стили Ар-деко, модерн, барокко, баухаус, брутализм, византийский, шурригереск или churrigueresco, классический, колониальный, композитный, коринфский, украшенный, дорический, ранний христианский, ранний английский, эдвардианский, елизаветинский, империя, федерация ( Austral. ), функционализм, грузинский, готический, готический, греческое возрождение, международный стиль или Модерн, ионический, якобинский, Луи Кваторз, Луи Куинз, Луи Сезе, Луи Трейз, маньерист, модерн, мавританский или Мориско, мудехар, неоклассицизм, новый бруталист, нормандский, палладианский, перпендикулярный, постмодернистский, королева-Анна, регентство, ренессанс, рококо, римский, романский, сарацин, саксонский, переходный или переходный, тюдорский, тосканский, викторианский
Архитектурные термины аббревиатура или примыкающий, архитектурный, архитектонический, архитектурный, астилар, валик, кронштейн, зубчатый замок или , чинквеченто, уединенный, колоссальный или гигантский, композитный, опорный, зубчатый или (U.S.) зубчато-зубчатый, диастильный, уменьшающийся, двустворчатый, выделение, барабан, возвышение, задействованный, эвритмический, фенестрированный, наполнитель, яркий, план этажа, флорированный или , флорированный, витиеватый, рифленый, слоистый, слоистый, галилейный, галерия , план земли, шестигранник, высокий, бедро, бедро, гипостиль, черепица или , мозаичный, межколонный, перевернутый, изогнутый столб или , королевский столб, ланцетный, lierne, перемычка или лето, в списке, лоджия, член, модуль, Moresque, naos, порядок, ориентация, полихромия, postiche, профиль, простиль, pulvinate или pulvinated, штифт царицы, безудержный, рендеринг, ответ, возврат, ритм, развитие ленты, подъем, рустикальный, секс-разделение, вал, валка, ракушка, софит, пружина, пружина, линия пружины, или точка пружины, ходуля, ярус, борозда, стрингер, струна, или курс струны, стилобат, подоснование, лето или летнее дерево, суперколонна, надбавка, патрубок или же хвостовая балка, трабеат или трапеция, тимпаническая, свод под питчем
Архитектурные особенности abacus, acanthus, accolade, acroter, проход, проходной, амфипростиль, амфистиляр, ancon или , anconea, anconea, anthemion, ancone или апофиг или гипофиг, апсида или апсида, аптеральный, аркада, аркатура, арка, архитрав, архивольт, аркуация, артикуляция, артикуляция, астрагал, атлас ( множественное число атлантов) или телтик, атлант, атлант или багет, балкон, балдахин, балка, балдахин, балясина, лента, бандероль, бандероль, или баннерол, пара барж, курс баржи, бочкообразный свод, туннельный свод, или вагонный свод, основание, подвал, эркер, бусинка, клюв, лепнина, звонница, безант, безант, или визант, заготовка, скоросшиватель, заготовка или , желчь, нижняя палата, лук, эркер, кронштейн, перемычка, грудка, протяжка, контрфорс, кессон, сундучок , или лакуна, купол, навес, консоль, капитель, капитер, или колпак, картуш, кариатида, футляр или , створка, Екатерининское колесо, каветто, потолок, целла или наос, погреб, канал, венок, щека, шеврон или танец, хор, лофт для хора, лапчатка, фонарь, монастырь, колоннада, колумбарий, колонна, колонизация, окно компаса, раковина или , раковина, конже, корбей или , корбель, корбель или или ферма, фронтон корби, ступенька корби, ступень карниза, ступенька или , кордон, курс для струн, курс для пояса, стол или , карниз, корона, бухта или , гребень или зубчатый гребень, гребень, крокет или вязание крючком, пересечение, корона, кулис, купол, бордюрная крыша, ступенька, навесная стена, подушка, куспид, острие, цима, циматиум, дадо, декастиль, зубчик, штамп, клык, капель, капельный камень, этикетка, или капюшон плесень, эхинус, эктип, яйцо и дар t, яйцо и язык, или яйцо и якорь, элль, амбразура, антаблемент, энтазис, экседра, экстрадос, фасад, грань, веер, фрамужный светильник, веерный хвост, веерный узор, веер или своды ладони, фасция или фасция , фасциальный или лицевой, фенестелла, фенестра, фестон, филе или листель, наконечник, флеш, гофрировка, аркбутресс или дугообразный, фольга, опора, подножка, французские окна или двери, фриз, фасад , усеченная вершина, фронтон, фронтальный конец, фронтальное окно, gadroon или godroon, галерея, gambrel, горгулья, чердак, garth, сторожка, беседка, глиф, градин, griffe, пах, грот, gutta, полу-посадка, haunch или hance, надгробие, надгробие, вертолет, шатровая крыша или , империал, импост, интрадос, джуб, краеугольный камень, квен, надгробие или , стрельчатая арка, готическая арка, или огив, стрельчатое окно, площадка, фонарь, свинцовый, лоджия, длинная и короткая работа, жалюзи, люкарн, машиколат ион, мансарда, меандр, медальон, метоп, минарет, модильон, лепка, импост, мутул, нартекс, шея, шейка или горгерин, нюэль, ниша, нормандская арка или Римская арка, обелиск, oeil-de-boeuf, смещение, ogee, ogee arch, или talon, ogive, луковый купол, oriel или oriel window, ovolo, четверть круга, или большой палец, шаг, парапет, патио, пьедестал, фронтон, кулон, пентхаус, перистиль, перпенд, перрон, площадь, пирс, столб, вершина, платформа, постамент, подиум, пределла, пилон, четырехугольник, маковая голова, крыльцо или портик, портал, порте-коше, задняя часть, пропилеум, четырехугольник, четырехугольник, причуда, корешок, coign, или coigne, тростник, ридинг, реглет, рельеф, отклик, возврат, раскрытие, ребро, гребень, окно-розетка, розетка, розетка или , ротонда, кругляк, двускатная крыша или седло, створчатое окно, шотландия , ширма, завитки, полукопч, вал, вал, порог, косая арка, световой люк, потолок, перемычка или spandril, spire, splay, springer, squinch, косоглазие или hagioscope, steeple, stele или stela, stoa, sting piece, strap work, stria, strigil, stylobate или stereobate, summer, taenia или (U. S.) tenia, tambour, tellamon, term, terminal, или terminus, torus или tore, ажур, трансепт, траверс, трилистник, трибун, трифорий, триглиф, трофей, трюмо, турель, тимпан или tympan , подземный свод, свод, веранда или веранда, край, виньетка, спираль или , водный стол, паутина, шепчущая галерея, xyst
Architects Alvar Aalto ( финский ), (Лесли) Патрик Аберкромби английский ), Джеймс Адам ( шотландский ), Роберт Адам ( шотландский ), Уильям Адам ( шотландский ), Леон Баттиста Альберти ( итальянский ), Anthemias of Tralles ( греческий ), Арнольфо ди Камбио ( итальянский ), Эрик Гуннар Асплунд ( шведский ), Герберт Бейкер ( английский ), Чарльз Барри ( английский ), Фредерик Август Бартольди ( французский ), Питер Беренс ( немецкий Петрус ), Хендрик Берлаге ( голландский ), Джан Лоренцо Бернини ( итальянский ), Франческо Борромини ( итальянский ), Этьен-Луи Буль ( французский ), Донато Браманте ( итальянский ), Марсель Лайош Бройер ( венгерский-U. S. ), Саломон де Броссе ( французский ), Филиппо Брунеллески ( итальянский ), Дэвид Брайс ( шотландский ), Дэвид Хадсон Бернхэм ( США ), Децимус Бертон ( английский ), Уильям Баттерфилд ( английский ), Калликрат ( греческий ), Якоб ван Кампен ( голландский ), Феликс Кандела ( мексиканский ), Хью (Максвелл) Кассон ( английский ), Уильям Чемберс ( шотландский ), Серж Чермаев ( США, ), Дон Хосе Чурригера (, испанский, ), Уэллс Винтемут Коутс (, английский, ), Чарльз Роберт Кокерелл (, английский, ), Пьетро Берреттини да Кортона (, итальянский, ), Франсуа де Кувильи (, баварский, ), Дедал ( греческий ), Джордж Дэнс (старший) ( английский ), Джордж Дэнс (младший) ( английский ), Филибер Делорм или de l’Orme ( французский ), Тео ван Дусбург ( голландский ), B алкришна Витальдас Доши ( индийский ), Виллем Маринус Дудок ( голландский ), Иоганн Карл Людвиг Энгель ( финский ), Артур Чарльз Эриксон ( канадский ), Иоганн Бернхард Фишер фон Эрлах5 (9000) Австрийский Фишер фон Эрлах (9000) ( Английский ), (Ричард) Бакминстер Фуллер ( U. S. ), Анж-Жак Габриэль ( французский ), Тони (Антуан) Гарнье ( французский ), Антонио Гауди ( испанский ), Патрик Геддес ( шотландский ), Фредерик Гибберд ( английский ), Джеймс Гиббс ( английский ), Касс Гилберт ( США ), Фридрих Гилли ( немецкий ), Франческо ди Джорджо ( итальянский ), Джотто (ди Бондоне) ( итальянский ), Джулио Романо ( итальянский ) ), Вальтер Гропиус ( немецкий ), Гуарино Гуарини ( итальянский ), Томас Гамильтон ( шотландский ), Жорж Юджин Осман ( французский ), Николас Хоксмур ( английский ), Иоганн Лукас фон Хильдебранд ( английский ), Иоганн Лукас фон Хильдебранд ), Йозеф Хоффманн ( австрийский ), Генри Холланд ( английский ), Виктор Орта ( бельгийский ), Эбенезер Ховард ( английский ), Иктин ( греческий ), Имхотеп ( египетский ), Арне Якобсен ( датский ), Филип Кортелью Джонсон ( U.S. ), Иниго Джонс ( английский ), Людовик I (садоре) Кан ( США ), Уильям Кент ( английский ), (Пьер Франсуа) Анри Лабруст ( французский ), Дени Ласдун ( английский ), Ле Корбюзье ( французский язык ), Клод Николя Леду ( французский язык ), Леонардо да Винчи ( итальянский язык ), Пьер Леско ( французский язык ), Уильям Ричард Летаби ( английский язык ), Луи Лево () Французский ), Адольф Лоос ( австрийский ), Роберт Стодарт Лоример ( шотландский ), Эдвин Лютьенс ( английский ), Чарльз Ренни Макинтош ( шотландский ), Артур Хейгейт Макмурдо ( английский ) Мадерно ( итальянский ), Франсуа Мансар ( французский ), Жюль Ардуэн Мансар ( французский ), Эрик Мендельсон ( немецкий ), Микеланджело ( итальянский ), Микелоццо ( итальянский ), ван Людвиг Rohe ( Немецкий-U. S. ), Чарльз Уиллард Мур ( США ), Джон Нэш ( английский ), Пьер Луиджи Нерви ( итальянский ), Иоганн Бальтазар Нойман ( немецкий ), Оскар Нимейер ( бразильский ), Андреа Орканья ( итальянский ), Якобус Иоганн Питер Уд ( голландский ), Андреа Палладио ( итальянский ), Джозеф Пакстон ( английский ), I (eoh) M (ing) Пей ( китайский — США), Огюст Перре ( французский язык ), Бальдассаре Томмазо Перуцци ( итальянский ), Пьетро да Кортона ( итальянский ), Джамбаттиста Пиранези ( итальянский ), Андреа Пизано ( итальянский ), Никола Пизано ( итальянский ) Генри Плейфэр ( шотландский ), Ханс Пельциг ( немецкий ), Август (Уэлби Нортмор) Пугин ( английский ), Рафаэль ( итальянский ), Джеймс Ренвик ( U.S. ), Геррит Томас Ритвельд ( голландский ), Ричард Роджерс ( английский ), Ээро Сааринен ( финский — США), Микеле Санмикели ( итальянский ), Якопо Сансовино ( итальянский ), Карл Фридрих Шинкель ( немецкий ), Скопас ( греческий ), Джордж Гилберт Скотт ( английский ), Джайлс Гилберт Скотт ( английский ), Себастьяно Серлио ( итальянский ), Ричард Норман Шоу ( английский ), Роберт Смирк ( английский ), Роберт Смитсон ( английский ), Джон Соан ( английский ), Этторе Соттсасс младший ( итальянский ), Жак Жермен Суффлот ( французский ), Бэзил (Анвин) Спенс ( шотландский ) ), Джеймс Стирлинг ( шотландский ), Джордж Эдмунд-стрит ( английский ), Джеймс Стюарт ( английский ), Луи (Анри) Салливан ( U. S. ), Кензо Танге ( японский ), (Джон) Куинлан Терри ( английский ), Александр (греческий) Томсон ( шотландский ), Йорн Утцон ( датский ), Джон Ванбру ( английский ) , Генри ван де Вельде ( бельгийский ), Джорджио Вазари ( итальянский ), Роберт Вентури ( США ), Джакомо Бароцци да Виньола ( итальянский ), Эжен Эммануэль Виолле-ле-Дюк ( французский ), Маркус Витрувий Поллион ( Роман ), Чарльз (Фрэнсис Аннесли) Войси ( английский ), Отто Вагнер ( австрийский ), Альфред Уотерхаус ( английский ), Астон Уэбб ( английский ), Филип Уэбб ( английский) ), Джон Вуд (старший) ( английский ), Джон Вуд (младший) ( английский ), Кристофер Рен ( английский ), Фрэнк Ллойд Райт ( U.S. ), Джеймс Вятт (, английский, ), Минору Ямасаки (, США, )
Понимание программного обеспечения и архитектуры системы — новый стек
Екатерина Паганини
Екатерина Паганини возглавляет отдел маркетинга Kublr. От стратегических до тактических, Кэтрин помогает Kublr пропагандировать безграничные возможности облачных технологий, формировать бренд и идти в ногу с ростом. Прежде чем присоединиться к технологическому стартапу, Кэтрин продавала услуги B2B в известных организациях, таких как Booz Allen Hamilton и The Washington Post.
Этот пост является частью продолжающейся серии статей Кэтрин Паганини, в которой основное внимание уделяется объяснению концепций ИТ для руководителей бизнеса. Некоторые ключевые концепции, о которых идет речь в этой статье, объясняются в ее предыдущей статье «Учебник по распределенным системам».
По мере того, как технологии становятся ключевым отличием, бизнес-лидеры все чаще участвуют в стратегических обсуждениях с ИТ-руководителями, чтобы лучше понять, как разрабатываемые ими решения будут соответствовать потребностям их бизнеса. На данном этапе критически важно, чтобы у них было базовое понимание того, как работает программное обеспечение и системная архитектура и как принятые решения о выборе правильной архитектуры повлияют на конечное бизнес-приложение или решение с точки зрения удобства использования, масштабируемости, гибкости и многого другого. Мы надеемся, что этот общий обзор предоставит необходимый контекст, чтобы лучше ориентироваться в таких обменах. Такой подход представляет особый интерес для системных архитекторов, которым необходимо понимать, развертывать распределенные облачные системы и управлять ими.
Как отмечалось в нашей предыдущей статье , распределенные системы представляют собой сложные части программного обеспечения. Чтобы справиться с этой сложностью, системы должны быть правильно организованы. Давайте начнем с различения двух ключевых концепций организации: архитектуры программного обеспечения и архитектуры системы.
Программная архитектура относится к логической организации распределенной системы на программные компоненты. Вместо одного большого монолитного приложения распределенные системы разбиты на несколько компонентов. То, как эти компоненты разбиты, влияет на все, от производительности системы до надежности и задержки ответа.
Системная архитектура относится к размещению этих программных компонентов на физических машинах. Два тесно связанных компонента могут быть совмещены или размещены на разных машинах.Расположение компонентов также повлияет на производительность и надежность.
Результирующий архитектурный стиль в конечном итоге определяет, как компоненты связаны, происходит обмен данными и как все они работают вместе как целостная система.
Архитектура программного обеспечения
Существует множество различных архитектурных стилей, включая многоуровневые архитектуры, объектно-ориентированные, сервисно-ориентированные архитектуры, архитектуры RESTful, архитектуры pub / sub и так далее. Используемый стиль в конечном итоге зависит от приложения.Кроме того, по мере того, как вы начинаете создавать более сложные взаимосвязанные системы, размер распределенных систем увеличивается. В результате необходимо упростить и рационализировать такие процессы, как коммуникация.
1. Многоуровневая архитектура
Начнем с многоуровневой архитектуры. В многоуровневой архитектуре компоненты организованы по уровням. Компоненты на более высоком уровне выполняют вызовы вниз (отправляют запросы на более низкий уровень). Хотя компоненты нижнего уровня могут совершать восходящие вызовы (отправлять запросы вверх), они обычно отвечают только на запросы более высокого уровня.
Рассмотрим в качестве примера Google Диск / Документы:
- Уровень интерфейса : вы запрашиваете последнюю версию документа с вашего накопителя.
- Уровень обработки : обрабатывает ваш запрос и запрашивает информацию из уровня данных.
- Уровень данных : хранит постоянные данные (также известные как ваш файл) и обеспечивает доступ к слоям более высокого уровня.
Уровень данных возвращает информацию на уровень обработки, который, в свою очередь, отправляет ее в интерфейс, где вы можете просматривать и редактировать ее.Хотя это похоже на единый процесс, он разбит на три (или более) компонента на трех разных уровнях. Каждый уровень может быть размещен или не размещен на другой машине (это соображение системной архитектуры).
Упрощенная организация запроса на просмотр Google Диска / документа
2. Объектно-ориентированные, сервис-ориентированные архитектуры, микросервисы и сетчатые архитектуры
Объектно-ориентированные, сервисно-ориентированные архитектуры (SOA), микросервисы и «ячеистые» архитектуры организованы более свободно и представляют собой эволюционную последовательность.Хотя мы сгруппировали их вместе, объектно-ориентированный подход — это не архитектурный стиль, а, скорее, методология программирования, которая делает возможными сервис-ориентированные архитектуры (SOA) и микросервисы.
Объектно-ориентированные архитектурные стили
Краткое примечание по объектам
В ИТ все может быть объектом. Однако в контексте объектно-ориентированной архитектуры это относится к различающимся, но взаимосвязанным компонентам приложения, как описано выше. Если вы слышите, как ИТ-специалисты говорят об объектах в другом контексте, они не обязательно относятся к компонентам приложения (хотя все компоненты являются объектами).
Объектно-ориентированное программирование — это методология, обычно используемая в контексте монолитных приложений (хотя она также используется в более современных архитектурах). Внутри монолита логические компоненты сгруппированы как объекты. Хотя они и являются различимыми компонентами, объекты по-прежнему сильно взаимосвязаны и их нелегко разделить. Объектно-ориентированный — это способ организации функциональности и управления сложностью внутри монолитов.
Каждый объект имеет свой собственный инкапсулированный набор данных, называемый состоянием объекта . Возможно, вы слышали о приложениях с отслеживанием состояния и без него, которые определяют, хранят ли они данные или нет. В этом контексте состояние означает данные. Метод объекта — это операции, выполняемые с этими данными.
Объекты связаны через механизмы вызова процедур . Во время вызова процедуры объект «обращается» к другому объекту для определенных запросов. Поэтому, когда вы слышите «вызов процедуры», подумайте о запросе.
Объектно-архитектурный стиль
Сервисно-ориентированная архитектура
Объекты составляют основу инкапсуляции сервисов в независимые единицы, что ведет к разработке SOA.Сервисы — это автономные, независимые объекты, которые используют другие сервисы. Связь происходит по сети с помощью «сообщений», отправляемых каждому интерфейсу.
Микросервисы
Микросервисы— следующий шаг в этой эволюционной последовательности. Эти микросервисы меньше, чем сервисы в SOA, менее тесно связаны и более легкие. Однако более существенным отличием с точки зрения бизнеса является их способность сокращать время выхода на рынок.
В отличие от SOA, где разработчикам необходимо спроектировать и отобразить все взаимодействия и интерфейсы перед развертыванием службы (процесс, который может занять несколько месяцев), микросервисы более независимы, что позволяет разработчикам выпускать обновления, не беспокоясь об архитектурных деталях. Кроме того, разработчики могут использовать любой язык программирования, какой захотят. Выбор лучшего языка для конкретной программы еще больше увеличивает скорость и, следовательно, время выхода на рынок.
Сетчатые архитектуры
АрхитектураMesh состоит из служб или процессов, работающих на узлах, которые нелегко учесть. Они могут часто подключаться и отключаться, некоторые могут даже не пользоваться Интернетом. Эти службы устанавливают временные одноранговые соединения и могут оставаться анонимными на протяжении всего процесса.Примерами являются одноранговые технологии, такие как TOR, торренты, мессенджеры p2p, блокчейн и т. Д.
АрхитектураMesh дает два дополнительных качества:
- Взаимодействующие сервисы / процессы более единообразны : в ячеистой сети может быть всего несколько или даже один тип сервиса. Они считаются равными друг другу — одинаково заслуживающими доверия или ненадежными, например, если мы говорим о безопасности. Это сильно отличается от традиционных архитектур на основе сервисов, где обычно существуют десятки неоднородных сервисов.
- Больше внимания уделяется его распределенной природе .
Mesh-технологии могут оставаться эффективными даже в крайне нестабильных средах, где связь между компонентами легко нарушается. Некоторые компоненты, а в некоторых случаях даже большинство компонентов, напрямую не подключаются. Вместо этого они обмениваются данными через несколько «переходов» через другие элементы системы (сообщения «переходят» или «переходят» от одного элемента к другому, пока не достигнут пункта назначения).
Хотя вы можете видеть тот факт, что идет эволюция от объектно-ориентированного программирования к SOA, микросервисам и сетчатым архитектурам, это не означает, что эта методология устарела.Объектно-ориентированный — это просто разделение блоков внутри компонента или монолита. Эта методология использовалась и используется до сих пор. Фактически, вы можете разрабатывать объектно-ориентированные микросервисы, в которых микросервисы состоят из объектов.
3. Передача репрезентативного состояния (REST) или архитектуры RESTful
REST — это архитектурный стиль, широко используемый в Интернете (архитектура, ориентированная на веб). Распределенная система рассматривается как огромная коллекция ресурсов, индивидуально управляемых компонентами.Ресурсы в контексте REST представляют собой уникальную форму сервисов, которые следуют следующим соглашениям:
- Они понимают ограниченный набор команд, часто ограниченный вводом, получением, удалением и публикацией
- Существует только одна схема именования (на основе URL)
- Интерфейсы ресурсов соответствуют тем же соглашениям и семантике
- Сообщения полностью самоописываются
- После выполнения операции над ресурсом ресурс забывает все о вызове от клиента, за исключением результирующих изменений состояния службы
Это последнее свойство называется исполнением без сохранения состояния .
Почему все эти ограничения на команды и спецификации интерфейса? Что ж, просто подумайте о чрезвычайно разнообразных системах, которые должны общаться через Интернет. Стандартизация интерфейсов и сокращение команд значительно упрощают разработку совместимых систем. REST — это в основном упрощение, позволяющее справиться с разнообразием в огромной распределенной системе, такой как Интернет.
Несмотря на эти ограничительные команды, разработчики обладают достаточной гибкостью, чтобы выразить все, что им нужно. Это связано с тем, что URL, описывающий адрес ресурса, содержит все необходимые данные для выполнения операций.Давайте HTTP GET http://amazon.com/shoppingcart/546/items/12345 в качестве примера. Эта команда представляет собой запрос на получение товаров «12345» из корзины покупок «546.» Все подробности о том, что это такое и где это найти, выражены в URL-адресе.
4. Архитектуры публикации и подписки
«Публикация-подписка» или, как сказал бы технический специалист, «паб / подписка» — это еще более слабо связанная архитектура, которая позволяет процессам легко присоединяться или уходить. Ключевое различие здесь в том, как сервисы общаются. Вместо вызова и получения ответа службы отправляют односторонние, обычно асинхронные сообщения, обычно не конкретному получателю. Они полагаются на конфигуратора, администратора или разработчика, чтобы указать, кто и какое сообщение будет получать. В некоторых случаях сами получатели могут подписаться на получение сообщений. Кстати, именно так вы получаете push-уведомления о последних новостях. The Washington Post , например, публикует новость, отнесенную к категории «последние новости», и каждый, кто подписывается на эти обновления, получит ее.
Pub / sub наиболее актуален для мобильных приложений, где надежность сети часто является проблемой. Если мобильное приложение полагается на обращения в службу поддержки, вы получите неудобства для пользователей, как только потеряете соединение. С другой стороны, с pub / sub вы просто получите обновление позже (например, в худшем случае все остальные узнают о последнем твите Трампа раньше вас), но это не повлияет на сам пользовательский интерфейс.
Системные архитектуры
Системная архитектура включает решения о том, где разместить определенные программные компоненты.Следует ли размещать определенные компоненты на одном сервере или на разных машинах? У предприятий может быть конкретный сервер высокоскоростной обработки или высокопроизводительное надежное хранилище, которое они захотят использовать для определенных компонентов. Эти решения приведут к разным типам архитектурных организаций. Мы можем в целом разделить их на централизованные и децентрализованные организации.
1. Централизованные организации: системы клиент-сервер
Сервер — это процесс, реализующий определенную службу (например,грамм. служба базы данных). Клиент — это процесс, запрашивающий эту услугу у сервера. Клиент отправляет запрос и ждет ответа (поведение запрос-ответ). Если эти процессы физически распределены, это приведет к разным многоуровневым архитектурным стилям .
Помните три описанных выше уровня (интерфейс, обработка, уровень данных)? Хотя мы различаем три логических уровня, существует несколько способов физического распределения клиент-серверного приложения по машинам.
В самой простой организации используются два типа машин: 1) клиентская машина с пользовательским интерфейсом (уровень один) и 2) серверный интерфейс, содержащий программу, реализующую процесс и данных (второй и третий уровни). В этом случае все обрабатывается сервером, а клиент — не более чем тупой терминал. Это называется двухуровневой архитектурой (физически) . Однако есть и другие способы разделить эти три слоя на двух машинах.Возможности варьируются от разделения, как упоминалось выше, до того, чтобы все, кроме сохраненных данных, работало на клиентской машине. Вы можете увидеть эти различные варианты на рисунке ниже.
Варианты физически двухуровневых трехуровневых архитектур.
В (физически) трехуровневых архитектурах один из серверов также должен выступать в качестве клиента. Приложение распространяется на трех машинах, одном клиенте и двух серверах.Один из серверов может нуждаться в вводе от другого сервера для обработки запроса клиента, действующего как клиент.
Трехуровневая архитектура: один клиент и два сервера, при этом сервер приложений также выступает в роли клиента.
Многоуровневая архитектура клиент-сервер является прямым следствием разделения распределенных приложений на пользовательский интерфейс, компоненты обработки и компоненты управления данными. Различные уровни напрямую соответствуют логической организации приложений (архитектура программного обеспечения соответствует архитектуре системы).Это называется вертикальным распределением , в котором логически разные компоненты размещаются на разных машинах. Это позволяет настраивать каждую машину для выполнения определенной функции, например, помещая уровень обработки на высокопроизводительный сервер обработки.
2. Децентрализованная организация: одноранговые системы
В современных архитектурах клиенты и сами серверы распределены, в так называемом горизонтальном распределении . Клиент или сервер могут быть физически разделены, но каждая часть работает на своей собственной доле полных данных, таким образом балансируя нагрузку. Таким образом, вместо того, чтобы иметь одно хранилище данных, к которому имеют доступ все компоненты, что может стать узким местом, каждый компонент имеет свой собственный набор данных. Они называются одноранговыми системами . Каждый процесс одновременно действует как клиент и сервер, часто называемый служащим .
Одноранговые архитектуры развиваются вокруг вопроса о том, как организовать процессы в оверлейной сети — сети, в которой узлы образуются процессами, а ссылки представляют возможные каналы связи.
Одноранговая системная сеть, подключенная через оверлейную сеть.
Как мы видели, существует несколько способов организации приложений в логические компоненты (соображения по архитектуре программного обеспечения). Лучшим подходом является многоуровневый, объектно-сервисный, REST или pub / subscribe, во многом зависит от приложения. Затем эти компоненты размещаются на разных физических машинах (соображения по архитектуре системы) либо в режиме клиент-сервер, либо в одноранговой сети. В нашей статье «Основы: понимание влияния нативного облака на архитектуру» мы обсуждаем, как нативное облачное решение преодолевает барьеры более традиционных технологий, позволяя предприятиям быстро адаптироваться к требованиям рынка.
Как всегда, большое спасибо Олегу Чунихину, который помог уточнить все технические детали. И Евгению Пишнюку, который также дал ценные отзывы.
Изображение функции giovanni gargiulo с сайта Pixabay.
Определение архитектуры
Слово «архитектура» обычно относится к проектированию и строительству зданий.В компьютерном мире «архитектура» также относится к дизайну, но вместо зданий она описывает дизайн компьютерных систем. Компьютерная архитектура — это обширная тема, которая включает в себя все, от взаимосвязи между несколькими компьютерами (например, модель «клиент-сервер») до конкретных компонентов внутри компьютера.
Наиболее важным типом конструкции оборудования является архитектура процессора компьютера. Конструкция процессора определяет, какое программное обеспечение может работать на компьютере и какие другие аппаратные компоненты поддерживаются.Например, архитектура процессора Intel x86 является стандартной архитектурой, используемой на большинстве ПК. Используя эту конструкцию, производители компьютеров могут создавать машины, которые содержат разные аппаратные компоненты, но работают с одним и тем же программным обеспечением. Несколько лет назад Apple перешла с архитектуры PowerPC на архитектуру x86, чтобы сделать платформу Macintosh более совместимой с ПК с Windows.
Архитектура материнской платы также важна при определении того, какое оборудование и программное обеспечение будет поддерживать компьютерная система.Дизайн материнской платы часто называют «чипсетом» и определяет, какие модели процессоров и другие компоненты будут работать с материнской платой. Например, хотя две материнские платы могут поддерживать процессоры x86, одна может работать только с более новыми моделями процессоров. Для более нового набора микросхем также может потребоваться более быстрая ОЗУ и видеокарта другого типа, чем для более старой модели.
ПРИМЕЧАНИЕ. Большинство современных компьютеров имеют 64-разрядные процессоры и наборы микросхем, тогда как в более ранних компьютерах использовалась 32-разрядная архитектура.Компьютер с 64-разрядным набором микросхем поддерживает гораздо больше памяти, чем компьютер с 32-разрядным набором микросхем, и может запускать программное обеспечение, разработанное специально для 64-разрядных процессоров.
Обновлено: 4 апреля 2012 г.
TechTerms — Компьютерный словарь технических терминов
Эта страница содержит техническое определение архитектуры. Он объясняет в компьютерной терминологии, что означает «Архитектура», и является одним из многих терминов по аппаратному обеспечению в словаре TechTerms.
Все определения на веб-сайте TechTerms составлены так, чтобы быть технически точными, но также простыми для понимания. Если вы найдете это определение архитектуры полезным, вы можете сослаться на него, используя приведенные выше ссылки для цитирования. Если вы считаете, что термин следует обновить или добавить в словарь TechTerms, напишите в TechTerms!
Подпишитесь на рассылку TechTerms, чтобы получать избранные термины и тесты прямо в свой почтовый ящик. Вы можете получать электронную почту ежедневно или еженедельно.
Подписаться
Продвинутая тема — гибкая архитектура в SAFe
«Несмотря на то, что при проектировании и разработке систем мы должны признать появление новых, небольшое планирование поможет избежать больших потерь.”
— Джеймс О. Коплиен, Lean Architecture
Agile Architecture — это набор ценностей, практик и совместных действий, которые поддерживают активный эволюционный дизайн и архитектуру системы. Этот подход включает в себя мышление DevOps, позволяя архитектуре системы непрерывно развиваться с течением времени, одновременно поддерживая потребности текущих пользователей. Это позволяет избежать накладных расходов и задержек, связанных с характером старт-стоп-старт и крупномасштабной переработкой, присущей процессам с фазовым затвором и Big Up Front Design (BUFD).
АрхитектураAgile поддерживает методы гибкой разработки за счет сотрудничества, возникающего проектирования, продуманной архитектуры и простоты проектирования. Подобно методам гибкой разработки, гибкая архитектура также позволяет проектировать, обеспечивая возможность тестирования, развертывания и выпуска. Кроме того, он поддерживается быстрым прототипированием, моделированием предметной области и децентрализованными инновациями .
Архитектура системы может либо ускорить, либо ограничить возможность частого выпуска независимых выпусков для бизнеса для достижения его целей.Agile-архитекторы поддерживают согласование бизнеса, оптимизируя архитектуру для поддержки непрерывного потока создания ценности. Это позволяет бизнесу достичь своей цели по постоянному предоставлению «ценности в кратчайшие сроки». Гибкие архитекторы возглавляют этот процесс, поддерживая «ровно столько» архитектурных возможностей, которые необходимы для удовлетворения растущих потребностей бизнеса. Они постоянно инвестируют в унаследованные инициативы по модернизации и знают, где провести рефакторинг, чтобы устранить узкие места. Они сообщают о необходимости достижения этих текущих технических целей в четких бизнес-терминах.
Для поддержки непрерывного потока стоимости через конвейер непрерывной доставки, гибкая архитектура:
- Со временем развивается, поддерживая потребности текущих пользователей
- Избегает накладных расходов и задержек, связанных с методами с фазовым затвором и BUFD
- Обеспечивает постоянную работу системы
- Уравновешивает неожиданный дизайн и преднамеренность
- Системный взгляд на весь поток создания ценности
Принципы бережливого производства и гибкости SAFe используются в практике гибкой архитектуры.Хотя все применимы, три из них особенно важны для архитектуры. Прежде чем приступить к конкретному дизайну, Agile-архитекторы используют быстрые циклы обучения (Принцип №4), чтобы изучить альтернативы (Принцип №3) и прийти к оптимальному решению. Они также создают среду для децентрализованного принятия решений (принцип № 9 ), определяя и сообщая архитектурное видение и стратегию, а затем сотрудничая с командами, которые ее создают, и обучая их.
Роли и сотрудничество
SAFe определяет три роли архитектора: предприятие, решение и системный архитектор, которые решают эти проблемы на своих соответствующих уровнях (портфолио, крупное решение и существенный).Они регулярно сотрудничают на разных уровнях, чтобы обеспечить согласованность и решать проблемы и проблемы по мере их возникновения. Как показано на рисунке 1, роли требуют всех необходимых архитектурных навыков для принятия технических решений. Следовательно, роль может быть исполнена более чем одним человеком, чтобы обеспечить достаточные знания и предотвратить принятие архитектурных решений узкими местами команд.
Рисунок 1. Роли архитектуры SAFe охватывают архитектурные доменыВзаимозависимый характер бизнес-стратегии и технической стратегии требует сотрудничества между архитекторами и другими ролями SAFe, чтобы гарантировать, что архитектура отвечает текущим и развивающимся потребностям бизнеса и клиентов, которых она обслуживает.В рамках Agile Release Train системные архитекторы сообщают технический путь через архитектурную взлетно-посадочную полосу , нефункциональные требования, а также проектирование и поддержку конвейера непрерывной доставки (конвейер CD). Архитектура также обеспечивает встроенное качество. Системная группа реализует видение архитектуры, создавая вспомогательную инфраструктуру, которая позволяет Agile Teams разрабатывать, внедрять, тестировать и предоставлять ценность. Системные архитекторы координируют свои действия с архитекторами предприятий и решений, чтобы их решения соответствовали более широкой концепции.Наконец, архитекторы в любой роли также являются лидерами Lean-Agile, отвечающими за наставничество команд и повышение общих возможностей участников.
Баланс намерений и возникновения
Традиционные архитектурные подходы привели к обширным ранним архитектурным работам. Это может создать обширную документацию и непроверенные решения. Альтернативный метод проектирования архитектуры для лучшего согласования с потребностями бизнеса — это комбинация преднамеренности и эмерджентного дизайна, когда архитектура возникает в результате разработки разработчиками системы, чтобы посмотреть, что работает.Гибкая архитектура уравновешивает преднамеренность и очевидность:
- Преднамеренная архитектура — определяет набор целенаправленных, запланированных архитектурных стратегий и инициатив, которые улучшают проектирование решения, производительность и удобство использования, а также обеспечивают руководство по синхронизации проектирования и реализации между группами.
- Emergent design — обеспечивает техническую основу для полностью эволюционного и поэтапного подхода к реализации. Это помогает разработчикам и дизайнерам реагировать на насущные потребности пользователей, позволяя проекту развиваться по мере создания и развертывания системы.
При таком балансе гибкая архитектура представляет собой экономичный и гибкий подход к решению сложных задач построения корпоративных решений. Он поддерживает потребности текущих пользователей, одновременно развивая систему для удовлетворения потребностей ближайшего будущего. При совместном использовании эмерджентный дизайн и преднамеренность непрерывно создают и расширяют архитектурный подиум, который обеспечивает техническую основу для будущего производства ценности для бизнеса.
Создание архитектуры для DevOps и выпуск по запросу
Agile-архитектура способствует развитию культуры DevOps, гарантируя, что решения разработаны для непрерывной доставки.Архитекторы участвуют в проектировании и реализации конвейера CD, пропагандируют и демонстрируют принципы SAFe CALMR (полное описание принципов SAFe CALMR см. В статье DevOps). Они позволяют принимать решения, определяя минимально жизнеспособную («достаточную») архитектуру, обеспечивая слабую связь между элементами системы, поддерживая создание и развитие интерфейсов, а также укрепляя архитектуру как код с помощью общих аннотаций, атрибутов и соглашений об именах. Гибкая архитектура также повышает качество за счет автоматизации проверок архитектурного соответствия.
Для поддержки непрерывного развертывания гибкая архитектура отделяет развертывание от выпуска. Функциональные возможности: развернуты в производственной среде непрерывно, но предоставляются конечным пользователям только по запросу. Частое развертывание укрепляет доверие к конвейеру CDP и сокращает задержки, вызванные более традиционными методами управления (например, управлением выпусками). Это доверие позволяет отдельным командам и Agile Release Trains (ART) самостоятельно исследовать и тестировать идеи в реальной производственной среде.
Конвейер CD начинается и заканчивается гипотезой ценности, определяя ее в Continuous Exploration и, в конечном итоге, измеряя в Release on Demand. Архитектура системы обеспечивает необходимую телеметрию для измерения гипотез для поддержки учета инноваций и других данных об использовании для команд и специалистов по искусству для проверки своих предположений. Гибкая архитектура также поддерживает конвейер CD, рассматривая другие системные факторы как первоклассные архитектурные проблемы, такие как архитектура тестирования и управление тестовыми данными.
Согласование архитектуры с ценностью для бизнеса
В эпоху цифровых технологий компании полагаются на технологии, чтобы приносить пользу своим клиентам. По мере изменения бизнес-стратегии технологии, системы и бизнес-приложения, реализующие эту стратегию, должны меняться вместе с ней. На рисунке 2 показан пример операционного потока создания ценности для заказа клиента и доставки продукта. Операционные шаги показаны зеленым цветом вместе с системами и приложениями, которые поддерживают эти шаги ниже. Любые бизнес-изменения в клиентском опыте реализуются теми, кто поддерживает приложения и системы.Архитекторы работают в тесном сотрудничестве с владельцами бизнеса и менеджерами по продуктам, чтобы гарантировать, что эти системы способны реализовать текущие и будущие бизнес-цели.
Рисунок 2. Системы поддержки размещения и доставки заказов клиентов. Стратегические темы, холст портфолио и видение портфолио влияют на архитектуру и движут подиумом архитектуры. Они обеспечивают ограничения, направление и общий контекст для технических инвестиций в портфель. Если смотреть в более широком смысле, архитектура также должна учитывать более крупную корпоративную стратегию, включая осведомленность во всех портфелях, особенно для корпоративных архитекторов.
Разработка видения решения, намерения решения, дорожных карт
Согласование архитектуры с бизнес-стратегией ускоряет достижение бизнес-целей. Архитекторы реализуют бизнес-цели, переводя стратегию из стратегических тем в решения. Эти решения определены в их Vision , Solution Context и Solution Intent . Задача решения — это живой репозиторий знаний, представляющий единый источник достоверной информации о требованиях, дизайне, структуре, поведении и всех других архитектурных проблемах системы. Намерение решения включает решения, шаблоны, модели и другую техническую информацию, которая служит минимально достаточной документацией. И намерение решения отражает системные ограничения, включая нефункциональные требования (NFR). Как и все другие требования, NFR постоянно проверяются автоматическими тестами, чтобы гарантировать качество и соответствие .
Дорожные карты определяют план реализации решения. Архитекторы и команды совместно определяют в дорожной карте факторы, которые изучают технические возможности и создают архитектуру подиума, обеспечивая раннюю обратную связь по достижению этих вех.Команды предоставляют обратную связь по архитектурным решениям по мере того, как они создают на их основе функциональные возможности, уравновешивая преднамеренность и возникновение.
Дорожная карта определяет Backlog , который определяет всю работу для ART. Архитекторы сотрудничают с Product Management для определения приоритетов и баланса новых функций с технической работой. Они ожидают, что технический долг будет препятствовать потребностям транспортных и архитектурных взлетно-посадочных полос, и выступит за их приоритетность.
Подготовка архитектуры для планирования PI
При каждом приращении команды создают функции и инструменты с наивысшим приоритетом.Архитекторы сотрудничают с Product Management, чтобы определить и приоритезировать эти краткосрочные рабочие элементы. Они обеспечивают понимание осуществимости, которое помогает определить и охватить текущие функции и критерии их приемлемости. Они также рассматривают будущие функции и определяют активаторы в бэклоге, чтобы команды могли изучить и получить знания, которые обеспечат жизнеспособность будущей функции.
Архитекторытакже рассматривают технические зависимости вне своей ART, либо с другими ART в составе Solution Train, либо с другими ART на предприятии, выступая в качестве ключевого участника этих действий Coordination .Они сотрудничают с группами, чтобы уменьшить количество обнаружений во время PI Planning и помочь гарантировать, что команды могут принимать необходимые решения во время PI Planning.
Координация архитектуры через планирование PI
Во время PI Planning архитекторы поддерживают команды, создающие планы следующего приращения. Они представляют архитектурный брифинг как часть плана планирования. Пока команды создают свои планы во время встреч, архитекторы бродят по комнате, чтобы убедиться, что команды правильно спланируют техническую работу и должным образом учитывают работу инструмента ART.И они обращаются к любым вопросам и проблемам.
Архитекторыподдерживают анализ со стороны руководства для решения архитектурных и технических проблем, связанных с возможными корректировками. Они также участвуют с владельцами бизнеса, поскольку придают значение целям PI-задач команд. С точки зрения бизнеса они объясняют, как вспомогательные средства и другая техническая работа поддерживают их общие цели и лоббируют их потребности и важность.
Поддержка непрерывной доставки через выполнение PI
Architects владеют основными техническими и исследовательскими работами на уровне решений в Enablers и, как таковые, направляют команды в их выполнении. Они могут посещать мероприятия этих команд по планированию спринтов и / или демонстрационные мероприятия этих команд, чтобы отслеживать прогресс, решать проблемы и корректировать направление. Они также обычно доступны командам для обучения, наставничества и обеспечения быстрого решения проблем и проблем, чтобы архитектура не была узким местом.
При каждом приращении архитекторы гарантируют, что команды демонстрируют результаты работы вспомогательных средств, включая новые знания, дополнения к архитектуре и любые дополнения к конвейеру непрерывной доставки.Для больших решений событие Architect Sync гарантирует, что архитекторы будут согласованы и поделятся прогрессом на уровне большого решения, как показано на рисунке 3.
Рис. 3. Синхронизация архитектуры в контексте выполнения PI Solution TrainПоддержка новых стратегических тем и потоков создания ценности
Архитектурадолжна развиваться, чтобы соответствовать меняющимся потребностям и возможностям бизнеса. В противном случае технологии становятся узким местом для ведения бизнеса. Изменения в бизнес-стратегии отражаются в новых или измененных стратегических темах, которые через холст портфеля переводятся в новые или модифицированные решения и / или потоки создания ценности.Корпоративные архитекторы поддерживают этот процесс и влияют на него, предоставляя информацию, посещая семинары по картированию потока создания ценности и устанавливая ожидания в отношении технической осуществимости. После того, как новое направление сформировано, Enterprise Architects сотрудничают с архитекторами систем и решений для реализации нового направления бизнеса. Они сообщают о новой стратегии и показывают, как она меняет видение решения, намерения и дорожную карту.
Enterprise Architects также координируют архитектурную работу по всему портфелю, обеспечивая согласованность решений и потоков ценностей.Они обеспечивают техническое руководство по долгосрочному развитию технологий и платформ и более широким нефункциональным требованиям (безопасность, соответствие, производительность и т. Д.) Для набора решений портфеля. И они часто служат Epic Owners для активаторов на уровне портфеля, чтобы гарантировать, что большие изменения в технологиях будут соответствовать бизнес-стратегии.
Лидерство в преобразовании Lean-Agile
Благодаря своим знаниям и опыту, архитекторы часто пользуются уважением и большим уважением в сообществе разработчиков.Поэтому архитекторы играют ключевую роль в любой трансформации SAFe. Архитекторами являются Lean-Agile Leaders и, как таковые, они моделируют более рациональные способы мышления и работы, чтобы разработчики учились на их примере, наставлении и поддержке. Они обеспечивают автономию и поощряют мастерство для расширения базы знаний и набора навыков сообщества разработчиков. Архитекторы SAFe воплощают новый способ работы, участвуют в создании дорожной карты организации (реализация ) и помогают ускорить принятие в качестве лидеров Lean-Agile.
Узнать больше
[1] Манифест для гибкой разработки программного обеспечения. http://AgileManifesto.org/ [2] Криспин, Лиза и Джанет Грегори. Agile Testing: Практическое руководство для тестировщиков и гибких команд. Аддисон-Уэсли, 2009. [3] Леффингуэлл, декан. Гибкие требования к программному обеспечению: методы бережливого производства требований для команд, программ и предприятия. Аддисон-Уэсли, 2011. [4] Грегори, Джанет и Лиза Криспин. Более гибкое тестирование: обучающие поездки для всей команды .Аддисон-Уэсли, 2015.Последнее обновление: 10 февраля 2021 г.
Информация на этой странице принадлежит © 2010-2021 Scaled Agile, Inc. и защищена американскими и международными законами об авторских правах. Ни изображения, ни текст не могут быть скопированы с этого сайта без письменного разрешения правообладателя. Scaled Agile Framework и SAFe являются зарегистрированными товарными знаками Scaled Agile, Inc. Посетите раздел часто задаваемых вопросов о разрешениях и свяжитесь с нами для получения разрешений.
|
Как выбрать правильную архитектуру программного обеспечения: 5 основных шаблонов
Сколько сюжетов в голливудских фильмах? Некоторые критики говорят, что их всего пять.Сколько способов вы можете структурировать программу? Сейчас большинство программ используют одну из пяти архитектур.
Марк Ричардс — архитектор программного обеспечения из Бостона, который более 30 лет размышляет о том, как данные должны проходить через программное обеспечение. Его новая (бесплатная) книга Software Architecture Patterns, фокусируется на пяти архитектурах, которые обычно используются для организации программных систем. Лучший способ спланировать новые программы — изучить их и понять их сильные и слабые стороны.
В этой статье я выделил пять архитектур, сделав краткий справочник сильных и слабых сторон, а также оптимальных вариантов использования. Помните, что вы можете использовать несколько шаблонов в одной системе для оптимизации каждого раздела кода с лучшей архитектурой. Хотя они называют это информатикой, часто это искусство.
Многоуровневая (n-уровневая) архитектура
Этот подход, вероятно, является наиболее распространенным, поскольку он обычно построен на базе данных, и многие бизнес-приложения, естественно, позволяют хранить информацию в таблицах.
Это что-то вроде самоисполняющегося пророчества. Многие из самых больших и лучших программных фреймворков, таких как Java EE, Drupal и Express, были созданы с учетом этой структуры, поэтому многие приложения, созданные с их помощью, естественно, имеют многоуровневую архитектуру.
Код устроен так, что данные попадают на верхний уровень и проходят вниз по каждому слою, пока не достигнут нижнего, которым обычно является база данных. Попутно у каждого уровня есть определенная задача, например проверка данных на согласованность или переформатирование значений, чтобы они оставались согласованными.Разным программистам свойственно работать независимо на разных уровнях.
Изображение предоставлено: Izhaki
Структура модель-представление-контроллер (MVC), которая представляет собой стандартный подход к разработке программного обеспечения, предлагаемый большинством популярных веб-фреймворков, явно представляет собой многоуровневую архитектуру. Чуть выше базы данных находится уровень модели, который часто содержит бизнес-логику и информацию о типах данных в базе данных. Вверху находится уровень представления, который часто представляет собой CSS, JavaScript и HTML с динамическим встроенным кодом.В середине у вас есть контроллер, который имеет различные правила и методы для преобразования данных, перемещающихся между представлением и моделью.
Преимуществом многоуровневой архитектуры является разделение проблем , что означает, что каждый уровень может сосредоточиться исключительно на своей роли. Вот и все:
В правильной многоуровневой архитектуре будут изолированные уровни, на которые не влияют определенные изменения в других уровнях, что упрощает рефакторинг. Эта архитектура также может содержать дополнительные открытые уровни, такие как уровень служб, которые можно использовать для доступа к общим службам только на бизнес-уровне, но их также можно обойти из-за скорости.
Разделение задач и определение отдельных слоев — самая большая проблема для архитектора. Когда требования соответствуют шаблону, слои можно будет легко разделить и назначить разным программистам.
Предостережения:
Исходный код может превратиться в «большой ком грязи», если он неорганизован и у модулей нет четких ролей или взаимосвязей.
Код может работать медленно из-за того, что некоторые разработчики называют «антипаттерном воронки».«Большая часть кода может быть посвящена передаче данных через слои без использования какой-либо логики.
Изоляция уровней, которая является важной целью для архитектуры, также может затруднить понимание архитектуры без понимания каждого модуля.
Кодеры могут пропускать предыдущие уровни, чтобы создать тесную связь и создать логический беспорядок, полный сложных взаимозависимостей.
Монолитное развертывание часто неизбежно, что означает, что небольшие изменения могут потребовать полного повторного развертывания приложения.
Подходит для:
Новые приложения, которые необходимо создавать быстро
Корпоративные или бизнес-приложения, которые должны отражать традиционные ИТ-отделы и процессы
Команды с неопытными разработчиками, которые этого не делают разбираться в других архитектурах еще
Приложения, требующие строгих стандартов ремонтопригодности и тестируемости
Архитектура, управляемая событиями
Многие программы проводят большую часть своего времени в ожидании чего-либо. Это особенно верно для компьютеров, которые работают напрямую с людьми, но также распространено в таких областях, как сети. Иногда есть данные, которые требуют обработки, а иногда нет.
Управляемая событиями архитектура помогает справиться с этим, создавая центральный блок, который принимает все данные и затем делегирует их отдельным модулям, которые обрабатывают конкретный тип. Говорят, что эта передача обслуживания генерирует «событие» и делегируется коду, назначенному этому типу.
Программирование веб-страницы с помощью JavaScript включает в себя написание небольших модулей, которые реагируют на такие события, как щелчки мыши или нажатия клавиш.Сам браузер координирует весь ввод и следит за тем, чтобы только правильный код видел нужные события. В браузере часто встречаются различные типы событий, но модули взаимодействуют только с событиями, которые их касаются. Это сильно отличается от многоуровневой архитектуры, где все данные обычно проходят через все уровни. В целом, событийно-ориентированные архитектуры:
Легко адаптируются к сложной, часто хаотической среде
Легко масштабируются
Легко расширяются при появлении новых типов событий
Предостережения:
Тестирование может быть сложным, если модули могут влиять друг на друга. Хотя отдельные модули можно тестировать независимо, взаимодействие между ними можно проверить только в полностью функционирующей системе.
Обработку ошибок может быть сложно структурировать, особенно когда несколько модулей должны обрабатывать одни и те же события.
Когда модули выходят из строя, центральный блок должен иметь план резервного копирования.
Накладные расходы на обмен сообщениями могут снизить скорость обработки, особенно когда центральный блок должен буферизовать сообщения, поступающие пачками.
Разработка общесистемной структуры данных для событий может быть сложной, когда события имеют совершенно разные потребности.
Поддержание механизма согласованности на основе транзакций затруднено, поскольку модули настолько разделены и независимы.
Подходит для:
Архитектура микроядра
Многие приложения имеют базовый набор операций, которые используются снова и снова в различных шаблонах, которые зависят от данных и поставленной задачи. Например, популярный инструмент разработки Eclipse открывает файлы, аннотирует их, редактирует и запускает фоновые процессоры. Инструмент известен тем, что выполняет все эти задачи с кодом Java, а затем, когда нажимается кнопка, компилирует код и запускает его.
В этом случае основные процедуры для отображения файла и его редактирования являются частью микроядра. Компилятор Java — это просто дополнительная часть, которая прикреплена для поддержки основных функций микроядра. Другие программисты расширили Eclipse для разработки кода для других языков с помощью других компиляторов.Многие даже не используют компилятор Java, но все они используют одни и те же базовые процедуры для редактирования и аннотирования файлов.
Дополнительные функции, которые накладываются друг на друга, часто называют надстройками. Многие называют этот расширяемый подход архитектурой подключаемых модулей.
Ричардс любит объяснять это на примере из страхового бизнеса: «Обработка требований обязательно сложна, но реальные шаги — нет. Все правила усложняют его ».
Решение состоит в том, чтобы перенести некоторые базовые задачи, такие как запрос имени или проверка оплаты, в микроядро.Затем различные бизнес-подразделения могут писать плагины для различных типов заявок, объединяя правила с вызовами основных функций в ядре.
Предостережения:
Определение того, что принадлежит микроядру, часто является искусством. Он должен содержать часто используемый код.
Плагины должны включать изрядное количество кода подтверждения связи, чтобы микроядро знало, что плагин установлен и готов к работе.
Модификация микроядра может быть очень сложной или даже невозможной, если от нее зависит ряд подключаемых модулей. Единственное решение — также модифицировать плагины.
Выбор правильной степени детализации для функций ядра трудно сделать заранее, но почти невозможно изменить позже в игре.
Подходит для:
Инструменты, используемые широким кругом людей
Приложения с четким разделением между базовыми процедурами и правилами более высокого порядка
Приложения с фиксированным набором основных процедур и динамический набор правил, который необходимо часто обновлять
Архитектура микросервисов
Программное обеспечение может быть похоже на слоненка: когда он маленький, это мило и весело, но когда оно становится большим, им трудно управлять, и его трудно изменить . Архитектура микросервисов предназначена для того, чтобы помочь разработчикам не допустить, чтобы их дети вырастали громоздкими, монолитными и негибкими. Вместо создания одной большой программы цель состоит в том, чтобы создать несколько разных крошечных программ, а затем создавать новую маленькую программу каждый раз, когда кто-то хочет добавить новую функцию. Представьте себе стадо морских свинок.
через GIPHY
«Если вы войдете в свой iPad и посмотрите пользовательский интерфейс Netflix, все элементы этого интерфейса поступят из отдельной службы», — отмечает Ричардс.Список избранных, оценки, которые вы даете отдельным фильмам, и бухгалтерская информация предоставляются отдельными службами отдельными пакетами. Это похоже на то, как если бы Netflix — это созвездие из десятков небольших веб-сайтов, которые просто представляют собой одну услугу.
Этот подход аналогичен подходу, основанному на событиях и микроядре, но он используется в основном, когда различные задачи легко разделяются. Во многих случаях разные задачи могут требовать разного объема обработки и могут различаться в использовании.Серверы, доставляющие контент Netflix, загружаются гораздо сильнее в пятницу и субботу вечером, поэтому они должны быть готовы к расширению. С другой стороны, серверы, отслеживающие возврат DVD, выполняют большую часть своей работы в течение недели, сразу после того, как почтовое отделение доставит дневную почту. Реализуя их как отдельные сервисы, облако Netflix может масштабировать их вверх и вниз независимо по мере изменения спроса.
Предостережения:
Сервисы должны быть в значительной степени независимыми, иначе взаимодействие может привести к дисбалансу облака.
Не во всех приложениях есть задачи, которые нельзя легко разделить на независимые блоки.
Производительность может снизиться, если задачи распределены между разными микросервисами. Затраты на связь могут быть значительными.
Слишком большое количество микросервисов может сбить с толку пользователей, поскольку части веб-страницы появляются намного позже других.
Подходит для:
Веб-сайты с небольшими компонентами
Корпоративные центры обработки данных с четко определенными границами
Быстро развивающиеся новые предприятия и веб-приложения
Разрозненные группы разработчиков , часто по всему миру
Архитектура из космоса
Многие веб-сайты построены на базе базы данных, и они хорошо функционируют, пока база данных способна не отставать от нагрузки.Но когда использование достигает пика, и база данных не может справиться с постоянной проблемой записи журнала транзакций, весь веб-сайт выходит из строя.
Пространственная архитектура предназначена для предотвращения функционального коллапса при высокой нагрузке за счет разделения обработки и хранения между несколькими серверами. Данные распределяются по узлам точно так же, как и ответственность за обслуживание вызовов. Некоторые архитекторы используют более аморфный термин «облачная архитектура». Имя «на основе пространства» относится к «пространству кортежей» пользователей, которое разделено для разделения работы между узлами.«Это все объекты в памяти», — говорит Ричардс. «Космическая архитектура поддерживает вещи, которые имеют непредсказуемые всплески, за счет исключения базы данных».
Хранение информации в ОЗУ значительно ускоряет выполнение многих задач, а распределение хранилища вместе с обработкой может упростить многие базовые задачи. Но распределенная архитектура может усложнить некоторые виды анализа. Вычисления, которые должны быть распределены по всему набору данных — например, определение среднего значения или выполнение статистического анализа — должны быть разделены на подзадачи, распределены по всем узлам, а затем агрегированы, когда это будет выполнено.
Предостережения:
Поддержка транзакций более сложна с базами данных RAM.
Создание нагрузки, достаточной для тестирования системы, может быть сложной задачей, но отдельные узлы можно тестировать независимо.
Трудно развить навыки кэширования данных для повышения скорости без повреждения нескольких копий.
Подходит для:
Данные большого объема, такие как потоки кликов и журналы пользователей
Малоценные данные, которые могут быть потеряны время от времени без больших последствий — другими словами, не банковские транзакции
Социальные сети
Это большая пятерка Ричардса.Они могут быть именно тем, что вам нужно. А если нет, то правильным решением может быть сочетание двух. А может, даже три. Обязательно скачайте его книгу бесплатно; он содержит намного больше деталей. Если вы можете придумать больше, сообщите нам об этом в комментариях.
Изображение предоставлено: Moose Winans
Продолжайте учиться
Филдинг Диссертация: ГЛАВА 1: Архитектура программного обеспечения
Филдинговая диссертация: ГЛАВА 1: Архитектура программного обеспечения[Вверх] [Предыдущая] [Далее]
Несмотря на интерес к архитектуре программного обеспечения как области исследований, среди исследователей нет единого мнения относительно того, что именно следует включать в определение архитектуры. Во многих случаях это привело к тому, что прошлые исследования упустили из виду важные аспекты архитектурного дизайна. В этой главе определяется самосогласованная терминология для архитектуры программного обеспечения, основанная на анализе существующих определений в литературе и моих собственных взглядах на архитектуру сетевых приложений. За каждым определением, выделенным в рамке для удобства пользования, следует обсуждение того, как оно взято из соответствующих исследований или сравнивается с ними.
Архитектура программного обеспечения . — это абстракция элементов времени выполнения программной системы на некотором этапе ее работы.Система может состоять из многих уровней абстракции и многих этапов работы, каждая со своей собственной архитектурой программного обеспечения. |
В основе архитектуры программного обеспечения лежит принцип абстракции: сокрытие некоторых деталей системы посредством инкапсуляции, чтобы лучше идентифицировать и поддерживать ее свойства [117]. Сложная система будет содержать множество уровней абстракции, каждый со своей архитектурой. Архитектура представляет собой абстракцию поведения системы на этом уровне, так что архитектурные элементы очерчиваются абстрактными интерфейсами, которые они предоставляют другим элементам на этом уровне [9].Внутри каждого элемента может быть найдена другая архитектура, определяющая систему подэлементов, реализующих поведение, представленное абстрактным интерфейсом родительского элемента. Эта рекурсия архитектур продолжается до самых основных элементов системы: тех, которые нельзя разложить на менее абстрактные элементы.
В дополнение к уровням архитектуры программная система часто имеет несколько операционных фаз, таких как запуск, инициализация, нормальная обработка, повторная инициализация и выключение.Каждая операционная фаза имеет свою собственную архитектуру. Например, файл конфигурации будет рассматриваться как элемент данных на этапе запуска, но не будет считаться элементом архитектуры во время нормальной обработки, поскольку в этот момент содержащаяся в нем информация будет уже распределена по системе. Фактически, это могло определить нормальную архитектуру обработки. Общее описание системной архитектуры должно быть способно описывать не только операционное поведение системной архитектуры на каждом этапе, но также и архитектуру переходов между фазами.
Перри и Вольф [105] определяют элементы обработки как «преобразователи данных», в то время как Шоу и др. [118] описывают компоненты как «локус вычислений и состояний». Это дополнительно поясняется в Shaw and Clements [122]: «Компонент — это модуль программного обеспечения, который выполняет некоторые функции во время выполнения. Примеры включают программы, объекты, процессы и фильтры». Это приводит к важному различию между архитектурой программного обеспечения и тем, что обычно называют структурой программного обеспечения: первая является абстракцией поведения программной системы во время выполнения, тогда как вторая является свойством статического исходного кода программного обеспечения.Хотя есть преимущества в том, что модульная структура исходного кода соответствует декомпозиции поведения в работающей системе, есть также преимущества в реализации независимых программных компонентов с использованием частей одного и того же кода (например, общих библиотек). Мы отделяем взгляд на архитектуру программного обеспечения от взгляда на исходный код, чтобы сосредоточиться на характеристиках времени выполнения программного обеспечения, независимо от реализации данного компонента. Следовательно, архитектурное проектирование и структурное проектирование исходного кода, хотя и тесно связаны, являются отдельными видами деятельности по проектированию.К сожалению, в некоторых описаниях архитектуры программного обеспечения это различие не проводится (например, [9]).
Программная архитектура определяется конфигурацией архитектурных элементов — компонентов, соединителей и данных — ограниченных в своих отношениях для достижения желаемого набора архитектурных свойств. |
Исчерпывающее исследование объема и интеллектуальной основы архитектуры программного обеспечения можно найти у Перри и Вольфа [105].Они представляют модель, которая определяет архитектуру программного обеспечения как набор архитектурных элементов, которые имеют конкретную форму , форму , объясненную набором обоснования . Архитектурные элементы включают элементы обработки, данные и соединительные элементы. Форма определяется свойствами элементов и отношениями между элементами, то есть ограничениями на элементы. Обоснование обеспечивает фундаментальную основу для архитектуры, фиксируя мотивацию выбора архитектурного стиля, выбора элементов и формы.
Мои определения архитектуры программного обеспечения — это усовершенствованная версия определений в рамках модели Перри и Вольфа [105], за исключением того, что я исключаю обоснование. Хотя логическое обоснование является важным аспектом исследования архитектуры программного обеспечения и, в частности, описания архитектуры, включение его в определение архитектуры программного обеспечения будет означать, что проектная документация является частью системы времени выполнения. Наличие или отсутствие обоснования может повлиять на эволюцию архитектуры, но однажды созданная архитектура не зависит от причин своего существования.Отражающие системы [80] могут использовать характеристики прошлой производительности, чтобы изменить поведение в будущем, но при этом они заменяют одну архитектуру нижнего уровня другой архитектурой нижнего уровня, а не заключают в себе логическое обоснование этих архитектур.
В качестве иллюстрации представьте, что произойдет со зданием, если его чертежи и проектные планы сгорят. Здание сразу рушится? Нет, поскольку свойства, благодаря которым стены выдерживают вес крыши, остаются неизменными.Архитектура изначально имеет набор свойств, которые позволяют ей соответствовать или превосходить системные требования. Незнание этих свойств может привести к последующим изменениям, нарушающим архитектуру, так же как замена несущей стены большой оконной рамой может нарушить структурную устойчивость здания. Таким образом, вместо обоснования, наше определение архитектуры программного обеспечения включает архитектурные свойства. Обоснование объясняет эти свойства, и отсутствие обоснования может привести к постепенному распаду или деградации архитектуры со временем, но само обоснование не является частью архитектуры.
Ключевой особенностью модели Перри и Вольфа [105] является различение различных типов элементов. Элементы обработки — это те, которые выполняют преобразования данных, элементы данных, — это те, которые содержат информацию, которая используется и преобразовывается, а соединительные элементы являются связующим звеном, которое удерживает вместе различные части архитектуры. Я использую более распространенные термины компоненты и соединители для обозначения обрабатывающих и соединительных элементов соответственно.
Гарлан и Шоу [53] описывают архитектуру системы как совокупность вычислительных компонентов вместе с описанием взаимодействий между этими компонентами — соединителями. Эта модель расширена в Shaw et al. [118]: Архитектура программной системы определяет эту систему с точки зрения компонентов и взаимодействий между этими компонентами. Помимо определения структуры и топологии системы, архитектура показывает предполагаемое соответствие между системными требованиями и элементами построенной системы.Дальнейшее развитие этого определения можно найти у Шоу и Гарлана [121].
Что удивительного в Shaw et al. [118] модель заключается в том, что вместо того, чтобы определять архитектуру программного обеспечения как существующую внутри программного обеспечения, она определяет описание архитектуры программного обеспечения, как если бы это была архитектура. При этом архитектура программного обеспечения в целом сводится к тому, что обычно встречается в большинстве неформальных архитектурных диаграмм: блоки (компоненты) и линии (соединители). Элементы данных, наряду со многими динамическими аспектами реальных программных архитектур, игнорируются.Такая модель неспособна адекватно описать сетевые программные архитектуры, поскольку характер, расположение и перемещение элементов данных в системе часто являются единственным наиболее важным фактором, определяющим поведение системы.
1.2.1 Компоненты
Компонент — это абстрактный блок программных инструкций и внутреннего состояния, который обеспечивает преобразование данных через свой интерфейс. |
Компоненты — это наиболее легко узнаваемый аспект архитектуры программного обеспечения.Элементы обработки Perry and Wolf [105] определяются как те компоненты, которые обеспечивают преобразование элементов данных. Гарлан и Шоу [53] описывают компоненты просто как элементы, выполняющие вычисления. В нашем определении делается попытка уточнить различие между компонентами и программным обеспечением в соединителях.
Компонент — это абстрактная единица программных инструкций и внутреннего состояния, которая обеспечивает преобразование данных через свой интерфейс. Примеры преобразований включают загрузку в память из вторичного хранилища, выполнение некоторых вычислений, перевод в другой формат, инкапсуляцию с другими данными и т. Д.Поведение каждого компонента является частью архитектуры, поскольку это поведение можно наблюдать или различать с точки зрения другого компонента [9]. Другими словами, компонент определяется своим интерфейсом и услугами, которые он предоставляет другим компонентам, а не своей реализацией за интерфейсом. Парнас [101] определил бы это как набор предположений, которые другие архитектурные элементы могут сделать относительно компонента.
1.2.2 Разъемы
Разъем — это абстрактный механизм, который обеспечивает связь, координацию или сотрудничество между компонентами. |
Перри и Вольф [105] неопределенно описывают соединительные элементы как клей, который скрепляет вместе различные части архитектуры. Более точное определение дано Шоу и Клементсом [122]: коннектор — это абстрактный механизм, который обеспечивает связь, координацию или сотрудничество между компонентами. Примеры включают общие представления, удаленные вызовы процедур, протоколы передачи сообщений и потоки данных.
Возможно, лучший способ думать о разъемах — это противопоставлять их компонентам.Соединители обеспечивают связь между компонентами, передавая элементы данных с одного интерфейса на другой без изменения данных. Внутренне коннектор может состоять из подсистемы компонентов, которые преобразуют данные для передачи, выполняют передачу, а затем реверсируют преобразование для доставки. Однако внешняя поведенческая абстракция, захваченная архитектурой, игнорирует эти детали. Напротив, компонент может, но не всегда, преобразовывать данные с внешней точки зрения.
1.2.3 Данные
Элемент данных — это элемент информации, который передается от компонента или принимается компонентом через соединитель. |
Как отмечалось выше, наличие элементов данных является наиболее значительным различием между моделью архитектуры программного обеспечения, определенной Перри и Вольфом [105], и моделью, используемой большей частью исследований, называемой архитектурой программного обеспечения [1, 5, 9, 53, 56 , 117-122, 128]. Боассон [24] критикует текущие исследования архитектуры программного обеспечения за акцент на компонентных структурах и средствах разработки архитектуры, предлагая больше внимания уделять архитектурному моделированию, ориентированному на данные.Аналогичные комментарии сделал Джексон [67].
Датум — это элемент информации, который передается от компонента или принимается компонентом через соединитель. Примеры включают последовательности байтов, сообщения, упорядоченные параметры и сериализованные объекты, но не включают информацию, которая постоянно находится или скрыта в компоненте. С архитектурной точки зрения «файл» — это преобразование, которое компонент файловой системы может произвести из данных «имени файла», полученных на его интерфейсе, в последовательность байтов, записанную во внутренне скрытой системе хранения.Компоненты также могут генерировать данные, как в случае программной инкапсуляции часов или датчика.
Природа элементов данных в сетевой архитектуре приложения часто определяет, подходит ли данный архитектурный стиль. Это особенно очевидно при сравнении парадигм разработки мобильного кода [50], где необходимо сделать выбор между непосредственным взаимодействием с компонентом или преобразованием компонента в элемент данных, его передачей по сети и последующим преобразованием обратно в компонент, с которым можно взаимодействовать локально.Невозможно оценить такую архитектуру, не рассматривая элементы данных на архитектурном уровне.
Конфигурация — это структура архитектурных отношений между компонентами, соединителями и данными в течение периода работы системы. |
Abowd et al. [1] определяют архитектурное описание как поддержку описания систем в терминах трех основных синтаксических классов: компонентов, которые являются локусом вычислений; соединители, которые определяют взаимодействие между компонентами; и конфигурации, которые представляют собой совокупности взаимодействующих компонентов и соединителей.Для их визуального представления, облегчения описания юридических вычислений и взаимодействий и ограничения набора желаемых систем могут использоваться различные конкретные обозначения, специфичные для стиля.
Строго говоря, можно думать о конфигурации как о наборе определенных ограничений на взаимодействие компонентов. Например, Перри и Вольф [105] включают топологию в свое определение взаимосвязей архитектурных форм. Однако отделение активной топологии от более общих ограничений позволяет архитектору более легко отличить активную конфигурацию от потенциальной области всех допустимых конфигураций.Дополнительное обоснование для различения конфигураций в пределах языков архитектурного описания представлено в Medvidovic and Taylor [86].
Набор архитектурных свойств программной архитектуры включает в себя все свойства, вытекающие из выбора и расположения компонентов, соединителей и данных в системе. Примеры включают как функциональные свойства, достигаемые системой, так и нефункциональные свойства, такие как относительная простота развития, возможность многократного использования компонентов, эффективность и динамическая расширяемость, часто называемые атрибутами качества [9].
Свойства определяются набором ограничений в архитектуре. Ограничения часто мотивируются применением принципа программной инженерии [58] к аспекту архитектурных элементов. Например, унифицированный стиль «труба и фильтр» приобретает качества повторного использования компонентов и конфигурируемости приложения за счет применения универсальности к его интерфейсам компонентов — ограничения компонентов одним типом интерфейса. Следовательно, архитектурным ограничением является «унифицированный интерфейс компонентов», мотивируемый принципом общности, чтобы получить два желаемых качества, которые станут архитектурными свойствами повторно используемых и настраиваемых компонентов, когда этот стиль реализуется в рамках архитектуры.
Целью архитектурного проектирования является создание архитектуры с набором архитектурных свойств, которые образуют надмножество системных требований. Относительная важность различных архитектурных свойств зависит от характера предполагаемой системы. В разделе 2.3 исследуются свойства, которые представляют особый интерес для архитектур сетевых приложений.
Архитектурный стиль — это скоординированный набор архитектурных ограничений, который ограничивает роли / функции архитектурных элементов и разрешенные отношения между этими элементами в любой архитектуре, которая соответствует этому стилю. |
Поскольку архитектура воплощает в себе как функциональные, так и нефункциональные свойства, может быть сложно напрямую сравнивать архитектуры для разных типов систем или даже для систем одного и того же типа, установленных в разных средах. Стили — это механизм категоризации архитектур и определения их общих характеристик [38]. Каждый стиль обеспечивает абстракцию для взаимодействий компонентов, улавливая суть модели взаимодействия, игнорируя второстепенные детали остальной архитектуры [117].
Перри и Вольф [105] определяют архитектурный стиль как абстракцию типов элементов и формальных аспектов из различных конкретных архитектур, возможно, концентрируясь только на определенных аспектах архитектуры. Архитектурный стиль инкапсулирует важные решения об архитектурных элементах и подчеркивает важные ограничения на элементы и их отношения. Это определение позволяет использовать стили, ориентированные только на соединители архитектуры или на определенные аспекты интерфейсов компонентов.
Напротив, Гарлан и Шоу [53], Гарлан и др. [56], а также Шоу и Клементс [122] определяют стиль в терминах паттерна взаимодействий между типизированными компонентами. В частности, архитектурный стиль определяет словарь компонентов и соединителей, которые могут использоваться в экземплярах этого стиля, вместе с набором ограничений на то, как они могут быть объединены [53]. Этот ограниченный взгляд на архитектурные стили является прямым результатом их определения архитектуры программного обеспечения — представление об архитектуре как формальном описании, а не как работающей системе, приводит к абстракциям, основанным только на общих образцах прямоугольных и линейных диаграмм.Abowd et al. [1] идут дальше и явно определяют это как просмотр набора соглашений, которые используются для интерпретации класса архитектурных описаний как определения архитектурного стиля.
Новые архитектуры можно определить как экземпляры определенных стилей [38]. Поскольку архитектурные стили могут касаться различных аспектов архитектуры программного обеспечения, данная архитектура может состоять из нескольких стилей. Точно так же гибридный стиль может быть сформирован путем объединения нескольких основных стилей в один согласованный стиль.
Некоторые архитектурные стили часто изображаются как «серебряная пуля» для всех форм программного обеспечения. Однако хороший дизайнер должен выбрать стиль, соответствующий потребностям решаемой задачи [119]. Выбор правильного архитектурного стиля для сетевого приложения требует понимания проблемной области [67] и, следовательно, коммуникационных потребностей приложения, осведомленности о разнообразии архитектурных стилей и конкретных проблем, которые они решают, а также способности предвидеть чувствительность каждого стиля взаимодействия к характеристикам сетевой коммуникации [133].
К сожалению, использование термина «стиль» для обозначения скоординированного набора ограничений часто приводит к путанице. Это использование существенно отличается от этимологии стиля, который подчеркивает индивидуальность процесса проектирования. Лорке [76] посвящает главу опровержению представления о том, что личные стилистические соображения имеют какое-то место в работе профессионального архитектора. Вместо этого он описывает стили как взгляд критиков на прошлую архитектуру, где доступный выбор материалов, культура сообщества или эго местного правителя отвечали за архитектурный стиль, а не дизайнер. Другими словами, Loerke рассматривает реальный источник стиля в традиционной архитектуре здания как набор ограничений, применяемых к проекту, и достижение или копирование определенного стиля должно быть наименьшей из целей дизайнера. Поскольку обращение к именованному набору ограничений как к стилю упрощает передачу характеристик общих ограничений, мы используем архитектурные стили как метод абстракции, а не как индикатор индивидуального дизайна.
Параллельно с исследованиями программной инженерии в архитектурных стилях сообщество объектно-ориентированного программирования изучает использование шаблонов проектирования и языков шаблонов для описания повторяющихся абстракций в объектно-ориентированной разработке программного обеспечения.Шаблон проектирования определяется как важная и повторяющаяся системная конструкция. Язык шаблонов — это система шаблонов, организованная в структуру, которая направляет применение шаблонов [70]. Обе концепции основаны на трудах Александра и др. [3, 4] в отношении строительной архитектуры.
Пространство дизайна шаблонов включает вопросы реализации, специфичные для методов объектно-ориентированного программирования, такие как наследование классов и композиция интерфейса, а также проблемы проектирования более высокого уровня, решаемые архитектурными стилями [51].В некоторых случаях описания архитектурных стилей были преобразованы в архитектурные образцы [120]. Однако основное преимущество шаблонов состоит в том, что они могут описывать относительно сложные протоколы взаимодействия между объектами как единую абстракцию [91], таким образом, включая ограничения на поведение и особенности реализации. В общем, шаблон или язык шаблонов в случае нескольких интегрированных шаблонов можно рассматривать как рецепт для реализации желаемого набора взаимодействий между объектами.Другими словами, шаблон определяет процесс решения проблемы, следуя пути выбора дизайна и реализации [34].
Подобно программным архитектурным стилям, исследования программных паттернов несколько отклонились от своего происхождения в архитектуре зданий. В самом деле, представление Александра о паттернах основывается не на повторяющемся расположении архитектурных элементов, а, скорее, на повторяющемся паттерне событий — человеческой активности и эмоциях — которые происходят в пространстве, с пониманием того, что паттерн событий нельзя отделить от пространство, где это происходит [3].Философия дизайна Александра состоит в том, чтобы идентифицировать шаблоны жизни, которые являются общими для целевой культуры, и определять, какие архитектурные ограничения необходимы для дифференциации данного пространства, чтобы оно позволяло желаемым шаблонам возникать естественным образом. Такие шаблоны существуют на нескольких уровнях абстракции и во всех масштабах.
Как элемент мира, каждый паттерн — это взаимосвязь между определенным контекстом, определенной системой сил, которая неоднократно встречается в этом контексте, и определенной пространственной конфигурацией, которая позволяет этим силам разрешить себя.
Как элемент языка шаблон — это инструкция, которая показывает, как эту пространственную конфигурацию можно использовать снова и снова для разрешения данной системы сил, где бы контекст ни делал это релевантным.
Короче говоря, паттерн — это одновременно вещь, которая происходит в мире, и правило, которое говорит нам, как создать эту вещь и когда мы должны ее создать. Это и процесс, и вещь; как описание живой вещи, так и описание процесса, который создаст эту вещь.[3]
Во многих отношениях шаблоны Александра имеют больше общего с архитектурными стилями программного обеспечения, чем шаблоны проектирования исследований OOPL. Архитектурный стиль как скоординированный набор ограничений применяется к пространству проектирования, чтобы вызвать архитектурные свойства, которые требуются для системы. Применяя стиль, архитектор дифференцирует пространство разработки программного обеспечения в надежде, что результат будет лучше соответствовать силам, присущим приложению, что приводит к поведению системы, которое усиливает естественный шаблон, а не противоречит ему.
Архитектурная точка зрения часто зависит от приложения и широко варьируется в зависимости от области применения. … мы видели архитектурные точки зрения, которые касаются множества проблем, включая: временные проблемы, подходы к состоянию и управлению, представление данных, жизненный цикл транзакции, меры безопасности, а также пиковый спрос и постепенное снижение производительности. Несомненно, существует гораздо больше возможных точек зрения. [70]
В дополнение к множеству архитектур внутри системы и множеству архитектурных стилей, из которых состоят архитектуры, также можно рассматривать архитектуру с разных точек зрения.Перри и Вольф [105] описывают три важных представления в архитектуре программного обеспечения: представления обработки, данных и соединения. Представление процесса подчеркивает поток данных через компоненты и некоторые аспекты соединений между компонентами по отношению к данным. Представление данных подчеркивает поток обработки с меньшим акцентом на соединителях. Представление соединения подчеркивает взаимосвязь между компонентами и состояние связи.
Множественные архитектурные представления распространены в тематических исследованиях конкретных архитектур [9]. Одна методология архитектурного проектирования, модель представления 4 + 1 [74], организует описание архитектуры программного обеспечения с использованием пяти параллельных представлений, каждое из которых направлено на определенный набор проблем.
Я включаю сюда только те области исследований, которые определяют архитектуру программного обеспечения или описывают архитектурные стили программного обеспечения. Другие области исследования архитектуры программного обеспечения включают методы архитектурного анализа, восстановление и реинжиниринг архитектуры, инструменты и среды для архитектурного проектирования, уточнение архитектуры от спецификации до реализации и тематические исследования развернутых архитектур программного обеспечения [55].Соответствующая работа в области классификации стилей, парадигм распределенных процессов и промежуточного программного обеспечения обсуждается в главе 3.
1.8.1 Методологии проектирования
Самые ранние исследования архитектуры программного обеспечения были сосредоточены на методологиях проектирования. Например, объектно-ориентированный дизайн [25] отстаивает способ структурирования проблем, который естественным образом ведет к объектно-ориентированной архитектуре (или, точнее, не ведет естественным образом к какой-либо другой форме архитектуры). Одной из первых методологий проектирования, делающих упор на дизайн на архитектурном уровне, является разработка системы Jackson [30].JSD намеренно структурирует анализ проблемы так, чтобы он приводил к стилю архитектуры, сочетающей конвейер и фильтр (поток данных) и ограничения управления процессом. Эти методологии проектирования, как правило, создают только один стиль архитектуры.
Была проведена некоторая начальная работа по исследованию методологий анализа и разработки архитектур. Казман и др. описали методы проектирования для выявления архитектурных аспектов проекта посредством анализа на основе сценариев с помощью SAAM [68] и анализа архитектурных компромиссов с помощью ATAM [69].Шоу [119] сравнивает различные конструкции в виде прямоугольников и стрелок для автомобильной системы круиз-контроля, каждая из которых выполнена с использованием различной методологии проектирования и охватывает несколько архитектурных стилей.
1.8.2 Руководства по дизайну, шаблонам проектирования и языкам шаблонов
Шоу [117] выступает за разработку архитектурных справочников по тем же принципам, что и традиционные инженерные дисциплины. Сообщество объектно-ориентированного программирования взяло на себя ведущую роль в создании каталогов шаблонов проектирования, примером чему служит книга «Банда четырех» [51] и эссе под редакцией Коплиена и Шмидта [33].
Шаблоны проектирования программного обеспечения имеют тенденцию быть более проблемно-ориентированными, чем архитектурные стили. Шоу [120] представляет восемь примеров архитектурных паттернов, основанных на архитектурных стилях, описанных в [53], включая информацию о типах проблем, которые лучше всего подходят для каждой архитектуры. Buschmann et al. [28] обеспечивают всестороннее изучение архитектурных паттернов, общих для объектно-ориентированной разработки. Обе ссылки являются чисто описательными и не делают попытки сравнить или проиллюстрировать различия между архитектурными шаблонами.
Тепфенхарт и Кьюсик [129] используют двумерную карту, чтобы различать таксономии предметной области, модели предметной области, архитектурные стили, структуры, наборы, шаблоны проектирования и приложения. В топологии шаблоны проектирования — это предварительно определенные структуры проекта, используемые в качестве строительных блоков для архитектуры программного обеспечения, тогда как архитектурные стили — это наборы рабочих характеристик, которые определяют архитектурное семейство независимо от области приложения. Однако они не могут определить саму архитектуру.
1.8.3 Эталонные модели и предметно-ориентированные архитектуры программного обеспечения (DSSA)
Эталонные модели разрабатываются, чтобы предоставить концептуальные основы для описания архитектур и показать, как компоненты связаны друг с другом [117]. Архитектура управления объектами (OMA), разработанная OMG [96] в качестве эталонной модели для архитектур распределенных объектов через посредника, определяет, как объекты определяются и создаются, как клиентские приложения вызывают объекты и как объекты могут совместно использоваться и повторно использоваться. Акцент делается на управлении распределенными объектами, а не на эффективном взаимодействии приложений.
Hayes-Roth et al. [62] определяют предметно-ориентированную программную архитектуру (DSSA) как включающую: a) эталонную архитектуру, которая описывает общую вычислительную структуру для значительной области приложений, b) библиотеку компонентов, которая содержит многократно используемые фрагменты знаний в предметной области, и c ) метод конфигурации приложения для выбора и настройки компонентов в архитектуре в соответствии с требованиями конкретного приложения.Tracz [130] дает общий обзор DSSA.
Проекты DSSA успешно переносят архитектурные решения на работающие системы, ограничивая пространство разработки программного обеспечения конкретным архитектурным стилем, который соответствует требованиям предметной области [88]. Примеры включают ADAGE [10] для авионики, AIS [62] для адаптивных интеллектуальных систем и MetaH [132] для систем наведения, навигации и управления ракетами. DSSA делает упор на повторное использование компонентов в пределах общей архитектурной области, а не на выбор архитектурного стиля, специфичного для каждой системы.
1.8.4 Языки описания архитектуры (ADL)
Большая часть недавно опубликованных работ, касающихся программных архитектур, относится к языкам описания архитектуры (ADL). Согласно Медвидовичу и Тейлору [86], ADL — это язык, который предоставляет функции для явной спецификации и моделирования концептуальной архитектуры программной системы, включая как минимум: компоненты, интерфейсы компонентов, соединители и архитектурные конфигурации.
Дарвин — это декларативный язык, который предназначен для обозначения общего назначения для определения структуры систем, состоящих из различных компонентов, с использованием различных механизмов взаимодействия [81].Интересные качества Дарвина заключаются в том, что он позволяет специфицировать распределенные архитектуры и архитектуры с динамическим составом [82].
UniCon [118] — это язык и связанный с ним набор инструментов для создания архитектуры из ограниченного набора примеров компонентов и соединителей. Райт [5] предоставляет формальную основу для определения взаимодействий между архитектурными компонентами путем определения типов коннекторов по их протоколам взаимодействия.
Подобно методологиям проектирования, ADL часто вводят определенные архитектурные предположения, которые могут повлиять на их способность описывать некоторые архитектурные стили и могут противоречить предположениям в существующем промежуточном программном обеспечении [38].В некоторых случаях ADL разрабатывается специально для одного архитектурного стиля, что повышает его способность к специализированному описанию и анализу за счет универсальности. Например, C2SADEL [88] — это ADL, разработанный специально для описания архитектур, разработанных в стиле C2 [128]. Напротив, ACME [57] — это ADL, который пытается быть как можно более универсальным, но с недостатком в том, что он не поддерживает анализ, специфичный для стиля, и создание реальных приложений; скорее, он сосредоточен на обмене инструментами анализа.
1.8.5 Формальные архитектурные модели
Abowd et al. [1] утверждают, что архитектурные стили могут быть описаны формально в терминах небольшого набора отображений из синтаксической области архитектурных описаний (прямоугольные диаграммы) в семантическую область архитектурного значения. Однако это предполагает, что архитектура является описанием, а не абстракцией работающей системы.
Инверарди и Вольф [65] используют формализм Химической абстрактной машины (CHAM) для моделирования элементов архитектуры программного обеспечения как химических веществ, реакции которых контролируются четко сформулированными правилами.Он определяет поведение компонентов в соответствии с тем, как они преобразовывают доступные элементы данных, и использует правила композиции для распространения отдельных преобразований в общий результат системы. Хотя это интересная модель, неясно, как можно использовать CHAM для описания любой формы архитектуры, цель которой выходит за рамки преобразования потока данных.
Rapide [78] — это язык параллельного моделирования, основанный на событиях, специально разработанный для определения и моделирования системных архитектур.Симулятор создает частично упорядоченный набор событий, который может быть проанализирован на предмет соответствия архитектурным ограничениям на соединение. Ле Метайер [75] представляет формализм для определения архитектур в терминах графов и грамматик графов.
В этой главе исследуется предыстория этой диссертации. Введение и формализация согласованного набора терминологии для концепций архитектуры программного обеспечения необходимо, чтобы избежать путаницы между архитектурой и описанием архитектуры, которая широко распространена в литературе, особенно потому, что большая часть предыдущих исследований архитектуры исключает данные как важный архитектурный элемент.В заключение я рассмотрел другие исследования, связанные с архитектурой программного обеспечения и архитектурными стилями.
В следующих двух главах мы продолжим обсуждение справочного материала, сосредоточив внимание на сетевых архитектурах приложений и описав, как стили могут использоваться для управления их архитектурным проектированием, после чего будет проведен обзор общих архитектурных стилей с использованием методологии классификации, которая выделяет архитектурные свойства, возникающие, когда стили применяются к архитектуре сетевой гипермедиа.