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