Search
Write a publication
Pull to refresh
8
0
Михаил Вячеславович Фетисов @FetisovMichael

Преподаватель ИУ6 МГТУ им. Н.Э. Баумана

Send message

Отправляем заказчика в одиночное плавание

Level of difficultyMedium
Reading time6 min
Views459

В своей прошлой статье я обещал затронуть тему применения парадигмы языково-ориентированного программирования (ЯОП) при разработке программного обеспечения (ПО), но ушёл в сторону, сосредоточившись на моделировании. Теперь хочу исправить ситуацию.

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

И ещё. Предлагается не NoCode или LowCode, а скорее, оченьдаже-Code. В общем, это – другое!

Читать далее

Языково-ориентированное… моделирование?

Level of difficultyMedium
Reading time13 min
Views1.9K

Историю можно начать с 1994 года, в котором Мартин Уорд (Martin Ward) на основании исследования больших проектов предложил парадигму языково-ориентированного программирования, когда процесс разработки программного обеспечения разбивается на стадии создания предметно-ориентированных языков и описания решения задачи с их использованием. Цель языково-ориентированного программирования — разделить сложности разработки: машиноориентированная часть кода (низкоуровневая функциональность) и человеко-ориентированная (решение прикладной задачи) разрабатываются независимо друг от друга.

Далее в 2003 году Эрик Эванс (Eric Evans) ввел понятие предметно-ориентированного проектирования (Domain-Driven Design, DDD) для набора программных и организационных практик, позволяющих разрабатывать сложные масштабируемые системы. Этот подход до сих пор активно используется, например, в микросервисной архитектуре и в информационной безопасности (см. Secure by Design). В этом подходе вводятся понятия: «модель», «проектирование по модели» (Model-Driven Design), «изоляция предметной области» и «изолированный контекст» (Bounded Context). Особенно интересно, что Эванс упоминает о предметно-ориентированных языках, как идеальном средстве описания модели конкретной предметной области, которая должна быть изолирована в своём контексте.

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

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

Читать далее

Императив предметной области при разработке информационных систем

Reading time8 min
Views9.3K

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

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

Читать далее

Information

Rating
Does not participate
Location
Видное, Москва и Московская обл., Россия
Date of birth
Registered
Activity