Модульная архитектура программы это

Большинство IT-продуктов для наших заказчиков начинаются с модульной разработки. Часть из них со временем эволюционируют до микросервисов. Для другой части микросервисы не нужны. В этой статье мы рассмотрим, почему это именно так и какие критерии помогают определиться: нужно ли внедрять микросервисы или стоит придерживаться работы с модулями?

Микросервисная и модульная системы — это типы архитектуры
IT-решений.

  • При работе с модулями дорабатывается коробочная версия существующего IT-продукта. Коробочная версия — это монолит, готовая система с ядром, которая поставляется всем заказчикам одинаково, «как есть». Доработка состоит в создании модулей с недостающим функционалом. Новые модули получаются путём переиспользования частей монолита (ядра или других модулей). Бизнес-логика прописывается внутри монолита: для программы (приложения, сайта, портала) есть одна точка входа и одна точка выхода.
  • При работе с микросервисами создаётся IT-продукт с нуля, он составляется из «кирпичиков» — атомарных микросервисов, отвечающих за отдельный небольшой процесс (отправить письмо, получить данные по заказу, сменить статус заказа, создать клиента и т. п.).

Набор таких блоков объединяется бизнес-логикой в общую систему (например с помощью BPMS). Несмотря на наличие связей, каждый блок автономен и имеет свои точки входа и выхода.

Архитектура современных FRONTEND приложений. 5 видов. Преимущества и недостатки

Микросервисы или модульная архитектура? Нужно сделать выбор

Преимущества модульной архитектуры

Коробочные версии есть у всех CMS- («Битрикс», Magento, Drupal, Hybris и т. д.), CRM-, ERP-, WMS- и многих других систем. Они хорошо продаются, и на них есть высокий спрос.

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

Высокая скорость внедрения

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

Доступная цена

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

Для многих задач достаточно готового функционала

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

Пусть небольшая, но вариативность

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

Архитектура ПО. Введение

Проблемы модульных систем

Основная проблема в том, что все модульные системы не предназначены для серьёзного переопределения функционала. У них есть коробка, готовые модули — вот ими лучше и пользоваться.

Чем ближе к уровню enterprise размеры проекта и сложность его кастомизации, тем больше будет проблем с доработкой модулей. Поговорим об основных из них.

Проблема № 1. Ядро системы становится точкой замедления, а модульность — лишним усложнением

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

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

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

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

График зависимости трудоёмкости от объёма функционала
Проблема № 2. Принцип самодокументирования не поддерживается в модульных системах
Проблема № 2. Принцип самодокумен-
тирования не поддерживается в модульных системах

Документацию для модульных систем сложно поддерживать в актуальном состоянии. Её много, и она устаревает с каждым изменением. Доработка одного модуля влечёт изменения в нескольких других документах (в пользовательской, технической документации), и их все нужно переписывать.

Как правило, заниматься такими работами некому: тратить время ценных IT-специалистов на это — значит просто сливать бюджет. Даже использование хранения документации в коде (PHPDoc) не гарантирует её достоверности. В конце концов, если документация может отличаться от реализации, она обязательно будет отличаться.

Проблема № 3. Большая связность кода — путь к регрессии: «здесь изменили — там отвалилось»

Классические проблемы модульных систем — в части борьбы с регрессией.

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

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

Функциональные тесты становятся настолько большими, насколько и бессмысленными. Они выполняются часами даже в параллельном режиме.

Да, современный front вроде PWA можно тестировать API-функционально. Но тесты часто зависят от получения данных из внешнего контура — и поэтому начинают фейлиться, если, например, тестовый SAP отстаёт от продуктового на N месяцев, а тестовый «1С» присылает неверные данные.

Когда же приходится выложить небольшую правку по какому-нибудь модулю, разработчики должны выбирать из двух зол: запустить полный прогон CI и потратить кучу времени на деплой или выложить хотфиксом без прогона тестов, рискуя всё-таки что-то сломать. Весьма драматично, когда такие правки прилетают от отдела маркетинга в «чёрную пятницу». Безусловно, рано или поздно регрессия и человеческая ошибка случатся. Знакомо?

В конечном счёте для выполнения бизнес-целей команда переходит в авральный режим работы, умело жонглирует тестами и внимательно смотрит на dashboard’ы из логов — Kibana, Grafana, Zabbix. А что получаем в конце? Перегорание.

Читайте также:
Список на лето по программе перспектива

Согласитесь, такая ситуация с регрессией не похожа на «стабильный enterprise», каким он должен быть в мечтах и грёзах заказчика.

Проблема № 4. Связность кода и обновление платформы

Ещё одна проблема связности кода — это сложности при обновлении платформы.

Например, Magento содержит два миллиона строк кода. Куда бы мы ни посмотрели — везде много кода (Akeneo, Pimcore, «Битрикс»). При добавлении функционала в ядро лучше учитывать изменения в ваших кастомных модулях.

Приведём пример для Magento (похожие случаи есть в любой модульной системе на крупных проектах).

В конце 2018 года вышла новая версия платформы Magento 2.3. В Open Source Edition были добавлены мультисклады и Elasticsearch. Кроме того, в ядре были исправлены тысячи ошибок и добавлены некоторые приятности в OMS.

С чем столкнулись e-Commerce-проекты, у которых уже были написаны мультисклады на Magento 2.2? Им нужно было переписывать кучу логики в обработке заказа, чекауте, карточке товара с тем, чтобы перейти на коробочный функционал. Ведь «так правильно» — зачем дублировать в модулях функционал коробочной версии? Уменьшить объём кастомного кода в большом проекте всегда полезно — ведь все коробочные методы учитывают именно эти мультисклады, обновлять коробку без такого рефакторинга может быть бессмысленно (отметём security issues для простоты, тем более что их можно накатывать и без обновления).

Теперь представьте: сколько времени уйдёт на такое обновление? Как это можно тестировать без интеграционных тестов, писать которые затруднительно?

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

Проблема № 5. Непрозрачность бизнес-процессов

Одна из самых важных проблем в управлении проектами состоит в том, что заказчик не видит всю логику и все бизнес-процессы проекта. Их можно лишь восстановить из кода или из документации (актуальность которой, как мы говорили ранее, проблематично поддерживать в модульных системах).

Да, у «Битрикса» есть BPM-часть, а у Pimcore — визуализация workflow. Но эта попытка управлять модулями с помощью бизнес-процессов всегда вступает в противоречие с наличием ядра. Кроме того, ивенты, сложные таймеры, транзакционные операции — всего этого не может быть полноценно в системе модульной архитектуры. Повторимся ещё раз, это касается средних и крупных компаний.

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

Проблема № 6. Сложность масштабирования системы

Если вы разворачиваете монолит (например на Magento, «Битриксе», Akeneo, Pimcore, OpenCart и т. п.), он будет развёрнут целиком со всеми модулями на каждом app-сервере.

Нужно больше памяти и процессоров, что сильно повышает стоимость кластера.

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

Спойлер: решение перечисленных в прошлом пункте проблем возможно с использованием BPMS и оркестрированием микросервисных систем.

BPMS (англ. business process management system) — это программное обеспечение для управления бизнес-процессами в компании. Популярные BPMS, с которыми работаем и мы, — Camunda и jBPM.

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

Источник: kt.team

Модульная архитектура ПО

Несмотря на разнообразие критериев, все же главной при разработке больших систем считается задача снижения сложности системы . Для снижения сложности ничего, кроме деления на части, пока не придумано.

Иногда для простоты это называют принципом “разделяй и властвуй”, но, с точки зрения архитектора ПО, речь идет об иерархической декомпозиции.

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

Декомпозиция

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

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

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

6.2 Преимущества модульной архитектуры

Использование принципа иерархической декомпозиции позволяет избавиться от хаоса в тысячах классов твоего кода. Помнишь, что твой код разбивается по пакетам (package) и подпакетам? Это и есть одно из выражений иерархический декомпозиции.

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

Вот самые основные из них:

  • Масштабируемость (Scalability) – возможность расширять систему и увеличивать ее производительность за счет добавления новых модулей.
  • Ремонтопригодность (Maintainability) – изменение одного модуля не требует изменения других модулей.
  • Заменимость модулей (Swappability) – модуль легко заменить на другой.
  • Возможность тестирования (Unit Testing) – модуль можно отсоединить от всех остальных и протестировать/починить.
  • Переиспользование (Reusability) – модуль может быть переиспользован в других программах и другом окружении.
  • Сопровождаемость (Maintenance) – разбитую на модули программу легче понимать и сопровождать.

Можно сказать, что в разбиении сложной проблемы на простые фрагменты и заключается цель всех методик проектирования . А термином “архитектура” в большинстве случаев просто обозначают результат такого деления плюс «некие конструктивные решения, которые после их принятия с трудом поддаются изменению» (Мартин Фаулер «Архитектура корпоративных программных приложений»).

Читайте также:
Программа для настройки logitech c270

Поэтому большинство определений в той или иной форме сводятся к следующему:

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

» Архитектура — это организация системы, воплощенная в ее компонентах, их отношениях между собой и с окружением. Система — это набор компонентов, объединенных для выполнения определенной функции .»

Таким образом, хорошая архитектура — это, прежде всего, модульная/блочная архитектура. Чтобы получить хорошую архитектуру, надо знать, как правильно делать декомпозицию системы. А значит, необходимо понимать, какая декомпозиция считается “правильной” и каким образом ее лучше проводить.

Источник: javarush.com

Архитектура программного обеспечения: виды, описание, разработка

Сейчас мало найдется людей, которые будут спорить с утверждением, что наш мир все более зависим от программного обеспечения (ПО). И это неудивительно. Ведь ПО используется в сотовых телефонах, комплексных системах управления воздушным движением, на персональных компьютерах, электронике автомобилей и много где еще. Множество новшеств, которые нами воспринимаются как данность, а также большое количество различных организаций вроде «Яндекс», Amazon или Google просто невозможны без программного обеспечения. Да даже в традиционных торговом, общественном и финансовом секторах обойтись без ПО очень сложно.

Общая информация

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

В первую очередь необходимо вспомнить Лэнса Басса. «Архитектура программного обеспечения на практике» — довольно старый труд данного автора (русский перевод был выпущен в 2006 году), но тем не менее позволяет получить качественное представление о процессе создания ПО.

Следующим интересным автором является Роберт Мартин и его творение «Чистая архитектура. Искусство разработки программного обеспечения». Перевод и публикация книги на русский язык были осуществлены как раз к началу 2018 года. Поэтому можно с уверенностью сказать, что это буквально новинка, в которой есть множество свежей и актуальной информации. Книга «Чистая архитектура.

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

Немного терминологии

архитектура пк и программное обеспечение

Рассмотрим несколько понятий, которые помогут нам разобраться в теме:

  1. Система – определенный набор компонентов, что были объединены с целью выполнения определенной функции или их набора.
  2. Миссия – применение (действие), которое одно или несколько заинтересованных лиц собираются совершить в соответствии с требуемым набором условий.
  3. Компонент – это логическая, физическая, технологически связанная (независимая), мелко- или крупногранулированная модульная часть системы, что инкапсулирует ее содержимое.

И еще несколько толкований по основной теме:

  1. Архитектура – набор значимых решений, что влияют на организацию системы ПО. Набор структурных элементов, а также их интерфейсов, с помощью которых осуществляется компоновка.
  2. Архитектура программы (компьютерной системы) – структура, что включает в себя определенные элементы, видимые извне их свойства, а также связи между ними. Она состоит из всех важных принимаемых проектных решений. Это обеспечивает желаемый набор свойств, которые необходимы для успешной деятельности.
  3. Архитектура – это структура организации, а также связанное с ней поведение системы. Ее можно рекурсивно разбирать на части, связи и условия сборки.

Хотя эти определения имеют долю отличий, не сложно подметить определенную степень сходства. Так, внимание акцентируется на структуру, поведение и значимые решения. И это не зря.

Влияние архитектуры на структуру

архитектура программного обеспечения на практике

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

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

Нужно учитывать, что каждый из этих элементов может быть представлен разными способами. Как пример можно привести соединительное звено. Оно может быть а/синхронным, сокетом, быть связанным с определенным протоколом и так далее.

Влияние архитектуры на поведение

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

Архитектура влияет на взаимодействие между структурными элементами, должна обеспечивать передачу данных именно туда, куда необходимо, чтобы в конечном итоге получить желаемый результат. Как это происходит с нашими стандартами? Можно рассмотреть небольшую схему деятельности. Допустим, у нас есть предприятие.

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

Всего используется пять элементов. При этом наблюдается определенная зависимость. Например, оформление заказа невозможно без служащего. А если не будет заполнен «Бланк», то он не будет принят к исполнению.

Концентрация архитектуры на значимых элементах

лэнс басс архитектура программного обеспечения на практике

Итак, мы уже рассмотрели влияние на структуру и поведение. Но здесь необходимо отметить один важный момент. А именно, что архитектура определяет не всю структуру и не все поведение. Она влияет на те элементы, что считаются значимыми. Что под ними понимается?

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

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

Читайте также:
Программе установки не удалось найти proplus ww

Можно сказать, что архитектура является некоторым обобщением всей системы программного обеспечения, которое позволяет разработчику управлять имеющейся сложностью. Здесь необходимо отметить один важный момент. А именно то, что набор значимых элементов – это не статичный список чего-то, и он может меняться с течением времени. В каких случаях это происходит?

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

Уравновешивание потребностей заинтересованных лиц

описание архитектуры программного обеспечения

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

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

В таких случаях необходимо достигать определенного равновесия. Компромиссное решение – это практически неотъемлемый аспект процесса разработки архитектуры. И здесь, увы, ничего не поделаешь – приходится преодолевать трудности. Чтобы получить представление о реальной ситуации, давайте смоделируем ситуацию, когда необходимо удовлетворить потребности со стороны нескольких заинтересованных лиц:

  1. Конечный пользователь. Он заинтересован в том, чтобы программное обеспечение было интуитивно понятным, производительным, надежным, удобным в использовании, безопасным и доступным, а также обладало корректным поведением.
  2. Системный администратор. Он заинтересован в наличии интуитивно понятного управления, инструментах мониторинга и поведения всего комплекса.
  3. Специалист по рекламе и продвижению. Он заинтересован в наличии уникальных функций, что делают программное обеспечение конкурентоспособным, ориентировочном времени до выхода разработки на рынок, стоимости продукта и его позиций среди аналогов.
  4. Разработчик. Он заинтересован, чтобы были понятные требования и непротиворечивые принципы внутреннего устройства.
  5. Руководитель проекта. Он заинтересован в том, чтобы ход проектирования, планирования и выполнения был предсказуем. Также необходимо позаботиться о рациональном использовании доступного бюджета и средств.

Архитектура базируется на логическом обосновании

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

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

Об архитектурном стиле

разработка архитектуры программного обеспечения

Что и как в данном случае? Если посмотреть описание архитектуры программного обеспечения для многих продуктов, то можно заметить, что они строятся на основе систем, которые используют сходные наборы интересов. Ряд сходств может быть оформлен в определенный стиль. Он, в свою очередь, может рассматривать как особенный вид шаблона, весьма сложный и составной.

Это – кодификатор опыта, и для разработчиков весьма неплохо использовать его повторно. Ведь это позволит сделать сходную работу более быстро и оперативно. Какие основные архитектуры программного обеспечения по стилям выделяют? В качестве примеров можно привести:

  1. Распределенный.
  2. Каналы и фильтры.
  3. С централизованной обработкой данных.
  4. Построенный на правилах.

Следует отметить, что отдельные системы могут демонстрировать наличие более одного стиля. Что является подтверждением этих слова? В первую очередь можно вспомнить про архитектурный стиль Шоу и Гарлана. Как он проявляется?

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

Про влияние окружения. И наоборот

архитектура компьютера программное обеспечение компьютера

Или иными словами, об архитектуре в рамках смыслового содержимого.

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

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

Что же говорят об этом стандарты? Если говорить о преимущественно-программных системах, то необходимо учитывать определенные аспекты окружения. Так, чтобы программа была полезной, она должна работать. Для этого ее необходимо запустить на определенном аппаратном обеспечении. Здесь большое значение имеет архитектура компьютера.

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

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

О видовом разнообразии

виды архитектуры программного обеспечения

По каким моделям можно создавать ПО? Кратко перечислим виды архитектуры программного обеспечения, которые довольно широко используются:

  1. Клиент-серверная модель.
  2. Монолитное приложение.
  3. Событийная архитектура.
  4. Структурированная.
  5. Трехуровневая.
  6. Сервис-ориентированная архитектура.
  7. Неявные вызовы.
  8. Поиск-ориентированная архитектура.

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

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

Источник: fb.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru