Главная Теоретический материал Лабораторные работы Задачи Тесты Контакты

Узбекское Агентство
Связи и Информатизации



Ташкентский Университет Информационных Технологий


Кафедра
«Программное обеспечение информационных технологий»

Направления:

5521900Информатика и
информационные технологии,
5523500Защита информации,
5523600Электронная коммерция,
5811200Сервис (информационный сервис),
5811300Сервис (электронные и
компьютерные технологии),
5320200Информатика и
библиотековедение,
5140900Профессиональное образование
(по направлению
информатика и
информационные технологии).


Преподаватель дисциплины



Доцент
Чернев Дмитрий Алексеевич

Архитектура программного обеспечения

Процесс проектирования архитектуры программного обес­печения состоит в проектировании структуры всех его ком­понент, функционально связанных с решаемой задачей, включая сопряжения между ними и требования к ним.

Архитектура программного обеспечения в традиционном смысле включает определение всех модулей программ, их иерархии и сопряжения между ними и данными.

Если разрабатывается отдельная программа, исходными дан­ными для этого процесса будут детальные внешние специ­фикации.

Если разрабатывается система программного изделия, исход­ными данными для этого процесса будут детальные внешние спецификации и функциональная архитектура системы.

Традиционный метод борьбы со сложностью — принцип «Разделяй и властвуй» — часто называют «Модуляризацией».

Во время разработки архитектуры программного обеспечения выполняется его модульно-иерархическое построение.

Модуль — это замкнутая программа, которую можно вызвать из любого другого модуля в программе и можно отдельно ком­пилировать.

Стремление к созданию модульных программ объясняется следующими факторами:

— программные модули, как правило, решают небольшую функциональную задачу, используют на входе и на выходе немного данных. Внутренние переменные модуля не связаны с внутренними переменными других модулей. Поэтому отдельные модули могут создаваться и отлаживаться различными разра­ботчиками независимо друг от друга;

— модульные программы легко читать, сопровождать и мо­дифицировать. Исправление отдельного модуля вызывает мини­мальные изменения в других модулях, связанных с ним по управлению и информации;

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

— можно создавать библиотеки наиболее употребительных подпрограмм, которые затем можно использовать в качестве комплектующих частей при разработке других приложений;

— процедура загрузки всей программы в оперативную память упрощается при использовании метода оверлейности;

— возникает много естественных контрольных точек для наблюдения за продвижением проекта по управлению и по информации.

Иерархия представляет собой свойство упорядоченного мно­жества компонентов, между которыми установлено отношение приоритета. Компоненты, между которыми отсутствует пред­почтительность, образуют один иерархический уровень.

Минимальными компонентами, из которых строятся модули, являются операторы языка программирования. Разнообразие операторов сравнительно невелико (50 — 100 типов), и каждый оператор реализуется алгоритмом на базе в среднем 1 — 10 машинных команд ЭВМ. С повышением уровня языка программи­рования возрастает функциональная сложность операторов.

Нижнему иерархическому уровню архитектуры программного изделия соответствуют программные и информационные в высо­кой степени независимые модули.

Программные модули решают небольшую функциональную задачу и реализуются 10 — 100 операторами языка программирования высокого уровня или 100 — 1000 операторами ассемб­лера. В результате программа модуля имеет 100 — 1000 машинных команд. Каждый модуль может использовать на входе около десятка типов переменных. Количество выходных данных несколько меньше. Если для решения небольшой функциональной задачи требуется 500 операторов или более, то целесообразно провести декомпозицию задачи на несколько более простых, для реализации каждой из которых потребуется модуль, реализуемый 50 — 500 операторами.

Модули (10 — 100 шт.) объединяются в группы программ определенного функционального назначения с автономной це­левой задачей.

Несколько (5 — 20) групп программ образуют комплекс программ. В особо сложных случаях возможно создание системы программ из нескольких взаимодействующих комплексов.

Функциональные группы программ и комплексы программ формируются на базе десятков модулей и решают сложные автономные функциональные задачи. На их реализацию в ЭВМ используется примерно 10 тысяч команд. Соответственно воз­растает количество используемых типов переменных и разнооб­разие выходных данных. При этом значительно быстрее растет количество типов переменных, обрабатываемых модулем и лока­лизующихся в пределах одного или нескольких модулей.

В итоге все комплексы программ объединяются в одно целое большое программное обеспечение.

Большое программное обеспечение создается для решения особо сложных задач управления и обработки информации или вычислительных задач в науке и технике. В большое программное обеспечение объединяются несколько или десятки комплексов программ для решения общей целевой задачи.

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

Типовая архитектура программного обеспечения может иметь вид:

1

Архитектуре программного обеспечения как иерархической системе присущ ряд свойств, важнейшими из которых являются:

— вертикальная соподчиненность, заключающаяся в последовательном упорядоченном расположении взаимодействующих компонент, составляющих данный комплекс программ;

— компоненты одного уровня обеспечивают реализацию функций компонент следующего уровня;

— каждый уровень иерархии реализуется через функции ком­понент более нижних уровней;

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

— право вмешательства и приоритетного воздействия на компоненты любых уровней со стороны компонент более высоких иерархических уровней;

— взаимозависимость  действий  компонент  верхних уровней от реакций на воздействия и от функционирования компонент нижних уровней, информация о которых передается верхним уровням.

В результате в иерархических структурах комплексов программ образуются два потока взаимодействий между компонентами разных уровней:

сверху вниз— координирующие и управляющие воздействия верхних уровней иерархии на нижние.

снизу вверхпередача информации о состоянии и реали­зации предписанных функций компонентами нижних уровней иерархии верхнему уровню.

Взаимодействие компонент системы предполагает выбор cпособа координации и реализации координирующих алгоритмов с выработкой соответствующих воздействий на них.

 Координируемые компоненты имеют некоторую автоном­ность поведения и подготовки локальных решений. Степень автономности компонентов и интенсивность координирующих воздействий устанавливается компромиссом при выделении иерархических уровней.

Взаимодействие компонентов в пределах одного уровня иерар­хии целесообразно максимально ограничивать, что позволяет упростить общее координирование компонентов и проводить его только по вертикали.

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

Информация о результатах функционирования верхних уровней иерархии может учитываться компонентами нижних уровней для улучшения собственных решений и для косвенной координации. Таким образом, нижние уровни иерархии являются основ­ными компонентами, обрабатывающими информацию и подго­тавливаю-щими данные для выдачи их за пределы программной среды.

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

Уровневые архитектуры бывают двух видов: замкнутые и открытые.

В замкнутой архитектуре каждый уровень иерархии строится на базе непосредственно следующего за ним уровня. Это сокращает зависимости между уровнями и упрощает внесение изменений в систему.

 В открытой архитектуре каждый уровень иерархии строится на базе всех следующих за ним уровней. Это уменьшает потребность в переопределении операции на каждом уровне и приводит к более эффективному и компактному коду. Однако она не удовлетворяет принципу упрятывания информации, поскольку изменения в какой-либо подсистеме могут потребовать соответствующих изменений в подсистемах более высоких уровней.


Назад


Главная Теоретический материал Лабораторные работы Тесты Контакты