Pull to refresh

Архитектура предметной области в CMF/CMS системах

Reading time 6 min
Views 3.6K
Website development *
Практически любая информационная система характеризуется наличием системы хранения и оперирования данными. Возьмем, к примеру, обычные веб-сайты. Для их создания обычно используются какие-либо готовые системы (фреймворки или уже готовые CMS), в которых изначально уже заложена какая-то концепция по работе с данными, установившаяся предметная область. Обычно, если разработчик хочется добавить на сайте раздел новостей, он добавляет в интерфейсе CMS компонент, информационный блок, шаблон и т.п. Суть всех этих конструкций одна — создать сущность в БД для хранения (либо каком-то ином хранилище). В итоге имеется реляционная база данных и, зачастую, какой-то объектно-ориентированный обвес, реализующий связку объект-атрибуты-свойства-методы — реализуется предметная область.

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

Самые простые системы позволяют лишь организовать хранилище, к которому разработчик в дальнейшем обращается и делает всю необходимую работу по обработке данных сам. В таком хранилище есть лишь объект, поля и данные. В более продвинутых системах между объектами появляются связи. Следующий уровень развития — взаимодействие объектов (триггеры, методы и т.п.), а так же наличие программной подсистемы, снимающую с разработчика часть забот по обработке данных.
Читать дальше →
Total votes 51: ↑45 and ↓6 +39
Comments 58

Mozart CMF: API, основанный на XML

Reading time 10 min
Views 1.7K
Website development *
Итак, в своей первой статья я сделал несколько предположений об архитектуре предметной области в CMF/CMS системах. Тогда я сделал предположение об объектной модели я связанном с нею сервисе, который умел обрабатывать входящие запросы и выдавать нужный результат на основании внутренней структуры модели.

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

Основой API Mozart'а служат newt-контейнеры. Newt — это XML-контейнер (в XML-фрагменте), который специальным образом обрабатывается XML-парсером. Newt может быть как одиночным тэгом (закрытым тэгом <newt />), так и контейнером (содержит в себе другие контейнеры (newt'ы, инструкции)). Аналог newt'а — это функция, задачей которой является произвести какие-то действия (и вернуть результат, если требуется).

Читать дальше →
Total votes 27: ↑21 and ↓6 +15
Comments 14

Введение в DSL. Часть 0. Анализ существующих ИТ как средства решения проблемы представления знаний о предметных областях

Reading time 5 min
Views 3.1K
Website development *
 
DSLВ комментариях к предыдущему топику много говорилось о том, что статья вышла сухая, академическая и плохо разжеванная. Да и вообще – зачем нужен DSL и какие проблемы он может решить? В связи с этим, я подготовил небольшой вводный обзор возможностей представления знаний о предметных областях в целом, чтобы рассмотреть, какое место в нем занимают DSL и чем все же удобно их использование.

Читать дальше →
Total votes 27: ↑22 and ↓5 +17
Comments 12

Организация и оптимизация информационного пространства пользователя

Reading time 12 min
Views 5.5K
Search engines *
Sandbox
Ежедневно, выполняя свои должностные и прочие функции, современный человек сталкивается с задачей анализа большого объема информации и поиска необходимых ему данных. Со временем происходит накопление пользовательских данных в виде документов. Эти документы в сумме составляют некоторое информационное пространство пользователя. С каждым новым документом все острее встает вопрос организации этого пространства: с течением времени из пары – тройки папок с иерархически – расположенными в них файлами получается огромная кипа документов, которую достаточно сложно привести к иерархической форме с линейными связями. Перед нами встает задача конкретизации, категоризации и визуализации информационного пространства пользователя.
Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Comments 7

Динамическая интерпретация метамоделей

Reading time 10 min
Views 18K
Programming *System Analysis and Design *Designing and refactoring *
Продолжая серию статей по метапрограммированию, подготовил выжимку из достаточно объемной своей работы о повышении уровня абстракций в информационных системах. Хабр конечно любит практические решения, и их таки есть у меня, но материала много и я вынужден разделить его на несколько статей. А для иллюстрации эффективности подхода, могу сказать, что внедрение его во множестве живых проектов позволило повысить эффективность разработки в десятки раз, например, создавать приложения баз данных со структурой в несколько сотен таблиц за неделю и портировать решения между платформами за считанные часы. Эта статья носит характер теоретический и наполнена специфической терминологией, без которой, к сожалению, она была бы значительно объемнее.
Читать дальше →
Total votes 29: ↑22 and ↓7 +15
Comments 46

Как мы делали SaaS: практика построения облачного продукта на примере EZ-Login. Часть 1. Об аналитике

Reading time 5 min
Views 5K
Softline corporate blog Website development *

Disclaimer
Данной статьёй мы продолжаем цикл материалов, рассказывающий о нашем опыте создания облачного продукта. Этот цикл не претендует на всеобъемлемость и универсальность, а призван продемонстрировать один из подходов (как мы надеемся, эффективный) к построению продукта с нуля. Статьи могут быть интересны как отдельным разработчикам, архитекторам, менеджерам проектов, так и целым командам, занимающимся созданием коммерческих продуктов. С предысторией вопроса можно ознакомиться тут.
Читать дальше →
Total votes 4: ↑2 and ↓2 0
Comments 0

Информационные системы с понятийными моделями. Часть первая

Reading time 13 min
Views 11K
ГК ЛАНИТ corporate blog Semantics *System Analysis and Design *Mathematics *
Внедряя современные информационные системы, крупные компании рассчитывают быстрее принимать решения, обнаруживать скрытые для бизнеса резервы и возможности, анализировать накопленный опыт и выстраивать прогнозы на основе выявленных закономерностей. Однако реальная отдача от информационных систем часто оказывается значительно ниже, а сроки внедрения и затраты – выше ожидаемых. Причин может быть великое множество, в том числе и связанных с неэффективным управлением, человеческим фактором, устарелой инфраструктурой.

Существенные недостатки есть и у самих информационных систем. В этой статье я предлагаю поговорить не о традиционных – трёхслойных – АИС, а о системах с четырехслойной архитектурой, где новый четвертый слой – слой представления – реализует понятийную модель предметной области. Для актуализации модели при изменениях в предметной области не требуется программировать. Более того, как актуализация модели, так и прикладные задачи решаются посредством семантически инвариантных для всех предметных областей операций над сущностями понятий.

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

Читать дальше →
Total votes 35: ↑34 and ↓1 +33
Comments 17

Информационные системы с понятийными моделями. Часть вторая

Reading time 17 min
Views 6.8K
ГК ЛАНИТ corporate blog Semantics *System Analysis and Design *Mathematics *
В первой части статьи мы начали разговор о новом классе высокоуровневых моделей предметной области, названных понятийными. В отличие от других аналогичных моделей в понятийных моделях связи между понятиями сами являются понятиями, а модель строится на основе выявления и описания абстракций, послуживших образованию (определению) понятий предметной области. Это позволяет конечным пользователям строить и актуализировать модели предметной области путем простых и естественных операций создания, изменения и удаления понятий и их сущностей.

Здесь, во второй части, поговорим о том, как может быть реализована полнофункциональная информационная система, основанная на понятийном моделировании предметных областей. Теперь уже в деталях рассмотрим информационную систему LANCAD, которую в нашей компании “ИНСИСТЕМС” используют для организации проектной деятельности по разработке проектно-сметной документации для строительства.

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

Читать дальше →
Total votes 39: ↑38 and ↓1 +37
Comments 19

Уроки проектирования. Предметная область и ее математические модели

Reading time 26 min
Views 9.1K
Mathematics *Development Management *Business Models *
“Многого можно добиться добрым словом. Но гораздо большего можно добиться добрым словом и пистолетом”( Аль Капоне). “Но иногда помогает только пистолет”( не Аль Капоне).

Чтобы не быть обвиненным в пропаганде вооруженного бандитизма, сразу поясню, что под пистолетом здесь понимается математическая модель предметной области. Поэтому афоризм трансформируется в “Многого можно добиться словами. Но гораздо большего можно добиться словами и математикой. А иногда помогает только математика”. Теряется острота, но правда ведь остается.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Comments 13

Декомпозиция систем по ограниченным контекстам DDD — глубокое погружение

Reading time 10 min
Views 4.6K
Java *System Analysis and Design *.NET *Designing and refactoring *Microservices *

"Отдайте этот функционал в другую системы - он относится к ним" - ворчал мой собеседник. Ему с пылом отвечали: "Так быть не должно. Мы сами должны его сделать!" Спор грозил затянуться до вечера. Ни одна из сторон не могла привести ни одного настоящего аргумента, почему новый функционал нужно поместить в ту или иную автоматизированную систему.

Проблема была в том, что никто не понимал как правильно делить системы на части и по каким признакам включать в них новые модули. У собеседников не было никакой единой простой методики.

Но методика на самом деле есть, и весьма неплохая. Называется она Предметно Ориентированным Дизайном (Domain Driven Design, DDD). С помощью DDD деление большой системы на (микро)сервисы становится простым и понятным.

Читать далее
Total votes 10: ↑10 and ↓0 +10
Comments 0

Акты, классы и семантический сахар

Reading time 10 min
Views 1.6K
Semantics *

В предыдущей статье «Событийная онтология vs объектная» были введены основные положения событийной семантики, описаны ее отличия от объектно-ориентированных подходов к моделированию предметной области. В данном тексте на конкретных примерах демонстрируются особенности событийного описания по сравнению с субстанциональным и релятивным. Вводится новое понятие «семантический сахар» и переосмысливается роль иерархических отношений свойств. 

Читать далее
Total votes 5: ↑5 and ↓0 +5
Comments 8

Как включить в модель знания предметной области

Reading time 6 min
Views 5.4K
SkillFactory corporate blog Python *Programming *Machine learning *Artificial Intelligence
Tutorial
Translation

Зачем это нужно?


Представьте, что вам дали размеченный набор данных, и ваша задача — предсказать новый. Что вы будете делать? Вероятно, сперва вы попробуете обучить модель машинного обучения поиску правил для разметки новых данных. А что дальше? Подробности — к старту нашего флагманского курса по науке о данных.

Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Comments 9