Введение

Концептуальная модель системы

Архитектура системы — это концептуальная модель, определяющая структуру, поведение и различные аспекты системы. Описание архитектуры — это формальное описание и представление системы, организованное таким образом, чтобы обеспечивать анализ её структуры и поведения. Архитектура системы может включать компоненты системы и разработанные подсистемы, которые взаимодействуют для реализации общей функциональности системы. Предпринимались попытки формализовать языки для описания архитектуры системы, которые в совокупности называются языками описания архитектуры (ЯОА).

История

Архитектура систем в значительной степени зависит от практик и техник, разработанных на протяжении тысячелетий в различных других областях, среди которых, пожалуй, наиболее важной является гражданская архитектура. До появления цифровых компьютеров термин "система" в электронике и других инженерных дисциплинах использовался так же, как и сегодня. Однако с появлением цифровых компьютеров и развитием программной инженерии как самостоятельной дисциплины часто возникала необходимость различать аппаратные, программные и комбинированные артефакты. Программируемый аппаратный артефакт, или вычислительная машина, без компьютерной программы бесполезен; равно как и программный артефакт, или программа, бесполезна без возможности изменения последовательных состояний подходящей (аппаратной) машины. Однако аппаратная машина и ее программирование могут быть спроектированы для выполнения практически неограниченного числа абстрактных и физических задач. В компьютерной и программной инженерии (и часто в других инженерных дисциплинах, таких как связь) термин "система" стал определяться как совокупность всех элементов, необходимых (обычно включающих как аппаратное, так и программное обеспечение) для выполнения полезной функции. Следовательно, в этих инженерных дисциплинах система обычно подразумевает программируемую аппаратную машину и включенную в нее программу. Системный инженер определяется как специалист, занимающийся полным устройством, как аппаратной, так и программной частью, и, в особенности, всеми интерфейсами устройства, включая интерфейс между аппаратным и программным обеспечением, и особенно между устройством в целом и его пользователем (человеко-машинным интерфейсом). Инженер-аппаратник занимается (в основном) исключительно аппаратным обеспечением; инженер-программист – (в основном) исключительно компьютерной программой; а системный инженер отвечает за то, чтобы программа могла корректно работать на аппаратном обеспечении, и чтобы система, состоящая из этих двух компонентов, могла правильно взаимодействовать с внешней средой, особенно с пользователем, и выполнять свою целевую функцию. Архитектура систем использует элементы как программного, так и аппаратного обеспечения и служит основой для проектирования таких комплексных систем. Хорошую архитектуру можно рассматривать как "схему разбиения" или алгоритм, который разделяет все текущие и прогнозируемые требования системы на работоспособный набор четко определенных подсистем, не оставляя ничего без внимания. То есть, это схема разбиения, которая является исключающей, включающей и исчерпывающей. Основная цель разбиения – организовать элементы в подсистемах таким образом, чтобы минимизировать взаимозависимости между ними. Как в программном, так и в аппаратном обеспечении, хорошая подсистема обычно рассматривается как значимый "объект". Кроме того, хорошая архитектура обеспечивает простое сопоставление с требованиями пользователя и тестами для проверки этих требований. В идеале, существует соответствие от каждого элемента к каждому требованию и тесту.