Реферат
ВВЕДЕНИЕ 6
1 АНАЛИЗ ТРЕБОВАНИЙ. АНАЛИЗ СУЩЕСТВУЮЩИХ
ПРОБЛЕМ ПРОЕКТА И МЕТОДЫ ИХ РЕШЕНИЯ 8
1.1 Постановка задачи 8
1.2 Описание предметной области 8
1.3 Анализ требований к программе 9
1.4 Анализ существующих проблем проекта 11
1.5 Анализ существующих методов решения проблем проекта 14
1.6 Рекомендации к написанию кода 25
2 ПРИМЕНЕНИЕ МЕТОДОВ РЕФАКТОРИНГА НА ПРОЕКТЕ 28
2.1 Тестирование 28
2.2 Подключение к разделяемой памяти 32
2.3 Подключение к дескрипторам очередей 33
2.4 Чтение конфигурационного файла 34
2.5 Отладочная информация 34
2.6 Сервисное окно 35
2.7 Этап расшифровки и предварительная обработка принятной порции
сообщений 36
2.8 Этап отождествления координатных отметок 38
2.9 Этап сопровождения треков 39
2.10 Этап формирования и выдачи выходного сообщения 41
2.11 Организация модулей программы 43
2.12 Выводы по разделу 43
ЗАКЛЮЧЕНИЕ 45
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 46
ПРИЛОЖЕНИЕ 1 ОПИСАНИЕ ПРОГРАММЫ 48
ПРИЛОЖЕНИЕ 2 ТЕКСТ ПРОГРАММЫ 52
Ежедневно в мире совершается около 85 000 гражданских авиарейсов. За годы прогресса и инноваций существенно увеличилось количество и качество перелетов. Данная ситуация достигается за счет успешного производства разноплановых локаторов, а также многолетнего труда конструкторов и инженеров.
В реальном времени за всеми перелетами следят диспетчеры, но каким образом? Диспетчер наблюдает за воздушной обстановкой на экране и в случае необходимости управляет и корректирует движение летательных аппаратов. Но откуда появляется информация на экране? Именно этим занимается программа автосопровождения летательных аппаратов. Она решает проблему автоматизации обмена информацией, а также формирования треков полета самолета, корректировку полетной информации, фильтрации отраженных сигналов и многое другое.
АО НИИИТ-РК более 25 лет занимается задачами обеспечения диспетчеризации полетов. За эти годы были достигнуты большие результаты в области обеспечения автоматизации процесса сопровождения летательных аппаратов. Но на данный момент качество и способы написания программного кода значительно продвинулись вперед. Возникает необходимость переработки кода программного обеспечения с целью обеспечения стабилизации сопровождения и упрощения дальнейших модернизаций.
Рефакторинг это процесс изменения внутренней структуры программного обеспечения. Сферой применения рефакторинга является исходный код, основной целью которого является упрощение будущих модификаций и облегчение понимания кода человеком. Индикатором необходимости применения рефакторинга является «проблемный код», но, в каждом конкретном случае для вынесения окончательного решения о необходимости рефакторинга необходимо произвести анализ.
Рефакторинг необходимо применять тогда, когда добавляется новая функция, исправляется ошибка или проводится разбор кода. Для корректного применения рефакторинга, необходимо знание существующих методов рефакторинга.
В процессе применения методов рефакторинга необходимо производить качественное тестирование каждого отдельно взятого шага. Но даже при применении модульных тестов нельзя утверждать об отсутствие ошибок в программе, возникших в процессе рефакторинга.
Достоинствами проведения рефакторинга является следующее:
• улучшение композиции программного обеспечения;
• облегчение понимания программного обеспечения;
• помощь в нахождении ошибок;
• ускорение написания программ;
• сохранение работоспособности программы.
Недостатками проведения рефакторинга является следующее:
• требование о наличии предварительных тестов;
• проблемы отсутствия доказательной верификации корректности изменений.
В данной работе были проанализированы требования к приложению, проведен обзор существующих методов рефакторинга, описаны их достоинства и недостатки. Были созданы рекомендации к написанию кода. Для тестирования и отладки были разработаны модульные тесты. Были произведены работы по подготовке к проведению рефакторинга, а затем и был произведен рефакторинг программы автосопровождения.
После проведения работ по рефакторингу, количество методов значительно уменьшилось. В виду того, что было выявлено множество кусков алгоритмов, которые на данный момент потеряли свою актуальность. Алгоритмы ассоциации отметок, определения кругоответа и другие, существовали в проекте, но не использовались. Таким образом, в проекте уменьшилось количество функций с 160 до 126 методов. Размеры каждого не превышают 150-200 строк, ранее встречались функции размерами до десяти тысяч строк. Было выделено 13 классов, а общее количество файлов в проекте сократилось с 61 до 34.
Программа автосопровождения тестировалась при помощи модульных тестов во время проведения рефакторинга. Последним этапом тестирования был запуск на задокументированных реальных полетах летательных аппаратов.
В результате была создана новая версия программы автосопровождения летательных аппаратов, удовлетворяющая всем указанным требованиям. Таким образом, все поставленные задачи были успешно выполнены.
Новая версия программы автосопровождения летаельных аппаратов внедрена в изделие. В настоящее время проводятся пусконаладочные работы.
1. Зыль, С.Н. Операционная система реального времени QNX: от теории к практике / С.Н. Зыль. - СПб.: БХВ-Петербург, 2004. - 192 с.
2. Кёртен, Р. Введение в QNX/Neutrino 2: Руководство по программированию приложений реального времени в QNX Realtime Platform / Р. Кёртен; пер. с англ. А.Н. Алексеев. - СПб.: Петрополис, 2004. - 514 с.
3. Зыль, С.Н. QNX Momentics: основы применения / С.Н. Зыль. - СПб.: БХВ- Петербург, 2005. - 256 с.
4. Блэк, Р. Ключевые процессы тестирования. Планирование, подготовка, проведение, совершенствование / Р. Блэк. - М.: Лори, 2014. - 544 с.
5. Павловская, Т.А. C/C++. Программирование на языке высокого уровня / Т.А. Павловская. - СПб.: Питер, 2003. - 461 с.
6. Бейзер, Б. Тестирование черного ящика. Технологии функционального тестирования программного обеспечения и систем / Б. Бейзер. - СПб.: Питер, 2004. - 318 с.
7. Фаулер, M. Рефакторинг: улучшение существующего кода / М. Фаулер; пер. с англ. C. Маккавеева. - СПб.: Символ Плюс, 2003. - 432 с.
8. Брауде, Э. Технология разработки программного обеспечения / Э. Брауде. - СПб.: Питер, 2004. - 656 с.
9. Страуструп, Б. Язык программирования C++. Специальное издание / Б. Страуструп; пер. с англ. Н.Н. Мартынова. - М.: Бином, 2011. - 1136 с.
10. Александровский, А. Современное проектирование на С++ /
А.Александровский; пер. с англ. Д.А.Клюшина. - М.: Вильямс, 2002. - 326 с.
11. Паппас, К.Х. Отладка в C++. Руководство для разработчиков / К.Х. Паппас, У.Х. Мюррей. - М.: Бином, 2006. - 512 с.
12. Калбертсон, Р. Быстрое тестирование / Роберт Калбертсон, Крис Браун, Гэри Кобб. - М.: Вильямс, 2002. - 383 с.
13. Мартин, Р. Чистый код: создание, анализ и рефакторинг / Р. Мартин; пер. с англ. Е. Матвеев. - СПб.: Питер, 2018. - 464 с.
14. Макконнелл, С. Совершенный код. Мастер-класс / С. Макконнелл; пер. с англ.
• М.: Издательско-торговый дом Русская редакция; СПб.: Питер, 2005. - 896 стр.
15. Буч, Г. Язык UML. Руководство пользователя / Г. Буч, Д. Рамбо, И. Якобсон. - М.: ДМК Пресс, 2008. - 496 с.
... всего 20 источников