Косяков С.В. Современные тенденции развития программирования и их влияние на развитие геоинформационных систем
Косяков С.В.
ИГТ ИГЭУ, Иваново
Развитие технологий разработки программного обеспечения и информационных технологий в целом привели к двум важным результатам:
1) существенно увеличилась производительность труда разработчиков программного обеспечения и сложных информационных систем;
2) появились реальные возможности использования аутсорсинга, оффшорного программирования и других подобных методов взаимодействия профессиональных разработчиков и пользователей программ. Это, безусловно, будет отражаться на рынке разработки информационных систем и ГИС в частности.
Программирование при создании ГИС применяется в двух случаях:
при создании коммерческих программных продуктов, которые ориентированы на продажу и тиражируются большому количеству пользователей;
при разработке информационных систем конкретных организаций с учетом только их требований, которые создаются в единственном числе «под ключ».
С точки зрения получения конечного результата для пользователя, эти два способа создания ГИС противопоставлять не стоит. И в том и в другом случаях можно получить и хорошие и плохие результаты. К тому же в практике разработки ГИС они часто смешиваются в различных пропорциях. Но, с точки зрения процесса разработки программного обеспечения, ориентация на ту или иную модель поставки программ приводит к существенным различиям в деятельности фирм-разработчиков. Организация, которую я представляю, преимущественно занимается реализацией конечных решений, поэтому в докладе рассматриваются в основном возможности разработки заказных программных средств ГИС.
Если разработчик полностью отвечает за конечный результат и сам осуществляет выбор решений по реализации программного обеспечения, вопрос о целесообразности использования коммерческих продуктов третьих фирм, даже если они являются мировыми лидерами, становится не столь очевидным, как это часто представляется продавцами. Сегодня время и затраты на адаптацию «внешней» программы в состав некоторой специализированной информационной системы становятся соизмеримы с разработкой новой программы «внутри» этой системы. А иногда процесс адаптации может оказаться даже более длительным и дорогим. По нашему опыту, при высокой квалификации программистов и достаточном опыте их работы в области разработки графических систем на создание нового уникального приложения с функциональностью настольной ГИС от момента получения заказа до промышленного внедрения сегодня требуется около трех месяцев.
В качестве примера могу привести разработку ГИС-модуля, который был заказан нам в начале апреля этого года для использования в составе АСУ одной из крупных московских организаций. Основные функции модуля это отслеживание сотен подвижных объектов на карте Москвы и Московской области в круглосуточном режиме несколькими операторами и планирование маршрутов движения этих объектов. В качестве требований заказчика фигурировали такие, как хранение карты в собственном закрытом формате, быстрый скроллинг карты и специфические функции навигации в окне приложения, реализация на языке C++ для платформы Microsoft.NET с предоставлением исходных текстов и другие. Выполнение таких требований без полной разработки программы «с нуля» было невозможно. Сегодня модуль внедряется в промышленную эксплуатацию, и никаких претензий к надежности и качеству этой программы мы не получаем. Хотя связывать это только с развитием технологий программирования было бы неправильно. Конечно, важную роль в успехе таких разработок играет профессионализм и слаженность работы команды разработчиков.
Важно отметить, что современные технологии разработки программных систем это не только материальные компоненты в виде специальных средств разработки, программных инструментариев и т. п. Не менее важную роль играют теоретическая подготовка, методологические приемы и наработки, используемые разработчиками информационных систем. В этом отношении, как мне кажется, в последние годы ситуация в среде отечественных производителей программ существенно изменилась. Времена программистов-самоучек прошли. Сегодня даже небольшие фирмы активно используют передовые методы разработки и могут быстро добиваться успеха. Стереотипы в отношении нетиражируемого программного обеспечения, которое называют «доморощенным», «кустарным» и т. д., имевшие ранее определенные основания, сегодня оказываются все менее состоятельными. Многие функции, которые раньше приходилось программировать в приложениях, сегодня имеются в операционной системе или в инструментальных средах разработки программ. В связи с этим повышается скорость разработки и надежность программ. Технологии коллективной разработки и интеграции программных компонентов все более устраняют серьезный источник ошибок и издержек в работе, связанных с распараллеливанием процессов разработки и совместного использования компонентов различных программ. Все это, на мой взгляд, будет способствовать росту рынка разработки заказных программ и снижению себестоимости их разработки.
На рынке готовых программ развитие средств программирования приводит к быстрому расширению спектра предложений. Новые возможности в области программирования позволяют быстрее обновлять версии, создавать все новые продукты и модули. Однако, скорее всего, это не будет приводить к существенному снижению цен, поскольку в данном случае значительная часть расходов приходится на рекламу и каналы сбыта. Мы не являемся противниками использования коммерческих программ и всегда готовы применять их сами в разработке информационных систем, когда это требуется заказчику или когда это экономически выгодно. Однако при объективной оценке всех прямых и косвенных затрат на реализацию проектов наш выбор чаще всего оказывается на стороне реализации программного обеспечения ГИС собственными силами. Возможно, это не типичный случай, но не думаю, что он является исключительным для России.
Возможности разработки программ сейчас таковы, что становится экономически оправданным даже участие в проектах, предусматривающих создание уникальной по возможностям программы для выполнения единственной конкретной работы. Например, мы разработали специализированную САПР для того, чтобы заказчик смог выполнить в срок работу по контракту, в рамках которого требовалось изготовить большой объем графической документации. Срок контракта составлял шесть месяцев. Из них три ушло на разработку и отладку программы, и еще три на выполнение заказчиком основной работы с использованием этой программы. Финансирование разработки осуществлялось из средств, полученных заказчиком по контракту без планирования этих затрат в смете основных работ. В результате проект был успешно выполнен заказчиком в установленные сроки, что при использовании готовых коммерческих программ было сделать нереально.
Очень перспективным и быстро развивающимся направлением производства программ является Web-программирование. Как мне кажется, в особенности оно будет востребовано при создании муниципальных информационных систем, которые вследствие децентрализации управления в городах должны строиться как распределенные системы. Однако, это большая тема, которая выходит за рамки данного доклада.