Платформа «1С:Предприятие» как средство разработки бизнес-приложений


В этой статье хочется привести некоторые соображения по двум вопросам, которые связаны с системой «1С:Предприятие» и в последнее время все чаще обсуждаются в отечественной ИТ-индустрии: является ли платформа «1С:Предприятие» средством разработки и есть ли такая профессия — разработчик на «1С:Предприятии»? Конечно, на практике вопросы формулируются менее официально, но сути это не меняет.

Является ли «1С:Предприятие» средством разработки?

Термин «1С:Предприятие» обозначает систему ПО, в которую входят и платформа, и наборы прикладных решений (разного масштаба и разной отраслевой специфики), а также различных методик. Поэтому как про средство разработки правильно говорить именно про платформу «1С:Предприятие». Как и для многих современных платформ, для «1С:Предприятия» трудно провести определенную границу между собственно инструментом разработки и «исполняющей системой», поскольку они образуют единое целое. Фактически платформа и есть средство разработки, но работает она как на этапе создания программ, так и при их выполнении. С точки зрения принятой в мире терминологии здесь хорошо подходит слово framework, но, к сожалению, у него нет удачного русского аналога.

Заметим, что существенная часть систем автоматизации бизнеса имеет свой встроенный инструментарий разработчика. Мы не готовы предлагать какие-то универсальные критерии по поводу того, что считать встроенным инструментарием, а что средством разработки. Платформу «1С:Предприятие» мы можем считать средством разработки на основании того, что она реально (и достаточно массово) используется не только как средство настройки поставляемых фирмой «1С» прикладных решений, но и как средство создания новых прикладных решений (как с использованием типовых фрагментов, так и без них). При этом оно применяется и для создания тиражных решений, и для разработки индивидуальных решений «под заказ».

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

Массовое использование платформы для создания прикладных бизнес-программ не было случайным событием. Изначально при создании системы ставилась задача обеспечения инструментария, полностью отчуждаемого от команды разработчиков фирмы «1С» и обладающего всеми атрибутами тиражного средства разработки. Достаточно сказать, что у разработчиков прикладных решений «1С» нет никаких «секретных» инструментов или методических материалов. Они используют те же средства и ту же литературу, что и любой другой специалист, имеющий дело с «1С:Предприятием».

Разумеется, «1С:Предприятие» — не универсальное, а специализированное (предметно-ориентированное) средство разработки. Конечно, ни один инструмент не может претендовать на решение всех мыслимых проблем, однако универсальные средства разработки ориентированы на достаточно широкий спектр задач, а платформа «1С» — на задачи автоматизации бизнеса.

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

Особенности «1С:Предприятия» как предметно-ориентированного средства разработки

По оценке экспертов, сейчас рынок средств разработки смещается от конкретных программ, обеспечивающих разработку (компиляторов, IDE, профилировщиков и т. д.), к системам, поддерживающим весь жизненный цикл разработкиs. Если говорить об этой тенденции проще, то поставщики стремятся вложить в свои комплексы все инструменты, необходимые для коллектива разработчиков, или обеспечить удобное подключение других доступных средств. Разумеется, это сложная задача, и в полном объеме она практически не решаема.

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

Платформа «1С:Предприятие» содержит такие инструменты для выполнения поставленных задач, как визуальное описание структур данных, написание программного кода, визуальное описание запросов, визуальное описание интерфейса, описание отчетов, отладка программного кода, профилирование. В ее составе: развитая справочная система, механизм ролевой настройки прав, инструменты создания дистрибутивов, удаленного обновления приложений, сравнения и объединения приложений, ведения журналов и диагностики работы приложения, создания Web-приложений и приложений для КПК, а также поддержка коллективной разработки, версионирования и пр. Разумеется, список инструментов, необходимых для поддержки жизненного цикла, не является исчерпывающим, и нам есть куда развиваться. Например, в ближайшем будущем мы планируем поставлять средства управления тестированием (функциональным и нагрузочным). Кстати, они создаются на платформе «1С:Предприятие».

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

В «1С:Предприятии» процесс написания программного кода — не центральный элемент разработки ПО. Приложение разрабатывается прежде всего как структура метаданных. Код пишется в определенных узлах приложения «по необходимости», чтобы переопределить, если это нужно, стандартное поведение или написать ту часть бизнес-логики, которая требует именно алгоритмической формулировки, например расчет себестоимости. То есть имеется framework, задающий общий облик приложения, а приложение определяется как набор различных артефактов, которые функционируют в данном framework-е. Идея разработки на основе метаданных (metadata-driven) начинает активно использоваться и в универсальных системах, но в предметно-ориентированной среде разработки она дает существенно больший эффект, так как структура метаданных четко ориентирована на круг решаемых системой задач.

Один из моментов, обычно вызывающих споры, — принятое в «1С:Предприятии» построение основной части приложения на основе стандартных прототипов (patterns) прикладных объектов. Действительно, эта модель отличается от классического подхода (объектно-ориентированного программирования и работы с таблицами базы данных или отображаемыми в базу данных произвольными сущностями). Фактически система предоставляет не один базовый класс для построения прикладных объектов приложения, а несколько, каждый из которых имеет специализированную функциональность и предназначен для отображения в приложении объектов предметной области, обладающих схожими свойствами и ролью в бизнес-логике. Разработчик использует эти прототипы для создания объектов приложения, которые уже являются финальными (описывающими конкретные бизнес-сущности).

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

Еще одна особенность «1С:Предприятия» как предметно-ориентированной среды разработки — особое отношение к подбору технологических возможностей, предоставляемых разработчику. Разумеется, в «1С:Предприятии» есть возможность подключать другие (внешние) программные модули. Но платформа ориентирована на то, чтобы актуальные для задач автоматизации бизнеса технологии предоставить разработчику в готовом виде. Причем высокая степень «готовности» включает и простоту освоения, и «гладкость» интеграции с общей функциональностью и другими технологическими возможностями системы. Фактически платформа позволяет разработчику прикладных решений задействовать необходимые и современные технологии своевременно, максимально просто и без радикальных изменений в своем приложении.

Примеров этому можно привести много. Одно из сильных конкурентных преимуществ платформы «1С:Предприятия» (по общей оценке разработчиков приложений) — система обмена данными, позволяющая достаточно просто реализовать синхронизацию данных на основе XML как для создания территориально распределенных приложений, так и для целей интеграции (с другими приложениями «1С:Предприятия» и с другими системами). Можно привести и другие примеры. Механизм бизнес-процессов дает возможность организовать совместную работу пользователей. Реализация data-mining позволяет решать сложные задачи бизнес-анализа. Реализация отображения географических карт — решать задачи представления анализа бизнеса по регионам и задачи визуального представления транспортной логистики. И т. д.

Если проанализировать изменения, вошедшие в версию 8.1, то можно выделить такие новые технологии, как элементы SOA (Web-сервисы, XDTO) и система полнотекстового поиска. И та и другая технология сейчас на слуху и вызывают большой интерес у разработчиков. Но при разработке в универсальных системах включение их в проект обычно требует весьма существенных затрат, тогда как в «1С:Предприятии» затраты минимальны. Например, для предоставления пользователям возможности работы с полнотекстовым поиском нужно только, как говориться, поставить галочку. Такой подход позволяет разработчикам решений задействовать наиболее современные технологии прямо сейчас.

Здесь мы плавно подошли к тому, чтобы выделить одно из основных преимуществ предметно-ориентированной среды разработки. Построение системы на основе технологической модели работы приложения, метаданных и прикладной модели работы приложения позволяет существенно упросить и ускорить разработку. Во-первых, опираясь на метаданные и единую модель, все компоненты системы взаимодействуют между собой без существенных усилий со стороны разработчика. Фактически они знают, «что нужно делать» с теми или иными объектами бизнес-логики и типами данных. Например, система отчетности (в версии 8.1 система компоновки данных) позволяет строить сложнейшие отчеты, управляемые пользователем только на основе сформулированного разработчиком запроса, так как она «знает» модель приложения. Во-вторых, существенная часть технологических сложностей реализации решается платформой и не «наваливается» на разработчика решения.

Здесь хочется сделать небольшое историческое отступление. В предыдущем поколении платформы «1С:Предприятие» (версиях 7.x) использовался другой подход, касающийся применения технологий. Система была в основном замкнута. Подход предполагал использование строго ограниченного набора средств и технологий. Разумеется, это в свою очередь существенно ограничивало и спектр применения системы — как по масштабированию решений, так и по широте областей применения.

При разработке и развитии платформы «1С:Предприятие 8» подход был изменен. Система не ограничивается в использовании современных технологий, но ориентируется на их максимально удобное и простое включение в общую инфраструктуру разработки приложения. Реализацию этого подхода можно наблюдать в постепенном включении в платформу целого спектра технологических решений. К уже упомянутым выше можно добавить такие примеры, как права доступа к данным на уровне записей, широкие возможности интернационализации, работа с различными Интернет-протоколами, кластер серверов, управление блокировками данных, мощная поддержка XML и т. д.

Из перечисленного списка нетрудно понять, что в платформе появились более сложные предметы, требующие хорошего понимания, и само количество предметов стало больше. Как минимум, это видно по объему документации. Однако эта сложность не захлестывает разработчика приложения. Все механизмы можно использовать опционально и вводить по мере надобности. Ну и, разумеется, разработчику, переходящему с предыдущей платформы, нужно понимать, что это вполне разумная (и, по нашему мнению, в реализации «1С:Предприятия 8» — минимальная) плата за возможность использовать при быстрой разработке современные технологии и решать задачи, которые в версии 7.x не могли решаться в принципе.

Разумеется, у всех преимуществ предметно-ориентированной среды есть и обратная сторона. В отличие от универсальных средств, здесь имеются ограничения в выборе технологических решений и возможностях их «тонкой» настройки. Многие технологические решения определены в самой модели и не могут быть изменены разработчиком приложения. Например, в «1С:Предприятии» он не имеет прямого доступа к базе данных, ему нужно действовать теми средствами, которые использует модель «1С:Предприятие». В универсальных средствах можно все и можно произвольно выбирать любое сочетание технологических решений.

Возможности применения

Проанализируем особенности платформы «1С:Предприятие» с точки зрения критериев выбора средства разработки. Прежде всего, ее использование стоит рассматривать для решения тех задач, для которых оно предназначено, — автоматизации управления и учета. Конечно, есть и весьма успешные случаи нестандартного применения системы для других областей, но не будем на них отвлекаться. Далее, важный критерий выбора между «1С:Предприятием» и универсальными средствами разработки — по нашему мнению, оценка затрат на разработку и сопровождение системы. При этом затраты вполне можно оценить количественно. Скорость разработки в «1С:Предприятии» обычно выше в 2—10 раз и стоимость соответственно в разы ниже.

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

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

Попробуем привести еще одно объяснение подхода платформы «1С:Предприятие». У Фреда Брукса в легендарной книге «Мифический человеко-месяц» изложен подход, согласно которому в любом процессе существуют сложности первого порядка (сущностные) и второго порядка (акцидентальные). Первые обусловлены сложностью самой решаемой задачи (предметной областью, многообразием вариантов, требованиями и т. д.), вторые являются «привнесенными». Они обусловлены использованием неадекватных инструментальных средств, методик, подходов к решению задачи и вполне могут быть исключены. Так, задача платформы «1С:Предприятие» — максимально исключить сложности второго порядка, предоставив разработчику возможность сосредоточиться на объективно существующих сложностях первого порядка.

Есть такая профессия!

Теперь попробуем ответить на второй вопрос — о профессии разработчика приложений на базе платформы «1С:Предприятие». Все-таки, по нашему мнению, специалиста любой профессии характеризует не только инструмент, которым он пользуется, но и круг задач, которые он умеет решать. Нам кажется, лучше использовать не термин «программист», а именно термин «разработчик». Создание приложений на «1С:Предприятии» не является написанием программы. Написание кода — только часть работы. Это именно разработка приложения, строящаяся, как мы говорили выше, начиная от структуры прикладных объектов, описания их взаимосвязи, продумывания бизнес-процессов. То есть разработчиков на «1С:Предприятии» характеризует не знание синтаксиса встроенного языка. Профессиональные разработчики на «1С:Предприятии» — специалисты по разработке бизнес-приложений. Само по себе описание структуры данных в «1С:Предприятии», написание программы на встроенном языке, рисование форм не является сложным и осваивается на некотором уровне, достаточном для решения несложных задач, обычно за 2—3 недели. Но разработка бизнес-приложений — это весьма сложная задача, не менее сложная, чем создание, например, средств разработки, САПР и т. д.

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

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

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

Сергей Нуралиев — руководитель отделения разработки экономических программ фирмы «1С»