Методи проектування надійного програмного забезпечення
Попередження помилок — кращий шлях підвищення надійності програмного забезпечення. Для його реалізації була розроблена методика проектування систем управління підприємствами, відповідна спіральній моделі життєвого циклу ПО. Методика передбачає послідовне пониження складності на всіх етапах аналізу об'єкту. При декомпозиції були виділені рівні управління системи, потім підсистеми, комплекси… Читати ще >
Методи проектування надійного програмного забезпечення (реферат, курсова, диплом, контрольна)
http://www..ru/
http://www..ru/
Вступ
Надiйнiсть програмних засобiв — це їх властивiсть, яка сприяє виконанню заданих функцiй при збереженнi в часi значення встановлених експлуатацiйних показникiв в заданих межах, що вiдповiдають заданим режимам i умовам використання, супроводу i вiдновлення цих засобiв.
Теоретичною основою методiв аналiзу надiйностi програмних засобiв є теорiя надiйностi технiчних систем. Однак, спроби механiчного перенесення основних положень цiєї теорiї стосовно ПЗ виявились неправомiрнимивнаслiдок ряду специфiчних особливостей цих засобiв. Надiйнiсть ПЗ визначається їх безвiдмовнiстю i вiдновлюванiстю.
Безвiдмовнiсть ПЗ — це властивiсть зберiгати працездатнiсть при їх використаннi в процесi обробки iнформацiї на ЕОМ. Безвiдмовнiсть ПЗ можна оцiнити ймовiрнiстю їх роботи без вiдмов при певних умовах зовнiшнього середовища протягом заданого перiоду спостережень. Вiдмова — це подiя, яка полягає в порушеннi працездатностi ПЗ. Пiд певними умовамизовнiшнього середовища вважається сукупнiсть вхiдних даних i стан обчислювальної системи. Заданий перiод спостережень вiдповiдає, як правило, необхiдному iнтервалу часу для виконання.
Специфiка створення ПЗ полягає в тому, що в процесi їх вiдладки практично неможливо виявити i лiквiдувати всi iснуючi в них помилки. Прихованi помилки можуть викликати невiрне функцiонування ПЗ при певних спiввiдношеннях вхiдних даних. Тому наявнiсть помилки в ПЗ є головним фактором порушення нормальних умов їх функцiонування. З точки зору технологiї розробки ПЗ помилки можна роздiлити на наступнi типи:
* програмнi, викликанi неправильним записом на мовi програмуванняі помилками трансляцiї;
* алгоритмiчнi, пов’язанi з неповним формуванням необхiдних умоврозв’язку i некоректною постановкою задач;
* системнi, обумовленi вiдхиленням функцiонування ПЗ в обчислювальнiй системi i вiдхиленням характеристик взаємодiючих об'єктiввiд передбачуваних при проектуваннi.
Надiйнiсть ПЗ i апаратури визначається в основному двома факторами — надiйнiстю компонент i помилками, допущеними при проектуваннi. Але динамiка виявлення рiзного роду помилок в обидвох випадках суттєво вiдрiзняється. Якщо для апаратури з часом визначальним стає перший фактор, то для ПЗ навпаки — другий. Безвiдмовнiсть апаратури по сутi залежить вiд часу функцiонування. А залежнiсть надiйностi ПЗ вiд часу тiльки поверхнева. Насправдi частота вiдмов ПЗ визначається тiльки характером вхiдних даних. Надiйнiсть ПЗ iстотно вiдрiзняється вiд надiйностi апаратних засобiв. Вiдмови ПЗ — це, як правило, наслiдки помилок проектування. Розроблено чимало методів та засобів, для розроблення технологій та стандартів забезпечення якості програмних комплексів залучені кращі фахівці, але якість ПЗ, як і раніше, залежить від знань та досвіду розробників. Наразі процес оцінювання, прогнозування та досягнення необхідного рівня якості ПЗ є недетермінованим, оскільки відсутні теорія та методологія в галузі забезпечення якості ПЗ, яка б при використанні однакових технологій розроблення із застосуванням однакових стандартів гарантувала створення однаково якісного ПЗ з відповідними витратами та в межах заданого часу. Програмні проекти часто зазнають невдач через помилки на ранніх етапах життєвого циклу ПЗ, тому актуальною задачею є оцінювання, прогнозування та забезпечення необхідного рівня якості розроблюваного ПЗ вже на етапі проектування, оскільки саме оцінювання і прогнозування рівня якості розроблюваного за проектом ПЗ дасть можливість забезпечити якість розроблюваного ПЗ, а також зменшити витрати на розроблення ПЗ, а то й уникнути ряду катастроф та інцидентів, причини яких були внесені на етапах формулювання вимог та проектування.
Класифікація моделей надійності ПЗ
Модель надійності ПЗ — це математична модель, побудована для оцінювання залежності надійності ПЗ від деяких певних параметрів. Значення таких параметрів або відомі, або можуть бути виміряні під час спостережень або експериментального дослідження процесу функціонування ПЗ.
Термін «модель надійності ПЗ» може бути також використаний застосовно до математичної залежності між певними параметрами, які хоча й мають відношення до оцінки надійності ПЗ, але не містять її характеристик в явному вигляді. Наприклад, поведінка деякої гілки ПЗ на підмножині наборів вхідних даних, за допомогою яких ця гілка контролюється, істотно пов’язана з надійністю ПЗ, однак характеристики цієї поведінки можуть бути оцінені незалежно від оцінки самої надійності. Іншим параметром є частота помилок, яка дозволяє оцінити якість систем реального часу і в той же час одержувати лише непряму інформацію відносно надійності ПЗ.
Емпірична модель
Одним з видів моделі надійності ПЗ, яка заслуговує особливої уваги є так звана феноменологічна або емпірична модель. При розробленні таких моделей вважається, що зв’язок між надійністю та іншими параметрами — статичний. За допомогою таких моделей слід намагатись оцінити кількісно ті характеристики ПЗ, які свідчать про високу або низьку його надійність. Наприклад, параметр «складність ПЗ» характеризує ступінь зменшення рівня його надійності, адже складність ПЗ завжди призводить до помилок.
Моделі надійності програмного забезпечення (МНПЗ) поділяються на аналітичні та емпіричні. Аналітичні моделі дають змогу розрахувати кількісні показники надійності, базуючись на даних про поведінку ПЗ в процесі тестування (моделі вимірювання та оцінювання). Емпіричні моделі базуються на аналізі структурних особливостей програм. Розвиток емпіричних моделей дозволяє виявляти взаємозв'язок між складністю ПЗ та його надійністю. Ці моделі можна використовувати на етапі проектування ПЗ, коли виконане розбиття на модулі та відома структура ПЗ. Класифікація моделей надійності ПЗ наведена на рис. 1.
Рис. 1. Класифікація моделей надійності програмного забезпечення
Модель складності ПЗ
Розглянемо моделі складності програмного забезпечення Основні види складності ПЗ наведено на рис. 2.
Рис. 2. Основні види складності програмного забезпечення
Емпіричні правила для оцінки складності алгоритму: асимптотична складність — описується час виконання алгоритму з точки зору кількості основних кроків; якщо час виконання є сумою мультиплікативних факторів, то враховується один з більшою швидкістю зростання; якщо останні терми є добутком, то будь-які мультиплікативні фактори не враховуються; використовується нотація big O для верхньої границі асимптотичного зростання функції. Класи складності алгоритмів (в порядку зростання складності): O (1) — постійна складність; O (log n) — логарифмічна складність; O (n) — лінійна складність; O (n log n) — логарифмічно-лінійна складність; O (nc), де c-const — поліноміальна складність; O (c· n), де c-const, яка зростає як степінь на основі розміру входів — експоненційна складність. Моделі складності ПЗ засновані на гіпотезі, що рівень безпомилковості ПЗ може бути спрогнозований за допомогою показників (метрик) складності ПЗ. Детально метрики складності та їх ефективність розглядались автором у. В якості аргументів моделей використовуються метрики складності ПЗ. Класифікацію моделей визначення складності ПЗ можна представити у наступному вигляді (рис.3).
Найбільш відомою апріорною моделлю складності ПЗ є модель Холстеда (Halstead). До простих статистичних моделей складності належить феноменологічна модель фірми TRW. До недоліків багатофакторних моделей належить можливість одержання ефекту «прокляття розмірності» при великій кількості факторів або нелінійному вигляді апроксимуючого полінома. Емпіричні (імітаційні) моделі базуються на аналізі структурних особливостей програмного забезпечення. Такі моделі часто не дають кінцевих результатів показників складності, якості та надійності, але їх використання на етапі проектування ПЗ корисне для прогнозування потрібних ресурсів тестування, уточнення планових термінів заверешння проекту і т.і. Для складних модулів та для великих багатомодульних програм складається імітаційна модель, програма якої «засівається» помилками і тестується за випадковими входами. Недоліками такої моделі є висока вартість методу, оскільки він вимагає додаткових витрат на складання імітаційної моделі, і наближений характер одержаних показників. Динамічна (або обчислювальна) складність характеризує процес виконання програми і має три складових: 1) часова — визначається часом виконання програми або часом її реакції на запит користувача; 2) програмна — визначається складом та способом взаємодії процедур або модулів, які утворюють програму, а також можливістю їх розташування в кеш-пам'яті, основній пам’яті або на диску, а у випадку розподілених додатків — розташуванням програми на комп’ютерах мережі; 3) інформаційна — визначається складністю організації даних та доступу до них, а також особливостями їх розташування в кеш-пам'яті, основній пам’яті, на диску або на мережевому сервері. Крім розглянутих моделей існують також структурні моделі, нечіткі моделі, інтервальні моделі складності ПЗ, а також нейронні мережі, які застосовуються для розв’язку задачі оцінювання складності ПЗ в окремих випадках.
Для вибору потрібної моделі використовуються якісні та кількісні критерії.
Якісні критерії:
1) 1) простота використання;
2) 2) достовірність;
3) 3) застосовність для розв’язку різних задач;
4) 4) простота реалізації.
Кількісні критерії:
5) показники точності оцінювання;
6) показники якості прогнозуючих моделей (збіжність, стійкість, точність прогнозу, узгодженість);
7) інформаційні критерії якості прогнозуючих моделей (розмірність, критерії BIC/AIC);
8) комбіновані та інтегральні показники.
Методи проектування надійного програмного забезпечення.
Методи проектування надійного програмного забезпечення можна розбити на наступні групи:
Попередження помилок, методи дозволяють мінімізувати або виключити появу помилки.
Виявлення помилок, методи направлені на розробку додаткових функцій програмного забезпечення, що допомагають виявити помилки.
Стійкість до помилок, додаткові функції програмного забезпечення, призначені для виправлення помилок і їх наслідків і системи, що забезпечують функціонування, за наявності помилок.
Методи попередження помилок концентруються на окремих етапах процесу проектування програмного забезпечення і включають:
Методи, системи, що дозволяють справитися з складністю.
Методи досягнення більшої точності при перекладі інформації.
Методи поліпшення обміну інформацією.
Методи негайного виявлення і усунення помилок на кожному кроці (етапі) проектування, не відкладаючи їх на етап тестування програми.
Складність системи є однією з головних причин низької надійності програмного забезпечення. У загальному випадку, складність об'єкту є функцією взаємодії (кількості зв’язків) між його компонентами. У боротьбі з складністю ПО використовуються дві концепції:
Ієрархія дозволяє розбити систему по рівнях розуміння (абстракції, управління). Концепція рівнів дозволяє аналізувати систему, приховуючи неістотні для даного рівня деталі реалізації інших рівнів. Ієрархія дозволяє розуміти, проектувати і описувати складні системи.
Незалежність. Відповідно до цієї концепції, для мінімізації складності, необхідно максимально підсилити незалежність елементів системи.
Це означає таку декомпозицію системи, щоб її високочастотна динаміка була поміщена в окремих компонентах, а міжкомпонентні взаємодії (зв'язки) описували тільки низькочастотну динаміку системи. Методи виявлення помилок базуються на введенні в програмне забезпечення системи різних видів надмірності:
Тимчасова надмірність. Використання частини продуктивності для контролю виконання і відновлення працездатності ПО після збою.
Інформаційна надмірність. Дублювання частини даних інформаційної системи для забезпечення надійності і контролю достовірності даних.
Програмна надмірність включає: взаємне недовір'я — компоненти системи проектуються, виходячи з припущення, що інші компоненти і початкові дані містять помилки, і повинні намагатися їх виявити; негайне виявлення і реєстрацію помилок; виконання однакових функцій різними модулями системи і зіставлення результатів обробки; контроль і відновлення даних з використанням інших видів надмірності.
Попередження помилок
Попередження помилок — кращий шлях підвищення надійності програмного забезпечення. Для його реалізації була розроблена методика проектування систем управління підприємствами, відповідна спіральній моделі життєвого циклу ПО. Методика передбачає послідовне пониження складності на всіх етапах аналізу об'єкту. При декомпозиції були виділені рівні управління системи, потім підсистеми, комплекси завдань і так далі, аж до окремих функцій, що автоматизуються, і процедур. Методика базується на методах структурно-функціонального аналізу (SADT), діаграмах потоків даних (DFD), діаграмах «суть-зв'язок (ERD) «, методах об'єктно-орієнтованого аналізу (OOA) і проектування (OOD).
Виявлення помилок
На підставі методів виявлення помилок були розроблені наступні засоби підвищення надійності ПО. Засоби використовують тимчасову надмірність: авторизація доступу користувачів до системи, аналіз доступних користувачеві ресурсів, виділення ресурсів згідно ролям і рівням підготовки користувачів, розмежування прав доступу користувачів до окремих завдань, функцій управління, записів і полів баз даних.
Засоби забезпечення надійності, що використовують інформаційну надмірність: посилальна цілісність баз даних забезпечується за рахунок системи внутрішніх унікальних ключів для всіх інформаційних записів системи, відкрита система кодування, що дозволяє користувачеві у будь-який момент змінювати коди будь-яких об'єктів класифікації, забезпечує стиковку системи класифікації АЇС з ПО інших розробників, механізми перевірки значень контрольних сум записів системи, забезпечують виявлення всіх несанкціонованих модифікацій (помилок, збоїв) інформації, засоби реєстрації забезпечують зберігання інформації про користувача і час останньої модифікації (введення, редагування, видалення) і затвердження кожного запису інформаційної системи, введення в структури баз даних системи часу почала і закінчення участі запису в розрахунках дозволяє обмежити об'єм оброблюваної інформації на будь-якому заданому періоді, а також забезпечити механізми блокування інформації для закритих робочих перекладів, ведення службових полів номерів версій баз даних і операційних ознак записів дозволяє контролювати і попереджати користувачів про конфлікти у разі невідповідності номерів версій модулів і структур баз, або про порушення технологічних етапів обробки інформації, засоби автоматичного резервного копіювання і відновлення даних (на початку, кінці сеансу роботи або по запиту користувачів) забезпечують створення на робочій станції клієнта актуальної копії мережевої бази даних, яка може бути використана у разі аварійного збою апаратури локальної і обчислювальної мережі і переходу на локальний режим роботи і назад.
Засоби забезпечення надійності, що використовують програмну надмірність: розподіл реалізації однойменних функцій по різних модулях АЇС з використанням різних алгоритмів і системи обмежень, що накладаються, і можливістю порівняння отриманих результатів; спеціальні алгоритми пересчетов забезпечують в ручному і автоматичному режимах переформовування груп документів, ланцюжків породжуваних документів і бухгалтерських проводок, що підвищує ефективність і надійність обробки інформації; засоби виявлення і реєстрації помилок в мережевому і локальних протоколах; у програмні модулі системи вбудовані засоби протоколювання процесів складних розрахунків з видачею докладної діагностики помилок; засоби відладки і трасування алгоритмів призначених для користувача бізнес-функций.
Висновок
Існує велика кількість математичних моделей складності ПЗ, які дозволяють одержати оцінки показників технологічної безпеки ПЗ на різних етапах життєвого циклу, що важливо при плануванні витрат на інформаційну безпеку. Розглянута класифікація моделей дозволяє на практиці зорієнтуватись при виборі моделей в залежності від поставлених цілей.
Серед розглянутих методів найбільш результативним є попередження помилок. Методика передбачає послідовне пониження складності на всіх етапах аналізу об'єкту. Засоби використовують тимчасову надмірність, тобто використання частини продуктивності для контролю виконання і відновлення працездатності ПО після збою. Методи дуже широко використовують декомпозицію, побудову ієрархії систем для полегшення роботи з ними і їх аналізу. Ієрархія дозволяє розуміти, проектувати і описувати складні системи.
Таким чином було розглянуто основні методи забезпечення надійності, що використовуються при проетуванні програмного забезпечення. Статична і динмаічні моделі вимагають для своєї роботи певних напрацювань, які можуть бути лише після етапу реалізації, що робить можливість їх використання дуже фрагментарною на етапі проектування. Емпірична модель надійності дозволяє працювати з системою на етапі проектування. Було продемонстровано її місце в загальній системі моделей надійності ПЗ і розглянуто основні підтипи.
Література
програмний надійність ієрархичний
1) Дідковська М.В. Аналіз моделей оцінювання надійності програмного забезпечення // Вісник НТУУ «КПІ». Інформатика, управління та обчислювальна техніка. — 2004. — № 41. — С. 103−120.
2) Майерс Г. Надежность программного обеспечения / Пер. с англ.; Под ред. В. Ш. Кауфмана. — М.: Мир, 1980. — 360 с.
3) Тейер Т. Надежность программного обеспечения / Т. Тейер, М. Липов, Э. Нельсон / Пер. с англ. — М.: Мир, 1981. — 323 с.
4) Рябишин И. А. Надежность и безопасность структурно-сложных систем. — Спб.: Политехника, 2000. — 248 с.
5) ГОСТ 28 806–90. Качество программных средств. Термины и определения.
6) Говорущенко Т. О. Оцінювання ефективності метрик складності програмного забезпечення / Т. О. Говорущенко, А. В. Бачинський // Вісник Хмельницького національного університету — Хмельницький: ХНУ, 2012 — № 2, с.171−179