Лекция №15Эволюция ПО

Разработка программной системы не заканчивается ее доставкой заказчику или конечным пользователям. Для того чтобы программа оставалась конкурентноспособной, ее необходимо непрерывно модифицировать. Разработка, связанная с поддержкой ПО в актуальном состоянии, составляет процесс эволюции программной системы.

Под сопровождением в программной инженерии подразумевается либо эволюция ПО в целом, либо часть этого процесса, осуществляемая независимой от разработчиков командой. Разделение разработки и сопровождения характерно для классической плановой модели жизненного цикла программного обеспечения. В гибкой методологии разработки и других новых моделях эволюцию ПО осуществляют сами разработчики в рамках того же итеративного процесса.

Существует несколько причин, по которым эволюция ПО объективно необходима:

Эмпирические законы эволюции программного обеспечения были впервые сформулированы Lehman, Belady в 1985 году. Достаточно интересным результатом исследования динамики развития ПО является эргодичность эволюции:

Пожалуй, наиболее важный вывод, который можно сделать из законов эволюции ПО — необходимость упрощения программной системы в процессе разработки. Для этого используется реинженерия (reengineering) исходного кода программы и используемых данных. Пример реинженерии — автоматизированная трансляция кода программы на более новую версию языка программирования; например, утилита 2to3 осуществляет трансляцию из Python 2.x в Python 3.x.

В то время как реинженерия предназначена для «обновления» устаревшей программы, существует аналогичный упреждающий процесс — рефакторинг. Рефакторинг позволяет упростить структуру программы непосредственно во время разработки, например, дать переменной / методу более содержательное имя или перенести метод выше по дереву наследования. Современные среды разработки, такие как Eclipse, автоматизируют базовые методы рефакторинга исходного кода.

Скачать презентацию