Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Концептуальная модель системы
Conceptual model of a system
Архитектура системы — это концептуальная модель, определяющая структуру, поведение и различные аспекты системы. Описание архитектуры — это формальное описание и представление системы, организованное таким образом, чтобы обеспечивать анализ её структуры и поведения. Архитектура системы может включать компоненты системы и разработанные подсистемы, которые взаимодействуют для реализации общей функциональности системы. Предпринимались попытки формализовать языки для описания архитектуры системы, которые в совокупности называются языками описания архитектуры (ЯОА).
A system architecture is the conceptual model that defines the structure, behavior, and more views of a system. An architecture description is a formal description and representation of a system, organized in a way that supports reasoning about the structures and behaviors of the system. A system architecture can consist of system components and the sub systems developed, that will work together to implement the overall system. There have been efforts to formalize languages to describe system architecture, collectively these are called architecture description languages (ADLs).
История
Архитектура систем в значительной степени зависит от практик и техник, разработанных на протяжении тысячелетий в различных других областях, среди которых, пожалуй, наиболее важной является гражданская архитектура. До появления цифровых компьютеров термин "система" в электронике и других инженерных дисциплинах использовался так же, как и сегодня. Однако с появлением цифровых компьютеров и развитием программной инженерии как самостоятельной дисциплины часто возникала необходимость различать аппаратные, программные и комбинированные артефакты. Программируемый аппаратный артефакт, или вычислительная машина, без компьютерной программы бесполезен; равно как и программный артефакт, или программа, бесполезна без возможности изменения последовательных состояний подходящей (аппаратной) машины. Однако аппаратная машина и ее программирование могут быть спроектированы для выполнения практически неограниченного числа абстрактных и физических задач. В компьютерной и программной инженерии (и часто в других инженерных дисциплинах, таких как связь) термин "система" стал определяться как совокупность всех элементов, необходимых (обычно включающих как аппаратное, так и программное обеспечение) для выполнения полезной функции. Следовательно, в этих инженерных дисциплинах система обычно подразумевает программируемую аппаратную машину и включенную в нее программу. Системный инженер определяется как специалист, занимающийся полным устройством, как аппаратной, так и программной частью, и, в особенности, всеми интерфейсами устройства, включая интерфейс между аппаратным и программным обеспечением, и особенно между устройством в целом и его пользователем (человеко-машинным интерфейсом). Инженер-аппаратник занимается (в основном) исключительно аппаратным обеспечением; инженер-программист – (в основном) исключительно компьютерной программой; а системный инженер отвечает за то, чтобы программа могла корректно работать на аппаратном обеспечении, и чтобы система, состоящая из этих двух компонентов, могла правильно взаимодействовать с внешней средой, особенно с пользователем, и выполнять свою целевую функцию. Архитектура систем использует элементы как программного, так и аппаратного обеспечения и служит основой для проектирования таких комплексных систем. Хорошую архитектуру можно рассматривать как "схему разбиения" или алгоритм, который разделяет все текущие и прогнозируемые требования системы на работоспособный набор четко определенных подсистем, не оставляя ничего без внимания. То есть, это схема разбиения, которая является исключающей, включающей и исчерпывающей. Основная цель разбиения – организовать элементы в подсистемах таким образом, чтобы минимизировать взаимозависимости между ними. Как в программном, так и в аппаратном обеспечении, хорошая подсистема обычно рассматривается как значимый "объект". Кроме того, хорошая архитектура обеспечивает простое сопоставление с требованиями пользователя и тестами для проверки этих требований. В идеале, существует соответствие от каждого элемента к каждому требованию и тесту.
Systems architecture depends heavily on practices and techniques which were developed over thousands of years in many other fields, perhaps the most important being civil architecture. Prior to the advent of digital computers, the electronics and other engineering disciplines used the term "system" as it is still commonly used today. However, with the arrival of digital computers and the development of software engineering as a separate discipline, it was often necessary to distinguish among engineered hardware artifacts, software artifacts, and the combined artifacts. A programmable hardware artifact, or computing machine, that lacks its computer program is impotent; even as a software artifact, or program, is equally impotent unless it can be used to alter the sequential states of a suitable (hardware) machine. However, a hardware machine and its programming can be designed to perform an almost illimitable number of abstract and physical tasks. Within the computer and software engineering disciplines (and, often, other engineering disciplines, such as communications), then, the term system came to be defined as containing all of the elements necessary (which generally includes both hardware and software) to perform a useful function. Consequently, within these engineering disciplines, a system generally refers to a programmable hardware machine and its included program. And a systems engineer is defined as one concerned with the complete device, both hardware and software and, more particularly, all of the interfaces of the device, including that between hardware and software, and especially between the complete device and its user (the CHI). The hardware engineer deals (more or less) exclusively with the hardware device; the software engineer deals (more or less) exclusively with the computer program; and the systems engineer is responsible for seeing that the program is capable of properly running within the hardware device, and that the system composed of the two entities is capable of properly interacting with its external environment, especially the user, and performing its intended function. A systems architecture makes use of elements of both software and hardware and is used to enable the design of such a composite system. A good architecture may be viewed as a 'partitioning scheme,' or algorithm, which partitions all of the system's present and foreseeable requirements into a workable set of cleanly bounded subsystems with nothing left over. That is, it is a partitioning scheme which is exclusive, inclusive, and exhaustive. A major purpose of the partitioning is to arrange the elements in the sub systems so that there is a minimum of interdependencies needed among them. In both software and hardware, a good sub system tends to be seen to be a meaningful "object". Moreover, a good architecture provides for an easy mapping to the user's requirements and the validation tests of the user's requirements. Ideally, a mapping also exists from every least element to every requirement and test.