Глава 9. Архитектура программного обеспечения Индустрии 4.0

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

Автор

Концепции и принципы программного обеспечения

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

Принципы архитектуры программного обеспечения описывают основные правила и рекомендации для создания качественных архитектурных решений. Основополагающими принципами ПО являются:

1. Принцип единственной ответственности (Single Responsibility Principle), предполагающий, что каждый компонент системы должен иметь только одну ответственность.

2. Принцип открытости/закрытости (Open/Closed Principle), позволяющий IT-системе быть открытой для расширения новыми возможностями, но закрытой для изменения существующей функциональности.

3. Принцип подстановки Барбары Лисков (Liskov Substitution Principle), предусматривающий возможность замены объектов в программе без нарушения корректности её выполнения (объекты должны содержать экземпляры супертипа программы).

4. Принцип инверсии зависимостей (Dependency Inversion Principle) или принцип объектно-ориентированного программирования, суть которого состоит в том, что модули IT-системы не должны содержать ссылки на конкретные реализации, а все зависимости и взаимодействия между ними должны строиться исключительно на основе абстракций (то есть интерфейсов).

5. Принцип разделения интерфейсов (Interface Segregation Principle), согласно которому клиенты не должны зависеть от интерфейсов, которые они не используют.

Разработчиками программного обеспечения обсуждается использование популярных архитектурных паттернов MVP (Model-View-Presenter) и MVVM (Model-View-ViewModel).

Классическая модель разработки программного обеспечения содержит семь строго определённых этапов:

1. Постановка задачи.

2. Проектирование.

3. Написание кода.

4. Сборка всего кода в единое целое.

5. Тестирование.

6. Передача заказчику.

7. Сопровождение.

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

Сегодня рассматриваются гибкие методологии разработки программного обеспечения, такие как Scrum, Kanban и Lean. Гибкие методологии предлагают итеративную модель разработки, где рабочий процесс построен на коротких циклах разработки (итерациях), основанных на отзывах клиентов и изменениях требований, а также инкрементальную модель сборки, при которой продукт внедряется и тестируется поэтапно, с непрерывным анализом полученных результатов и корректировкой последующих этапов работы. Гибкие методологии позволяют быстро реагировать на изменения во время работы над проектом и применять «агилевские» практики, такие как непрерывная интеграция и поставка, чтобы обеспечить устойчивость и качество программного обеспечения.

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