571.88K

Отладчики. Жизненный цикл программного обеспечения

1.

Отладчики

2.

Жизненный цикл программного
обеспечения
Стандарты жизненного цикла ПО:
ГОСТ 34.601-90, ISO/IEC 12207:1995
• Формирование требований к АС
• Разработка концепции АС
• Техническое задание
• Эскизный проект
• Технический проект (отладка)
• Рабочая документация
• Ввод в действие
• Сопровождение АС. (отладка)
2

3.

Отладка программ
Макконнел, С. Совершенный код (Code complete)
«Пишите код так, как будто сопровождать его будет склонный к насилию
психопат, который знает, где вы живете»
• "Отладка — это процесс определения и устранения причин
ошибок. Этим она отличается от тестирования, направленного на
их обнаружение..."
• "В некоторых проектах отладка занимает до 50% общего
времени разработки…"
• "Большинство дефектов " – это "недосмотры и опечатки"
• В каждой группе есть … программист, бесконечно
сражающийся с демоническими компьютерами, таинственными
дефектами компилятора, скрытыми дефектами языка…" и
"…заколдованным текстовым редактором…"
• "... Отладка включает в себя поиск дефекта и его исправление.
Поиск и понимание дефекта обычно составляют 90% работы..."
3

4.

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

5.

Метод поиска дефекта, основанный на
научном методе
1. Стабилизация ошибки.
2. Определение источника ошибки.
a. Сбор данных, приводящих к дефекту.
b. Анализ собранных данных и формулирование
гипотезы, объясняющей дефект.
c. Определение
способа
подтверждения
или
опровержения гипотезы, основанного или на
тестировании программы или на изучении кода.
d. Подтверждение или опровержение гипотезы при
помощи процедуры, определенной в п. 2 (с)
3. Исправление дефекта
4. Тестирование исправления
• Поиск похожих ошибок
5

6.

Инструменты отладки программ
• утилиты сравнения исходного кода (diff)
• системы управления версиями
• сообщения компилятора
• утилиты расширенной проверки синтаксиса и логики (lint)
• программные отладчики
• профилировщики
6

7.

Утилиты сравнения исходного кода (diff)
В вычислительной технике diff — утилита сравнения
файлов, выводящая разницу между двумя файлами.
Эта программа выводит построчно изменения, сделанные
в файле (для текстовых файлов). Современные реализации
поддерживают также двоичные файлы.
Вывод утилиты называется «diff», или, что более
распространено, патч, так как он может быть применён с
программой patch.
Вывод похожих утилит сравнения файлов также часто
называется «diff».
7

8.

Системы управления версиями
• Система управления версиями (от англ. Version Control
System, VCS или Revision Control System) — программное
обеспечение для облегчения работы с изменяющейся
информацией.
• Система управления версиями позволяет хранить несколько
версий одного и того же документа, при необходимости,
возвращаться к более ранним версиям, определять, кто и
когда сделал то или иное изменение и многое другое.
• Такие системы наиболее широко применяются при
разработке программного обеспечения, для хранения
исходных кодов разрабатываемой программы.
8

9.

Типичный порядок работы с системой
управления версиями
• Начало работы с проектом: извлечение рабочей копии
проекта или той его части, с которой предстоит работать.
• Ежедневный цикл работы
• Обновление рабочей копии: по мере внесения изменений в
проект другими разработчиками рабочая копия на компьютере
разработчика стареет, расхождение её с основной версией
проекта
увеличивается.
Обновление
позволяет
синхронизировать рабочую копию и текущую версию проекта.
• Модификация проекта: разработчик модифицирует проект,
изменяя входящие в него файлы в рабочей копии в
соответствии с проектным заданием. Эта работа
производится локально и не требует обращений к серверу
VCS.
• Фиксация изменений: Завершив очередной этап работы
над заданием, разработчик фиксирует (commit) свои
изменения, передавая их на сервер. Фиксации присваивается
номер, по которому внесенные изменения будут доступны в
9
дальнейшем.

10.

Существующие системы управлениями
версиями
• CVS (Concurrent Versions System, "Система Одновременных
Версий")
- одна из первых широко распространенных
свободных централизованных систем управления версиями.
• Subversion (также известная как "SVN") - свободная
централизованная система управления версиями, официально
выпущенная в 2004 году компанией CollabNet Inc. Subversion
реализует все основные функции CVS и свободна от ряда
недостатков последней. Используется многими сообществами
разработчиков открытого программного обеспечения, в их
числе: Apache, GCC, Python, Ruby, Mono, FreeBSD.
• Git - свободная распределённая система управления
версиями файлов. Проект был создан Линусом Торвальдсом
для управления разработкой ядра Linux. Проекты,
использующие Git: ядро и некот. дистрибутивы Linux, Drupal,
GNU Core Utilities, Wine, Chromium, jQuery.
10

11.

Хостинг систем управления версиями
• SourceForge (Subversion, Git, Mercurial,
Bazaar, CVS)
• Google Code (Subversion, Git и Mercurial)
• GitHub (Git)
• Codebase
• Tigris.org
11

12.

Отладка с помощью
отладочных сообщений
• Отладка программы требует полного понимания
процессов, происходящих в процессе ее выполнения.
• Одним из простейших в вместе с тем эффективных
инструментов, которые позволяют отследить и лучше
понять работу программы является журналирование
программы.
• Журналирование предполагает вывод на экран (или в
файл) информации о событиях, возникающих в
программе, и промежуточном состоянии программы,
например: факт вызова функции и данные о ее
аргументах, содержимое переменных и т.п.
12

13.

Использование отладочных сообщений
• Отладочные сообщения должны находиться в
ключевых узлах программы и позволять отследить ход ее
выполнения.
• В случае поиска дефекта необходимо размещение
дополнительных выводов, позволяющих детализировать
информацию о потенциально дефектных фрагментах
кода.
• Необходимо соблюдать баланс между количеством
выводимой информации и ее качеством, так как при
визуальном осмотре важная информация может "утонуть"
в потоке ненужных сообщений.
13

14.

Технические аспекты, связанные
с отладочными сообщениями
• Отладочные сообщения могут сами по себе содержать
ошибки.
• Вывод на экран буферизируется построчно, т.е.
сообщения лежат в буферах до тех пор, пока не
обнаружен символ '\n' (Enter – перевод каретки).
• В случае фатальной ошибки, приводящей к аварийному
завершению программы (наиболее распространена
ошибка сегментации (Segmentation Fault) отладочные
сообщения, находящиеся в буферах, не будут выведены.
• Часто бывает удобно иметь возможность оперативно
отключать и включать отладочные выводы.
14

15.

Программные отладчики
Современные
отладчики
совершенствуются. Они позволяют:
непрерывно
• прерывать выполнение программы на некоторой
строке или при достижении конкретной строки n раз, а
также при изменении некоторой переменной или
присвоении ей конкретного значения;
• возобновлять выполнение программы;
• производить трассировку программы, т.е. выполнять ее
пошагово;
15

16.

Программные отладчики (2)
• выполнять исследование данных, в частности
анализировать значения переменных в любой момент
выполнения программы;
• изменять данные, в частности значения переменных;
• отображать ход выполнения программы с привязкой к
исходным кодам;
• просматривать цепочку
содержимое стека вызовов;
вызовов
функций,
т.е.
• подключаться к выполняющейся программе;
16

17.

Стандарт оформления кода
(Code convention)
Стандарт оформления кода (стандарт кодирования,
стиль программирования) (англ. coding standards, coding
convention или programming style) – набор правил и
соглашений, используемых при написании исходного кода на
некотором языке программирования.
Наличие общего стиля программирования:
• позволяет избежать синтаксических и смысловых ошибок;
• упрощает поиск синтаксических ошибок;
• облегчает понимание и поддержание исходного кода,
написанного больше чем одним программистом.
17

18.

Классификация ошибок
1.синтаксические;
2.ошибки времени выполнения;
3.алгоритмические.
Синтаксические
ошибки,
обнаруживает
компилятор, а программисту остается только
внести изменения в текст программы и
выполнить повторную компиляцию.

19.

Ошибки времени выполнения,
(исключения – exception)
•Они обычно проявляются уже при первых запусках
программы и во время тестирования.
•При возникновении ошибки в программе, запущенной из
Delphi, среда разработки прерывает работу программы, и
на экране появляется диалоговое окно, которое содержит
сообщение об ошибке и информацию о типе (классе)
ошибки.
•После возникновения ошибки программист может
–либо прервать выполнение программы, ( Run Program Reset),
– либо продолжить ее выполнение, например, по
шагам
–(Run - Step), наблюдая результат выполнения каждой
инструкции.

20.

Отладчик
-мощное средство поиска и устранения
ошибок в программе
Отладчик позволяет
–выполнять трассировку программы,
–наблюдать значения переменных,
–контролировать выводимые программой
данные.

21.

Трассировка программы
•В случае неправильной работы программы
необходимо видеть реальный порядок
выполнения инструкций.
•Трассировка — это процесс выполнения
программы по шагам (step-by-step),
инструкция за инструкцией.
•Во время трассировки программист дает
команду: выполнить очередную инструкцию
программы.

22.

2 режима трассировки
•Step over
•Режим трассировки без захода в процедуру
выполняет трассировку только главной
процедуры, при этом трассировка
подпрограмм не выполняется, вся
подпрограмма выполняется за один шаг.
•Trace into
•В режиме трассировки с заходом в
процедуру выполняется трассировка всей
программы, т. е. по шагам выполняется не

23.

Как начать трассировку
•Из меню Run выбрать команду Step over или
Trace into.
•В результате в окне редактора кода будет
выделена первая инструкция программы
•Затем выбираем Step over (F8)или Trace
into(F7)
•После выполнения инструкции будет
выделена следующая.
•Таким образом, выбирая нужную команду из
меню Run, можно выполнить трассировку
программы

24.

Точки останова программы
•При отладке широко используется метод, который
называют методом точек останова.
• Суть метода заключается в том, что программист
помечает некоторые инструкции программы (ставит
точки останова), при достижении которых
программа приостанавливает свою работу, и
программист может
начать трассировку
или проконтролировать значения переменных.

25.

Второй способ проверки
значения переменной
•После того как программа
достигнет точки останова, в
результате чего откроется
окно редактора кода, нужно
установить курсор мыши на
имени переменной, значение
которой надо проверить.
•В окне редактора кода
появится окно подсказки, в
котором будет выведено
значение переменной (рис.
13.10).

26.

«Виртуальные машины и их
операционные системы»

27.

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

28.

Виртуальная машина
Виртуальная машина - это программа, которую вы запускаете
из своей операционной системы. Программа эмулирует
реальную машину. На виртуальные машины, как и на
реальные, можно ставить операционные системы.
Виртуальная
машина
работает
абсолютно
так
же,
как
физический компьютер, и содержит собственные виртуальные
(т.е. программные) ЦП, ОЗУ, жесткий диск и сетевую
интерфейсную карту (NIC).

29.

Применение
Виртуальные машины могут использоваться для:
• защиты информации и ограничения возможностей программ
• исследования производительности ПО или новой компьютерной
архитектуры
эмуляции различных архитектур (например, эмулятор игровой
приставки)
• вредоносного кода для управления инфицированной системой
моделирования информационных систем с клиент-серверной
архитектурой на одной ЭВМ
• тестирования и отладки системного программного обеспечения

30.

Некоторые известные виртуальные машины:
Среды языков
Операционные системы и
Автономные
программирования
гипервизоры
эмуляторы
Common Language
Runtime
Forth
Java Virtual
Icore virtual accounts
bochs
Kernel-based Virtual Machine
DOSBox
OpenVZ
Microsoft Virtual PC
Parallels Virtuozzo Containers
Parallels Workstation
User-mode Linux
QEMU
VDSmanager
VirtualBox
Virtual Iron
VMware Fusion
VM/CMS
VMware Workstation
VMware ESX
Machine
UCSD p-System

31.

Архитектура системы виртуальных машин
Архитектура системы выглядит следующим образом:
хостовая операционная система и монитор виртуальных машин
разделяют между собой права на управление аппаратными компонентами
компьютера;
монитор виртуальных машин контролирует распределение ресурсов
между запущенными виртуальными машинами, создавая для них
иллюзию непосредственного доступа к аппаратному уровню (этот
механизм называют виртуализацией);
гостевые операционные системы в пределах выделенных им ресурсов
управляют работой запущенных под их правлением приложений.

32.

Архитектура системы виртуальных машин
Гостевая операционная система — операционная система,
работающая в виртуальной машине; на одном реальном
компьютере может быть запущена одна хостовая и одна или
множество гостевых операционных систем.

33.

Виртуальные машины с эмуляцией API гостевой ОС
Обычно приложения работают в изолированном адресном
пространстве и взаимодействуют с оборудованием при помощи
интерфейса API, предоставляемого операционной системой.
Если две ОС совместимы по своим интерфейсам API
(например, Windows 98 и Windows ME), то приложения,
разработанные для одной из них, будут работать и под
управлением другой.
Если же две ОС несовместимы, необходимо обеспечивать
перехват обращений приложений к API гостевой ОС и
имитировать ее поведение средствами хостовой ОС.
При таком подходе можно установить одну операционную
систему и работать одновременно как с ее приложениями, так и
с приложениями другой ОС.

34.

Виртуальные машины с полной эмуляцией гостевой ОС
Проекты, поддерживающие технологию полной эмуляции,
работают по принципу интерпретации инструкций из системы
команд гостевой операционной системы, при этом полностью
эмулируется поведение как процессора, так и всех внешних
устройств.
То есть существует возможность эмулировать компьютер с
архитектурой Intel x86 на компьютерах с совершенно другой
архитектурой, например на рабочих станциях Mac или серверах Sun с
RISC-процессорами.

35.

Виртуальные машины с квазиэмуляцией гостевой ОС
Технология квазиэмуляции гостевой операционной системы
основана на том, что далеко не все гостевые операционные системы
нуждаются в эмуляции средствами хостовой операционной системы.
Многие из инструкций, необходимых для корректной работы
«гостевых» приложений, могут быть непосредственно адресованы
хостовой операционной системе.
Исключение составляют инструкции для управления такими
устройствами,
как
некоторыми другими.
видеокарта,
IDE-контроллер,
таймер
и

36.

Виртуальные машины и их операционные системы
Существует большое количество различных программ для
создания и управления виртуальными компьютерами. Мы
расскажем вам о трех самых популярных программах.

37.

Виртуальная машина VirtualBox
VirtualBox – виртуальная машина, на которую можно установить все
самые популярные операционные системы. VirtualBox поддерживает
работу с Windows, Linux, FreeBSD, Mac OS. Среда виртуализации
может быть установлена как для работы с операционными системами,
так и для развертывания сетевой инфраструктуры и хостинга сайтов.
С помощью VirtualBox вы сможете ознакомиться с функционалом ОС
или же в безопасном режиме протестировать программу без вреда
основной системе. Часто пользователи предпочитают устанавливать на
виртуальные
машины
современными ОС.
старые
игры,
которые
несовместимы
с

38.

VirtualBox
Тип
Гипервизор
Разработчик
Oracle
Написана на
С, C++, Python и ассемблер
Интерфейс
Qt
Операционная
система
Linux, Microsoft
Windows, macOS и Solaris
Первый выпуск
15 января 2007
Последняя версия •5.2.18 (14 августа 2018)
Лицензия
GNU GPL 2
Сайт
virtualbox.org (англ.)

39.

Виртуальная машина VMware
VMware – это наиболее известная и распространенная
виртуальная машина, как правило, используют для работы
крупные площадки или корпорации.
Виртуальная машина VMware поставляется в двух видах:
Workstation и Player, поддерживает работу с 32 и 64-битными
системами, USB 3.0, установку различных операционных
систем.
VMWare подойдет продвинутым пользователям, которые
предпочитают выполнять настройки системы вручную.

40.

VMware Workstation
Тип
Виртуальная машина
Разработчик
VMware
Написана на
С, C++
ОС
Windows, Linux
Первый выпуск
1999
Аппаратная
платформа
x86-64
Последняя версия
•14.1.2 build-8497320
(21 мая 2018)
Состояние
активное
Лицензия
проприетарное программное
обеспечение
Сайт
vmware.com

41.

Виртуальная машина Microsoft Virtual PC
Microsoft Virtual PC – это еще один популярный эмулятор
виртуальных машин.
Программа хорошо совместима со всеми версиями OS
Windows.
Обладает широким функционалом и удобным интерфейсом,
но у нее есть один большой недостаток – она работает только
с операционными системами Windows.
На ней нельзя запустить Linux или Mac OS.

42.

Virtual PC
Тип
Сервер виртуализации
Разработчик
Microsoft
Операционная
система
Windows
Последняя версия
6.1.7600.16393 (Windows),
7.0.3 (Mac)
(14 февраля 2011(Windows),
14 августа 2007 (Mac))
Лицензия
Бесплатное программное
обеспечение
Сайт
microsoft.com

43.

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

44.

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

45.

Недостатки виртуальных машин
Несмотря на то, что большая часть недостатков виртуальных
машин разрешима, нельзя не упомянуть о них:
• обеспечение единовременной работы нескольких виртуальных
машин
потребует
достаточного
количества
аппаратных
мощностей;
• в зависимости от используемого решения, операционная
система виртуальной машины может работать медленнее, чем
на "чистом" аналогичном аппаратном обеспечении;
• различные
платформы
виртуализации
не
поддерживают
виртуализацию всего аппаратного обеспечения и интерфейсов.

46.

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