Разрабатывать программное обеспечение сегодня становится значительно сложнее, чем раньше
Сегодня перед разработчиками ПО обычно стоят два взаимоисключающих условия. С одной стороны, требуется создать надежное, не содержащее ошибок приложение, которое отвечало бы потребностям конечных пользователей. С другой стороны, новый продукт нужно предложить как можно быстрее и с минимальными затратами. Десять лет назад на создание клиент-серверных приложений, которые использовались только внутри организации, у корпоративных разработчиков уходило, как правило, около полутора лет. Сегодня Web-приложения, предъявляемые заказчикам и бизнес-партнерам организации, пишутся примерно за три месяца.
Постоянное сокращение срока, отводимого на устранение ошибок и ликвидацию непредвиденных обстоятельств, требует, чтобы методология разработки сегодня, как никогда ранее, была приближена к конкретному проекту. Вне зависимости от выбранной методологии используемые, исключаемые, добавляемые или корректируемые шаги должны быть обусловлены масштабом проекта, временными ограничениями, установленными приоритетами, а также опытом и уровнем квалификации разработчиков.
Конечно, построение больших и сложных приложений на базе новых технологий требует более тщательного планирования, тестирования и последующей доработки по сравнению с простыми проектами, при реализации которых применяются хорошо знакомые средства и в которых задействованы малочисленные группы разработчиков. Упрощенные, быстрые методы разработки, в частности технология «экстремального программирования», при реализации сложных проектов могут потребовать внесения каких-то дополнений и уточнений. В методах, для которых характерна более высокая степень структуризации, напротив, возможно, что-то придется упростить.
То, что хорошо подходит для одного проекта, не обязательно подойдет для следующего. Противоречие, обусловленное стремлением повысить качество разработки и уменьшить ее стоимость, требует разбиения процесса проектирования на несколько управляемых этапов. На каждом из этих этапов реализуется отдельная фаза проекта, определяются входные и выходные параметры, выбираются наилучшие варианты для реализации последующих проектов.