1/18/2007 5:06:00 AM

В последнее время Microsoft "продвигает" концепцию Software Factories (я не знаю, как это адекватно перевести на русский язык, поэтому оставим так) и DLS (Domain Specific Languages).
Что же это за концепция и как ее можно использовать "во благо"?

Начнем с DSL.
Как следует из названия, это язык, описывающий некую модель. Давайте подумаем: а из чего состоит программа, которую мы пишем и в последствии поддерживаем?
Обычно есть какое-то ядро, какие-то расширения, слой работы с базой данных, пользовательский интерфейс...
А из чего, в свою очередь состоят они? Ведь это получается своего рода кубики: у нас обычно есть модули, контроллеры, объекты-транзакции, обладающие рядом специфичных для приложения свойств бизнес-объекты, провайдеры данных, сервисы и т.д. и т.п. Много у нас всего есть обычно. И все это специфично для нашей инфраструктуры, для нашего приложения. Все это нужно знать, помнить, документировать для потомков...
Создавая новый модуль мы создаем его в соответствие с некими правилами приложения, потом собираем из кубиков его функциональность.. Кубики мы тоже создаем, каждый такой кубик тоже создается в соотвествие с правилами, в результате чего части приложения "понимают" друг друга и работают.

Фактически, создавая правила вроде "любой бизнес-объект реализует IEntity" мы создаем свой собственный, специфичный для нашего приложения язык. Это он и есть - Domain Specific Language, DSL. Без него не обходится ни одно крупное приложение - везде есть свои правила и свои кубики.

Майкрософт предлагает явно выразить эти правила в виде формального языка. Иными словами, предлагается создать для своего приложения некий новый "язык", который будет оперировать сущностями нашего приложения ("модуль", "контроллер", "провайдер", etc) и отношениями между ними.
Разработав для нашего приложения такой язык мы сможем как бы выйти на новый уровень абстракции и в разработке оперировать не в терминах "класс", "интерфейс", "событие", а сразу в терминах нашего приложения.
Открыть дизайнер и набросать UML-подобную диаграмму, где каждый элемент есть сущность нашего проекта.
Чувствуете, куда я клоню? Тогда хватит об этом, перейдем к следующей теме :)

Software Factories.
Весь последний номер Архитектурного Журнала, выпускаемого Майкрософт и который, непонятно почему, но периодически приносит мне почтальон (наверное, галку где-то ткнул), был посвящен Software Factories. Так что же это такое?
Итак, Software Factory - это инструмент, позволяющий "провести" разработчика по определенному пути.

Ну например, разработчик говорит: "хочу создать модуль для приложения". Он открывает Software Factory и тыкает по слову "модуль". Его спрашивают название модуля, еще какие-то параметры, после чего пользователь нажимает "ОК" и получает в своем солюшне (solution) проект-заготовку модуля со всеми необходимыми инициализаторами и т.д. Этот пустой модуль уже готов загрузиться, быть понятым приложением и работать.
А Software Factory дальше подсказывает, что следующим шагом можно добавить бизнес-объект в модуль, или сделать контрол для отображения объекта в пользовательском интерфейсе.. Попутно предлагая документацию по каждому шагу.
Разработчик жмет "хочу бизнес-объект!" - и получает форму с вопросами: "как назовем?", "data layer для него сделаем?", "А View этому контролу нужен?", "не желаете ли свойства указать?"..
Клик по "ОК" - и вот у нас создался бизнес-объект в том виде, в котором он должен быть в приложении, слой базы для него - в полном соответствии с требованиями системы, контрольчик (view) для его отображения, контроллер этого view..
Словом, вся рутина, которую пришлось бы писать руками, наследуя классы, связывая их между собой и т.д. делается автоматически. Конечно, посредством DSL, а зачем я еще столько буков про него написал.

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

К чему я это все?
К тому, что в следующем постинге я расскажу о (еще одной) недавно вышедшей Software Factory - Web Client Software Factory, которая, на мой взгляд, очень заслуживает внимания.

Как говорится, оставайтесь на линии ;)

 

Technorati tags: ,
Comments are closed

Powered by BlogEngine.NET 2.5.0.6

About the author

Alexey Raga Alexey Raga
.NET software developer.

E-mail me Send mail

Twitter

Widget Twitter not found.

Root element is missing.X


Recent posts

Archive

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2012

Sign in