Про принцип единственной ответственности (The Single Responsibility Principle, SRP) уже было написано множество статей. В большинстве из них даётся лишь поверхностное его описание мало чем отличающееся от информации в википедии. А те немногие статьи что затрагивают ключевые особенности SRP делают это вскользь, не акцентируя на них внимания и не развивая тему дальше.
Эта статья — попытка дать более глубокое объяснение принципу единственной ответственности, а также показать как его всё таки можно применять на практике. Кому интересно — добро пожаловать под кат.Читать полностью »
Рубрика «Анализ и проектирование систем» - 23
Принцип единственной ответственности: глубокое погружение
2020-02-16 в 14:24, admin, рубрики: solid, srp, Анализ и проектирование систем, архитектура по, ооп, Программирование, Проектирование и рефакторингВлезаем в шкуру офис-менеджера. Основные алгоритмы снабжения
2020-02-13 в 5:12, admin, рубрики: ERP-системы, Анализ и проектирование систем, черт знает что, Читальный залНаписать эту статью я решил после посещения одного офиса – там не оказалось черного чая. Зеленого было полно, а черного не было. И с кофе были перебои.
А еще после каждого посещения официального дилера, когда машина ломается, остается желание эту статью написать. Однажды даже написал, через форму обратной связи на сайте дилера. Потому что задолбало бегать и самому покупать ходовые запчасти.
В общем, хочу простыми словами рассказать о наиболее распространенных способах организации закупок. Чтобы было действительно просто и понятно, натяну все эти методы на то, что знают и видят все: снабжение офиса чаем, кофе и сахаром.
Итак, представьте, что вы какими-то судьбами стали вдруг офис-менеджером. Предыдущий уволился месяц назад и уехал жить в Индонезию. Как он что делал – неизвестно. И вам надо организовать нормальное снабжение офиса, полного программистов, тестировщиков, тимлидов, менеджеров и т.п.Читать полностью »
Как менялся рынок BI и почему мы решили создать свою BI платформу
2020-02-07 в 9:52, admin, рубрики: BI, Business Intelligence, Анализ и проектирование систем, Блог компании Инфосистемы Джет, управление проектами
Я работаю в «Инфосистемы Джет» около 7 лет, большую часть из которых проектировал и внедрял BI-решения и системы, на них построенные: ситуационные центры, информационно-аналитические системы и всё, что создано, чтобы собирать и анализировать данные. За это время у меня накопился ряд историй и наблюдений на тему особенностей BI-проектов, о которых хотелось бы рассказать.
Читать полностью »
Как мы фрод из избы выносили
2020-02-04 в 7:42, admin, рубрики: elasticsearch, RabbitMQ, Анализ и проектирование систем, Блог компании Ситимобил, проектирование, Системы обмена сообщениямиМеня зовут Никита, я backend-разработчик из команды антифрода в Ситимобил. Сегодня я поделюсь с вами историей о том, как мы выносили наш сервис из монолита в отдельный сервис, как вообще пришли к этому решению и с какими проблемами столкнулись.
Зачем нужен eSIM. Как это работает и почему об этом так много говорят
2020-02-02 в 9:46, admin, рубрики: eSIM, eUICC, IoT, Анализ и проектирование систем, будущее здесь, Киберпанк, Научно-популярное, просто о сложном, сотовая связь, Стандарты связиМы стоим, как обычно, на пороге очередной технологической революции (я уже запутался какой там номер...). IoT или Интернет вещей принесет новые бизнес модели, новые сценарии использования и приведет к очередному переделу всего рынка телекома.
Как и в любом деле существует куча направлений, конкурирующих решений, технологий — короче каша еще та. И что из этого получится — сложно сказать с полной уверенностью.
Есть несколько системных направлений разработки, как бы некая матрица потребностей, где решения ранжируются по скорости передачи данных и по расстоянию передачи данных. Есть NFC и BLE для платежей. Есть LoRa и ZigBee для датчиков, а есть решения на основе сотовой связи 4G&5G, например LTE-M и NB-IoT.
На мой взгляд (так как я работаю с сотовой связью) самый простой и готовый для развертывания сегмент IoT — это Интернет вещей на базе сотовой сети с использованием eSIM. Вот про это я и расскажу с точки зрения железа и софта, но на уровне "интересно знать".
Чему меня, как разработчика, научили аварии в космосе
2020-01-28 в 7:19, admin, рубрики: Анализ и проектирование систем, Блог компании Mail.Ru Group, космонавтика, никто не читает теги, Программирование, разработкаИсследования космоса интересовали меня, сколько я себя помню. Люди, знавшие меня лично, слышали рассказов о космосе больше, чем им хотелось бы. Я администрировал русскоязычную версию Википедии, и одним из моих любимых увлечений была редактура связанных с космосом статей. Я лично наблюдал за запусками на Байконуре и мысе Канаверал, и чем больше я узнавал об усилиях по покорению космоса, тем сильнее эти знания влияли на меня как на разработчика.
Хотя писать программы не так сложно, как строить ракеты (по большей части), но всё же мы, программные инженеры, часто работаем в больших командах, создающих сложные системы. И как исследователи космоса, иногда мы проигрываем борьбу со сложностью.
Читать полностью »
Шахматы как динамическая система
2020-01-26 в 13:12, admin, рубрики: Алгоритмы, Анализ и проектирование систем, Занимательные задачки, логические игры, Научно-популярное, общая теория систем, системный анализ, системный подход, системология, системы, Стратегия, шахматы
Предисловие
Существует такой тип людей, для которых исследования и создание сложных и функциональных систем — высшая степень удовольствия. К такому типу можно отнести и меня. Любой целостный объект, обладающий единством всей своей структуры, материального, социального и абстрактного миров обладает системностью: человек, семья (да и любой социальный институт), биосфера, химические вещества и пр. Системность присутствует даже в неявных вещах.
Очень давно, благодаря энтузиазму моего деда, я научился играть в шахматы. Вообще, шахматы — это одна из самых древних синтетических системных моделей, представленных в оболочке настольной игры. В данной статье будет произведен системный анализ шахмат, как детерминированной (предопределенной) системы, а именно: исследование структуры связанных шахматных фигур, интегративного свойства всех фигур и отдельных «изолированных» структур и уровня доминирования на доске как отдельных фигур, так и отдельного цвета (белых или черных).
Читать полностью »
На пути к функциональной СУБД и NoSQL ERP: хранение остатков и расчет себестоимости
2020-01-26 в 11:41, admin, рубрики: Deno, ERP-системы, nosql, TypeScript, Анализ и проектирование систем, Программирование, функциональная ERP, Функциональная СУБД, функциональное программированиеПривет!
Продолжаем исследовать применимость принципов функционального программирования при проектировании ERP. В предыдущей статье мы рассказали зачем это нужно, заложили основы архитектуры, и продемонстрировали построение простых сверток на примере оборотной ведомости. По сути, предлагается подход event sourcing, но за счет разделения БД на иммутабельную и мутабельную часть, мы получаем в одной системе комбинацию преимуществ map / reduce-хранилища и in-memory СУБД, что решает как проблему производительности, так и проблему масштабируемости. В этой статье я расскажу (и покажу прототип на TypeScript и рантайме Deno), как в такой системе хранить регистры мгновенных остатков и рассчитывать себестоимость. Для тех, кто не читал 1-ю статью — краткое резюме:
1. Журнал документов. ERP, построенная на базе РСУБД представляет собой огромный мутабельный стейт с конкурентным доступом, поэтому не масштабируется, слабо-аудируема, и ненадежна в эксплуатации (допускает рассогласование данных). В функциональной ERP все данные организованы в виде хронологически-упорядоченного журнала иммутабельных первичных документов, и в ней нет ничего кроме этих документов. Связи разрешаются от новых документов к старым по полному ID (и никогда наоборот), а все остальные данные (остатки, регистры, сопоставления) являются вычисляемыми свертками, то есть кэшируемыми результами работы чистых функций на потоке документов. Отсутствие стейта + аудируемость функций дает нам повышенную надежность (блокчейн на эту схему прекрасно ложится), а бонусом мы получаем упрощение схемы хранения + адаптивный кэш вместо жесткого (организованного на базе таблиц).
Читать полностью »
Движок, скриптовый язык и визуальная новелла — за 45 часов
2020-01-19 в 11:45, admin, рубрики: java, swing, Анализ и проектирование систем, визуальные новеллы, геймдев, геймдизайн, игровые движки, Программирование, разработка игр, системы
Приветствую. Так получилось, что уже три года подряд в качестве подарка на Новый год определенным людям я делаю игру. В 2018-ом году это был платформер с элементами головоломки, о котором я писал на хабре. В 2019-ом — сетевая RTS для двух игроков, о которой я ничего не писал. И наконец, в 2020-ом — визуальная новелла, о которой далее и пойдет речь, созданная в условиях сильно ограниченного времени.
В этой статье:
- проектирование и реализация движка для визуальных новелл,
- игра с нелинейным сюжетом за 8 часов,
- вынос логики игры в скрипты на собственном языке.
Интересно? Тогда добро пожаловать под кат.
Осторожно: тут много текста и ~3.5мб изображений