В PC Week/RE, № 31/99 г. в статье “Это сладкое слово "качество"” мы обсуждали системы качества для фирм, проектирующих КИС и разрабатывающих ПО. Мы обещали вернуться к этой теме и на конкретном примере рассказать, как можно накапливать коллективные знания. Однако представители фирм-заказчиков и в письмах, присланных по электронной почте, и во время наших презентаций всегда “сворачивают” на свои проблемы: “А каким образом ваша система качества превращается в нашу систему качества?” (в рамках реализованной КИС). Их можно понять - редко кого интересует процесс ради процесса, прежде всего людям нужен конечный результат. Поэтому мы решили рассказать не только о конвейерном процессе производства заказных ИС, но и о том, как они “приживляются” к телу фирмы-заказчика в качестве если не мозга, то уж нервной системы - точно.
Искусство на конвейере
Злые языки говорят, что “программист - это не профессия, это диагноз”. Что тут ответить? Артиста обидеть каждый может...
Поточное производство произведений искусства - явление в наше время обыденное. Глубокое разделение труда применяется в производстве, например, популярной музыки. Одни пишут стихи, другие придумывают мелодию, третьи делают аранжировку. Затем - исполнение, запись, сбыт (“раскрутка”). Однако, простое разделение труда - это еще не конвейер. Важнейший элемент конвейерного производства - иерархическое разделение труда. Понять, что такое “иерархия разделения труда”, легко на примере декомпозиции компьютерных систем: одни совершенствуют технологические процессы микроэлектроники, другие разрабатывают транзисторы и так далее до операционной системы и прикладных программ. Интерфейсы на уровне плат позволяют организовать разделение труда, а технологические интерфейсы - иерархию разделения труда.
Технологией разработки заказных программных систем московская фирма ЕМЕ “увлекается” уже без малого десять лет, однако по-настоящему эта технология сформировалась лишь два года назад после изобретения принципиально нового подхода к конструированию ПО: трехслойный пользовательский интерфейс и “Метапроект”. Этот подход позволил полностью отделить процесс визуального конструирования диалогов и отчетов (и сборки системы) от процесса разработки алгоритмов на языке программирования. “Чистые” алгоритмы (отвязанные от конкретных проектов) существуют в среде внутреннего интерфейса-стандарта “Метапроект” и позволяют накапливать овеществленный опыт различных разработок фирмы. Такое накопление создало предпосылку для построения системы качества для разработки КИС и ПО.
Технология производства ПО (конвейер).
Рис 1. Схема конвейера разработки ПО
Декомпозиция производства заказной КИС, применяемая фирмой ЕМЕ, изображена на рис. 1. На этом рисунке представлена организационная структура предприятия. Легко прослеживается основная петля конвейера (рис. 2). Она исключает участие программистов, разрабатывающих программы на алгоритмическом языке. Постановку задачи выполняют консультанты. Разработку ТЗ - конструкторы. Сборку и внедрение системы - прикладные программисты, работающие только с визуальными средствами конструирования диалогов, отчетов, рабочих мест и бизнес-процессов (в среде ЕМЕ-ДБ). Особая роль отводится отделу тестирования. Тестирование выполняется на уровне как отдельных модулей, так и систем в целом.
Такое разделение труда достаточно эффективно и создает предпосылки для построения системы качества. Но его недостаточно для “борьбы” со сложностью крупных проектов. Для этого требуется не просто разделение труда, а иерархия разделения труда, которая в разработке программного обеспечения достигается благодаря технологии “Метапроект” - ноу-хау фирмы ЕМЕ.
Модель мира в “Метапроекте”
Технология - это интерфейсы и стандарты. Точно описанные интерфейсы (стыки) между блоками сложного изделия позволяют конструировать и развивать эти блоки независимо друг от друга. Интерфейсы бывают “горизонтальные” - для сочленения блоков на одном уровне иерархии, и “вертикальные” - для сборки более сложных блоков из простых.
Интерфейсы и стандарты - это скелет технологии, без которого сложная конструкция осыпается, как песок.
Специалистам фирмы ЕМЕ удалось разработать и внедрить единый корпоративный интерфейс, имеющий многоуровневую структуру и выполняющий как “вертикальные”, так и “горизонтальные” связывающие функции. Этот интерфейс (или внутренний стандарт) называется “Метапроект”.
Рис. 2. Основная петля конвейера
В его основе лежит система имен на русском языке. Имена полей и таблиц в структуре данных, имена диалогов и полей (органов) диалогов, имена отчетов, ячеек и колонок отчетов кодируются на естественном языке и в совокупности составляют некоторую вербальную модель внешнего мира, с которым когда-либо приходилось иметь дело фирме ЕМЕ. Модель структурируется как в системном плане (рис. 3), так и в прикладной области (рис. 4).
“Метапроект” довольно обширен - около десяти тысяч категорий, объединенных в древовидные структуры и дополненных перекрестными связями. (Перекрестные связи - это традиционные реляции в структуре БД, а также ссылки диалогов и отчетов на структуру данных, друг на друга, на общие “браузеры” таблиц и т. п.).
Стандарт постоянно развивается. Коль скоро фирма ЕМЕ занимается только заказными проектами, то каждый новый проект содержит уникальные узлы и механизмы, находящие свое отражение в новых структурах данных, а также в системах диалогов и отчетов.
Главная особенность стандарта - его логическая целостность, непротиворечивость и оптимальность по отношению к логическим и ссылочным тавтологиям. За этим следят специалисты “метагруппы” (группы метапроекта). Все нововведения планирует группа генерального конструктора при разработке подробного технического задания на основе схемы автоматизированных бизнес-процессов фирмы-заказчика. Объем технического задания обычно составляет 500 - 1000 страниц. Время подготовки - один-два месяца.
Рис.3. Системная структура стандарта метапроекта
Рис. 4. Прикладная структура метапроекта
Новые идеи очередного проекта в виде заявок на модификацию стандарта метапроекта передаются в группу главного инженера (руководителя группы метапроекта). Специалисты метагруппы тщательно анализируют новые программные механизмы и увязывают их структуру данных с имеющейся схемой метапроекта. узерами и алгоритмами обработки. Здесь мы вплотную подходим к решению задачи иерархического разделения труда. Для этой цели на фирме ЕМЕ реализована технология “Трехслойный пользовательский интерфейс”.
Трехслойный пользовательский интерфейс
Фирма ЕМЕ, как и большинство фирм, специализирующихся на производстве заказного ПО, практически не использует программы, разработанные третьими фирмами (операционная система не в счет). СУБД ЕМЕ-ДБ развивается более 15 лет и классифицируется как “Синхронные базы данных класса RISC”. Это высоконадежная база данных с сокращенным набором команд манипуляции данными, с дублированием части банка данных на всех рабочих станциях и прямыми реляционными связями. Отмечу, что базы данных этого класса используются в системах управления воздушным движением стран НАТО. Надежность конструкции СУБД позволяет фирме ЕМЕ давать десятилетнюю (практически пожизненную) гарантию на целостность банка данных и работоспособность системы (без ежедневного архивного копирования данных!).
Термин “Трехслойный пользовательский интерфейс” обозначает средства визуального конструирования и все механизмы, отвечающие за интерфейс человек - машина.
“Три слоя” - это три уровня настроек прикладной части системы. Настройки, общие для всей системы, настройки отдельных механизмов и настройки отдельных диалогов и отчетов. Настройки вводятся в метапроект по мере разработки новых проектов. Они позволяют отключать опции и режимы работы, ненужные для данного конкретного проекта или рабочего места.
Главная особенность трехслойного интерфейса (для чего он, собственно, и конструировался) - это возможность подключать внешние функции к диалогам, отдельным органам диалогов, к отчетам и колонкам (ячейкам) отчетов. С этой целью все визуальные редакторы снабжены специальными ячейками, в которых прикладной программист может указать имя библиотеки DLL и точку входа (все точки входа собираются в базе данных с подробной документацией и древовидной классификацией).
Внешние функции представляют собой “чистые” (без собственных диалогов) алгоритмы, разработанные на языке C++ (они называются “метафункции”). Алгоритмы представляют собой типичные “черные ящики”. Их входы и выходы - категории из перечня стандарта “Метапроект”. Это позволяет точно документировать функции алгоритмов, ссылаясь лишь на категории стандарта, прикладное логическое значение которых считается известным. Алгоритмы бывают очень простыми и применимыми в любом случае (например, программа, запрещающая оставлять данное поле незаполненным) и очень сложными (например, класс объектов “документ”, применимый для всех видов товарных и платежных документов). Механизм передачи управления метафункциям - событийно-ориентированный. Управляющие сигналы рассылает ядро СУБД. Получив сообщение “инициализация диалога или отчета”, метафункция анализирует окружение (систему имен), к которому она подключена, и в зависимости от реального контекста и значений внешних параметров, настраивает свои режимы работы. Метафункции - “умные”, они помогают прикладному программисту точно задать параметры и диагностируют ошибки “привязки”.
Метапрограммист - интересная профессия
Формирование и развитие метапроекта - задача отнюдь не простая. Разработчик заказных систем имеет дело с широким спектром проектов.
Например, среди разработок ЕМЕ - традиционные системы автоматизации коммерческих предприятий (склад, торговля, “упаковочное” или “отверточное” производство, бухгалтерия), модули анализа эффективности и полноценные механизмы “ситуационной комнаты”, крупномасштабные системы автоматизации агропромышленного комплекса с применением геоинформационных технологий, полная автоматизация производства с оптимизацией процессов класса MRP-II, логистика гигантских складов и транспортных перевозок, автоматизация крупной библиотеки и сотни других проектов.
Логическая целостность метапроекта, оптимальное объединение функций в классы, точный баланс между количеством параметров функций и числом программных точек входа - все это требует приложения специальных усилий.
Награда - увеличение доли повторно используемого кода (уже сейчас она составляет 60 - 80%, а в будущем может быть доведена до 90 - 95!) и соответственно снижение стоимости и сокращение сроков разработок.
Интересно, что “чистые” (без диалогов) алгоритмы метапроекта, манипулирующие только именами стандарта, постепенно, с годами формируются в гигантскую информационную систему, которая функционально умеет все - и торговать, и производством управлять, и хлеб сеять... Метапроект вместе с прочими стандартами создает серьезные предпосылки для разработок в виртуальной публичной технологии “Открытые исходные тексты”. Это еще только планы на будущее, хотя эксперимент уже проводится на нескольких фирмах-заказчиках, пожелавших поручить развитие готовой системы собственным IT-отделам.
Несмотря на молодость технологии, заказные разработки фирмы ЕМЕ по стоимости проектов и срокам исполнения успешно конкурируют с аналогичными тиражируемыми системами, и с каждым новым проектом эти характеристики улучшаются.
КИС - подходящее место для накопления коллективных знаний
Почему реорганизация предприятий никогда не дает ожидаемых результатов, а во многих случаях (Сергей Ильдеменов называет цифру 50% в статье “Реинжиниринг - ключ к успеху”, PC Week/RE, № 31/99) заканчивается провалом? Все дело в том, что фирма, если ее рассматривать как формальную систему, существует в головах и опыте работы конкретных людей, в их связях и отношениях друг с другом, с внешним миром. Фирма может менять направление работы, переезжать в другой офис, даже изменять название - все эти элементы способны оказать лишь небольшое влияние на суть системы. Если же сменить персонал (или хотя бы некоторые ключевые фигуры), то фирма изменится качественно - она разрушится, потеряв свой главный составляющий элемент - корпоративное знание. Отсюда и проблемы с реинжинирингом: нельзя волевым решением приобрести коллективное знание. Того, что накапливается годами, не дадут ни консультанты, ни экспресс-методы.
Для эффективного развития предприятия необходимы две версии: способность видеть себя со стороны и наличие условий для раскрутки спирали знаний системы качества. Оба эти требования выполняются, если добиться одной простой вещи: обеспечить положительную динамику развития КИС.
Это означает, что если раскрутка спирали системы качества - процесс непрерывный, то и информационная система должна развиваться также непрерывно. Причем не отставая от развития предприятия, а опережая его - помогая быстро внедрять новые идеи. КИС должна постоянно дополняться организационными идеями в виде новых программных модулей.
Например, вводим кружки качества и тут же в системе указываем расписание и краткие протоколы занятий. Обнаруживаем большое количество дефектов в производстве - вводим партионный и поэкземплярный учет и точно фиксируем, кто и когда выполнил конкретную производственную операцию. Разбор каждого дефектного случая с поиском конкретного виновника позволяет “отточить” технологию. Статистические выборки и анализ допусков (расписание, ответственные лица и обработки) должны быть в системе. Есть проблемы с дисциплиной труда - компьютер решает и эту задачу. Завышенная дебиторская задолженность подрывает бюджет - вводим анализ структуры дебиторской задолженности с детализацией по отдельным менеджерам и торговым представителям. Придумываем “самопополняющиеся” должностные инструкции так, чтобы замеченные в некачественной работе дописывали бы себе новые правила. Система качества требует “перенести” корпоративные знания из базы данных в головы сотрудников - начинаем работу фирмы с поголовной сдачи блицэкзамена по программируемым карточкам (как в ГАИ).
Мы уже говорили, что система качества как форма коллективного знания, не возникает вдруг. Она развивается вместе с предприятием, впитывая новые идеи, пробуя разные подходы. Это означает, что КИС нельзя купить, но ее можно вырастить на своем предприятии. Вырастить с помощью надежного партнера - фирмы, изготавливающей программы на заказ.
Собственная система качества производства КИС и ПО
Мероприятия, комплекс которых условно называется “Система качества”, из-за их масштабности не могут быть подробно описаны в газетной статье - их можно только перечислить. Кроме того, они постоянно развиваются и множатся. Довольно подробно система качества представлена на Web-сервере фирмы ЕМЕ (www.eme.ru).
В ее основе лежит собственная КИС фирмы ЕМЕ. Она постоянно пополняется новыми модулями и имеет некоторые черты базы знаний: позволяет вводить абстрактные взаимосвязанные классифицированные категории. В качестве таких категорий в системе накапливаются должностные и технологические инструкции, база данных метафункций, элементы технических заданий на модули и подсистемы, пользовательская документация, типичные ошибки, протоколы работы кружков качества и результаты мозговых штурмов.
Одним из элементов системы качества служит детально разработанная процедура взаимодействия с клиентом. Так, например, любые, даже самые малые изменения в проекте проходят согласование в группе генерального конструктора и, при необходимости, выносятся на обсуждение в группу метапроекта. После этого готовится частное техническое задание, которое подтверждается представителем заказчика. Изменение вносится в систему, и все затронутые узлы тестируются. Только после этого новые модули могут быть установлены на фирме заказчика. Процедура регламентирована и по времени - обычно она занимает от двух до пяти дней (если не связана с разработкой новых сложных модулей).
Результаты тестирования (подробные описания и классификация ошибок с указанием “автора” и причины) также накапливаются в базе данных. Диаграммы распределения ошибок по проектам, отделам, модулям, программистам анализируются на занятиях кружков качества и во время мозговых штурмов. Для устранения причин ошибок в ядро БД и в метапроект постоянно добавляются блокирующие и предупреждающие механизмы (если это возможно). Такая “механическая” борьба с ошибками - самое эффективное средство и самый лучший способ накапливать коллективное знание.
Разговаривать о системе качества можно бесконечно. К тому же интереснее беседовать очно. Консалтинговая фирма “Риккон” (www.rikkon.ru), давний партнер фирмы ЕМЕ, проводит регулярные семинары, посвященные проблемам реинжиниринга, стратегии построения КИС и систем качества. Поэтому читатели, которые заинтересовались этими темами, могут присылать вопросы автору (eme@eme.ru). Наиболее интересные из них будут вынесены на семинары, куда приглашаются все желающие.