Фактически проблема комплексной автоматизации стала актуальной для каждого предприятия. Уже не стоит вопрос “надо или не надо автоматизировать”, предприятия столкнулись с проблемой: каким образом это осуществить. Подобная переориентация предприятий объясняется следующими основными причинами:
повышением степени организационной и финансовой самостоятельности;
выходом на зарубежный рынок;
стремлением ряда западных компаний производить свои товары в России;
возрастающей ориентацией предприятий на бизнес-процессы, т.е. деятельности, имеющие ценность для клиента;
появлением на рынке как зарубежных, так и отечественных систем автоматизации, опыта их внедрения и использования и др.
Главная особенность индустрии систем автоматизации различных предприятий и учреждений, характеризующихся широкой номенклатурой входных данных с различными (и нетривиальными) маршрутами их обработки, состоит в концентрации сложности на начальных этапах анализа требований и проектирования спецификаций системы при относительно невысокой сложности и трудоемкости последующих этапов. Фактически здесь и приходит понимание того, что будет делать будущая система и каким образом она будет работать, чтобы удовлетворить предъявленным к ней требованиям. А именно нечеткость и неполнота системных требований, нерешенные вопросы и ошибки, допущенные на этапах анализа и проектирования, порождают на последующих этапах трудные, часто неразрешимые проблемы и, в конечном счете, приводят к неуспеху всей работы в целом.
С другой стороны, не существует двух одинаковых организаций. Даже в таком учреждении как Сбербанк России на уровне его отделений и филиалов выявляются различия в применяемых технологиях. А следовательно, простое тиражирование даже очень хорошей системы управления предприятием никогда не устроит заказчика полностью, поскольку не может учесть его специфики. Более того, в данном случае возникает проблема выбора именно той системы, которая наиболее подходит для конкретного предприятия. А эта проблема осложняется еще и тем, что ключевые слова, характеризующие различные системы, практически одни и те же:
единая информационная среда предприятия;
режим реального времени;
независимость от законодательства;
интеграция с другими приложениями (в том числе с уже работающими на предприятии системами);
поэтапное внедрение и т.п.
Следует отметить, что для большинства предприятий необходим и предваряющий автоматизацию этап - наведение порядка в их деятельности, создание рациональных технологий и бизнес-процессов. Речь даже не идет о жестком их реинжиниринге, в современных российских условиях происходит массовый бизнес-инжиниринг.
Ниже сформулированы два крайних подхода к автоматизации предприятий, полностью игнорирующие приведенные тезисы.
1. Короткое и “легкое" обследование предприятия и дальнейшее лоббирование одной из интегрированных систем управления предприятием под красивыми лозунгами настройки и адаптации под конкретного заказчика (кстати, стоимость такой настройки может на порядок превышать стоимость модулей системы и требовать серьезных временных затрат, совместимых с затратами на разработку новой системы). При этом, как правило, фирма-исполнитель еще до проведения обследования (да и вообще, до появления заказчика на ее горизонте) знает, какую именно систему она будет внедрять, и осуществляет соответствующую “адаптацию” результатов обследования.
2. Детальное обследование предприятия и разработка на его основе собственной системы управления, дублирующей существующие на предприятии технологии, что только усугубляет ситуацию (автоматизируя хаос и неразбериху, можно получить только “автоматизированный хаос”).
Очевидно, что перечисленные подходы к автоматизации уже не могут устроить заказчика, желающего “увидеть” и скорректировать будущую систему до того, как она будет реализована физически, и в конечном итоге за свои немалые деньги получить реальную выгоду от ее эксплуатации.
С другой стороны, самостоятельно с задачей выбора и тем более разработки собственной системы предприятие справиться не в состоянии. И прежде всего потому, что на предприятии, как правило, отсутствует единая концепция автоматизации. Возникает необходимость в услугах независимых от производителей систем автоматизации консалтинговых фирм.
На основе системного проекта и принятых решений по автоматизации осуществляется проектирование системы. Фактически здесь дается ответ на вопрос: "Как (каким образом) мы будем строить систему, чтобы она удовлетворяла предъявленным к ней требованиям?".
Этот этап разделяется на два подэтапа:
проектирование архитектуры системы, включающее разработку структуры и интерфейсов ее компонент (автоматизированных рабочих мест), согласование функций и технических требований к компонентам, определение информационных потоков между основными компонентами, связей между ними и внешними объектами;
детальное проектирование, включающее разработку спецификаций каждой компоненты, разработку требований к тестам и плана интеграции компонент, а также построение моделей иерархии программных модулей и межмодульных взаимодействий и проектирование внутренней структуры модулей.
При этом происходит расширение системного проекта:
за счет его уточнения;
за счет построения моделей автоматизированных рабочих мест, включающих подсхемы информационной модели и функциональные модели, ориентированные на эти подсхемы вплоть до идентификации конкретных сущностей информационной модели;
за счет построения моделей межмодульных и внутримодульных взаимодействий с использованием техники структурных карт.
Что касается конкретно нашей задачи, то для ее решения удобно использовать какое-то хранилище данных (для формирования документов), а также интерфейсную часть, для того чтобы организовать программное и интерфейсное взаимодействие с самими данными. Для того, чтобы провести разработку такого дополнительного модуля, нам надо было провести работу по выбору инструментария для разработки интерфейсной части, а также СУБД для хранения данных.
Эта работа предваряет собственно систему автоматизации (именно, фазой анализа требований к системе), на которой требования заказчика уточняются, формализуются и документируются. Фактически на этом этапе дается ответ на вопрос: "Что должна делать будущая система?". Именно здесь лежит ключ к успеху всего проекта автоматизации. В практике создания больших программных систем известно немало примеров неудачной реализации именно из-за неполноты и нечеткости определения системных требований.
На этом этапе определяются:
архитектура системы, ее функции, внешние условия ее функционирования, распределение функций между аппаратной и программной частями;
интерфейсы и распределение функций между человеком и системой;
требования к программным и информационным компонентам системы, необходимые аппаратные ресурсы, требования к базе данных, физические характеристики компонент системы, их интерфейсы;
состав людей и работ, имеющих отношение к системе;
ограничения в процессе разработки (директивные сроки завершения отдельных этапов, имеющиеся ресурсы, организационные процедуры и мероприятия, обеспечивающие защиту информации).
Системный проект строится на основе модели “как должно быть” и включает функциональную модель будущей системы в соответствии с одним из общеупотребительных стандартов (например, IDEF0 или IDEF3), информационную модель, например, в соответствии со стандартом IDEF1X, а также техническое задание на создание автоматизированной системы (например, в соответствии с ГОСТ 34.602-89).
По завершении данного этапа (после согласования системного проекта с заказчиком) изменяется роль консультанта. Отныне он как бы становится на сторону заказчика, и одной из его основных функций на всех последующих этапах работ будет являться контроль на соответствие требованиям, зафиксированным в системном проекте.
Необходимо отметить следующее достоинство системного проекта. Для традиционной разработки характерно осуществление начальных этапов кустарными неформализованными способами. В результате заказчики и пользователи впервые могут увидеть систему после того, как она уже в большей степени реализована. Естественно, эта система отличается от того, что они ожидали увидеть. Поэтому далее следует еще несколько итераций ее разработки или модификации, что требует дополнительных (и значительных) затрат денег и времени. Ключ к решению этой проблемы и дает системный проект, позволяющий:
описать, "увидеть" и скорректировать будущую систему до того, как она будет реализована физически;
уменьшить затраты на разработку и внедрение системы;
оценить разработку по времени и результатам;
достичь взаимопонимания между всеми участниками работы (заказчиками, пользователями, разработчиками, программистами и т.д.);
улучшить качество разрабатываемой системы, а именно: создать оптимальную структуру интегрированной базы данных, выполнить функциональную декомпозицию типовых модулей.
Системный проект полностью независим и отделяем от конкретных разработчиков, не требует сопровождения его создателями и может быть безболезненно передан другим лицам. Более того, если по каким-либо причинам предприятие не готово к реализации на основе проекта, он может быть положен "на полку" до тех пор, пока в нем не возникнет необходимость. Кроме того, его можно использовать для самостоятельной разработки или корректировки уже реализованных на его основе программных средств силами программистов отдела автоматизации предприятия.