Similar presentations:
Исследование программного кода
1.
Кафедра КБ-4 «Автоматизированные системы управления»Исследование программного кода
Для курса 3 группы УУБВ-01-16
По направлению подготовки
09.03.02 «Информационные системы и технологии»
Москва, 2018
1
2.
Кафедра КБ-4 «Автоматизированные системы управления»Содержание:
1. Базовые понятия и определения (Лекция 1)…………….4
2. Статический анализ (Лекция 2-3)……….………..……….34
3. Обнаружение нефункциональных ошибок в
последовательных программах (Лекция 3)…………....88
4. Анализ отказоустойчивости программного кода(Лекция
5-6)..……………….………………………..142
Москва, 2018
2
3.
Кафедра КБ-4 «Автоматизированные системы управления»Кашкин
Евгений
Владимирович
кандидат технических наук,
доцент кафедры «Информатика»,
доцент кафедры КБ-4
«Автоматизированные системы
управления»
[email protected]
Москва, 2018
3
4.
Базовые понятия и определенияТема №1
«Базовые понятия и определения »
Цели занятия
• Качество ПО;
• Функциональность, надежность, удобство использования,
переносимость, удобство сопровождения, эффективность;
• Задачи обеспечения качества;
• Методы анализа ПО: ручные, динамические, статические,
гибридные;
• Надежность ПО;
• Ошибки в ПО;
Москва, 2018
4
5.
Базовые понятия и определения5
6.
Базовые понятия и определения6
7.
Базовые понятия и определения7
8.
Базовые понятия и определения8
9.
Базовые понятия и определения9
10.
Базовые понятия и определения10
11.
Базовые понятия и определения11
12.
Базовые понятия и определения12
13.
Базовые понятия и определения13
14.
Базовые понятия и определения14
15.
Базовые понятия и определения15
16.
Базовые понятия и определения16
17.
Базовые понятия и определения17
18.
Базовые понятия и определения18
19.
Базовые понятия и определения19
20.
Базовые понятия и определения20
21.
Базовые понятия и определения21
22.
Базовые понятия и определения22
23.
Базовые понятия и определения23
24.
Базовые понятия и определения24
25.
Базовые понятия и определения25
26.
Базовые понятия и определения26
27.
Базовые понятия и определения27
28.
Базовые понятия и определения28
29.
Базовые понятия и определения29
30.
Базовые понятия и определения30
31.
Базовые понятия и определения31
32.
Базовые понятия и определенияВыводы по теме 1
В рамках данной темы были получены
знания в области надежности ПО.
Рассмотрены составляющие качества ПО, а
именно функциональность, надежность,
удобство использования, переносимость,
удобство сопровождения, эффективность.
Выявлены методы анализа ПО: ручной,
статический, динамический.
32
33.
Базовые понятия и определенияВопросы для
самостоятельного изучения:
1. Требования к надежности программного обеспечения№
2. Эффективность программного обеспечения№
3. Причины ненадежности исполняемого кода.
33
34.
Статический анализТема №2
«Статический анализ»
Цели занятия
Основные задачи и принципы статического анализа;
Классификация программных ошибок;
Виды статического анализа;
RD, AE, VBE, LV, CP, UD – анализ кода;
Алгоритмы анализа потока данных;
Эффективность статического анализа;
34
35.
Статический анализ35
36.
Статический анализ36
37.
Статический анализ37
38.
Статический анализ38
39.
Статический анализ39
40.
Статический анализ40
41.
Статический анализ41
42.
Статический анализ42
43.
Статический анализ43
44.
Статический анализ44
45.
Статический анализ45
46.
Статический анализ46
47.
Статический анализ47
48.
Статический анализ48
49.
Статический анализ49
50.
Статический анализ50
51.
Статический анализ51
52.
Статический анализ52
53.
Статический анализ53
54.
Статический анализ54
55.
Статический анализ55
56.
Статический анализ56
57.
Статический анализ57
58.
Статический анализ58
59.
Статический анализ59
60.
Статический анализ60
61.
Статический анализ61
62.
Статический анализ62
63.
Статический анализ63
64.
Статический анализ64
65.
Статический анализ65
66.
Статический анализ66
67.
Статический анализ67
68.
Статический анализ68
69.
Статический анализ69
70.
Статический анализ70
71.
Статический анализ71
72.
Статический анализ72
73.
Статический анализ73
74.
Статический анализ74
75.
Статический анализ75
76.
Статический анализ76
77.
Статический анализ77
78.
Статический анализ78
79.
Статический анализ79
80.
Статический анализ80
81.
Статический анализ81
82.
Статический анализ82
83.
Статический анализ83
84.
Статический анализ84
85.
Статический анализ85
86.
Статический анализВыводы по теме 2
В рамках данной темы были получены
знания в области статического анализа
программного кода. Рассмотрены вопросы
различных подходов при анализе
последовательного кода. Даны примеры
решения системы дискретных уравнений в
рамках RD-анализа
86
87.
Статический анализВопросы для
самостоятельного изучения:
1. Обнаружение функциональных и нефункциональных
ошибок;
2. Теория решеток;
3. Алгоритмы вычисления LFP;
4. Определение недостижимых переходов.
87
88.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
Тема №3
«Обнаружение нефункциональных ошибок в последовательных
программах»
Классификация программных дефектов (RES, LEAK, BUF, INI, IO);
Абстрактное синтаксическое дерево;
Абстрактный семантический граф;
Граф зависимостей по данным;
Граф потока управления;
Анализ программ на основе состояний;
Интервальный анализ;
Анализ указателей;
Ресурсный анализ.
88
89.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
89
90.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
90
91.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
91
92.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
92
93.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
93
94.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
94
95.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
95
96.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
96
97.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
97
98.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
98
99.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
99
100.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
10
101.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
10
102.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
10
103.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
10
104.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
10
105.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
10
106.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
10
107.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
10
108.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
10
109.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
10
110.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
11
111.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
11
112.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
11
113.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
11
114.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
11
115.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
11
116.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
11
117.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
11
118.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
11
119.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
11
120.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
12
121.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
12
122.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
12
123.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
12
124.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
12
125.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
12
126.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
12
127.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
12
128.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
12
129.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
12
130.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
13
131.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
13
132.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
13
133.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
13
134.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
13
135.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
13
136.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
13
137.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
13
138.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
13
139.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
13
140.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
Выводы по теме 3
В рамках данной темы были получены
знания в области обнаружения
программных дефектов различными
методами. Приведены примеры работы с
абстрактным синтаксическим деревом,
абстрактным семантическим графом и др.
Рассмотрены ключевые вопросы анализа
программ на основе состояний.
14
141.
Обнаружение нефункциональных ошибок в последовательныхпрограммах
Вопросы для
самостоятельного изучения:
1.
2.
3.
4.
Программные средства для статического анализа;
Способы снижения ресурсоемкости;
Использование абстрактной интерпретации;
Анализ программ на основе шаблонов.
14
142.
Анализ отказоустойчивости программного кодаТема №4
«Анализ отказоустойчивости программного кода»
Показатели надежности;
Жизненный цикл программной ошибки;
Модель Бернулли;
Модель Миллса;
Модель Шумана;
Модель Джелинского-Моранды;
Ошибки на путях выполнения программы.
14
143.
Анализ отказоустойчивости программного кода14
144.
Анализ отказоустойчивости программного кода14
145.
Анализ отказоустойчивости программного кода14
146.
Анализ отказоустойчивости программного кода14
147.
Анализ отказоустойчивости программного кода14
148.
Анализ отказоустойчивости программного кода14
149.
Анализ отказоустойчивости программного кода14
150.
Анализ отказоустойчивости программного кода15
151.
Анализ отказоустойчивости программного кода15
152.
Анализ отказоустойчивости программного кода15
153.
Анализ отказоустойчивости программного кода15
154.
Анализ отказоустойчивости программного кода15
155.
Анализ отказоустойчивости программного кода15
156.
Анализ отказоустойчивости программного кода15
157.
Анализ отказоустойчивости программного кода15
158.
Анализ отказоустойчивости программного кода15
159.
Анализ отказоустойчивости программного кода15
160.
Анализ отказоустойчивости программного кода16
161.
Анализ отказоустойчивости программного кода16
162.
Анализ отказоустойчивости программного кода16
163.
Анализ отказоустойчивости программного кода16
164.
Анализ отказоустойчивости программного кода16
165.
Анализ отказоустойчивости программного кода16
166.
Анализ отказоустойчивости программного кода16
167.
Анализ отказоустойчивости программного кода16
168.
Анализ отказоустойчивости программного кода16
169.
Анализ отказоустойчивости программного кода16
170.
Анализ отказоустойчивости программного кода17
171.
Анализ отказоустойчивости программного кода17
172.
Анализ отказоустойчивости программного кода17
173.
Анализ отказоустойчивости программного кода17
174.
Анализ отказоустойчивости программного кода17
175.
Анализ отказоустойчивости программного кода17
176.
Анализ отказоустойчивости программного кода17
177.
Анализ отказоустойчивости программного кода17
178.
Анализ отказоустойчивости программного кода17
179.
Анализ отказоустойчивости программного кода17
180.
Анализ отказоустойчивости программного кода18
181.
Анализ отказоустойчивости программного кода18
182.
Анализ отказоустойчивости программного кода18
183.
Анализ отказоустойчивости программного кода18
184.
Анализ отказоустойчивости программного кода18
185.
Анализ отказоустойчивости программного кода18
186.
Анализ отказоустойчивости программного кода18
187.
Анализ отказоустойчивости программного кодаВыводы по теме 4
В рамках данной темы были получены знания в
области оценки показателей надежности работы
программного кода. Рассмотрен жизненный цикл
программной ошибки и особенности каждого этапа
этого жизненного цикла. Даны базовые знания в
области различный моделей оценки надежности
программного кода.
187
188.
Анализ отказоустойчивости программного кодаВопросы для
самостоятельного изучения:
1.
2.
3.
4.
5.
6.
Методы оценки на основе моделей сложности;
Архитектурные методы анализа;
Свойства динамических методов анализа кода;
Цепи Маркова;
Римская модель;
Эмпирические методы динамического анализа кода.
18
189.
Кафедра КБ-4 «Автоматизированные системы управления»189