Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lecture_Marta.doc
Скачиваний:
53
Добавлен:
12.02.2016
Размер:
2.11 Mб
Скачать

10. Короткий звіт

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

X. Реалізація

1. Характеристики етапу реалізації

За етапом розробки йде етап реалізації. Ця стадія виробництва ПЗ увійшла до ери автоматизованого виробництва ПЗ. Тут використовуються такі інструменти, як швидка розробка програм (Rapid Application Development, RAD) і мови високого рівня.

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

Малюнок 10.2.1. Етап реалізації.

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

Надійність стає найголовнішим чинником створення ПЗ.

Вимоги клієнтів зазвичай ростуть швидше, ніж вимоги до апаратури. Різноманітність ПЗ дуже велика і воно стає все складнішим.

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

Надійність програмного забезпечення повинна бути взята до уваги на початку його розробки. Несподівані помилки і важкість у видаленні їх в ПЗ повинні бути взяті до уваги на ранніх стадіях.

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

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

Основними методами збільшення надійності є:

  • запобігання помилкам;

  • визначення погрішності помилок.

Запобігання помилкам

Неможливо уникнути всіх помилок. Уникнення помилок:

  • Не використовувати методи з великою вірогідністю помилок (наприклад, використання вказівників і т.п.);

  • Використання принципу обмеженого доступу (інкапсуляція, розділення пам'яті і т.д.);

  • Використання мов і компіляторів з перевіркою відповідності типів;

  • Використання мов високого рівня;

  • Строго визначати інтерфейси користувача;

  • Приділити увагу виключенням (порожні множини, порожні цикли, нульові значення, змінні, що не ініціалізували, і т.д.);

  • Використання готових компонентів (бібліотеки, класи і т.д.);

  • Мінімізація відмінностей між абстрактною моделлю і моделлю реалізації.

Небезпека техніки

Програміст може закодувати проблему різними способами. Шляхи і вибір методу залежить від проблеми, досвіду, його переваг, вибору мови, середовища і т.п.

Але методів з більшою вірогідністю помилки слід уникати. Але іноді їх дійсно необхідно застосувати. У таких випадках методи обробки помилок і контролю результатів повинні розроблятися дуже ретельно.

Найнебезпечнішою технікою програмування є:

  • Використання команди "go to". Ця команда може призвести до труднощів розуміння програм і їх підтримки (внесення пізніших змін).

  • Використання чисел з плаваючою крапкою. Числа мають обмеження по точності, і обчислення можуть накопичувати відхилення від реальних чисел.

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

  • Паралельне обчислення. Паралельні обчислення призводять до складної залежності часу і так званому галопуванню (залежить від випадкових результатів деяких потоків). Їх важко перевірити.

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

  • Використання рекурентних співвідношень. Програму з рекурентними співвідношеннями важко зрозуміти і трасувати.

  • Використання динамічного розподілу пам'яті. Динамічний розподіл пам'яті без збірки сміття може призвести до витоків пам'яті і "підвісити" програму.

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

  • Не вказані, несподівані побічні ефекти у функціях і процедурах

  • Використання складних привласнень без дужок. Таке відбувається, коли програмісти покладаються на пріоритет операторів і уникають дужок. Це не веде до збільшення продуктивності. Але підхід може викликати багато помилок і труднощів в управлінні.

  • Обробка даних багатьма процесами без синхронізації (блокування, транзакції). Деякі з методів корисні, але повинні використовуватися обережно.

Принцип обмеженого доступу

Принцип обмеженого доступу - один з основних принципів безпеки. Він припускає, що доступ відбувається тільки до необхідних даних.

Він може бути сформульований таким чином:

Все, що повинне бути сховано, слід приховати.

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

Принцип обмеженого доступу реалізовується інкапсуляцією (відомою з Modula 2) і об'єктно-орієнтованим підходом:

  • приватні поля, змінні, методи

  • табліци експорту

  • табліци імпорту (визначають внутрішні ресурси)

Строгий контроль типів

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

Тип визначає значення даних і є формальним обмеженням конструкції змінних і об'єктів.

Мета типізації - управляти формальним програмуванням.

Типізація підтримує об'єктно-орієнтоване програмування. Ім'я зазвичай відображає семантику об'єкту, наприклад, D представляє дані (від Data). У мовах з сильною типізацією (наприклад, Pascal і Modula2) така ідентифікація повинна бути присутньою в оголошенні типів. Оголошення перевіряються (наприклад, якщо програміст оголосить X як ціле число (integer), компілятор перевірить, чи всі виклики сприймають X як ціле число.

Сильна типізація запобігає помилкам в 80% випадків. На жаль, в багатьох комерційних продуктах цей контроль не повний, або ним і зовсім нехтують (Smalltalk, SQL).

Система сильного статичного контролю типів містить наступні елементи:

  • Специфікація всіх видів змінних і об'єктів, наприклад: Typedef TypWorker = struct{string name, int salary, Works_in, int salary_without_taxes()}; TypWorker Worker;

  • Визначення сигнатури всіх операторів, процедур, функцій, методів, наприклад: Boolean works_long (in TypWorker wrkr, in WorkSphere, out years_works)

  • Визначення інтерфейсів, класів і інших інкапсульованих абстракцій.

У визначенні параметрів ми визначаємо параметри вводу і виводу.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]