Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Введение. Реконструкция программной архитектуры




Реконструкция программной архитектуры

Is соавторстве сДжероми Карье, Лайамом О’Брайеном крисом Вероефом)

Прошлое, будущее и настоящее в равной степени покрыты завесой тайны, и задача историка — раскрыть суть явлений, происходящих сегодня.

Генри Дэвид Торо

Вероятно, вы уже привыкли к тому, что архитектура рассматривается нами как нечто подконтрольное архитектору. Мы показали, как путем принятия архитектурных решений (а в части 3 речь пойдет об анализе этих решений) реализуются задачи и требования, предъявляемые к разрабатываемой системе. Но есть и альтернативный вариант развития событий. Предположим, что перед нами существующая система, архитектура которой нам неизвестна. Возможно, разработчики архитектуры решили не утруждаться ее документированием. Может быть, документация утеряна. Наконец, возможен и такой вариант, при котором после Ряда модификаций исходная архитектура уже не соответствует фактическому Состоянию системы. Что делать с сопровождением такой системы? Как контролировать ее развитие, как сохранить соответствие ее архитектуры (что бы она собой ни представляла) предъявленным к системе требованиям по качеству?

Ответы на перечисленные вопросы дает представленная в настоящей главе методика реконструкции архитектуры (architecture reconstruction), которая позволяет восстановить «фактическую» (as-built) архитектуру реализованной системы исходя из ее современного состояния. Для этого с помощью определенных инструментальных средств, которые собирают информацию о системе, последовательно строят и группируют уровни абстракции, проводится детальный анализ системы. Если инструменты успешно справляются со своей задачей, в конечном итоге мы получаем архитектурное отображение, дающее возможность строить о системе некие умозаключения. Иногда сгенерировать сколько-нибудь пригодное отображение не удается. В частности, это характерно для устаревших систем, в которых связного архитектурного решения не предполагалось изначально (впрочем, такой вывод полезен сам по себе).

Реконструкция архитектуры является интерпретирующим, интерактивным и итеративным процессом; она состоит из многочисленных операций и не является автоматической. В ее проведении должны принимать участие специалист по обратной разработке и, поскольку архитектурные конструкции не находят явного отражения в исходном коде, архитектор (или иной специалист, обладающий достаточными знаниями об архитектуре). В языках программирования отсутствуют конструкции, соответствующие «уровню», «соединителю» и прочим архитектурным элементам; следовательно, вычленить их из файла с исходным кодом непросто. Что касается архитектурных образцов, то они, если и используются, редко каким-либо образом обозначаются. Архитектурные конструкции отражаются в реализации через самые разнообразные механизмы — как правило, это коллекции функций, классов, файлов, объектов и т. д. Во время первоначальной разработки системы осуществляется отображение ее высокоуровневых проектных/архитектурных элементов на элементы реализации. Таким образом, при реконструкции этих элементов требуется провести обратное отображение, а для этого необходимы определенные познания в области архитектуры. Не менее важную роль играет владение конструктивными методиками компиляторов и утилитами наподобие grep, sed, awk, peri, python и lex/yacc.

Существует несколько вариантов применения результатов архитектурной реконструкции. Если документация отсутствует или устарела, то на базе восстановленного архитектурного отображения систему можно документировать заново (см. главу 9). Кроме того, после реконструкции фактической (as-built) архитектуры ее можно сравнить с проектной (as-designed) архитектурой. По итогам этой проверки мы можем убедиться в том, что специалисты по сопровождению (или, если уж на то пошло, разработчики) следуют «заповедям» архитектуры и не подрывают ее основ, разрушая абстракции, сводя воедино разные уровни, нарушая принцип информационной закрытости и т. д. По результатам реконструкции можно проводить архитектурный анализ (см. главы 11 и 12) или приводить систему в соответствие с новой версией архитектуры. Наконец, полученное отображение помогает выявлять элементы, допускающие повторное использование, и определять линейки продуктов на основе архитектуры (см. главу 14).

Методика архитектурной реконструкции нашла применение в самых разных проектах — oт измерителей магнитного резонанса до автоматических телефон-коммутаторов и от вертолетных навигационных систем до засекреченных "|,lN Л, NASA. Помимо прочего, она использовалась для:

+ повторного документирования архитектур систем физического моделирования;

+ выявления архитектурных зависимостей во встроенных системах управления горным оборудованием;

+ опенки соответствия реализации наземной станции из системы спутниковой связи эталонной архитектуре;

+ описания различных систем в автомобильной промышленности.




Поделиться с друзьями:


Дата добавления: 2015-04-25; Просмотров: 578; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.