Архитектура программных систем

Архитектура ПС - это его строение как оно видно (или должно быть видно) извне, т.е. представление ПС как системы, состоящей из некоторой совокупности взаимодействующих подсистем.(Это структура программы или вычислительной системы, которая включает программные компоненты, видимые снаружи свойства этих компонентов, а также отношения между ними.) В качестве таких подсистем выступают обычно отдельные программы. Разработка архитектуры является первым этапом борьбы со сложностью ПС, на котором реализуется принцип выделения относительно независимых компонентов.

Основные задачи разработки архитектуры ПС:

· выделение программных подсистем и отображение на них внешних функций (заданных во внешнем описании) ПС;

· определение способов взаимодействия между выделенными программными подсистемами.

С учетом принимаемых на этом этапе решений производится дальнейшая конкретизация функциональных спецификаций.

Архитектура программной системы - есть совокупность решений относительно:

· организации программной системы;

· выбора структурных элементов, составляющих систему, и их интерфейсов;

· поведения этих элементов, специфицированного в кооперациях с другими элементами;

· составления из этих структурных и поведенческих элементов все более и более крупных подсистем;

· архитектурного стиля, направляющего и определяющего всю организацию системы: статические и динамические элементы, их интерфейсы, кооперации и способы их объединения.

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

Для визуализации, специфицирования, конструирования и документирования программных систем необходимо рассматривать их с различных точек зрения как:

· конечные пользователи,

· системные аналитики,

· руководители проекта,

· разработчики,

· тестеры,

· технические писатели,

· менеджеры

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

Итеративный (iterative) процесс предполагает управление потоком исполняемых версий системы.

Инкрементный (incremental) процесс подразумевает постоянное развитие системной архитектуры при выпуске новых версий системы, причем каждая следующая версия усовершенствована по сравнению с предыдущей.