Оцінка якості програмних комплексів
Якість комплексу програм на кожному етапі системної налагодження доцільно оцінювати групами показників, що характеризують його з точки зору наявності помилок, а також трудомісткості їх виявлення та усунення.
Розглянемо деякі з можливих показників якості за групами, що використовуються при системній налагодженні. До першої групи належать показники складності і надмірності; до другої - показник фізичної реалізованості комплексу програм; до третьої - показники часу функціонування, функціональної коректності, узгодженості з управління та узгодженості за інформацією; до четвертої - показники, що характеризують надійність комплексу програм, ефективність засобів відновлення, ефективність системи захисту; до п'ятої - показник ефективності комплексу програм, що характеризує витрати на проектування і налагодження комплексу програм.
Слід зазначити, що хоча основне значення системної налагодження полягає в перевірці правильності роботи всього комплексу програм, починати її треба з перевірки роботи кожного модуля. Тому виділяють такі рівні перевірок: одиничний модуль, підсистему, внутрішній інтерфейс, зовнішній інтерфейс, комплекс програм. Рівень підсистем доцільно виділяти при перевірці складних систем програмного забезпечення. Звичайно в окремі підсистеми групуються модулі за функціональною ознакою.
Показники якості оцінюються як для всього комплексу програм, так і для його частин (окремих програмних модулів та їх сукупностей, які підлягають спільної системної налагодженні відповідно до плану налагоджувальних робіт) і є векторними величинами.
Серед кількісних оцінок наведених показників якості найбільш широко використовуваним є показник складності.
Складність комплексу програм включає структурну і статистичну складність.
Для аналізу структурної складності найважливіше значення має ступінь взаємозв'язку модулів. При цьому структурна складність може бути оцінена:
а) за ступенем відмінності структури від деревоподібної → С = А - G, де G - число зв'язків, що утворюють деревовидну структуру; А - реальне число зв'язків між модулями комплексу;
б) складністю зв'язків з управління
де - Керуючі зв'язку i-го модуля, які викликають його для виконання; - Зв'язки, за допомогою яких i-й модуль викликає інші модулі; - Складність керуючих зв'язків i-го модуля;
в) складністю зв'язків за інформацією:
де - Кількість імен змінних на вході i-го модуля, необхідних для його нормального функціонування; - Кількість імен змінних, що готуються i-м модулем; Ф i-складність інформаційних зв'язків i-го модуля.
Для оцінки статистичної складності комплексу програм використовується кількість складових його програмних модулів N.
Складність програмних модулів також включає поняття структурної та статистичної складності.
Структурна складність програмних модулів, як правило, визначається на підставі обліку кількості маршрутів, виконуваних програмою, і числа умовних операторів:
де - Кількість умов, що визначають i-й маршрут j-го модуля; М j - кількість маршрутів j-го модуля.
Статистична складність програмних модулів звичайно визначається шляхом підрахунку кількості операторів N 1 j і операндів N 2 j - N cj = N 1 j + N 2 j. Таким чином показник складності можна представити вектором
Компоненти вектора складності служать орієнтирами при плануванні налагоджувальних робіт і порівнянні різних версій комплексу програм.
Показник надмірності характеризує наявність нездійсненних структурних елементів у комплексі програм і його програмних модулях.
Надмірність комплексу програм визначається кількістю нездійсненних програмних модулів І 1 і кількістю невикористовуваних інформаційних елементів І 2.
Надмірність програмних модулів визначається кількістю зайвих операторів і тупиків в програмах {І 3 j}; тут j - індекс програмного модуля.
Показник надмірності представляється вектором
Показник фізичної реалізованості характеризує ресурси обчислювальної техніки по пам'яті, необхідні для функціонування комплексу програм. Він включає: обсяги оперативної пам'яті, необхідні комплексу програм при різних режимах його роботи {V m}; коректність виклику керуючої програмою сукупностей програмних модулів, що відповідають різним режимам роботи {Р т}, обсяги зовнішньої пам'яті по різним типам запам'ятовуючих пристроїв {W k}.
Коректність виклику в оперативну пам'ять групи модулів, відповідних m-му режиму роботи комплексу програм, може бути визначена на основі аналізу специфікацій, а відповідні компоненти фізичної реалізованості представлені булевими величинами:
Таким чином, показник фізичної реалізованості є вектор:
Функціональна коректність комплексу програм є вектор
Компоненти якого характеризують коректність програмної реалізації функцій комплексу програм щодо вимог специфікацій. Тут Q - кількість функцій, виконуваних комплексом відповідно до системними специфікаціями. Компоненти вектора можуть бути представлені булевими величинами і визначаються наступним чином:
Функціональна коректність, окремих програмних модулів визначається аналогічним чином, відповідні компоненти можуть бути включені в показник функціональної коректності.
Показник часу функціонування комплексу програм включає середні часи функціонування основних режимів роботи комплексу {Т т} і середні часи функціонування окремих програмних модулів та їх сукупностей
Узгодженість з управління включає узгодженість з управління комплексу програм і узгодженість з управління його програмних модулів.
Узгодженість з управління комплексу програм визначає коректність реалізації основних послідовностей програмних модулів щодо вимог специфікацій і коректність безлічі сполучень між парами модулів. Вона може бути охарактеризована булевими величинами виходячи з таких умов:
або
Помилки в сполученнях модулів - y j - зазвичай зводяться до наступних: відсутній виклик необхідного модуля; викликається модуль, що не підлягає виконанню; управління передається в точку, не призначену для повернення управління.
Узгодженість з управління програмних модулів може бути оцінена відношенням числа перевірених маршрутів до загального числа маршрутів модуля.
Узгодженість за інформацією включає узгодженість за інформацією комплексу програм і узгодженість за інформацією програмних модулів.
Узгодженість за інформацією комплексу програм визначає коректність зв'язків між програмними модулями і може бути оцінена відношенням числа перевірених маршрутів обробки інформації до загальної кількості маршрутів, які реалізують інформаційну зв'язок по k-му інформаційному елементу.
Узгодженість за інформацією програмних модулів визначає коректність інформаційних зв'язків по внутрішнім інформаційним елементам і оцінюється аналогічно узгодженості за інформацією комплексу програм.
Показник, що характеризує надійність комплексу програм, може бути описаний вектором , Компонентами якого є: О - загальна кількість виявлених помилок, λ - інтенсивність появи невиявлених помилок, Р - ймовірність безвідмовної роботи протягом заданого інтервалу часу. Точне визначення кількості помилок в програмі і ймовірностей появи помилок різних типів прямими методами вимірювань отримати неможливо, існують лише непрямі шляхи статистичної оцінки цих величин у процесі налагодження та дослідної експлуатації комплексу програм. Ці оцінки засновані на математичних моделях, які передбачають жорстку кореляцію наведених вище компонентів вектора надійності. Надійностних оцінки добре узгоджуються зі статистикою тестування програм і використовуються для передбачення ймовірності безвідмовної роботи комплексу програм заданий проміжок часу:
Показник, що характеризує ефективність системи захисту, є вектор
компонентами якого є: Р н.д - вірогідність несанкціонованого доступу до модулів та інформаційних елементів комплексу програм; З н.д - втрати від "злому" системи захисту.
Показник, що характеризує ефективність засобів відновлення, є вектор
компонентами якого є До г - коефіцієнт готовності системи; σ - ймовірність збереження інформації в системі; T р.з - середній час рішення задачі; P р.з - імовірність успішного вирішення завдання. Перераховані компоненти використовуються для оцінки ефективності оперативного (До г, σ) та відновного (Т р.з, Р р.з) резервування програмних модулів і інформаційних масивів.
Показник ефективності комплексу програм, отриманого в процесі системної налагодження, є вектор
Компонентами якого є: З пр - витрати на проектування комплексу програм; З П.О - витрати на програмну налагодження; З С.О - витрати на системну налагодження. У рамках розробленої методології витрати на проведення системної налагодження визначаться виразом
де С j - витрати на проведення j-го етапу системної налагодження; З н.о (Р н.о) - втрати від невиявлених помилок; Р н.о - імовірність появи невиявленої помилки після проведення системної налагодження.
Рис. 1
Таким чином, якість комплексу програм, що отримується у процесі системної налагодження, може бути описано сукупністю розглянутих вище векторних показників.
Кожен етап системної налагодження (крім аналізу ефективності комплексу програм) з використанням наведених груп показників якості може бути представлений як ітераційний процес, що складається на кожній ітерації з оцінки фактичних значень показників якості, порівняння їх з вимогами специфікацій, вибору дій по встановленню причин виявлених невідповідностей, їх локалізації та усунення (рис. 1).
Оцінка значень показників якості здійснюється на підставі аналізу тексту комплексу програм і його різних графових моделей і на підставі результатів тестування.
Специфікації на комплекс програм служать основним еталоном для визначення достатності проведених налагоджувальних робіт і повинні містити необхідну інформацію про необхідні значеннях показників якості, які необхідно забезпечити в процесі системної налагодження. У специфікаціях на комплекс програм повинні бути сформульовані наступні вимоги: допустимі значення компонентів векторів складності і надмірності, характеристики виконуваних функцій у термінах їх входів і виходів, максимально допустимий обсяг оперативної пам'яті, який може бути відведений досліджуваного комплексу в процесі його функціонування, максимально допустимі обсяги зовнішньої пам'яті для розміщення інформаційних елементів комплексу, максимально допустимі часів функціонування комплексу програм та його структурних елементів, основні послідовності реалізації програмних модулів, характеристики зв'язків за інформацією, характеристики надійності, системи захисту і засобів відновлення, ефективність комплексу програм. Невідповідність будь-якого компоненту показників якості вимогам специфікацій є або наслідком недоліків проектування або програмування, або наслідком наявності помилок.
У процесі дослідження можливих варіантів підвищення значень показників якості комплексу програм може бути виявлено, що жоден з них не дозволяє забезпечити відповідність показника вимогам специфікацій. У такому випадку слід провести коригування вимог специфікацій з урахуванням реальних можливостей вирішення досліджуваної задачі.
На підставі порівняння значень компонентів і показників якості з вимогами специфікацій може бути оцінена загальна налагодженість комплексу програм:
де n i - кількість компонентів i-го показника якості; I - кількість розглянутих показників якості;
Вибір дій щодо локалізації та усунення невідповідностей вимогам специфікацій полягає у виборі багатьох показників якості, для яких буде проведена локалізація й усунення відповідних помилок, а також вибір для цієї множини послідовності дій, яка забезпечить локалізацію та усунення помилок з мінімальними витратами часу і коштів.
Після виконання дій щодо локалізації та усунення невідповідностей значень показників якості вимогам специфікацій здійснюється перехід до нової ітерації системної налагодження з досліджуваної групи показників якості.
Таким чином, процес виявлення помилок в комплексі програм (у тому числі і складних алгоритмічних) з використанням системи показників якості може бути достатньою мірою формалізований, а його основні операції - автоматизовані.
Відповідно до вище викладеним - процес налагодження складних комплексів програм повинен включати таку послідовність дій.
1. Програмна налагодження: використання можливостей трансляторів і компіляторів для автоматичного виявлення синтаксичних та інших програмних помилок.
2. Складання плану налагодження (вибір стратегії).
3. Автономна налагодження програмних модулів відповідно до обраної стратегії налагоджувальних робіт.
3.1. Перевірка фізичної реалізованості досліджуваної сукупності програмних модулів:
а) оцінка обсягів оперативної і зовнішньої пам'яті, необхідної для розміщення комплексу програм (фізичної реалізованості);
б) дослідження можливостей скорочення обсягу оперативної пам'яті на розміщення комплексу програм при перевищенні ним допустимої величини (перерозподіл пам'яті комплексу програм за рахунок використання загальних областей для розміщення інформаційних елементів, скорочення блоків обміну із зовнішньою пам'яттю, організація оверлейной структури і т.п.);
в) перевірка реєнтерабельним (самовосстанавливаемость) програмних модулів шляхом перевірки отримання стійких результатів при багаторазовому до них обігу; г) локалізація і виправлення помилок, пов'язаних з використанням ресурсів обчислювальної системи по пам'яті.
3.2. Перевірка часу функціонування:
а) оцінка часу функціонування методами тестування;
б) дослідження можливостей скорочення часу функціонування при перевищенні допустимих значень (розпаралелювання процесу обчислень, організація паралельного виконання операцій вводу - виводу і обчислювальних операцій тощо);
в) локалізація й усунення виявлених помилок.
3.3. Перевірка правильності реалізації основних функцій, сполучень програмних модулів, інформаційних зв'язків:
а) визначення маршрутів обробки інформації, що характеризують основні функції, сполучення, інформаційні зв'язки;
б) генерація тестових даних для отриманого набору маршрутів;
в) перевірка правильності виконання маршрутів за результатами тестування та оцінка компонентів функціональної коректності, узгодженості з управління та інформації;
г) локалізація й усунення виявлених помилок.
4. Зв'язкова (комплексна) налагодження автономно налагоджених сукупностей програмних модулів та всього комплексу програм.
4.1. Перевірка фізичної реалізованості.
4.2. Перевірка часу функціонування.
4.3. Перевірка правильності реалізації основних функцій, сполучень, інформаційних зв'язків.
5. Перевірка вимог щодо забезпечення захисту від несанкціонованого доступу (тести, засновані на спробах "злому" захисту), щодо забезпечення збереження програмних модулів і інформаційних масивів (тестування засобів відновлення), щодо забезпечення надійностних характеристик (статистичне тестування); перевірка поведінки комплексу програм при несприятливих зовнішніх умовах (тестування на великих обсягах вихідних даних,-при пікових навантаженнях і т.п.) і недостовірних вихідних даних.
6. Оцінка ефективності комплексу програм за витратами на його проектування і налагодження. Оформлення програмної документації.
У програмну документацію включаються:
1) специфікація, що визначає склад комплексу програм і документації;
2) загальний опис комплексу програм, що містить відомості про призначення програми, області застосування, використовуваних методах, обмеження на застосування;
3) керівництво програміста, що містить опис використовуваних засобів програмування (включаючи відомості про використовуваної версії ОС) і вимоги до конфігурації технічних засобів, опис інтерфейсів, імен програмних модулів, логічної та фізичної структури бази даних, опис використовуваних пакетів прикладних програм та засобів діагностики і т. п.;
4) керівництво оператора, що містить опис зовнішніх носіїв, правила організації програм на зовнішніх носіях, склад повідомлень операторові, опис вхідного потоку завдань тощо;
5) текст комплексу програм, що містить тексти програмних модулів з коментарями, дані контрольного прикладу, керуючі оператори підготовки і запуску контрольного прикладу, значення основних показників якості комплексу програм;
6) опис контрольного прикладу, що містить опис перевірених функцій і параметрів, вхідної інформації, результати прогону за даними контрольного прикладу, керуючих операторів підготовки і запуску контрольного прикладу.
Після завершення налагодження комплекс програм і його програмна документація передаються в експлуатацію.