Глава 6.Архитектура
Программная архитектура - это один из тех терминов, которые понимают все (или, по крайней мере, утверждают, что понимают), но которым никто не может дать точного определения (или, по крайней мере, такого, что устроило бы всех).
Это связано частью с относительно небольшим возрастом самой специальности программирования, а частью с новизной понятия архитектуры в контексте программного обеспечения.
В этой главе мы попробуем внимательнее взглянуть на программную архитектуру и некоторые ключевые понятия, входящие в нее.
Большая часть определений программной архитектуры включает одно или несколько положений, приведенных ниже.
· Статическая структура программного обеспечения. Статическая структура определяет, как элементы программного обеспечения относятся друг к другу.
· Динамическая структура программного обеспечения. Эта структура указывает отношения, которые меняются в ходе существования программы и определяют, как именно выглядит программа при работе.
· Композиция (или декомпозиция) программного обеспечения. Этот термин указывает на тип важных, но малых частей, таких как подсистемы и модули, из которых может складываться программное обеспечение.
· Компоненты и их взаимодействие. Это определение относится к разным частям, которые составляют программное обеспечение, и характеру их взаимодействия друг с другом.
· Уровни и их взаимодействие. Многоуровневое представление позволяет накладывать на программу определенный порядок или структуру, которая разрешает или запрещает некоторые отношения в соответствии с тем, что считается приемлемым для этого программного обеспечения.
· Организация физических развертываемых элементов программы. Для оптимального использования физический исходный текст должен быть организован в виде развертываемых модулей соответствующего типа, например файлов jar, .war и .ехе.
· Ограничение накладываемые на программное обеспечение. Эти ограничения могут быть естественными либо внешними (например, необходимость составления программы на языке Java).
· Обоснование программного обеспечения. Иными словами, почему программа решает свою задачу именно так, а не иначе. Это важно, так как с точки зрения архитектуры, если какой-либо факт нельзя объяснить, он не является частью архитектуры.
· Стиль, направляющий разработку и развитие программного обеспечения.
· Функциональные возможности программного обеспечения. Иначе говоря, то, что может делать программа.
· Совокупность важнейших решений по организации программной системы.
· Другие аспекты (многократное использование, производительность, масштабируемость и т.д.).
Следующее определение, возможно, наилучшим образом выражает суть программной архитектуры.
Архитектура программы или вычислительной системы — это структура или структуры системы, включающие программные компоненты, внешне видимые свойства этих компонентов и отношения между ними (Bass, 1997).
Кроме этого, программная архитектура касается следующих вопросов.
... использования, функциональных возможностей, производительности, гибкости, многократного использования, возможности понимания, экономических и технологических ограничений и компромиссов, эстетики (Kruchten, 1999).
Разумеется, некоторые из упомянутых последними аспектов имеют несколько нематериальный характер и поддаются точному анализу не так легко, как, например, структура и декомпозиция.
Из предыдущих определений должно быть ясно, что архитектура — это многостороннее понятие. Далее, никакая отдельная диаграмма или чертеж не способны представить архитектуру данного программного обеспечения. Архитектура не является только выражением базовой инфраструктуры или детального строения системы.
Архитектура касается внутренних деталей программного обеспечения лишь в той степени, в какой они проявляются внешне (например, как компонент ведет себя, когда он рассматривается извне).
Зачем нужна архитектура
Каждый элемент любого программного обеспечения имеет архитектуру. Архитектура существует независимо от того, создавал ли ее проектировщик сознательно или даже знал ли он вообще о существовании такого термина.
Таким образом, вопрос не в том, должно ли создаваемое программное обеспечение иметь архитектуру, а в том, надо ли создавать ее намеренно.
Ниже приводится несколько причин, из которых следует необходимость уделять внимание программной архитектуре.
· "Кустарный", непланируемый подход к структуре программного обеспечения в конечном счете приводит к появлению негибкой программной системы, не допускающей никаких добавлений, поскольку при ее создании не учитывалась возможность адаптации к новым или изменившимся требованиям.
· Декомпозиция программного обеспечения на малые части делает программу проще для понимания, управления, разработки и сопровождения. Грамотно сделанная декомпозиция может также существенно повысить возможность повторного использования в последующих проектах.
· Хорошая программная архитектура облегчает компонентную разработку ПО.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.