Рубрика «Анализ и проектирование систем» - 129

Несколько месяцев назад разработчик Тобиас Семински и его друг провели что-то наподобие геймдев-эксперимента. Они решили создать низкопробную игру и постоянно обновлять и улучшать ее, используя данные Google Analytics и пользовательские отзывы. Они не хотели тратить полгода на разработку ничем не примечательной игры, которая со временем затерялась бы на Google Play. Да и вообще, на это не было столько времени. Поэтому это казалось просто бредовой идеей – развивать игру, отталкиваясь лишь от отзывов игроков. Хотите узнать, что из этого вышло? Подробнее — в нашем переводе.

Пример разработки игры на основе данных Google Analytics - 1
Читать полностью »

Суперскалярный стековый процессор: скрещиваем ужа и ежа - 1
В данной статье мы будем разрабатывать (программную) модель суперскалярного процессора с OOO и фронтендом стековой машины.
Читать полностью »

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

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

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

  1. Описание бизнес-процессов. На этом этапе работа производится на бумаге или в любой удобной среде. Самое главное, получить некую схему или алгоритм, который будет понятен как разработчику, так и заказчику.
  2. Согласование. Полученное описание бизнес-процессов согласовывается с руководством компании. На этом этапе опытный бизнес-консультант или разработчик может предложить также оптимизацию определенных процессов и уточнить все спорные вопросы.
  3. Выбор среды для внедрения. Подробное описание бизнес-процессов можно считать четкой постановкой задачи. И теперь, когда алгоритм будущей работы ясен, разработчик может самостоятельно или совместно с заказчиком выбрать среду, в которой будет проводиться дальнейшая работа, т.е. непосредственно CRM систему.

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

И сейчас я хочу рассказать о двух разных подходах решения этих вопросах, которые в той или иной степени реализованы во всех популярных CRM.

  1. Программирование бизнес-процессов.
  2. «Рисование» бизнес-процессов.

Разница между этими подходами понятна из их названия. В первом случае разработчики используют алгоритмизацию и некую последовательность команд, которую в дальнейшем реализуют в среде CRM в виде набора команд. Во втором бизнес-процессы представляют в виде графической блок-схемы, команды в которой представляются в виде объектов и стрелок. Давайте разберемся немного подробнее с каждым из этих вариантов автоматизации.
Рассматривать использование BPMS систем для решения задач автоматизации бизнес процессов я не буду, интересующиеся могут почитать здесь.
Читать полностью »

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

Consul.io Часть 2 - 1

В заключительной части мы рассмотрим как Consul работает с протоколом DNS, разберем основные запросы к HTTP API, посмотрим какие виды Health Checks мы можем использовать и, конечно, разберем для чего нужен K/V storage. И что самое важное, ближе познакомимся с некоторыми особенностями на практике.
Читать полностью »

ОС Фантом — экспериментальная операционная система, содержащая на прикладном уровне виртуальную байткод-машину в персистентной оперативной памяти.

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

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

Обе машины — стековые. Обе оперируют двумя отдельными стеками — стеком для работы с объектами (на стеке лежат только ссылки), и бинарным стеком — для вычислений. Машина Фантома имеет также отдельные стеки для фреймов функций и ловушек исключений. Как эта часть устроена в JVM, я не знаю до сих пор, но полагаю, что вряд ли кардинально отличным образом.

Естественно, что и набор операций стековых машин местами схож как две капли.

Но, безусловно, есть и весьма существенные отличия.

Во-первых, виртуальная машина Фантома предназначена для работы прикладного кода в менее дружественной среде. Ява исходит из того, что каждая программа живёт в отдельном адресном пространстве, и всё, что вокруг — “наш” код. Фантом допускает прямые вызовы между приложениями разных пользователей и разных программ, что требует более жёсткого отношения к некоторым аспектам виртуальной машины, включая тот же вызов, да и интерфейс объекта вообще. Например, мы не можем полагаться на то, что вызванный метод ведёт себя “прилично” — нельзя давать ему доступ в свой стек, нельзя полагаться на наличие или отсутствие возвращаемого значения. Нельзя гарантировать различие между методом, функцией и статической функцией. То есть, мы можем предполагать, что именно мы вызываем, но что нам «подсунули» с той стороны — неизвестно.

В силу всего сказанного, вызов в Фантоме унифицирован абсолютно — это всегда вызов метода (есть this и есть класс), и всегда возвращается значение, которое для void метода равно null и явно уничтожается вызывающим кодом. Это гарантирует, что какая бы ошибка вызова не случилась, что бы не подвернулось в качестве предмета вызова, протокол вызова и возврата будет соблюдён.
Читать полностью »

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

Consul.io Часть 1 - 1

В данной статье мы расскажем об одном из discovery-сервисов под названием Consul, с помощью которого можно решить вышеизложенные проблемы и сделать архитектуру более прозрачной и понятной.
Читать полностью »

Основная идея Pub-Sub довольно простая: "publish–subscribe is a messaging pattern where senders of messages, called publishers, do not program the messages to be sent directly to specific receivers, called subscribers, but instead characterize published messages into classes without knowledge of which subscribers, if any, there may be. Similarly, subscribers express interest in one or more classes and only receive messages that are of interest, without knowledge of which publishers, if any, there are." В свободном переводе это может звучать так: "Издатель-подписчик (англ. publisher-subscriber или англ. pub/sub) — поведенческий шаблон проектирования передачи сообщений, в котором отправители сообщений, именуемые издателями (англ. publishers), напрямую не привязаны программным кодом отправки сообщений к подписчикам (англ. subscribers). Вместо этого сообщения делятся на классы и не содержат сведений о своих подписчиках, если таковые есть. Аналогичным образом подписчики имеют дело с одним или несколькими классами сообщений, абстрагируясь от конкретных издателей."
Читать полностью »

Статья "Анализ текущей ситуации на российском BIM-рынке в области гражданского строительства", опубликованная в нашем блоге в начале февраля, вызвала достаточно широкий резонанс в специализированной САПР-среде и даже удостоилась нескольких перепубликаций, под которыми за несколько недель появилось огромное количество комментариев от людей интересующихся САПР-тематикой. Если убрать из них эмоции (а они были совершенно разные по окраске), то многие запросы касались практической демонстрации возможностей проектирования с помощью BIM-решений от различных вендоров…
Технология BIM: пример практического междисциплинарного взаимодействия - 1

Действительно тема очень актуальна: интересные BIM решения появляются от все большего числа САПР-разработчиков, качество проектов, выполненных с помощью BIM технологии, заметно выше традиционных, чиновники выступают с инициативами по популяризации BIM-технологий, IT-технологии развиваются и позволяют создавать все более сложные модели (например, как вам возможность ходить по стройке с планшетом с дополненной реальностью?). В какой-то степени сейчас действительно наступает время новых принципов проектирования и строительства. Но если раньше технология информационного моделирования затрагивала отдельные специальности, то сейчас многие разработчики BIM систем выступают с инициативой открытого междисциплинарного взаимодействия, которая позволяет увязать независимые между собой программные продукты и выстроить BIM-процесс, заточенный под задачи и возможности проектных организации практически любого типа. Концепция носит маркетинговое название OpenBIM и противопоставляется BIM-проектированию, основанному на проприетарных закрытых форматах.

Но возможно ли настроить BIM-процесс на базе открытых форматов и, если да, то с чего начать? Как от красивой теории перейти к практике? Мы постарались ответить на эти вопросы в онлайн лекции, проведенной на прошлой неделе. В рамках мероприятия мы, рассматривая теорию, привели пример практического взаимодействия между двумя BIM решениями: венгерским программным продуктом для архитектурного проектирования ARCHICAD и российским инженерным решением nanoCAD Электро для проектирования электротехнической части здания.

Материал настоятельно рекомендуется лицам, интересующимся информационным моделированием (технологией BIM) и новостями из мира САПР.
Читать полностью »

Проблемы разграничения доступа на основе списка доступа в ECM системах (часть 2) - 1В моей дебютной статье мы по шагам проектировали модель разграничения доступа к предметной области, рассматривая в качестве примера выдуманную ECM систему, которая от простой постепенно становилась не очень простой. Мы столкнулись с проблемами, которые не смогли легко и просто решить в рамках той модели, что у нас получилась в результате. В этой статье попытаемся исправить положение.
Читать полностью »

За последние три дня вышло несколько новостей про российский процессор Байкал-Т:

1. Российская компания «Т-Платформы» представила процессорный модуль SF-BT1 с Байкалом-Т, который она собирается распостранять среди разработчиков.

2. Также «Т-Платформы» выпустили на основе Байкала-Т тонкий клиент «Таволга терминал», который может работать не только как терминал, но и как автономной компьютер с Linux Debian 8.

3. Т-Платформы показывали и плату для разрабочиков, и терминал на основе Байкала-Т на выставке Embedded World в Нюренберге, в сотрудничестве с британской компанией Imagination Technologies, которая разработала микропроцессорное ядро MIPS P5600, которое использует Байкал-Т.

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

На фотографии ниже — ранние пользователи байкаловских плат. Это инженеры из России, Украины и Казахстана, которые участвуют в разработке микропроцессорного ядра MIPS P5600 и его сотфтверной экосистеме в отделении Imagination Technologies в Санта-Клара, Калифорния: Леонид Егошин (поддержка многоядерности в ядре Линукса), Сергей Вакуленко (симулятор для верификации) и Юрий Панчул (модели интерфейсов шин):

Платы для разработчиков и терминал на основе российского микропроцессора Байкал-Т - 1

Вообще Байкал-Т — это плод международного сотрудничества, в которон вовлечены в частности:
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js