Представление архитектуры программной системы с использованием UML

Вариант 1

Архитектура – это совокупность существенных решений, касающихся:

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

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

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

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

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

Виды (формы) представления СА диаграммами UML:

· Вид СА архитектуры с точки зрения прецедентов (Use case view);

· Вид СА с точки зрения проектирования (Design view);

· Вид СА с точки зрения процессов (Process view);

· Вид СА с точки зрения реализации (Implementation view);

· Вид СА с точки зрения развертывания (Deployment view)

Вариант 2

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

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

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

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

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

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

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

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

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


Рис. 2.20Моделирование системной архитектуры

Вид с точки зрения прецедентов (Use case view) охватывает прецеденты, которые описывают поведение системы, наблюдаемое конечными пользователями, аналитиками и тестировщиками. Этот вид специфицирует не истинную организацию программной системы, а те движущие силы, от которых зависит формирование системной архитектуры. В языке UML статические аспекты этого вида передаются диаграммами прецедентов, а динамические - диаграммами взаимодействия, состояний и действий.

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

Вид с точки зрения процессов (Process view) охватывает нити и процессы, формирующие механизмы параллелизма и синхронизации в системе. Этот вид описывает главным образом производительность, масштабируемость и пропускную способность системы. В UML его статические и динамические аспекты визуализируются теми же диаграммами, что и для вида с точки зрения проектирования, но особое внимание при этом уделяется активным классам, которые представляют соответствующие нити и процессы.

Вид с точки зрения реализации (Implementation view) охватывает компоненты и файлы, используемые для сборки и выпуска конечного программного продукта. Этот вид предназначен в первую очередь для управления конфигурацией версий системы, составляемых из независимых (до некоторой степени) компонентов и файлов, которые могут по-разному объединяться между собой. В языке UML статические аспекты этого вида передают с помощью диаграмм компонентов, а динамические - с помощью диаграмм взаимодействия, состояний и действий.

Вид с точки зрения развертывания (Deployment view) охватывает узлы, формирующие топологию аппаратных средств системы, на которой она выполняется. В первую очередь он связан с распределением, поставкой и установкой частей, составляющих физическую систему. Его статические аспекты описываются диаграммами развертывания, а динамические - диаграммами взаимодействия, состояний и действий.

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

Основные понятия и определения интерфейса

Вариант 1

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

Виды интерфейсов:

· Внутри машинный интерфейс – система связи и средств сопряжения узлов и блоков ЭВМ между собой.

· Внешний интерфейс – система связи системного блока с периферийными устройствами ЭВМ или с другими ЭВМ.

· Интерфейс «человек-машина» или интерфейс «человек-компьютер» или пользовательский интерфейс – это способ, которым вы выполняете какую-либо задачу с помощью каких-либо средств (какой-либо программы), а именно совершаемые вами действия и то, что вы получаете в ответ.

Части интерфейса:

· Машинная часть интерфейса – часть интерфейса, реализованная в машине (аппаратно-программной ее части) с использованием возможностей вычислительной техники.

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

Классификация интерфейсов пользователя:

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

· ООМУ (окно, образ, меню, указатель) WIMP (window, image, menu, pointer) - интерфейс. Характерной чертой этого интерфейса является то, что диалог пользователя с компьютером ведется не с помощью командной строки, а с помощью окон, графических образов меню, курсора и других элементов.

· РОЯЗ (речь, образ, язык, знания) SILK (speech, image, language, knowledge) - интерфейс. Этот интерфейс наиболее приближен к обычной человеческой форме общения. В рамках этого интерфейса идет обычный разговор человека и компьютера.

Лучший пользовательский интерфейс — это такой интерфейс, которому пользователь не должен уделять много внимания, почти не замечать его.
Такой интерфейс называют прозрачным — пользователь как бы смотрит сквозь него на свою работу.

 

Вариант 2

Программный интерфейс (англ. programming interface) – это способ общения пользователя с программируемым устройством или прикладными программами, а также способ обмена информацией между самими программами. Он определяет функциональность и удобство такого общения посредством реализации оптимальных параметров программ.

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

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