Сопровождение

Сопровождение - это процесс, включающий

-исправление ошибок -модификацию функций

-добавление новых возможностей -обучение людей (заказчика)

-оптимизацию

Задачи сопровождения: исправление ошибок, регулярное проведение замеров (профилирование), устранение «бутылочных горлышек», улучшение документации, расширение функциональности, принятие решения о прекращении эксплуатации программы или ее реинжиниринге.

Сопровождение занимает до 70% времени работы с продуктом (а доход приносит – 30% в год от стоимости продукта). Важным элементом сопровождения является «горяча линия».

Диаграмма сложн. Сопровождения – ось OY, Важн. Бизн. Процесса OX

- Сложн. и не важн – выкинуть

- Несложн. И не важн – простое сопровожд

- Несложн и важное – улучш сопровождение

- Сложн. и важное – реинжинеринг

Reverse engineering (knowledge moneing)

Чтобы дать хоть какое-то представление о системе Rescueware, перечислим некоторые её возможности (разумеется, далеко не все):

1. Инвентаризация. Осуществляется так называемый ослабленный синтаксический анализ (точный анализ очень труден из-за огромного числа диалектов старых языков) и какие файлы включения используются, кто кого вызывает, что из этого есть в наличии.

2. На основании различных метрик определяется сложность работы, оценивается трудоёмкость и приблизительная стоимость работ.

3. Строится дерево синтаксического разбора (видонезависимый и видозависимый анализы), пользователю в диалоговом режиме предоставляется возможность дополнительного изучения исходного приложения, представленного в виде гипертекста – на экране одновременно в разных окнах видны дерево разбора и исходный тест. Если пользователь смещается по дереву, автоматически перемещается и курсор в исходном тексте, и наоборот..

4. По оригинальным алгоритмам исходное приложение преобразуется таким образом, чтобы уменьшить или вообще свести к нулю число оператора goto, разбить приложение на процедуры или на объекты (напоминаю, что в языке Кобол вообще не было понятия процедуры), удалить ставшие со временем недостижимыми участки кода, выполняются различные глобальные оптимизации. Здесь следует отметить, что в отличие от обычной компиляции, в которой главным требованием является семантическое соответствие объектного кода исходному, при этом сам объектный код никто не читает, в процессе реинжиниринга создаётся новый исходный код на другом языке, который будет сопровождаться этими же или другими программистами, поэтому на первый план выходят такие странные для компиляции вопросы, как “естественность” представления программы, структурное подобие исходному приложению, наглядное для человека форматирование текста и т.п.

5. Генерация нового исходного текста на целевом языке с учётом только что перечисленных требований.

6. Особого упоминания заслуживает BRE – business rules extraction – выделение бизнес правил. Представьте себе, что у Вас есть приложение (как обычно, написанное на многих разных языках), которое выполняет 10 функций. 7 из этих функций уже безнадежно устарели, оставшиеся 3 очень важны для Вашего бизнеса. Приложение старое, описания исходных алгоритмов уже не сохранились или сильно отстали от реальной программы, авторы с течением времени разбежались кто куда. Таким образом, единственным носителем актуального знания осталась работающая программа, но её сопровождение обходится очень дорого, поэтому хотелось бы выделить из текста только те описания и операторы, которые задействованы в нужных трёх функциях, а весь остальной текст выкинуть. Скорее всего, получившаяся программа будет больше, чем 30% от исходного текста, но всё-таки много меньше, чем вся исходная программа, поэтому сопровождать её будет легче и дешевле.