Введение
CLASS Глава 1. Автоматизированный перевод в задаче реинжиниринга программного обеспечения CLASS 12
1.1 Сопровождение программного обеспечения 12
1.1.1 Сопровождение в жизненном цикле ПО 12
1.1.2 Виды деятельности при сопровождении программного обеспечения 15
1.1.3 Проблемы старых систем в процессе сопровождения 16
1.2 Реинжиниринг как решение проблем сопровождения старых систем 18
1.2.1 Определения реинжиниринга 18
1.2.2 Применимость и риски реинжиниринга 20
1.2.3 Эффективность применения реинжиниринга 22
1.2.4 Альтернативы реинжинирингу 24
1.3 Автоматизированный перевод в процессе реинжиниринга 25
1.3.1 Применение и задачи перевода 25
1.3.2 Сравнение автоматизированного перевода и компиляции 26
1.3.3 Подходы к автоматизированному переводу 28
1.3.4 Перевод уровня реализации 30
1.3.5 Перевод уровня абстракций 32
1.3.6 Проблемы автоматизированного перевода 33
1.3.7 Существующие подходы к преодолению проблем перевода 35
1.4 Межъязыковые преобразования 35
1.5 Реструктуризация 37
1.6 Использование объектно-ориентированной технологии 39
1.6.1 Создание новой объектно-ориентированной модели 41
1.6.2 Идентификация существующих объектов в реализации 42
1.7 Рефакторинг и шаблоны реинжиниринга 45
1.8 Смежные вопросы 47
1.8.1 Подходы к пониманию программ 47
1.8.2 Метод "заворачивания" 47
Заключение 48
Глава 2 Конкретизация научной работы 50
2.1 Контекст научной работы 50
2.2 Обзор контекста системы автоматизированного перевода 53
2.1.1 Старый язык Кобол 53
2.1.2 Джава-новый язык и платформа 54
2.1.3 Другие входные и выходные языки 55
2.1.4 Трудности перевода 56
Заключение 56
Глава 3. Автоматизированный перевод 57
3.1 Методология предложенного подхода 57
3.1.1 Предложенный подход к получению результатов перевода 57
3.1.2 Предыдущие результаты исследования проблемы перевода 58
3.1.3 Применённый подход к автоматизированному переводу 63
3.2 Предложенное преобразование элементарных типов данных и операций над ними 69
3.3 Создание классов 74
3.3.1 Основной подход 74
3.3.2 Предложенный метод перевода разделяемых модулей описаний структур данных76
3.3.3 Стратегия создания классов из каждой записи 78
3.3.4 Предложенная стратегия создания классов с сокрытием реализации 81
3.4 Поддержка постепенного перевода 84
3.4.1 Поддержка метода "заворачивания" 84
3.4.2 Предложенный метод поддержки изменения кода, связанного с внешней средой. 86
3.5 Тестирование результатов перевода 91
3.5.1 Поддержка тестирования результатов перевода методом "чёрного" ящика 91
3.5.2 Предложенная модификация метода "чёрного" ящика для тестирования интерактивных приложений 93
3.6 Дальнейший рефакторинг результатов перевода 94
3.7 Применение подходов и методов для других языков 96
3.7.1 Преобразование элементарных типов данных и операций над ними 96
3.7.2 Метод перевода разделяемых модулей описаний структур данных 96
3.7.3 Стратегия создания классов с сокрытием реализации 97
3.7.4 Метод поддержки изменения кода, связанного с внешней средой 97
Заключение 97
Глава 4. Апробация 99
4.1 Перевод с использованием ранней версии системы перевода 99
4.2 Перевод с использованием последней версии 101
4.3 Производительность результатов перевода 103
Заключение 107
Заключение 109
Литература


