Forrester: SOA жив и здоров

Примерно таким заголовком анонсировали интернет издания мартовское исследование Forrester SOA Adoption 2010: Still Important, Still Strong Оказывается 71% опрошенных компаний уже используют SOA или собираются это сделать в течении 2011 года. То же самое говорит почти половина средних и малых компаний. Организации довольны результатами, получаемыми от сервис-ориентированной архитектуры и не собираются от неё отказываться. Безусловно, определенная часть опрошенных просто не понимает о чем говорит, но единодушие в ответах респондентов показывает, что «пациент скорее жив, чем мертв».

Не менее интересное исследование появилось в конце апреля The Forrester Wave™: Enterprise Service Bus, Q2 2011. Рынок ESB продолжает неплохо расти. Кроме вполне привычных для ESB задач, таких как маршрутизация сообщений и преобразование данных 35% компаний используют ESB непосредственно для разработки сервисов, а 14% для прикладной разработки на BPEL (28% используют BPEL для оркестровки). Кстати, с языком исполнения бизнес-процессов WS_BPEL ситуация тоже интересная. 2-3 года назад только ленивый не говорил о том, что SOA и BPM – браться на век. Затем из лагеря BPM стали отчетливо слышаться голоса, что BPEL not for people. В ответ могу попрекнуть разработчиков BPMS в монолитности архитектуры их флагманских продуктов. Далеко не все BPMSы, те который для людей, а не так называемый IC-BPMS, отвечают принципам сервис-ориентированной архитектуры, потому как сервисов они не предоставляют. В итоге, у больших вендоров в линейке присутствуют как минимум по два продукта: один для быстрого рисования процессов и пользовательских интерфейсов к ним, а другой для интеграции в корпоративную информационную систему, т.е. интероперабельный. Читать далее Forrester: SOA жив и здоров

Таксономия и фолксономия

Прошедшие выходные я провел за «увлекательным» занятием классификации информационных систем нашей компании. Выгруженные из Configuration management database (CMDB) приложения и из Human Resource management system (HRMS) сотрудники были подвергнуты различным inner, outer и cross join-ам . Естественно, делал это я не в трудовом порыве, а по служебной необходимости. Чтоб время, эмоции и силы были потрачены не совсем зря, изложу своё понимание терминов таксономия, фолксономия, агрегация и композиция в применении к современным информационным системам, в частности к CMDB.

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

Данная гибкость существенно отличает социальное ПО от традиционных бизнес-приложений. Для корпоративных справочников речь даже не идет об использовании тегов или категорий. Ситуация значительно хуже. Сплошь и рядом при разработке корпоративных информационных систем происходит подмена понятий агрегация и композиция. Напомню, что согласно UML агрегация – это такое отношении между классами, при котором один класс является частью другого (обозначается белым ромбиком), а композиция – это частный случай агрегации, когда часть и целое не могут существовать друг без друга(обозначается черным ромбиком). Т.е. программист, пришедший на работу, состоит с ней в отношении агрегации. А вот мысли этого самого программиста находятся с его головой в отношении композиции. Тем не менее, извечной практикой проектировщиков баз данных является прибивание гвоздями объектов, не состоящих друг с другом в отношении композиции.

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

На самом деле, разница между таксономией и фолксономией следующая. В случае таксономии, решение о включении или не включении определенного объекта в группу(отнесении к категории) принимает владелец этой группы. Т.е. если компания считает необходимым категорировать документы атрибутом «важно!», то в случае таксономии должен быть назначен сотрудник, отвечающий за присвоение документам данного атрибута. Категорий, подкатегорий и видов классификации, и ответственных за них, может быть произвольное количество. Одни отвечают за иерархию категорий «важно!» , другие за иерархию категорий «срочно!» и т.д. Если же категорирование отдается на откуп авторам документов, то это фолксономия (что, впрочем, не исключает возможности  учета принадлежности объектов  категориям). Возвращаясь к корпоративным справочникам. Если классифицирующие объект поля вносятся в структуру данных объекта, то это – плохая архитектура данных. Никакого отношения ни к таксономии ни к фолксономии такая архитектура не имеет.

Корпоративный поиск

«Мы ничего не теряем. Мы просто долго ищем»

Народная поговорка

Сегодняшний день я посвятил участию в дискуссионном клубе на DOCFLOW 2011. Вел себя активно, одобрительно кивал головой в ходе выступлений, задавал вопросы. Собственно говоря, интересных тем в дискуссионном клубе было две: тенденции развития ECM и корпоративный поиск. Про ECM как-нибудь в следующий раз, а сейчас про корпоративный поиск. Читать далее Корпоративный поиск

Услуга интеграции приложений для оператора связи

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

Потребности оператора связи в интеграции приложений можно условно разбить на следующие группы: Читать далее Услуга интеграции приложений для оператора связи

Unified software development process

Перелистываю фундаментальную книжку «троих друзей» (Jacobson, Booch, Rumbaugh) об унифицированном процессе разработки ПО 1999 года выпуска (перевод на русский в 2002) и с сожалением осознаю, что наиболее ценные идеи RUP и UML не нашли своего воплощения в корпоративной среде. Сплошь и рядом игнорируются три основные свойства унифицированного процесса:

  • управляемый вариантами использования;
  • ориентированный на архитектуру;
  • итеративный и инкрементный.

Процесс развития корпоративной информационной управляется deadline-ами (К кому-то на Новый год приходит Дед Мороз, а к кому-то – дед лайн). В лучшем случае, под такую интерацию подкладываются требования в виде списка фич. Причем, элементы такого списка могут описывать структуры данных, элементы поведения, нефункциональные требования и вообще все что угодно. Что означает доступность сервиса 99,9% редко кого волнует. А ведь большинство современных сервисов включают множество вариантов использования: подключение(подписка), предоставление, настройка, разрешение проблем и пр. Какой из этих сценариев должен успешно завершаться в 999 случаях из тысячи и что такое успешное завершение – решительно не понятно. Далее, в отличие от требований, варианты использования четко описывают, для какой группы пользователей предоставляет требуемый функционал и, что даже более важно, зачем он им предоставляется. В требованиях никогда такого не было. Обычная формулировка требования: у объекта X должно быть свойство Y. На вопросы, кто и в какой момент задает значение этого свойства, кто и когда использует это значение, кому разрешено данное значение переопределить, требования не дают ответов. Унифицированный процесс предлагает построить все активности вокруг сценариев: определение состава проекта(итерации), проектирование, разработку и тестирование, развертывание компонент, планирование capacity и т.д.

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

И все эти активности происходят в ходе всего проекта, т.е. решение разрабатывается инкрементально, от простого к сложному. Как известно, сложную систему невозможно заставить работать(«включить»). Её можно «вырастить» из простой работающей системы. Точно так же с первого раза невозможно сделать хорошую архитектуру, хорошую документацию, хорошие тесты. И именно поэтому в процессе нужна социальная составляющая. Люди должны общаться, ругаться, договариваться, причем делать все это не «на пальцах» а при помощи моделей и прототипов системы. Весь agile, пришедший вслед за унифицированным процессом построен на этом. Не ИТ разрабатывает систему для бизнес-заказчика, а заказчик разрабатывает себе систему при помощи ИТ. Иначе получится как всегда.

Кнопка «Feedback» в бизнес-приложениях

Рассматривая примеры приложений в Oracle Application Express наткнулся на одну интересную фичу. В коробке с Oracle APEX есть приложение для командной работы «Team Development», включающее в себя такие базовые функции, как планирование, управления задачами и требованиями(фичами), баг трекинг и т.п. Одним словом, довольно нормальное такое приложение для RAD разработки, ничего особо примечательного, если бы не одна вещь. Если мы запустим пример приложения, разработанного на Oracle APEX, то увидим в правой верхней части сайта кнопку «Feedback».

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

Т.е. бизнес-приложение изначально интегрировано с bug tracker-ом разработчика. В корпоративных информационных системах такое не принято. Много лет и ресурсов компании потратили на создание единого HelpDesk, в котором не очень высоко оплачиваемые специалисты дают не всегда правильные ответы на совсем неправильные вопросы пользователей. На большом масштабе получается хорошая экономия. Однако и отрицательные последствия централизации этой функции велики. Для большинства пользователей быстро найти нужно человека в ИТ, который мог бы решить проблему – задача неимоверно сложная. Чтоб твои вопросы решались надо быть директором, а лучше – вице-президентом. Похоже, маятник начал движение в обратную сторону. И уже разработчики приложений заинтересованы в установлении прямого контакта с конечным пользователем. Особенно это актуально для внешних разработчиков. Ведь если баг – это дополнительная неоплачиваемая работа, то расширения функционала – новый заказ. При этом, вся бюрократическая машина внутрикорпоративного ИТ остается не при делах. Маркетологи это называют каналом взаимодействия с клиентом. Тенденция чем-то похожа на то, что в сфере управления бизнес-процессами называют Social BPM.

Настоящие акулы ИТ аутсорсинга не должны упускать такие возможности!

Сценарии интеграции приложений. Интранет-портал

Я думаю, что несколько предыдущих сообщений этого блога могли вызвать определенное недоумение. Какое отношение имеет концепция Digital Workplace и уж тем более простая базы данных с пользовательским интерфейсом к архитектуре информационных систем? В действительности, все эти задачи сильно связаны между собой, и все они относятся к интеграции приложений:

Таким образом, это сообщение можно назвать Сценарии интеграции приложений(4). Чуть раньше я уже писал о том, что Digital Workplace является зонтичной концепцией, композитным приложением, предоставляющим доступ к функциям других приложений. В полной мере это относится и к данным. Т.е. по сути Digital Worplace, он же новый интранет это способ избавить корпоративный ИТ ландшафт от множества маленьких приложений в стиле база данных плюс окошки, сократить усилия за счет повторного использования однажды разработанных компонент. Если этого своевременно не сделать, то мы довольно быстро получим сложнейшие интеграционные задачи, описанные в заметке Сценарии интеграции приложений(2) Это идеальный вариант. Сервис-ориентированная архитектура (SOA), как её видели стратеги десяток лет назад


Как и все благие намерения SOA разбилась о рифы реальности. И главное причина тому интероперабили (interoperability) унаследованных приложений, вернее её отсутствие. Большинство приложений делалось для людей, а не для интеграции. Для людей(пользователей) в прямом смысле, т.е. каждый из разработчиков считал, что с его приложением будет работать человек, а не другая информационная система. Интеграция приложений – это уже набор конкретных практик, возникших из желания обеспечить согласованную работу множества систем, по возможности, не напрягая при этом пользователей. Именно поэтому корпоративный интранет портал или, если угодно, digital workplace является основным элементом интеграции приложений, не менее важным, чем Enterprise service bus, ETL или же очереди сообщений.

Пользовательский интерфейс к базе данных Oracle

ИТ подразделение любой современной компании регулярно получает запросы на разработку новых систем. Обычно, речь идет о каком-нибудь небольшом решении, реализуемым простой базой данной и парой десятков пользовательских форм. Существует множество технологий, позволяющих это сделать. Наверное, наиболее распространенным на сегодняшний день является подход Microsoft: берем MS SQL Server + MS Internet Information server, рисуем базу данных и веб-приложение и задача решена. Я сам баловался этим подходом лет десять назад. (Кстати, сейчас нашел в интернет разработанный мною в 2000 году блог/форум тех.поддержки для дилеров нашей компании и с чувством нескрываемой гордости 😉 обнаружил, что за прошлую неделю там появилось штук пять новых сообщений. Значит работает! Сайт чуть-чуть отребрендили, к расширению файлов скриптов буковку “x” добавили, но существенно ничто не поменялось )

Но я сейчас не об этом. Де-факто стандартом реляционных баз данных для крупных компаний является СУБД Oracle. По Ораклу экспертизы больше как в части поддержки, так и у разработчиков баз данных. А вот с разработкой простых приложений порядка меньше. Поэтому, я хочу собрать подходы к решению задачи разработки БД с «окошками» в одно сообщение, в надежде их как систематизировать. Что я вижу на текущий момент

Подход 1. Берем приложение в архитектуре Microsоft и меняем MS SQL на Oracle

Подход 2. Oracle application Express. Я уже писал о том, почему следует использовать Oracle APEX. Развернуть такое решение можно как непосредственно на движке базы данных, так и с использованием промежуточного сервера приложений JavaEE. Кстати, недавно Oracle обновил приложение APEX Listener

Подход 3. Oracle Application Development Framework. Традиционный JavaEE подход к разработке приложений с бизнес-компонентами и JavaServer Faces для пользовательского интерфейса.

Подход 4. Кастомизация бизнес-приложений, реализованных в этих приложениях средствами.

Ничего не забыл? У каждого подхода есть преимущества и недостатки. Я всего лишь хочу сказать, что альтернативы есть.

Почему ИТ-сервисы должны базироваться на архитектуре

На протяжении последних десяти лет ИТ архитектура и управление ИТ-сервисами(ITSM) следуют параллельными курсами. Не то чтоб они не пересекаются, пересекаются они на каждом шагу, я бы даже сказал, не пересекаются, а скорее сталкиваются, высекают друг из друга искры и снова расходятся на безопасное расстояние. При этом оба обозначенных направления изначально не являлись целостными и крайне друг в друге нуждаются. Проблема ИТ архитектуры заключается в её статичности. Архитектурные модели, вырванные из процессов ИТ, не актуализируются и довольно быстро устаревают. Архитекторам, зачастую приходится заниматься тем, что Гради Буч назвал software archeology, раскопками утраченных знаний о том, что представляет собой ИТ система и как она работает. В свою очередь, ИТ процессам очень не хватает четкой классификации объектов и отношений между ними. Определяемые ITIL понятия ИТ-сервис и конфигурационная единица(КЕ) не особо конкретны. Любое существительное можно назвать КЕ, однако сколь либо стандартизированных классификаторов КЕ не существует и организациям их приходится придумывать самостоятельно. С ИТ-сервисом ситуация не лучше. Про него по большому счету известно то, что он предоставляется и то, что он обладает(или должен обладать) соглашением об уровне сервиса (SLA). Попробуем «подружить» архитектуру информационных систем и управление ИТ-сервисами Читать далее Почему ИТ-сервисы должны базироваться на архитектуре

Описание бизнес-процессов вместо описания требований

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

Мне всегда казалось, что хорошее описание бизнес-процессов позволяет отказаться от такого артефакта как требования и существенно разгрузить то, что принято называть техническим заданием. К сожалению, этого зачастую не происходит. Если требования, по крайней мере, требования в понимании IEEE 830, еще как-то уживаются с техническим заданием в понимании ГОСТ 34.602 (их просто включат в соответствующий раздел ТЗ), то про описание бизнес-процессов нет упоминаний ни в одном из этих документов. Потому там где они существуют, существуют они сами по себе.

Уместным еще будет вспомнить про идею архитектуры предприятия (Enterprise architecture), включающую в себя бизнес архитектуру. Если не вдаваться в детали, то суть идеи заключается в том, чтоб разработать матрицу зависимости между подразделениями компании и процессами, в которых они участвуют. Т.е. речь идет не о бумаге, которую каждый проект или каждое подразделение пишет для себя, пишет, причем, каждый раз, когда возникает необходимость в том, чтоб «наконец как следует во всем разобраться», а о едином подходе в рамках всей компании. Говоря еще проще, мы запрещаем подразделениям и проектам заниматься описанием процессов в любимом текстовом редакторе, предоставляем единую модель и инструмент для создания и использования описания процессов, инструкций, руководств и прочих бумаг, регламентирующих деятельность сотрудников.

На мой взгляд, это направление развития бесславно капитулировало, так и не решив поставленных перед собою задач. BPM тусовка переключилась на моделирование этапов отдельного процесса, обсуждение BPMN и возможностей «исполнения» нарисованных в данной нотации процессов. Но, тем не менее, задача сокращения околопроцессных бумаг, согласованности зафиксированных в них утверждений и устранения разрыва между реальностью и моделью может быть решена. Пусть всего лишь в рамках отдельных активностей и проектов.

Надо просто выбросить лишнее.