**Software-intensive systems**: are systems in which software development and/or integration are dominant considerations (i.e., most complex systems these days). This includes computer-based systems ranging from individual software applications, information systems, embedded systems, software product lines and product families and systems-of-systems.
--- ISO/IEC/IEEE 42010

**Offtopic**: Что такое Minix?
---
### Классификация компьютерных систем
1. Информационные системы
1. Управляющие системы
----
#### Информационные системы
Повсеместные вычисления (Вайзер, 1988) — вычисления "растворяются" в среде: не одно устройство на человека, а множество мелких незаметных вычислителей вокруг (IoT, носимые устройства, датчики).
---
#### Управляющие системы
взаимодействие с реальным физическим миром с целью контроля или управления посредством *получения данных, преобразования/накопления, и выдачи в измененном/обработанном виде*.
Особенности:
1. встроенное исполнение:
- интеграция в реальный мир,
- ограниченные ресурсы (энергия),
- специализация функций, платформы, аппаратуры;
1. автономная эксплуатация;
1. требование реального времени (см. след. слайд).
----
#### Реальное время
- $\neq$ быстро
- $\neq$ абсолютно точно
- $\neq$ без отказов
- $=$ предсказуемо и в срок ($\pm$)

Примеры:
- ГЭС, водосброс.
- Пример, где один код это ИС или УС в зависимости от задачи?
- Видеокодек (конвертация или воспроизведение).
----
#### Эволюция управляющих систем

[Пенской А.В., Понятие киберфизической системы считать вредным](https://ryukzak.github.io/2019/11/15/cps-concept.html)
Notes:
От ИУС (информационно-управляющая система: отдельный шкаф с аппаратурой, отделённый от объекта управления) — через распределённое управление, встроенное в оборудование — к КФС, где объект и система управления неразделимы.
Примеры КФС: гироскутер; безопасные, энергоэффективные вращающиеся двери; провис проводов и передаваемая мощность.
---
## Система. Системная инженерия
----
- Системная инженерия (SE)
- это междисциплинарный подход и средство, позволяющее реализовать успешные системы. Он фокусируется на целостном и одновременном понимании потребностей заинтересованных сторон (стейкхолдеров); изучении возможностей; документировании требований; и синтезе, проверке, приемке и разработке решений при рассмотрении всей проблемы, от исследования концепции системы до вывода системы из эксплуатации.
— The Guide to the Systems Engineering Body of Knowledge (SEBoK), V.1.3. 2014.
----
### Предмет системной инженерии и роль

Сверхбольшие системы.

Координация и структура: команды разработки, процессов, передачи информации, и т.п.
---
## Понятие системы
(3 точки зрения)
- (1) система как совокупность частей
- (2) система как функциональное место
- (3) система как жизненный цикл
---
### (1) Система как совокупность частей
System is a combination of interacting elements organized to achieve one or more stated purposes
NOTE 1 A system may be considered as a product or as the services it provides.
NOTE 2 In practice, the interpretation of its meaning is frequently clarified by the use of an associative noun, e.g. aircraft system. Alternatively the word system may be substituted simply by a context dependent synonym, e.g. aircraft, though this may then obscure a system principles perspective.

Так ли это важно?
----
### Структура системы

---
### (2) Система как функциональное место

Функциональное место определяет систему:
- название,
- назначение,
- границы (select).

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

----
#### Представление и точка зрения
- Представление (View)
- Представление системы с заданной точки зрения.

- Stakeholder
- Individual or organization having a right, share, claim, or interest in a system or in its possession of characteristics that meet their needs and expectations — ISO/IEC/IEEE 2015
- Точка зрения (Viewpoint)
- это спецификация соглашений, правил построения и использования представления с целью решения проблем заинтересованных сторон.
---
### (3) Система как Жизненный цикл
Жизненный цикл системы — эволюция интересующей системы во времени от концепции до вывода из эксплуатации.
Типовые стадии:
1. Концептуальный этап
2. Этап разработки
3. Этап производства
4. Этап утилизации (англ. utilization)
5. Этап поддержки
6. Этап вывода из эксплуатации
----
#### Обеспечивающие системы
- Обеспечивающая система
- система, которая дополняет интересующую систему на этапах ее жизненного цикла, но не обязательно вносит непосредственный вклад в ее функционирование во время эксплуатации.
— ISO 15288
Примеры: GPU, Power Supply, Cooling System, Smart enough developers

---
### Разработка успешной системы требует
1. рассмотрения её структуры
1. рассмотрения её функционального места
1. рассмотрения её операционного окружения
1. рассмотрения её жизненного цикла
1. рассмотрения её обеспечивающих систем
Аналогичные результаты получены в:
- OMG Essence — стандарт, задающий общее ядро понятий (alphas) для описания, сравнения и комбинирования методологий разработки ПО (Scrum, RUP и др.),
- СМД-методологии (системомыследеятельностный подход, Г.П. Щедровицкий).
---
## Проблема коммуникации при разработке компьютерных систем
Множественность точек зрения на систему — это навык видеть вопросы и corner cases.
> Poor management can increase software costs more rapidly than any other factor.
— Barry W. Boehm
----
## Передача информации
и поиск решений
Важные для успеха вопросы могут быть упущены.
1. Вопрос выходит за пределы компетенции разработчика.
1. Преобладает шаблонное проектирование.
1. Искусственное сужение проектных требований.
1. Расстановка приоритетов.
1. Подмена одной задачи другой (сайт вместо расчёта).
### Постановка задачи техническим специалистом

----
### Попытка разобраться самостоятельно

----
### Постановка задачи нетехническим специалистом

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

----
### Классическое определение: Гради Буч
- Архитектура
- логическая и физическая структура компонентов системы и их взаимосвязи, сформированные всеми стратегическими и тактическими проектными решениями, применяемыми во время разработки.
- Логический взгляд
- на систему учитывает концепции, созданные в концептуальной модели, и устанавливает существование и роль ключевых абстракций и механизмов, которые будут определять архитектуру и общий дизайн системы.
- Физическая модель
- системы описывает конкретный программный и аппаратный состав реализации системы. Очевидно, что физическая модель зависит от конкретной технологии.
----
### Системная инженерия: ISO 42010
- architecture
- [system] fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and in the principles of its design and evolution
- architecture description
- work product used to express an architecture
There is no single characterization of what is essential or fundamental to a system; that characterization could pertain to any or all of:
- system constituents or elements;
- how system elements are arranged or interrelated;
- principles of the system’s organization or design; and
- principles governing the evolution of the system over its life cycle.
----
### Сущностные определения
Архитектура — все важное.
— Интернет
Software architecture (en) is the set of design decisions which, if made incorrectly, may cause your project to be cancelled.
— Eoin Woods (SEI 2010)
Архитектура программного обеспечения (ru) — это набор проектных решений, которые, если они будут приняты неправильно, могут привести к отмене вашего проекта.
— Eoin Woods (SEI 2010)
---
## Почему архитектура — это важно?
----
### Риск откладывания управления рисками

----
### V-диаграмма

----
### Эффект архитектурного проектирования

---
## Примеры ошибок коммуникации
Выше были теоретические рассуждения.
Теперь несколько примеров из практики.

----
### Пример проблем с операционным окружением

----
Подсказка:

Notes: На столе разработчика — силовые линии лучше увести со стола вверх. В шкафу — вниз, т.к. техника безопасности.
----
### Пример с коммуникацией между стадиями жизненного цикла

----
Подсказка:

Notes: План: вырезать на лазере. Синие точки — отверстия в качестве маркировки уголка. Делали руками, замучились отмерять.
----
### Пример правильной и практичной интерпретации стандарта
```text
number
integer fraction exponent
integer
digit
onenine digits
'-' digit
'-' onenine digits
digits
digit
digit digits
digit
'0'
onenine
```
```text
onenine
'1' . '9'
fraction
""
'.' digits
exponent
""
'E' sign digits
'e' sign digits
```
Из описания формата JSON. Что такое `number`?
----
#### `number: short | int | long | bigint | float | T`
- **JavaScript** — IEEE 754 double.
- **Haskell** (Aeson) — `Integer` без ограничения диапазона значений.
- **Crypto & Blockchain** — хеш на 256 бит это `number`?
- **FHIR** (стандарт обмена медицинскими данными): большие числа передаются строкой, а не `number`.