дозволяє при тестуванні приділити увагу саме цим частинам. Для проведення інспектування учасники групи повинні пройти ретельну підготовку. За часом процес інспектування повинен займати не більше двох годин і зосереджуватися тільки на виявленні дефектів і невідповідностей вимогам.
. Автоматичний статичний аналіз програм
Для сканування вихідного тексту програми та виявлення в ньому можливих помилок і суперечностей використовуються такі інструментальні програмні засоби як статичні аналізатори програм. Метою автоматичного статичного аналізу є залучення уваги перевіряючого до аномалій в програмі, наприклад до змінних, які використовуються без ініціалізації або зовсім не використовуються, або до даних, значення яких перевищують заданий, і т.п. Статичний аналіз коду (англ. static code analysis) - аналіз програмного забезпечення, вироблений (на відміну від динамічного аналізу) без реального виконання досліджуваних програм. У більшості випадків аналіз проводиться над будь-якої версією вихідного коду, хоча іноді аналізу піддається небудь вид об'єктного коду. При статичному аналізі здійснюється перевірка синтаксису, статичної семантики і стилю кодування програм, а також деякі інші супутні аналізу дії. Залежно від використовуваного інструменту глибина аналізу може варіюватися від визначення поведінки окремих операторів до аналізу, що включає весь наявний вихідний код. Способи використання отриманої в ході аналізу інформації також різні - від виявлення місць, можливо з помилками (утиліти типу lint), до формальних методів, що дозволяють математично довести будь властивості програми (наприклад, відповідність поведінки специфікації).
Принципи статичного аналізу.
Більшість компіляторів (наприклад, GNU C Compiler) виводять на екран «попередження <#« justify" > Типи помилок, що виявляються статичними аналізаторами.
· Невизначене поведінка - неініціалізовані змінні, звернення до NULL-вказівниками. Про найпростіших випадках сигналізують і компілятори.
· Порушення алгоритму користування бібліотекою. Наприклад, для кожного fopen потрібен fclose. І якщо файлова змінна втрачається раніше, ніж файл закривається, аналізатор може повідомити про помилку.
· Типові сценарії, що призводять до Недокументовані повєден. Стандартна бібліотека Сі відома великою кількістю невдалих технічних рішень. Деякі функції, наприклад, gets, в принципі небезпечні.
· Переповнення буфера - коли комп'ютерна програма записує дані за межами виділеного в пам'яті буфера.
· Помилки в повторюваному коді. Багато програм виконують кілька разів одне і те ж з різними аргументами. Зазвичай повторювані фрагменти не пишуть з нуля, а розмножують і виправляють.
· Помилки форматних рядків - у функціях зразок printf можуть бути помилки з невідповідністю рядка формату реальному типом параметрів.
· Інші помилки - багато функцій зі стандартних бібліотек не мають побічного ефекту, і виклик їх як процедур не має сенсу.
Статичний аналіз складається з декількох етапів.
. Аналіз потоку керування. Ідентифікація та виділення циклів, їх точок входу і виходу, виявлення невикористаного коду.
. Аналіз використання даних. Перевірка змінних в прог...