автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.11, диссертация на тему:Автоматизированный перевод устаревших приложений на новые языки и платформы
Автореферат диссертации по теме "Автоматизированный перевод устаревших приложений на новые языки и платформы"
(кос
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
На правах рукописи
\
'' Мосиенко Максим Алексеевич
АВТОМАТИЗИРОВАННЫЙ ПЕРЕВОД
УСТАРЕВШИХ ПРИЛОЖЕНИЙ НА НОВЫЕ ЯЗЫКИ И ПЛАТФОРМЫ
05.13.11 - Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
АВТОРЕФЕРАТ
диссертации на соискание ученой степени кандидата физико-математических наук
Санкт-Петербург 2006
Работа выполнена на кафедре системного программирования математико-механического факультета Санкт-Петербургского государственного университета.
Научный руководитель:
доктор физико-математических наук, профессор Терехов Андрей Николаевич
Официальные оппоненты:
доктор физико-математических наук, профессор Касьянов Виктор Николаевич кандидат физико-математических наук Кураленок Игорь Евгеньевич
Ведущая организация:
Государственное образовательное
учреждение высшего профессионального образования "Санкт-Петербургский государственный политехнический
университет"
Защита диссертации состоится " 27 " апреля 2006 года в 14 часов на заседании диссертационного совета Д 212.232.51 по защите диссертаций на соискание ученой степени доктора наук при Санкт-Петербургском государственном университете по адресу 198504, Санкт-Петербург, Старый Петергоф, Университетский пр., д. 28, ауд. 3536.
С диссертацией можно ознакомиться в Научной библиотеке Санкт-Петербургского государственного университета по адресу: 199034, Санкт-Петербург, Университетская наб., д. 7/9.
Автореферат разослан " 22 " марта 2006 года
Ученый секретарь диссертационного совета
доктор физико-математических наук,
профессор Б К" Мартыненко
¿оо& /у
Общая характеристика работы
Актуальность темы
Широкое распространение языков программирования высокого уровня с начала 60-х годов привело к появлению программных комплексов, используемых на протяжении нескольких десятилетий. Издержки на их сопровождение давно составляют большую часть затрат, связанных с ними, и с каждым годом стоимость поддержки только увеличивается [6].
В мировом масштабе по оценкам специалистов затраты на сопровождение старого программного обеспечения давно превысили затраты на создание нового ПО [9], только на одном из языков программирования долгоживущих систем, Коболе, написано до 30 % мирового программного обеспечения [4].
Одной из проблем сопровождения старых приложений является устаревание исходной платформы, что в свою очередь влечёт прекращение производителем поддержки операционной системы и аппаратного оборудования, отсутствие удобных инструментальных среден для внесения исправлений в программные комплексы и трудности в подборе технического персонала с необходимой квалификацией.
Возможным вариантом решения указанных проблем является автоматизированный перевод старой системы на иные языки и платформы. Кроме наличия специалистов, они обладают доступными средствами разработки программного обеспечения, поддерживающими рефакторинг [1] - структурные модификации существующего кода с сохранением функционального соответствия.
В случае если исходная и целевая среды близки, например, они используют разные диалекты одного языка, то процесс переноса системы хорошо изучен и может быть проведён высокоавтома-тизированно [3,7]. г—-
РОС НАЦИОНАЛЬНАЯ БИБЛИОТЕКА
Однако в случае значительных различий исходной и целевой платформ, например, при использовании современных языков Джава, С++ или С#, существующие подходы к переводу либо обеспечивают невысокую сопровождаемость результатов [2,5], либо жертвуют полной функциональной эквивалентностью [8].
Таким образом, существует научная проблема высокоавтоматизированного перевода старых приложений на новые языки и платформы с получением сопровождаемых результатов.
Цели и задачи работы
Целью работы является исследование существующих и разработка новых подходов автоматизированного перевода для реинжиниринга старых приложений на новые языки и платформы. Как было показано выше, решения этой задачи имеют большое значение для облегчения сопровождения старых программных систем.
В рамках достижения цели были поставлены следующие задачи:
• Исследование существующих методов автоматизированных преобразований.
• Разработка новых подходов для решения проблем языкового перевода и улучшения качества результатов при различных сценариях реинжиниринга.
• Реализация предложенных подходов на практике.
Основные результаты
В работе получены следующие основные результаты:
1. Проведён системный анализ отечественных и зарубежных работ, а также путей повышения их качества на основе практики известных исследований и проведенных автором натурных испытаний.
2. Получен подход к получению высококачественных результатов перевода.
3. Найден подхот к преодолению трудностей языковых преобразований при переводе элементарных типов и операций над ними.
4. Предложена стратегия создания классов на основе преобразования иерархии структурных описаний данных для инкапсуляции в одном классе связанных по реализации объявлений.
5. Разработан метод перевода разделяемых описаний структур данных.
6. Разработан метод управления зависимостью результатов перевода от внешней среды в процессе перевода и их дальнейшего сопровождения.
7. Выполнена промышленная реализация предложенных выше подходов и методов для перевода приложений на многих входных и выходных языках.
8. Осуществлена апробация предложенных подходов и методов в рамках индустриальных проектов по переводу программных комплексов.
Научная новизна
Все основные научные результаты диссертации являются новыми.
Практическая и теоретическая ценность
Предложенные в диссертации подходы и методы могут быть использованы при создании новых средств автоматизированного преобразования программ.
На практике предложенные подходы и методы были использованы для создания промышленного средства реинжиниринга Relativity Modernization Workbench, а также при проведении проектов по преобразованию конкретных устаревших систем, проводившихся с использованием этого инструментального средства.
Апробация работы
Результаты диссертации докладывались на семинаре кафедры прикладной математики Санкт-Петербургского Политехнического Университета (2006 год, Санкт-Петербург), а также на конференции по сопровождению и реинжинирингу программного обеспечения (CSMR 2003, Беневенто, Италия) и семинаре по анализу и модификации программного кода (SCAM 2003, Амстердам, Нидерланды).
Предложенные методы и полученные результаты были использованы в программном продукте Relativity Modernization Workbench.
Публикации
Основные результаты работы изложены в 4 работах [1,2,3,4], перечисленных в конце автореферата.
Структура и объем диссертации
Диссертация состоит из введения и 4 глав со сквозной нумерацией разделов, рисунков и таблиц, а также одного приложения. Текст диссертации изложен на 122 страницах. Список литературы содержит 129 наименований.
Содержание работы
Во введении демонстрируется актуальность выбранной темы исследований, излагается исторический контекст, цели и задачи диссертационной работы. Кратко перечислены тезисы, выносимые на защиту.
В первой главе рассмотрены теоретические основы автоматизированного перевода в задаче реинжиниринга программного обеспечения.
Произведён анализ предмета сопровождения в контексте жизненного цикла ПО, приведены виды деятельности и проблемы старых систем в этом контексте.
Показана роль реинжиниринга как средства преодоления проблем сопровождения, даны определения различным видам деятельности, используемым в сопровождении. Рассмотрены вопросы применимости, рисков, эффективности и альтернатив использования реинжиниринга.
Продемонстрировано место автоматизированного перевода при выполнения реинжиниринга, показаны его задачи и применение. Дано сравнение автоматизированного перевода и компиляции, показаны различные подходы к переводу и их характеристики. Описаны проблемы перевода и существующие способы их преодоления.
Рассмотрены различные виды перевода: межъязыковые преобразования, реструктуризация, использование объектно-ориентированного подхода и рефакторинг. Отдельно приведены недостатки существующих подходов в контексте перевода старых приложений па новые языки и платформы, такие как: отсутствие решения проблемы конвертации разделяемых описаний, низкая способность модификации результатов перевода.
Во второй главе уделяется внимание научному и техническому контексту разработки средства автоматизированного реинжиниринга Modernization Workbench, в рамках которого происходили исследования и практическая апробация данной работы.
Показана область выполненного исследования, дан исторический обзор старого языка Кобол и нового языка Джава, приведены другие входные и выходные языки, использованные для апробации.
Перечислены конкретные трудности перевода из одного языка в другой, а именно: полное различие типов, зависимость операций
от физического представления памяти, не структурный поток управления, переиспользование описаний данных, основанное на файлах включения и т.д.
В третьей главе рассмотрена реализация автоматизированного перевода из Кобола в Джаву. Описаны предыдущие результаты исследования проблемы перевода, а именно использование перевода уровня реализации и перевода встроенных средств целевого языка. На конкретных примерах показана низкая понятность и модифицируемость порождённого кода при использовании первого подхода и недостатки результатов перевода при использовании второго подхода.
Для достижения компромисса между автоматизацией перевода и качеством его результатов автором предложен общий подход к применению автоматизированного перевода, заключающийся в следующих этапах:
1. получения легко читаемых результирующих текстов с высокой степенью соответствия исходным текстам;
2. ручные исправления фиксированного объёма для реализации кода, зависимого от внешней среды;
3. рефакторинг отдельных фрагментов результирующих текстов для улучшения структуры приложения;
Данный подход позволяет осуществлять постепенный перевод, поскольку первые две стадии могут быть осуществлены в короткое время, а третья стадия может быть выполнена итеративно по потребности, при этом система находится в работающем состоянии, улучшаясь постепенно.
В целях достижения высокой читаемости и функциональной эквивалентности результатов перевода автором предложена комбинированная схема выбора проекций перевода, основанная на следующих критериях:
• области применения исходного языка (десятичная арифметика, записи данных для языка Кобол);
• идентификации практического применения низкоуровневых примитивов и структурных случаев использования операто-
ров исходного языка, обнаруженных в реальных программных системах;
• сокрытия реализации изменчивой функциональности внутри классов со стабильным интерфейсом после перевода.
Приведены примеры перевода исходных текстов, содержащих операторы безусловного перехода, использование перекрытий памяти и оператора пересылки. Показано, чю результаты перевода удовлетворяют критериям функциональной эквивалентности, читаемости и модифицируемости.
Для преодоления различия в типах данных исходного и целевого языках автором предложено в процессе перевода осуществлять разделение представления элементарного значения от его операций, т.е. создавать свойство встроенного типа целевого языка, методы доступа которого скрывают специфику его представления. Данный подход является оригинальным в преодолении трудностей языковых преобразований, позволяющим достичь понятности результатов перевода в силу использования встроенных типов при сохранении функциональной эквивалентности типов и операций над ними.
Для достижения высокой степени автоматизации и постепенности перевода автором предложено разделить процесс создания классов на автоматическое создание классов-"кандидатов" и последующий рефакториш попутно с более глубоким пониманием приложения.
При переводе определённых операторов исходного языка (например, файловые операции Кобола) и встроенных языков, использующих структуры данных исходного языка, автором предложено создавать методы в классах, порождённых из записей, для поддержки этого типа операций, а сами операции переводить на вызовы созданных методов класса. Поскольку многие операции выполняются несколько раз, то происходит локализация их реализации после перевода. В работе приведены приме-
ры результатов перепада фантовых операций с использованием указанной техники.
Автором предложена оригинальная стратегия построения классов с сокрытием реализации. Каждая запись первого уровня трансформируется в класс, а все вложенные поля становятся свойствами объемлющею класса. Если элементарное поле было частью массива, то оно становится индексированным свойством после перевода. Таким образом, реализация поддержки свойств после перевода оказывается внутри одного класса. Если запись связана но памяти с другой записью, то происходит объединение классов перевода, что позволяет скрыть реализацию неструктурных случаев поддержки памяти также внутри одного класса.
Важным отличием обсуждаемого автоматизированного перевода от аналогичных подходов является метод перевода разделяемых описаний структур данных, состоящей из семантически управляемого слияния оптимизированных образов индивидуальных трансляций. Использование предложенного автором метода позволяет обеспечить повторное использование результатов перевода разделяемых описаний структур данных при независимой трансляции программных модулей.
В целях обеспечения поддержки постепенного перевода крупных приложений автором предложена специальная поддержка межпрограммных вызовов, а именно выполнение их посредством вызова через класс контекста приложения. Поскольку для каждой программы возможно создание класса-оболочки, который осуществляет вызов удалённой программы, а, кроме того, интерфейс программного класса и созданной оболочки совпадают, то в процессе перевода появилась возможность изменять реализацию модуля без модификации его клиентов.
Для возможности лёгкой настройки системы перевода на различные конфигурации целевой среды, а также для возможности модификации кода, зависимого от внешней среды, после прове-
дения автоматизированного перевода автором предложен следующий метод. В процессе перевода кроме создания классов происходит порождение файлов описаний связи с внешней средой. Из них с помощью специальной трансформации получается код, зависимый от внешней среды, который затем внедряется в реализацию классов. Поскольку в процессе перевода указанный код был локализован в виде методов, то происходит замещение только его реализаций. При необходимости, предложенную процедуру можно многократно повторить после проведения перевода с модифицированными описаниями трансформаций.
Таким образом, с помощью предложенного метода результаты перевода параметризированы зависимостью от внешней среды, что позволяет существенно уменьшить их ручные исправления в процессе постепенного перевода и дальнейшего адаптивного сопровождения.
Автором предложено осуществлять тестирование интерактивных приложений методом "чёрного" ящика с помощью вышеуказанной возможности заменять реализацию отдельных методов. На первом этапе в код взаимодействия с пользователем добавляются команды сбора данных и осуществляется прогон всех сценариев работы. На втором, тестовом, этапе реализация обмена данных с пользователем заменяется на код, имитирующий пользователя с помощью собранной информации и сравнивающий текущие данные приложения с эталонными. Возможность осуществления регрессионного тестирования существенно упрощает проведение дальнейших структурных преобразований приложений и их дальнейшего сопровождения после перевода.
Отдельные фрагменты результатов перевода могут быть подвергнуты рефакторингу. Автором выделены следующие направления структурных модификаций:
• дальнейшее улучшение понимания кода (преобразования: переименования, введение константы/переменной, выделение метода);
• дальнейшее улучшение объектной структуры (преобразования: извлечение базового класса/интерфейса, изменение сигнатуры метода)
• выделение общего кода между программными классами и вынесения его в отдельные классы (преобразования: сделать метод сташчсским, перенести метод, сделать статический метод методом экземпляра);
Автором описано применение предложенных подходов и методов для автоматизированного перевода программ с другими входными (ПЛ1, Н ату рал) и выходными языками (Visual Basic и С++).
Четвертая глава посвящена промышленной апробации построенной реализации автоматизированного перевода. Описаны ре-зульгаш использования предложенного метода на реальных приложениях, в том числе для промышленного приложения объёмом около 2-х миллиона строк кода, состоящего из около 3000 программных модулей.
Применение разработанной системы автоматизированного перевода на промышленном проекте продемонстрировало возможность её лёгкой адаптации к требованиям заказчика в направлениях, предложенных автором, а именно: получения высококачественных результатов перевода, преодоления трудностей языковых преобразований для элементарных типов, перевода разделяемых описаний и управления зависимостью результатов перевода от внешней среды.
Приведены данные тестирования производительности результатов перевода, описан предложенный автором метод кэширования промежуточных объектов в реализации динамической поддержки, позволяющий ускорить работу приложения в 2-5 раз.
В заключении, приведена общая характеристика диссертационной работы и основные выводы по её результатам.
Список литературы
1. M. Fowler, K. Beck, J. Brant, et. al., "Refactoring: Improving Design of Existing Code", Addison Wesley Longman, 1999
2. R. Gray, T. Bickmore, S. Williams, "Reengineering Cobol Systems to Ada," In Proceedings of Air Force/Army/Navy Software Technology Conference, US Dept. of Defense, 1995.
3. M. Harsu "Reengineering Legacy Software through Language Conversion", Report A-2000-8, Department of Computer and Information Sciences, University of Tampere (Doctoral thesis), June 2000, 150 pp.
4. C. Jones "The Year 2000 Software Problem - Quantifying the Costs and Assessing the Consequences", Addison-Wesley, 1998
5. LegacyJ's PercCobol - Cobol to Java compiler
6. B. Lientz, E. B. Swanson "Problems of application software maintenance", Communications of the ACM, Vol. 24, No. 11, 1981, pp. 763-769.
7. H. M. Sneed "Object-Oriented COBOL Recycling", In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1996, pp. 169-178
8. A. A. Terekhov, C. Verhoef "The Realities of Language Conversions", IEEE Software, November/December 2000, Vol. 17, No. 6, pp. 111-124.
9. C. Verhoef "Software Development is a Special Case of Maintenance", In Proceedings of International Conference on Software Engineering and Applications, IEEE Computer Society Press, 1999
Работы автора по теме диссертации
1. М. Мосиенко "Построение динамической поддержки для задач реинжиниринга", в сб. "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000. С. 145-164.
M. Mossienko "Automated Cobol to Java Recycling", In Proceedings of 7th IEEE Conference on Software Maintenance And Reengineering, IEEE Computer Society Press, 2003, pp. 40-49 M. Mobsienko, O. Khaschansky, D. Antonov, O. Sinirnov, A. Gubanov "Towards managing environment dependence during legacy systems maintenance and renovation", In Proceedings of 3rd IEEE Workshop on Source Code Analysis and Manipulation, IEEE Computer Society Press, 2003, pp. 131-140 M. Мосиенко, А. Тиунова "Интеграция программной логики с пользовательским интерфейсом в процессе реинжиниринга" в сб. "Труды кафедры системного программирования", СПб, изд-во С.-Петербургского университета, 2004. С. 199224.
Подписано к печати 16.03.2006. Формат бумаги 60x90 1/16. Бумага офсетная. Печать ризографическая. Объем 1 п.л. Тираж 100 экз. Заказ 3745. Отпечатано в отделе оперативной полиграфии НИИХ СПбГУ с оригинал-макета заказчика. 198504, Санкт-Петербург, Старый Петергоф, Университетский пр., 26.
Бесплатно
ЯООСЬ
»"6341
Оглавление автор диссертации — кандидата физико-математических наук Мосиенко, Максим Алексеевич
Содержание.
Введение.
Введение.
Введение 2006 год, диссертация по информатике, вычислительной технике и управлению, Мосиенко, Максим Алексеевич
Краткая история развития объекта исследования.6
Цели и задачи диссертационной работы.7
Тезисы, выносимые на защиту.8
Аннотация диссертационной работы по главам.9
Благодарности.10
Заключение диссертация на тему "Автоматизированный перевод устаревших приложений на новые языки и платформы"
Основные результаты диссертационной работы:
1. В работе выполнен системный анализ отечественных и зарубежных работ, а также путей повышения их качества на основе практики известных исследований и проведенных автором натурных испытаний.
2. Автором приведён подход к получению высококачественных результатов перевода. В его рамках предложены следующие нововведения:
• подход к преодолению трудностей языковых преобразований при переводе элементарных типов и их операций.
• стратегия создания классов на основе преобразования иерархии структурных описаний.
• метод перевода разделяемых описаний структур данных.
• метод управления зависимостью результатов перевода от внешней среды.
3. Разработанные теоретические положения и новые технические решения реализованы в составе средства реинжиниринга Modernization Workbench для автоматизированного перевода программ с различными входными и выходными языков.
4. Реализация успешно использована для перевода ряда промышленных программных комплексов.
Полученный автором подход к автоматизированному переводу позволяет существенно сократить объем необходимых ручных исправлений или полностью их исключить, что дает возможность значительно снизить затраты материальных ресурсов, денежных средств и времени на проведение перевода.
Основные положения и результаты работы докладывались на семинаре кафедры прикладной математики Санкт-Петербургского Государственного Политехнического Университета (2006, Санкт-Петербург), конференции по сопровождению и реинжинирингу программного обеспечения (CSMR 2003, Беневенто, Италия), семинару по анализу и модификации программного кода (SCAM 2003, Амстердам, Нидерланды) и опубликованы в работах [68,69,121,122].
Заключение.
Библиография Мосиенко, Максим Алексеевич, диссертация по теме Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
1. D. Baburin "Using Graph Based Representations in Reengineering", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 2002, pp. 203-207
2. B. S. Baker "An Algorithm for Structuring Flowgraphs", Journal of the ACM, Vol. 24, No. 1,1977, pp. 98-120
3. I. D. Baxter, A. Yahin, L. Moura, M. Sant'Anna, L. Bier " Clone Detection Using Abstract Syntax Trees", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 1998, pp. 368-377
4. B.L. Belady, M.M. Lehman "A model of large program development", IBM Systems Journal, 15(3), 1976, pp. 225-252
5. K. Benett "Do Program Transformations Help Reverse Engineering?", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 1998, pp. 247-254
6. T. J. Biggerstaff, B.G. Mitbander, D.E. Webster "Program understanding and concept assignment problem", Communications of the ACM, 37 (5) 1994, pp. 72-83
7. B. W. Boehm "A Spiral Model of Software Development and Enhancement", Computer, Vol. 21, No. 5, May 1988, pp. 61-72
8. D. Boulychev, D. Koznov, A.A. Terekhov "On Project-Specific Languages and Their Application in Reengineering", In Proceedings of the Conference on Software Maintenance and Reengineering, Budapest, Hungary, March 2002, pp. 177-185.
9. Proceedings in Compiler Construction, (ed. R. Wilhelm), volume 2027 of Lecture Notes in Computer Science, 365-370, Springer-Verlag, 2001
10. M. van den Brand, P. Klint, C. Verhoef "Reengineering needs Generic Programming Language Technology", ACM SIGPLAN Notices, Vol. 32 Issue 2, February 1997, pp. 5461
11. M. van den Brand, M.P.A. Sellink, C. Verhoef "Current Parsing Techniques in Software Renovation Considered Harmful", In Proceedings of the International Workshop on Program Comprehension, IEEE Computer Society Press, 1998, pp. 108-117.
12. M. van den Brand, M.P.A. Sellink, C. Verhoef "Generation of Components for Software Renovation Factories from Context-Free Grammars", Science of Computer Programming, Vol. 36, No. 2-3, Mar. 2000, pp. 209-266
13. M. L. Brodie, M. Stonebraker "Migrating Legacy Systems: Gateways, Interfaces and the Incremental Approach", Morgan-Kaufmann, 1995,210 p.
14. E. Byrne "Conceptual Foundation for Software Re-engineering" // In Proceedings of the International Conference on Software Maintenance, ACM Press, 1992.- p. 216-235
15. G. Canfora, A.R. Fasolino, M. Tortorella "Towards Reengineering in Reuse Reengineering Processes", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 1995, pp. 147-156
16. B. Caprile, P. Tonella "Restructuring Program Identifier Names", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 2000, pp. 97-107
17. ClaBen, K. Hennig, I. Mohr, M. Schulz "CUI to GUI Migration: Static Analysis of Character-Based Panels", In Proceedings of Working Conference on Software Maintenance and Reengineering, IEEE Computer Society Press, 1997.
18. N. Chapin "Do We Know What Preventive Maintenance Is?", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 2000, pp. 15-17
19. E. Chikofsky, J. H. Cross II "Reverse Engineering and Design Recovery: A Taxonomy", IEEE Software, Vol. 7, No. 1, January 1990, pp. 13-17.
20. W. С. Chu "A re-engineering approach to program translation", In Proceedings of the Conference on Software Maintenance, IEEE Computer Society Press, 1993, pp. 42-50
21. S. Comella-Dorda, R. Seacord, K. Walnau, et. al. "A survey of Black-box modernization approaches for Information Systems", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 2000, pp. 173-184
22. A. van Deursen, P. Klint, C. Verhoef "Research issues in renovation of legacy systems", in Finance J.P. (ed.) Fundamental Approaches to Software Engineering (FASE'99), Lecture Notes in Computer Science, Springer Verlag, 1999, pp. 1-23
23. A. van Deursen, T. Kuipers "Identifying objects using cluster and concept analysis", In Proceedings of International Conference on Software Engineering, IEEE Computer Society Press, 1999, pp. 249-255, available from http://www.cwi.nl/~arie/papers/
24. A. van Deursen, L. Moonen "Type Inference for COBOL Systems", In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1998, pp. 220230
25. W.C. Dietrich, Jr., L.R. Nackman, F. Gracer "Saving a legacy with objects", In Proceedings of Object-Oriented Programming: Systems, Languages and Applications Conference, New Orleans, Louisiana, October 1989, Sigplan Notices, 24 (10), 1989, pp. 77-83
26. S. Ducasse, M. Rieger, S. Demeyer "A Language Independent Approach for Detecting Duplicated Code", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 1999, pp. 109-118
27. M. Fowler, K. Beck, J. Brant, et. al., "Refactoring: Improving Design of Existing Code", Addison Wesley Longman, 1999
28. E. Gamma, J. R. Helm, R. Johnson, J. Vlissides Design Patterns: Elements of Reusable Object Oriented Software, Addison-Wesley, 1995
29. J.P. Gibson, T.F. Dowling, B.A. Malloy "The Application of Correctness Preserving Transformations To Software Maintenance", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 2000, pp. 1-10
30. R. Glass. "Cobol-A Contradiction and an Enigma", Communications of the ACM, Vol. 40, No. 9, 1997, pp. 11-13.
31. J. Graham "Migrating To Object Technology" .- Addison-Wesley, 1995 P.502
32. R. Gray, T. Bickmore, S. Williams, "Reengineering Cobol Systems to Ada," In Proceedings of Air Force/Army/Navy Software Technology Conference, US Dept. of Defense, 1995.
33. M. Harsu "Reengineering Legacy Software through Language Conversion", Report A-2000-8, Department of Computer and Information Sciences, University of Tampere (Doctoral thesis), June 2000,150 pp.
34. IBM ToolBox for Java, http://www-l.ibm.com/servers/eserver/iseries/toolbox/
35. Jacobson, F. Lindstrom, "Re-engineering of Old Systems to an Object-Oriented Architecture", In Proceedings of the Conference on Object-Oriented Programming Systems, Languages and Applications, ACM, New York, 1991, pp. 340-350.
36. J. Joiner, W. Tsai "Re-engineering Legacy Cobol Programs", Communications of the ACM, Vol. 41, No. 5,1998
37. C. Jones "Estimating Software Costs", McGraw-Hill, 1998.
38. C. Jones "The Year 2000 Software Problem Quantifying the Costs and Assessing the Consequences", Addison-Wesley, 1998
39. M. Jonge "Pretty-Printing for Software Reengineering", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 2002, pp. 550-559
40. G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, С. V. Lopes, J.-M. Loingtier, J. Irwin "Aspect-Oriented Programming", In Proceedings of the European Conference on Object-Oriented Programming, Springer-Verlag, 1997, pp. 220-242.
41. G.A. Kiran, S. Haripriya, P. Jalo "Effect of object-orientation on maintainability of software", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 1997, pp 114-119
42. P.Klint "How Understanding and Restructuring differ from Compiling a Rewriting Perspective", In Proceedings of International Workshop on Program Comprehension, IEEE Computer Society Press, 2003, pp. 2-12
43. J. W. Klop "Term rewriting systems", In Handbook of Logic in Computer Science, Vol. II, Oxford University Press, 1992, p. 1-116.
44. K. Kontogiannis "Evaluation Experiments on the Detection of Programming Patterns Using Soft w are Metrics", In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1997, pp. 44-54
45. W. Kozaczynski, J. Q. Ning, A. Engberts "Program Concept Recognition and Transformation", IEEE Transactions on Software Engineering, Vol. 18, No. 12, December 1992, pp. 1065-1075.
46. B. Krieg-Briickner "Language comparison and source-to-source translation", in P. Pepper (ed.), Program Transformation and Programming Environments, Springer, 1984, pp. 299304
47. K. Kontogiannis, P. Patil "Evidence Driven Object Identification in Procedural Systems", In Proceedings of Conference on Software Technology and Engineering Practice, Pittsburgh PA., September 1999, pp. 12-21.
48. R. Krikhaar, A. Postma, A. Sellink, M. Stroucken, C. Verhoef "A two phase process for software architecture improvement", International Conference on Software Maintenance, IEEE Computer Society Press, 1999, pp. 371-380
49. LegacyJ's PercCobol Cobol to Java compiler, http://www.legacvi.com/lgcvi percl .html
50. G.F. Levy "Improving the output of the FORTRAN to С translator, f2c", Software -Practice and Experience 25 (2) 1995, pp. 217-227
51. B. Lientz, E. B. Swanson "Problems of application software maintenance", Communications of the ACM, Vol. 24, No. 11,1981, pp. 763-769.
52. B. Lientz, E. B. Swanson, G. E. Tompkins "Characteristics of application software maintenance", Communications of the ACM, Vol. 21, No. 6,1978, pp. 466-471.
53. R. LSmmel, C. Verhoef "Cracking the 500 Language Problem", IEEE Software, Vol. 18, No. 6, pp. 78-88.
54. L. Markosian, P. Newcomb, R. Brand, S. Burson, T. Kitzmiller "Using an Enabling Technology to Reengineering Legacy Systems", Communications of the ACM, Vol. 37 (5), pp. 58-70
55. J. Martin, H. Miiller "Strategies for Migration from С to Java", In Proceedings of Conference on Software Maintenance and Reengineering, IEEE Computer Society Press, 2001, pp. 200-209.
56. M. Moore "Issues in user interface migration"
57. M. Mossienko "Automated Cobol to Java Recycling", In Proceedings of Conference on Software Maintenance and Reengineering, IEEE Computer Society Press, 2003, pp. 40-49
58. Natural Adabas 4GL, Software AG
59. P. Newcomb, "Reengineering Procedural Into Object-Oriented Systems" In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1996, pp 237249
60. Novosoft, C2J С to Java translator, http://www.novosoft.ru/c2j.html
61. A. Quilici "A Memory-Based Approach to Recognizing Programming Plans", Communications of the ACM, Vol. 37, No. 5, May 1994, pp. 84-93.
62. V. Rajlich, K. Bennett "A Staged Model for the Software Life Cycle" Computer, Vol. 33, No. 7, July 2000, pp. 66-71
63. W. W. Royce, "Managing the Development of Large Software Systems: Concepts and Techniques," In Proceedings of WESCON, 1970, pp 1-9. Also available in Proceedings of ICSE, Computer Society Press, 1987, pp. 328-338.
64. M.P.A. Sellink, H.M. Sneed, and C. Verhoef, "Restructuring of COBOL/CICS Legacy Systems," In Proceedings of Conference on Maintenance and Reengineering, IEEE Computer Society Press, 1999, pp. 72-82.
65. M.P.A. Sellink, C. Verhoef "Native Patterns", In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1998, pp. 89-103.
66. M.P.A. Sellink, C. Verhoef "Scaffolding for Software Renovation", In Proceedings of Conference on Software Maintenance and Reengineering, IEEE Computer Society Press, 2000,pp. 151-160.
67. M. Serrano, C. Montes, D. Carver "Evolutionary Migration of Legacy Systems to an Object-Based Distributed Environment", In Proceedings of International Conference Software Maintenance, Computer Society Press, 1999, pp. 86-98
68. H. M. Sneed "Encapsulating Legacy Software for Use in Client/Server Systems", In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1996, pp. 104-119
69. H. M. Sneed "Estimating the Costs of Software Maintenance Tasks", In Proceedings of International Conference on Software Maintenance, IEEE Computer Society Press, 1995, pp. 168-181
70. H. M. Sneed "Measuring Performance of Software Maintenance Department", In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1997, pp. 119-127
71. H. M. Sneed "Object-Oriented COBOL Recycling", In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1996, pp. 169-178
72. H. M. Sneed "Program Interface Reengineering for Wrapping", In Proceedings of Working Conference Reverse Engineering, IEEE Computer Society Press, 1997, pp. 206-215
73. H. M. Sneed "Risks Involved in Reengineering Projects", In Proceedings of Working Conference Reengineering Engineering, IEEE Computer Society Press, 1999, pp. 204-212.
74. H. M. Sneed "Wrapping Legacy COBOL programs behind XML interface ", In Proceedings of Working Conference Reverse Engineering, IEEE Computer Society Press, 2001, pp. 189197
75. Н. М. Sneed, Е. Niary "Extracting Object-Oriented Specification from Procedurally Oriented Programs", In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1995, pp. 217-226
76. H. M. Sneed, C. Verhoef "Reengineering the Corporation A Manifesto for IT Evolution", Encyclopedia of Software Engineering, 2001 (pages ??).
77. E. B. Swanson "The dimensions of maintenance", In Proceedings of International Conference on Software Engineering, ACM Press, 1976, pp. 492-497.
78. A. A. Terekhov "Automated Extraction of Classes from Legacy Systems", In Proceedings of TOOLS EE, 2000.
79. A. A. Terekhov "Automating Language Conversion: A Case Study", In Proceedings of the International Conference on Software Maintenance, 2001. pp. 654-658.
80. A. A. Terekhov, C. Verhoef "The Realities of Language Conversions", IEEE Software, November/December 2000, Vol. 17, No. 6, pp. 111-124.
81. S. Tilley, D. Smith "Legacy System Reengineering" // In Proceedings of International Workshop on Software Technology and Engineering Practice, 1997
82. N. Veerman "Revitalizing the modifiability of legacy assets", In Proceedings of Conference on Software Maintenance and Reengineering, Computer Society Press, 2003, pp. 19-29
83. C. Verhoef "How to Implement the Future?", In Proceedings of EUROMICRO, IEEE Computer Society Press, 2000, pp. 32-50, available at http://www.cs.vu.nl/~x/future/future.html
84. C. Verhoef "Software Development is a Special Case of Maintenance", In Proceedings of International Conference on Software Engineering and Applications, IEEE Computer Society Press, 1999
85. C. Verhoef "The Realities of Large Software Portfolios", unpublished work, available at http://adam.wins.uva.nl/~x/lsp/lsp.html
86. Visual Basic 6 Reference guide, Microsoft
87. VS COBOL II. Application Programming Language Reference, 4th ed., IBM Corp., Armonk, N.Y., 1993
88. R.C. Waters "Program translation via abstraction and reimplementation", IEEE Transactions on Software Engineering, Vol. 14, No. 8,1988, pp. 1207-1228
89. B. Weide, W. Heym "Reverse Engineering of Legacy Code Exposed" // In Proceedings of International Conference on Software Engineering .- ACM Press, 1995.- p. 327-331
90. N. Weiderman, L. Northrop, D. Smith, et al. "Implications of Distributed Object Technology for Reengineering" // CMU/SEI-97-TR-005. Pittsburg, PA: Software Reengineering Institute, Carnegi Melon University, 1997
91. M. Weiser "Program Slicing", IEEE Transactions on Software Engineering, Vol. 10, No. 4, 1984, pp. 352-357.
92. T. Wiggerts "Using Clustering Algorithms In Legacy Systems Remodularization", In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1997, pp. 33-42
93. T. Wiggerts, H. Bosma, E. Fielt "Scenarios for the Identification of Objects in Legacy Systems", In Proceedings of Working Conference on Reverse Engineering, IEEE Computer Society Press, 1997, pp. 24-33
94. World Wide Web Consortium, "Extensible Markup Language (XML) 1.0 (Second Edition)", http://www.w3.org/TR/2000/REC-xml-200010Q6.pdf.
95. World Wide Web Consortium, "XSL Transformations (XSLT) Version 1.0", http://www.w3.org/TR/xslt
96. D.M. Yellin "Attribute grammar inversion and source-to-source translation", Lecture Notes in Computer Science 302, Springer, 1988
97. S. Yip "Software maintenance in Hong Kong", In Proceeding of ICSM'95, Opio, France, October, 1995, pp. 88-97
98. A. Ахо, P. Сети, Д. Ульман Компиляторы: принципы, технологии и инструменты.: Пер. с англ. М.:Издательский дом «Вильяме», 2001. - 768с.
99. В. Богданов, В. Гордеев "Практический опыт написания синтаксического анализатора языка программирования КОБОЛ" // в сб. "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000. С. 6475
100. В. Богданов "Синтезирующая часть системы Rescue Ware" // в сб. "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000. С. 76-82
101. Ф. Брукс Мифический человеко-месяц или как создаются программные системы.- Пер. с англ. СПб.: Символ-Плюс, 1999 - 304 с.
102. М.А. Бульонков, Д.Е. Бабурин "HyperCode открытая система визуализации программ", в сб. "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000. С. 165-183.
103. Г. Буч Объектно-ориентированный анализ и проектирование с примерами приложений на С++, 2-е изд./Пер. с англ. М.: «Издательство Бином», СПб.: «Невский диалект», 2000. - 560 с.
104. К. Волошин, О. Плисс "Трансляция вызовов и переходов из COBOL в С++" // в сб. "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000. С. 83-102
105. К. Волошин, О. Плисс "Устранение локальных GOTO" // в сб. "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000. С. 103-109
106. К. Джермейн Программирование на IBM/360 М.: Мир, 1971. - 870 с.
107. А. Друнин "Автоматизированное построение программных компонент на основе устаревших программ" // в сб. "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000. С. 184-205
108. Б. Казанский "Генерация программ на целевых языках в задачах реинжиниринга", в сб. "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000. С. 118-144
109. М. Мосиенко "Построение динамической поддержки для задач реинжиниринга", в сб. "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000. С. 145-164.
110. М. Мосиенко, А. Тиунова "Интеграция программной логики с пользовательским интерфейсом в процессе реинжиниринга" в сб. "Труды кафедры системного программирования", СПб, изд-во С.-Петербургского университета, 2004. С. 199-224.
111. М.В. Попов "Процедурное представление программ при переводе с языка COBOL" в сб. "Труды кафедры системного программирования", СПб, изд-во С.-Петербургского университета, 2003. С.
112. Б. Страуструп Язык программирования С++, 3-е изд./ Пер. с англ. СПб: "Невский Диалект", 1999г. - 991с.
113. А. А. Терехов "Языковые преобразования в задачах реенжиниринга программного обеспечения", 2002, диссертация
114. А. Н. Терехов, А. А. Терехов (ред.) "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000,332 с.
115. А. Н. Терехов, JI. А. Эрлих, А. А. Терехов "История и архитектура проекта RescueWare", в сб. "Автоматизированный реинжиниринг программ", СПб, изд-во С.-Петербургского университета, 2000. С. 7-19.
116. Б. Эккель Философия Java. Библиотека программиста. СПб.: Питер, 2001. -880с.
117. JI. Эрлих "Технология реинжиниринга и компонентизации устаревших программных комплексов", 2002, диссертация
-
Похожие работы
- Технология реинжиниринга и компонентизации устаревших программных комплексов
- Языковые преобразования в задачах реинжиниринга программного обеспечения
- Методы извлечения бизнес-логики на основе семантических свойств программ
- Роботизированные системы с механизмами параллельной структуры на основе подвесных платформ
- Статический анализ кода для автоматизированного обнаружения ошибок при переносе программ на 64-битные платформы
-
- Системный анализ, управление и обработка информации (по отраслям)
- Теория систем, теория автоматического регулирования и управления, системный анализ
- Элементы и устройства вычислительной техники и систем управления
- Автоматизация и управление технологическими процессами и производствами (по отраслям)
- Автоматизация технологических процессов и производств (в том числе по отраслям)
- Управление в биологических и медицинских системах (включая применения вычислительной техники)
- Управление в социальных и экономических системах
- Математическое и программное обеспечение вычислительных машин, комплексов и компьютерных сетей
- Системы автоматизации проектирования (по отраслям)
- Телекоммуникационные системы и компьютерные сети
- Системы обработки информации и управления
- Вычислительные машины и системы
- Применение вычислительной техники, математического моделирования и математических методов в научных исследованиях (по отраслям наук)
- Теоретические основы информатики
- Математическое моделирование, численные методы и комплексы программ
- Методы и системы защиты информации, информационная безопасность