КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Будущее программной архитектуры
Дополнительная литература Материалы по методикам и процессам, рассмотренным в этой главе, содержатся в издании [Wallnau 02]. Вопросы внедрения коммерческих коробочных продуктов — их квалификация, связанные с ними риски и миграция — раскрываются на сайте http://www.sei.cmu.edu/cbs/. Архитектурное несоответствие и методы его исправления подробно рассмотрены в работе [Garlan 95]. Глава 19 Предсказывать трудно — в особенности предсказывать будущее. Нильс Бор Историю программирования правомерно рассматривать как последовательное расширение средств выражения сложной функциональности. Вначале был язык ассемблера с узким набором элементарных абстракций, выражавших расположение в физической памяти (относительно адреса в некоем регистре базы), и машинный код исполнения примитивных арифметических операций и операций пересылки. Но даже в таких примитивных условиях у программ была архитектура. Ее элементами выступали блоки кода, связанные физической близостью друг к другу, ветвящимися операторами или подпрограммами с соединителями в виде конструкций ветвления и возврата. В первых языках программирования эти конструкции утвердились, и в роли соединителей уже выступали точки с запятой, операторы перехода и параметрические вызовы функций. 1960-е стали десятилетием подпрограмм. В 1970-х годах, в связи с нежеланием разработчиков ограничиваться одним- единственным атрибутом качества — корректным функционированием, программы стали структурировать. На основе анализа потоков данных, диаграмм отношений «сущность-связь», информационной закрытости и ряда других принципов и методик формировались сотни проектных методологий. Каждая из них предполагала создание подпрограмм и коллекций подпрограмм с возможностью рационализации их функциональности в категориях атрибутов качества разработки. Эти элементы назывались модулями. В области соединителей изменений не намечалось, но в то же время некоторые новые модульные языки программирования расширили возможности их создания. Абстракции, встраивавшиеся в модули, со временем усложнялись и расширялись, что, в конечном итоге, привело к появлению первых повторно используемых модулей. Пакетировались они таким способом, который, теоретически, исключал необходимость изучения их внутреннего содержания. Таким образом, 1970-е стали десятилетием модулей. В 1980-х модульные языки программирования, принцип информационной закрытости и некоторые родственные методологии оформились в концепцию объектов. Объекты получили громадное распространение, а наследование обогатило ассортимент (не относящихся к периоду прогона) соединителей. В 1990-х годах появились первые стандартные объектные архитектуры, выраженные поначалу в виде каркасов. В рамках объектной технологии сформировался стандартный словарь элементов, подтолкнувший разработку новых инфраструктур для связывания коллекций элементов. Возможности абстракций неуклонно увеличивались. Благодаря этому домашние вычислительные платформы сегодня позволяют обрабатывать сложные сущности — электронные таблицы, документы, графические изображения, звуковые ролики и базы данных — как «черные ящики», которые можно без труда включать в экземпляры друг друга. Отодвигая отдельные элементы на второй план, архитектура имеет дело с их расположением и взаимосвязью. Необычайно широкие возможности взаимодействия возникают именно благодаря подобного рода абстракции, а индивидуальные элементы здесь играют подчиненную роль. В текущем десятилетии фиксируется стремительное развитие промежуточного программного обеспечения и информационно-технологической архитектуры, превращающейся в стандартную платформу. Безопасность, надежность и службы обеспечения производительности, реализуемые сегодня в коммерческих элементах, десять лет назад казались достижимыми только лить при индивидуальной разработке. Основные перечисленные выше этапы программирования изображены на рис. 19.1 в виде диаграммы. Рис. 19.1. Хронологические этапы развития типов абстракции
Вот на таком этапе мы находимся в данный момент. У нас нет повода усомниться в том, что тенденция к созданию более крупных и функциональных абстракций продолжится. Сегодня уже существуют генераторы (generators) для таких сложных и ресурсоемких приложений, как системы управления базами данных и авиационные электронные системы. Наличие в предметной области генератора есть первый признак перехода средств языка программирования в этой области на новый, более высокий уровень. Выражение «системы систем» (systems of systems), акцентирующее способность систем к взаимодействию и свидетельствующее об очередном повышении возможностей абстракций, употребляется все чаще. Далее мы хотели бы еще раз пробежаться по рассмотренным в этой книге проблемам. Полностью согласные с Нильсом Бором, мы не пророчествуем — мы просто высказываем свои надежды. Перечисляя одну за другой тематические области программной архитектуры, мы поговорим о тех аспектах, которые па данный момент разработаны не так хорошо, как хотелось бы, н выделим проблемы. над которыми исследовательскому сообществу придется основательно потрудиться. Начнем с обобщения сведений об архитектурно-экономическом цикле (Architecture Business Cycle, ABC), затем обсудим процесс создания архитектуры и ее отношения с жизненным циклом и, наконец, поговорим о том, как компоненты и компонентные каркасы видоизменяют задачи архитектора. 19.1. Снова архитектурноэкономический цикл В главе 1 мы заявили, что архитектурно-экономический цикл будет объединяющей темой всей книги. По мере изложения мы конкретизировали и развивали ее, старались донести некоторые принципы создания, представления, оценки и разработки архитектуры. Для того чтобы превратить изучение программной архитектуры в окончательно сформировавшуюся область исследований, в ней должны существовать разработанные, фундаментальные направления с практическими результатами. В этом контексте имеет смысл выделить и обсудить четыре версии ABC, которые, по нашему мнению, заслуживают серьезной разработки в будущем. ♦ Простейший сценарий, согласно которому отдельно взятая компания создает единичную архитектуру для единичной системы. ♦ Сценарий, согласно которому компания создает на основе архитектуры не одну, а несколько систем, связанных фондом общих средств, и организует их в рамках линейки продуктов. ♦ Сценарий, согласно которому в результате совместных усилий большей части игроков сообщества создается стандартная или эталонная архитектура, на основе которой впоследствии создаются многочисленные системы. ♦ Сценарий, согласно которому архитектура, подобно Всемирной паутине, приобретает чуть ли не вселенское распространение, и, соответственно, круг ее разработчиков на порядки перерастает масштабы отдельной организации. Каждая из перечисленных разновидностей архитектурно-экономического цикла состоит из тех же элементов, что и его первоначальная версия: заинтересованных лиц, технической базы, базы опыта, набора требований, которые необходимо реализовать, архитектора или архитекторов, одного или нескольких вариантов архитектуры, одной или нескольких систем. Вариантность архитектурно-экономического цикла обусловливается коммерческим контекстом, емкостью рынка и поставленных задач. По нашему мнению, в будущих моделях определения стоимости и эффективности программного обеспечения (в этом смысле CBAM — это только начало) будут предусмотрены все эти версии архитектурно-экономического цикла. В частности, они должны учитывать стратегические инвестиции, в большинстве случаи связанные с процессом разработки продуктов на основе архитектуры, и прогнозировать количественный эффект создания архитектуры.
Дата добавления: 2015-04-25; Просмотров: 487; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |