Большинство методологий разработки программного обеспечения предполагают создание программного продукта с нуля. Они сформировались в те времена, когда требовалось автоматизировать операции заказчика, осуществляемые до этого вручную. Пользователи работали с бумажными документами, информацию хранили в локальных файлах и обменивались ими по электронной почте. Разработчик документировал требования, описывал бизнес-процессы, реализовывал и внедрял решение.
Сегодня ситуация изменилась принципиально. За истекшие 10-15 лет организации закупили, разработали и внедрили множество информационных систем, сформировали огромные хранилища данных, выстроили бизнес-процессы. Речь о внедрении новой информационной системы теперь заходит не в тот момент, когда требуется что-либо автоматизировать, а в тех случаях, когда существующие бизнес-приложения уже не способны удовлетворить заказчика. Уместна аналогия с градостроительством. Свободного места для постройки новых микрорайонов практически не осталось. Возможна только точечная застройка, т.е. возведение новых домов в сложившейся городской инфраструктуре, на месте сносимых пятиэтажек.
Перед разработчиками таких ИТ-решений неминуемо встают вопросы:
- Что мы будем делать с существующими данными и функционалом, реализованным в унаследованных приложениях?
- Как интегрировать новый продукт с источниками основных данных, содержащими информацию о клиентах, партнерах, продуктах и сотрудниках организации?
- Как вписать процессы сопровождения и развития нашей системы в простроенные у заказчика процессы управления информационными системами, процессы внесения изменений, поддержки пользователей?
- Что может повысить ценность нашего приложения для заказчика и что превратит один проект в первый шаг долгосрочного сотрудничества с этим клиентом?
- Как сделать наше приложение ключевым элементом ИТ-инфраструктуры заказчика?
С другой стороны, не смотря на финансовые потрясения последних лет, темп развития технологий не снижается. Рядом с реляционными базами данных занимают важное место базы данных NoSQL. Распространение социальных сетей приводит к появлению требований по созданию принципиально новых способов взаимодействия сотрудников внутри организаций. Бизнес-приложения становятся похожими на социальную сеть, позволяющую пользователям коллегиально обсуждать требования и «на лету» перестраивать свои бизнес-процессы. Разработчики вынуждены выносить клиентские приложения на завоевывающие популярность мобильные устройства. Часть корпоративных данных собирается переехать в «облако».
Как сделать программный продукт, отвечающий всем этим требованиям?
На одной из предстоящих конференций я планирую сделать доклад о том, как адаптировать методологии разработки ПО к современным задачам. Стоит ли осветить еще какие-либо вопросы?