Лекція №1. Надійність обчислювальних пристроїв, ПК і комп'ютерних систем

 

План

 

1.   Суть і основні елементи теорії надійності

2.   Методи забезпечення надійності

3.   Резервування апаратури

4.   Надійність програмного забезпечення

5.   Надійність програмного забезпечення

6.   Тестування модулів та комплексне тестування програмної системи

 

1.   Суть і основні елементи теорії надійності

Обчислювальні пристрої, ПК і комп‘ютерні системи є важливою складовою сучасного виробництва. Нині ця галузь розвивається особливо інтенсивно. Однак розвиток засобів коп‘ютерної техніки неможливий без забезпечення їх надійності. Її , в свою чергу, характерізують багато показників і параметрів. Однією з особливостей комп‘ютерних систем і мереж порівняно з іншими, наприклад, механічними , є те, що їх надійність визначає надійність елементів та  надійність програмного забезпечення.

Надійність – властивість об‘єкта зберігати в часі у встановлених межах значення всіх параметрів, які характерізують здатність виконувати потрібні функції в заданих режимах та умовах застосуванн, технічного обслуговування, зберігання і транспортування.

Відмова – подія, яка полягає в утраті функційним модулем (системою) здатності виконувати потрібну функцію.

Ймовірність безвідмовної роботи P(t) - функція розподілу ймовірностей безвідмовної роботи об‘єкта, яка характеризує ймовірність того, що об‘єкт за час t не втратить працездатності. Ймовірність безвідмовної роботи є одним із основних показників надійності технічних виробів. Значення P(t1, t2) за відносно короткі проміжки часу (година, доба) для сучасних електронних пристроїв близьке до 1. Наприклад, ймовірність безвідмовної роботи типової інтегральної схеми(ІС) за кілька годин роботи становить 0,999999. Проводити розрахунки з такими числами незручно тому доцільно перейти до відповідних ймовірностей відмови   – 10-7...10-6.

Технічний ресурс виробу  - прогнозована тривалість його експлуатації від початку до моменту, коли інтесивність відмов збільшується до рівня, який робить подальшу експлуатацію неможливою або недоцільною з економічних міркувань.

 

2.   Методи забезпечення надійності

В теорії надійності всі об‘єкти поділяють на два великих класи: відновлювані і невідновлюван. Підхід для забезпеченям надійості обох ласів зовсім різний. Забезпечення надійності відновлюваних об‘єктів полягає в організації ефективного ремонту обладнання з мінімальними затратами часу.

Відновлювані об‘єкти – об‘єкти, які в період експлуатації в разі виникнення відмов можуть бути відремонтовані шляхом заміни несправних компонентов.  Для відновлюваних об‘єктів основним показником надійностіф вважають коефіцієнт готовності, що визначає частину корисного часу tk  протягом якого об‘єкт нормально працює щодо загального часу експлуатації. Тобто:

                                                                                                (1)                      

де  - tb час, що втрачено на відновлення працездатності. Він містить дві складові: t1 – час, що втрачено на пошук несправності;   t2 – час власне відновлення.

Особливістю сучасного електронного обладнання є його модульна побудова, тому відновлення таких об‘єктів найчастіше може полягати у простій заміні несправного модуля (блока) справним. Вона не потребує великих затрат часу. Пошук несправності-навпаки, і впливає саме на кофіцієнт готовності. До основних методів забезпечення надійності відновлюваної електронної апаратури належать:

   - створення максимально сприятливих умов для прискорення ремонту;

   - застосування автоматизованого пошуку несправностей на основі апаратного або програмного самоконтролю; тестового діагностування та використання спеціальноих автоматизованих систем контролю і діагностики.

Для невідновлюваних об‘єктів підхід до забезпечення надійності зовсім інший, оскільки вони не підлягають ремонту.

Невідновлювані об‘єкти  - об‘єкти, для яких ремонт із конструктивних причин або умов експлуатації є неможливим.  Наприклад, інтегральні схеми, кінескопи, мікропроцесорні системи керування бортової апаратури тощо.  Показники надійності таких пристроїв залежать від складності невідновлюваних об‘єктів, при ймовірності безвідмовної роботи менше ніж 0,5 система стає непрацездатною. Однак цьому можна запобігти, якщо застосувати методи введення надлишковості.  Надлишковість  поділяють на часову, інформаційну, структурну(апаратну).

Комп‘ютерні системи, які використовують для управління реальними об‘єктами, не можна беззастережно зарахуватині до відновлюваних. ні до невідновлюваних об‘єктів. До методів забезпечення надійності комп‘ютерних систем належать як методи , що застосовують для відновлюваних систем (прискорення  пошуку неспрвностей), так і властиві невідновлюваним системам методи, наприклад, (структурна надлишковість). Принципова особливість таких систем полягає в багаторазових обчисленнях. Вони утворюються шляхом n-кратного повторення обчислювального процесу в таких розрізах:

·         часовому (повторний рахунок);

·         просторовому (на інших апаратних засобах);

·         інформаційному (з використанням інших програм і даних).

 

3.   Резервування апаратури

Одним із методів підвищення надійності обчислювальних систем є резервування її складових. 

Резервування – метод підвищення надійності шляхом включення резервних елементів при розроблені системи або в процесі її експлуатації. Розрізняють поелементне і загальне резервування. За включенням резерву виокремлюють постійне резервування і резервування заміщенням. Постійне резрвування полягає у включенні резервної апаратури протягом усього часу функціонування основної.  Резервування заміщенням полягає у включенні резервного елемента структури замість елемента, який вийшов з ладу. За такого резервування резерв може бути:

·         ненавантаженим(апаратура не увімкнута у процесі функціонування);

·         полегшеним (увімкнута частина резервної апаратури);

·         навантаженим  (увімкнута вся резервна апаратура).

До переваг цього способу резервування належать:

·         один резервний елемент використовують для кількох основних

·         резервні елементи знаходяться у пасивному стані(наприклад, знеструмлені), що зберігає їх технічний ресурс.

Мажоритарний метод резервування вважається класичним. Він був запропонований Дж.фон Нейманом.  Реалізують його як постійне резервування з логічним перемиканням на резервні елементи. Елементом цього методу є відновлюючий орган (ВО), функція якого полягає в утворенні резуьтуючого сигналу за більшистю значень  вхідних сигналів.

4.   Надійність програмного забезпечення

Забезпечення надійності програмних засобів ПК і обчислювальних систем істотно відрізняється від забезпечення надійності апаратури. Щоб зрозуміти це потрібно ознайомитися із загальною методологією діагностування ПЗ.

Системний підхід – сумісний аналіз і розроблення всіх елементів системи.

Модуль – елемент програми, стандартизований за формою запису і зовнішніми зв’язками.

Надійність програмного забезпечення – властивість програми

виконувати задані функції в заданих умовах роботи і на заданій ЕОМ.

Безвідмовність програмного забезпечення. Оцінюють імовірністю роботи ПЗ без відмов протягом заданого часу в певних умовах зовнішнього середовища.

Відновлювальність ПЗ. Її характеризують витрати часу і праці на усунення відмов через помилки в програмі та їхні наслідки. Високу надійність програми забезпечує швидке реагування на її спотворення, а також спотворення даних або обчислювального процесу, відновлення працездатності програм за час, менший ніж поріг між збоєм і відмовою.

Усталеніть функціювання. Це одна з характеристик ПЗ, яка полягає в здатності обмежувати наслідки власних помилок і несприятливих впливів зовнішнього середовища або протистояти їм. Механізм виникнення відмов. Порушення специфікації. Трапляється це насамперед у складних програмних системах, де окремі помилки програміста важко виявити. Неточна або неповна специфікація. Виникає, коли при її складанні невідомі фактори, що впливають на роботу програми.

Коректність програми – це відповідніть її специфікації. Прихованість помилок полягає у виявленні помилки в результаті великої кількості комбінацій вихідних даних. Інтенсивність відмов – інтегральний критерій, що характеризує густину розподілу напрацювання до першої відмови, розраховану за умови, що до моменту часу, який розглядають система пропрацювала безвідмовно. Оцінювання і прогнозування надійності програм.  Ці процедури здійснюються на основі математичних моделей Джелінські-Моранди, Шумана, Шика-Волвертона.

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

Надійність програмного комплексу. Визначають її як функцію надійності складових частин програмного комплексу.

Помилки програмного забезпечення. Під поняттям „помилка” розуміють неправильність, похибку або ненавмисне спотворення об’єкта чи процесу. При цьому приймають, що правильний стан об’єкта або процесу відомий. Залежно від складності первинні помилки ПЗ поділяють на такі типи:

·         технологічні помилки підготовки машинних носіїв і документації, а також виведення і введення програм у комп’ютер та його засоби відображення

·         алгоритмічні помилки, пов’язані з неповним формуванням необхідних умов розв’язання і некоректною постановкою завдання

·         системні помилки, зумовлені відхиленням функціювання ПЗ у реальній системі від очікуваних під час проектування

·         програмні помилки, пов’язані з некоректною постановкою завдання.

Шляхи забезпечення надійності ПЗ.

Основні фактори, що визначають надійність функціювання ПЗ, об’єднують у 3 групи:

·         фактори, які безпосередньо визначають надійність програм

·         методи проектування коректних програм

·         методи контролю і забезпечення надійності програм.

Визначальне значення для забезпечення надійності програм має третя група факторів. Для її підвищення і захисту інормації програмно-алгоритмічними методами використовують часову, інформаційну та програмну надлишковість.

Часова надлишковість. Це використання певної частини апаратних засобів і продуктитвності ЕОМ, зокрема ПК, для контролю виконання програм і відновлення обчислювального процесу. Передбачається певний резерв продуктивності, необхідний для контролю та підвиження надійності функціювання ПЗ.

Інформаційна надлишковість. Вона полягає у дублюванні накопичених почпткових і проміжних даних. Її використовіють для забезпечення достовірності даних, які потребують значного часу для відновлення чи найбільше впливають на нормальне функціювання ПЗ. Вони характеризують певні інтегральні відомості про зовнішній керований процес, і в разі їх руйнування можуть надовго припинити керування цим процесом та відповідне оброблення інформації.

Програмна надлишковість. Вона контролює і забезпечує достовірність найважливіших рішень з оброблення інформації та керуання. Її сутність полягає в застосуванні кількох варіантів програм, що відрізняються методами розв’язання певного завдання або прогрпммною реалізацією одного й того самого методу.

 

5.   Методологія діагностування програмного забезпечення(ПЗ)

        Методологія діагностування ПЗ пояснює суть методів і способів тестування програм, методики побудови тестів, процедур, які доводять програми до робочого стану. Вона визначає також послідовність видів тестування. Діагностування як процес виявлення помилок у ПЗ є одним з основних методів підвищення його надійності. Здійснюють діагностування на всіх етапах життєвого циклу ПЗ, а саме на етапі планування, проектування і кодування. Суть тестування полягає у перевірці роботи програм за результатами їх виконання зі спеціально підібраними наборами вихідних даних (тестами). Діагностування ПЗ здійснюють також і методом верифікації. У процесі діагностування ПЗ крім тестування використовують процедури доведення, контролю, випробування, атестації, відлагодження.        З огляду  на обсяг тестування може бути повним або вибірковим. За повного тестування програму тестують повністю, а за вибіркового – в окремих точках блоку вхідних даних.        Під час вибіркового тестування надійність програми повністю не забезпечують. Частина помилок може бути прихованою і не виявитися.  Тому найчастіше використовують структурне вибіркове тестування. Воно полягає у розділенні блока вхідних даних на класи, кожен з яких дає змогу підтвердити певні властивості або працездатність окремих елементів структури. Вибір шляхів у структурі програми повинен здійснюватись так, щоб усі оператори програми були задіяні хоча б один раз. Для перевірки результатів роботи програми використовують числове і символьне тестування. Числове полягає у перевірці правильності числових результатів роботи програм при певних тестових наборах. Символьне передбачає виконання процедур, що ґрунтуються на символьних входах. Вхідні змінні позначають так, що вони дають змогу виразити вихідні змінні також у символьному вигляді. При цьому різним шляхам у програмі відповідають різні символьні входи і виходи. Контроль складових ПЗ необхідно проводити у зазначеній послідовності й повному обсязі. Його визначають залежно від вимог надійності.

 

6.   Тестування модулів та комплексне тестування програмної системи

        Процес тестування ПЗ починається з  тестування модулів за наявності спроектованих тестів. Тому слід приділити цим процедурам особливу увагу. Суть процесу тестування модулів. При тестуванні ПЗ увагу приділяють насамперед тестуванню автономних модулів. Суть цього процесу полягає в контролі окремого  програмного модуля. Його метою є знаходження невідповідностей між логікою модулів та їх спряганням, з одного боку, і з зовнішніми специфікаціями, з іншої. Зовнішні специфікації охоплюють опис функцій, вхідних і вихідних даних та зовнішніх ефектів. Компіляцію модуля теж розглядають як тестування, оскільки компілятор виявляє більшість синтаксичних помилок, а також певні логічні і семантичні.

Процес тестування модуля здійснюється  у кілька етапів:

·           підготовка на основі зовнішніх специфікацій модуля тесту для кожної ситуації, для кожної з меж областей допустимих значень всіх недопустимих умов – усіх вхідних даних та областей зміни даних;

·           перевірка тесту програми.

·           з’ясування того, чи охоплюють тести відповідно до тексту програми велику кількість можливих шляхів;

·           перевірка чутливості програми, згідно з її текстом, стосовно окремих особливих значень вхідних даних.

Тестування автономних модулів здійснюють на основі кількох аксіом, що є фундаментальними принципами тестування:

Високоякісним є той тест, який має високу ймовірність виявлення помилок, а не той, що демонструє правильну роботу програми;

Однією з найважливіших проблем при тестуванні , виходячи з першої аксіоми, є  з’ясування термінів закінчення тестування;

Неможливо тестувати особисту програму;

Необхідною частиною будь-якого тесту повинен бути опис очікуваних вихідних даних або результатів;

Слід уникати невідтворюваних тестів;

Необхідно розробляти тести як для правильних, так і для неправильних вхідних даних;

Слід детально аналізувати результати проходження кожного тесту;

Тестування проводять найкваліфікованіші програмісти;

При розробленні ПЗ тестованість є ключовим завданням;

Проект системи повинен передбачати , що кожний модуль, який підключається до системи , має бути в єдиному варіанті;

Не можна змінювати програму з метою полегшення її тестування;

Тестування слід починати з визначення цілей;

Усі розгалуження потрібно виконувати в кожному з можливих напрямів хоча б один раз.

Тестування модулів ПЗ здійснюють на основі відповідних методів – статичного і динамічного.

Статичне тестування полягає в тому, що одним з критеріїв обрання шляхів у структурі програми при тестуванні є задіяння всіма операторами хоча б один раз обраних шляхів. При цьому тестують команди за послідовністю їх розташування в тексті програми.

 Статичний аналіз програми спеціалісти-тестувальники виконують неавтоматизовано.

Динамічне тестування (тестування гілок). Вимагає обрання таких шляхів, які перекривають усі гілки програми або всі розгалуження в усіх напрямах. Цей метод гарантує однократне тестування всіх гілок і операторів. Головна вимога до програм або програмних систем – виконувати задані функції. Вони найповніше реалізуються при застосуванні  функційного, структурного, символьного і регресивного тестування.

Інтеграція модулів, тестування зовнішніх функцій і комплексів программ

Тестування модулів є дуже важливим етапом діагностування комплексу ПЗ. Наступними завданнями, які розв’язують під час розроблення і налагодження ПЗ, є інтеграція модулів у систему , її комплексне тестування і налагодження. Суть і методи інтеграції програмних модулів. Після проектування здійснюють інтеграцію модулів – злиття модулів у програму або програмну систему. Вибір послідовності злиття модулів у систему визначає форму, в якій записуються тести, послідовність програмування модулів, вибір засобів тестування і відповідно ефективність тестування.

Висхідне тестування. Суть його полягає в тому, що програму збирають і тестують знизу до гори. Тестують першими і автономно модулі найнижчого рівня. Потім – модулі , що безпосередньо викликають уже перевірені. Для тестування модулів вищого рівня повинні бути протестовані всі модулі нижчого рівня, які він викликає. За висхідного тестування для тестування  кожного модуля потрібен драйвер – програма, що імітує надходження інформації з попередніх модулів.

Низхідне тестування. Полягає в тому, що програму збирають і тестують зверху вниз. Автономно тестують тільки головний модуль, що відповідає вершині графа. Потім до нього приєднують один за одним модулі, безпосередньо зв’язані з ним, і тестуютьо держану комбінацію. Процес повторюють, поки не будуть зібрані й перевірені всі модулі . низхідне тестування дає змогу чітко дотримуватися певної послідовності тестування.

Метод «великого стрибка» . Він є одним з найпоширеніших методів тестування. Використовують його лише для невеликих програм. Особливість цього методу полягає в автономному  тестуванні  спочатку кожного модуля. Потім усіх їх одночасно інтегрують у систему. Від низхідного тестування його відрізняє те, що всі модулі інтегрують у систему  одночасно в останній момент. Це зумовлює ситуацію, коли у спряганнях між модулями тривалий час залишаються помилки, які можуть бути непоміченими. Для невеликих добре спроектованих програм, метод „великого стрибка” ефективний, для великих програм – неприйнятий.

Метод Сандвича . Це компромісний варіант між висхідним і низхідним тестуванням. Головна мета його полягає у використанні переваг цих методів й  усуненні їх недоліків. Суть методу полягає в тому, що висхідне і нисхідне тестування починаються одночасно. Програміст збирає програму як знизу, так і зверху. Використання цього методу має сенс при інтеграції і тестуванні великих програмних систем ( операційних систем ) та пакетів прикладних програм.

Важливу роль при діагностуванні ПЗ відіграють тестування спрягань і зовнішніх функцій. Тестування спрягань . Під час цієї процедури перевіряють взаємозв’язок між модулями щодо використовуваної інформації і часу її надходження. Тести для контролю спрягань розробляють на основі аналізу архітектури програмної системи і структури програми. Цей аналіз грунтується на  схемі інформаційних зв’язків у графі програмної системи і матриці взаємозв’язків модулів. Характер вихідних даних для кожного модуля визначають з таблиць вихідних змінних.

Тестування зовнішніх функцій. Його здійснюють з метою виявлення розходжень між програмою і її зовнішніми специфікаціями. Тому необхідною умовою такого тестування є наявність чітких і точних специфікацій. Тести зовнішніх функцій розробляють так, щоб їх можна було використати багаторазово.

Збирання  і комплексне тестування програмної системи. Після завершення автономного тестування модулів, тестування спрягань і тестування зовнішніх функцій приступають безпосередньо до інтеграції програмної системи. Цей процес починають з того, що складають план поступового збирання системи. Кожний рівень або версію системи називають сіном. Збирання  починають з нульового базового спіну і закінчують N-м спіном. За нульовий спін приймають операційну систему. Збирання призначене виділити збірні вузли і скласти календарний план їх розроблення . Ця робота повинна відповідати таким критеріям:

·      У плані збирання слід враховувати обмеження, пов’язані з наявними ресурсами і графіком розроблення діагностичного забезпечення;

·      послідовність збирання необхідно базувати на каркасній (0-й спін) версії системи, що вже готова і працює;

·      у плані має враховуватися залежність одних збірних вузлів від інших;

·      послідовність збирання має забезпечувати включення найважливіших функцій в перші спіни;

·      у плані збирання слід мінімізувати застосування програм, що імітують відсутні у всіх спінах, крім останнього , певні фрагменти системи.

Після збирання системи здійснюють її комплексне тестування.

Комплексне тестування – пошук невідповідності системи своїй вихідній (початковій) меті. Комплексні тести не зводять до перевірки окремих функцій системи. Їх розробляють у формі сценаріїв – послідовних дій користувача. Загальні тенденції щодо розроблення комплексних тестів. Отже, тестування проводити:

·        стресових ситуацій реального середовища;

·        великих обсягів даних протягом тривалого часу;

·        конфігурації апаратури ПЗ;

·        сумісності з розробленими раніше версіями і програмними засобами;

·        захисту від несанкціонованого доступу;

·        вимог до пам’яті ПК;

·        продуктивності  та ефективності  системи;

·        налагодження системи;

·        надійності та готовності системи;

·        засобів відновлення після втрати даних або відмов;

·        зручності обслуговування системи;

·        документації для користувача;

·        психологічних факторів, зокрема невідповідності зовнішнім специфікаціям, неправильного формулювання відповідей і повідомлень;

·        зручності експлуатації системи.

Комплексне тестування проводять перед приймальними випробуваннями на завершальній стадії розроблення.