– Ну, сначала скажу пару слов о самом «консалтинговом прошлом». Вообще-то, с нашим переходом в сферу информационных технологий консалтинг на самом деле никуда не делся. Ведь разработке и внедрению информационной системы должно предшествовать описание и перепроектирование подлежащих автоматизации бизнес-процессов, подготовка регламентов и так далее, то есть, чисто консалтинговая работа. Так что, консалтинг остался, но стал играть подчинённую роль. Впрочем, это отдельная тема…
Теперь – что касается среды разработки моделей. Да, действительно, мы часто использовали (и используем до сих пор!) именно Excel в качестве средства разработки наших моделей. Но, во-первых, мы не разделяем широко распространенного скептического отношения к Excel’у: модели, разрабатываемые на базе этого поистине «народного» инструмента, как правило, наиболее просты в освоении, и даже их самостоятельная адаптация к меняющимся условиям может для более или менее квалифицированных пользователей Excel’а оказаться вполне посильной задачей. К тому же, на местах (например, в цехах предприятий) использование иных программных средств может оказаться затруднительным – хотя бы в силу ресурсных ограничений (это могут быть и устаревшие компьютеры, и отсутствие локальной сети, и низкая квалификация пользователей).
Да, мы понимаем, что для работы с большими массивами данных Excel плохо приспособлен, поэтому для хранения данных мы еще и в консалтинговую пору при необходимости использовали специализированные инструменты управления базами данных (такие, как Microsoft Access или Microsoft SQL Server), а у заказчика роль источника информации могла играть, в частности, база данных его корпоративной информационной системы.
Кроме того, в каких-то случаях вычислительные процедуры, реализованные в среде Excel, не обеспечивают необходимого быстродействия – и тогда мы реализуем их другими средствами (например, на языке программирования FORTRAN), причем помещаем их в отдельные динамически загружаемые библиотеки (DLL), откуда – вот что здесь чрезвычайно важно! – они могут быть вызваны не только из Excel’а, но и, к примеру, из той же корпоративной информационной системы заказчика. Вот вам и интеграция! А что же в этой ситуации остается за Excel’ом? Фактически – только интерфейс пользователя (при разработке которого вся мощь Excel’а (обширный набор встроенных функций, красивые графики, богатые возможности форматирования таблиц...) оказывается в нашем распоряжении. Но и интерфейс пользователя можно при желании перенести на платформу заказчика, чем мы теперь успешно и занимаемся. Однако технология «прототипирования» разрабатываемых решений с использованием Excel’а оказалась настолько удачной, что мы используем ее и сейчас на начальных этапах разработки информационных систем.
Конечно, когда разрабатывается чисто учетная система с математикой на уровне арифметики начальной школы, то особого смысла делать Excel’овский прототип может вообще не быть. Но мы обычно беремся за проекты, требующие разработки сложнейших алгоритмов, и тогда неизменно начинаем с прототипов.
Прототип обычно состоит из двух частей: математического «ядра» в виде библиотеки DLL, в которой и «зашиты» требуемые алгоритмы, и Excel’ной части с таблицами для ввода исходных данных, передаваемых в «ядро», и для отображения возвращаемых из «ядра» результатов расчетов. В самой Excel’ной части, как правило, никаких содержательных расчётов не производится, но она непременно содержит макрос (программную процедуру на встроенном в Microsoft Office языке программирования «Visual Basic for Applications» (VBA)), который считывает исходные данные (попутно проверяя их корректность), передает их в «ядро», получает из него результаты расчетов и размещает их в надлежащих местах. На самом деле львиную долю времени на этапе прототипирования занимает разработка «ядра», а Excel’ная часть делается сравнительно быстро и параллельно с «ядром».
Тем не менее, может возникнуть вопрос: а зачем вообще нужна эта Excel’ная часть, если в конечном итоге «ядро» всё равно будет интегрироваться с разрабатываемой (или даже уже существующей) системой? А дело в том, что Excel’ная часть прототипа включает в себя макет структуры данных, которую программистам остается лишь реализовать в разрабатываемой системе, а прототип в целом представляет собой полнофункциональный (во всяком случае, в «алгоритмическом» плане) макет всей системы, который можно показывать заказчикам, согласовывать с ними и «доводить до ума» параллельно с другими работами.
Это страхует от неожиданностей при сдаче уже готовой системы, когда зачастую вдруг выясняется, что заказчики ждали чего-то совсем другого. Но нередко мы делаем прототип даже ещё до заключения договора на проект, за свой счёт – чтобы было что показать заказчику, было чем его заинтересовать, чтобы у заказчика появилась уверенность в том, что мы в состоянии решить поставленную задачу.