- •1. Основні ознаки розподілених програмних систем.
- •2. Характеристики розподілених систем, що впливають на продуктивність обчислень.
- •3. Характеристики розподілених систем, що впливають на надійність обчислень.
- •4. Характеристики розподілених систем, що впливають на економію ресурсів.
- •6. Недоліки розподілених систем, що пов’язані з їх використанням.
- •7. У чому полягає складність розробки розподілених систем?
- •8. Основні види архітектур розподілених систем.
- •9. Особливості архітектури клієнт/сервер.
- •10. Види архітектур клієнт/сервер та галузі їх застосування.
- •11. Особливості застосування архітектури Клієнт / сервер на Основі тонкого клієнта.
- •12. Особливості застосування архітектури Клієнт / сервер на Основі Товстого клієнта.
- •13. Особлівості багаторівневої архітектури Клієнт / сервер.
- •14. Характеристики архітектури розподіленіх об'єктів.
- •15. Основні Переваги архітектури розподіленіх об'єктів.
- •16. Основні недолікі архітектури розподіленіх об'єктів.
- •17. Характеристика систем реального часу.
- •18. Класифікація систем реального часу за типами вхідніх сігналів.
- •19. Особливості проектування систем реального часу.
- •20. Засоба підвіщення продуктівності систем реального часу.
- •21. Моделі систем реального часу.
- •22. Вимоги до засобів програмування систем реального часу.
- •23. Керуючі компоненти систем реального часу.
- •24. Компоненти, що підвищують надійність систем реального часу.
- •25. Особливості керування процесами в системах реального часу.
- •26. Види інтерфейсів користувача та їх особливості.
- •27. Переваги та недоліки графічного інтерфейсу користувача.
- •28. Особливості проектування інтерфейсу користувача.
- •29. Основні засади проектування інтерфейсу користувача.
- •31 Основні види взаємодії користувача і програми та сфери їх застосування.
- •32 Недоліки та переваги основних видів взаємодії користувача з програмою.
- •33 Способи подання інформації користувачу.
- •34 Основні правила використання кольору в інтерфейсах користувача.
- •35 Засоби інтерфейсу спрямовані на підтримку користувача.
- •36 Основні види документації для користувачів програмних систем.
- •37 Основні складові надійності програмних систем.
- •38 Обґрунтування потреби у високонадійних програмних системах.
- •39 Поняття критичної системи.
- •40 Основні типи критичних систем.
- •41. Основні джерела відмов та підходи до проектування критичних систем.
- •42. Основні підходи для підвищення безвідмовності систем.
- •43. Рівні безпечності програмних систем.
- •44. Способи підвищення безпечності програмних систем.
- •45. Типи пошкоджень систем, що викликаються зовнішніми чинниками.
- •46. Засоби підвищення захищеності програмних систем.
- •47 Основні підходи до проектування надійного програмного забезпечення.
- •48 Основні вимоги до розробки безвідмовного програмного забезпечення.
- •49. Конструкції мов програмування, що потенційно можуть призвести помилок.
- •50. Методи програмування, що потенційно можуть призвести до помилок.
- •51. Укривання даних, як спосіб підвищення надійності програмування.
- •52. Технологічні заходи мінімізації числа відмов у програмних системах.
- •53. У проблемі безвідмовності виділяють чотири аспекти.
- •54. Існує два підходи, що використовуються для розробки пз, стійкого до збоїв.
- •55. Обробка виключень в мовах програмування як засіб підвищення надійності.
- •56.Основні типи виявлення збоїв у програмних системах.
- •57. Способи локалізації помилок та пошкоджень даних в програмах.
- •58. Види стійких до відмов архітектур.
- •59. Основні підходи до створення стійкого до відмов програмного забезпечення.
- •60. Шляхи досягнення відмінностей між різними версіями програмного забезпечення. Досягти відмінності між різними версіями пз можна також такими способами:
50. Методи програмування, що потенційно можуть призвести до помилок.
2. Рекурсія. Це ситуація, коли процедура або метод викликає себе або іншу процедуру, яка потім викликає первісну процедуру. Використання рекурсії дозволяє створювати короткі програми, проте в них важко простежити логіку. Тому помилки програмування також важко виявити. Використання рекурсії може призвести до помилок в адресації пам'яті, так як створюються тимчасові стеки змінних.
3.Переривання. Це засіб управління примусовим переходом до певного розділу програми незалежно від поточного її виконання. Небезпеки цього очевидні, оскільки переривання може привести до непередбаченого припинення виконання будь-якої критично важливої операції.
Наслідування. Спадкування в об'єктно-орієнтованих мовах програмування дозволяє багаторазово використовувати певні фрагменти коду і виконувати декомпозицію задач, але це також призводить до того, що програмний код, що відноситься до одного об'єкту, може перебувати в різних розділах програми. Це ускладнює розуміння поведінки об'єкта, тому вірогідні помилки програмування.
Суміщення імен. Це трапляється, коли різні імена використовуються для звернення до одного й того ж програмного об'єкту. При читанні тексту програми легко пропустити момент зміни стану об'єкта, для звернення до якого використовується кілька імен.
51. Укривання даних, як спосіб підвищення надійності програмування.
Принцип захищеності, який прийнятий військовими організаціями, говорить: "немає необхідності знати". Тільки тим, кому потрібно знати особливу частину інформації для виконання своїх обов'язків, надається доступ до неї. Інформація, яка прямо не відноситься до їх роботі, ховається. У програмуванні аналогічний принцип повинен застосовуватися для управління доступом до даних. Програмним компонентам повинні бути доступні тільки ті дані, які їм необхідні для виконання своїх функцій. Доступ до інших даних повинен бути закритий за допомогою правил видимості, які є практично в будь-якій мові програмування. Якщо використовується приховування інформації, то прихована інформація не може бути зруйнована компонентами системи, які її не використовують.
Приховування інформації найбільш просто реалізується в мові Java, на відміну від більш ранніх мов програмування типу С або Pascal. Ці мови не мають конструкцій інкапсуляції, таких як класи об'єктів, тому структури даних не захищені. Інші частини програми можуть звертатися до даних безпосередньо, що може вести до непередбачених побічних ефектів. В об'єктно-орієнтованих мовах передбачені методи, які дозволяють вибирати і оновлювати значення атрибутів, не надаючи іншим об'єктам безпосереднього доступу до цих атрибутів. Таким чином, значення атрибута можна змінювати незалежно від інших об'єктів, які використовують атрибут.
Цей же принцип в мові Java можна використовувати для оголошення інтерфейсу об'єкта незалежно від його виконання, що проілюстровано в лістингу 18.1. Користувачі об'єктів типу Queue (Черга) можуть помістити елементи в чергу і вибрати їх з черги, а також запросити розмір черги. Однак в класі, який здійснює цей інтерфейс, фактична реалізація черзі прихована шляхом оголошення атрибутів і методів власністю цього класу об'єктів.
Подібний приклад приховування інформації показаний в лістингу 18.2. У ситуаціях, коли деяка змінна може приймати обмежене безліч значень, ці значення можуть бути оголошені як константи. Мови, подібні C + +, підтримують перечислимого типи даних, але в мові Java для цього необхідно використовувати оголошення класу. Для прикладу розглянемо сигнальну систему, яка підтримує червоний, жовтий і зелений кольори. Тип сигналу (Сигнал) необхідно визначити так, щоб включити оголошення констант, відповідних цим квітам. Після цього можна посилатися на Signal.red (червоний сигнал) »Signal.green (зелений сигнал) і т.д. Цим избегается випадкове привласнення неправильних значень змінним типу сигналу
