- •Технологія проектування програмних систем методичні вказівки
- •1. Опис навчальної дисципліни
- •Теми і зміст лекційних занять
- •3. Практичні заняття з дисципліни
- •6. Розподіл балів за змістовими модулями для визначення оцінки за результатами вивчення навчальної дисципліни
- •Шкала оцінювання
- •Лабораторна робота № 1
- •Короткі теоретичні відомості:
- •Моделювання взаємодій
- •Лабораторна робота № 2
- •Короткі теоретичні відомості:
- •Виявлення вимог
- •Прототипування
- •Системні сервіси
- •Системні обмеження
- •Проектні питання
- •Додатки
- •Специфікації станів
- •Моделювання класів
- •Виявлення класів
- •Підхід на основі використання іменних груп
- •Підхід на основі використання загальних шаблонів для класів
- •Підхід на основі використання прецедентів
- •Комплексний підхід
- •Деякі правила виявлення класів
- •Лабораторна робота № 3
- •Короткі теоретичні відомості
- •Архітектура програмного забезпечення
- •Розподілена архітектура
- •Триланкова архітектура
- •Програмування баз даних
- •Взаємодія "додаток - база даних"
- •Стратегія повторного використання
- •Компоненти
- •Розгортання
- •Проект розгортання
- •Моделі даних
- •Модель об'єктної бази даних
- •Об'єктно-реляційна модель бази даних
- •Елементарні типи моделі рбд
- •Реляційні таблиці
- •Лабораторна робота № 4
- •Короткі теоретичні відомості
- •Зв'язність і ув'язування класів
- •Види ув’язування класів
- •Закон Деметра
- •Методи відкриття доступу і безглузді класи
- •Проектування клієнт-серверних кооперативних взаємодій
- •Збережені процедури
- •Тригери
- •Проектування транзакцій
- •Песимістичне керування паралельністю
- •Точка збереження
- •Триггерный відкат
- •Тестування баз даних
- •Тестування авторизації
- •Тестування інших обмежень
- •Документація по тестуванню і керуванню змінами
Проектування транзакцій
Транзакція - це логічна одиниця роботи, яка складається з одного або більше операторів SQL, виконуваних користувачем. Транзакція також є одиницею виміру несуперечності бази даних - стан бази даних після завершення транзакції несуперечливий. Для забезпечення цієї несуперечності використовується програма менеджера транзакцій, яка служить двом цілям: відновленню бази даних (database recovery) і керуванню паралельним виконанням операцій (concurrency control).
Згідно зі стандартами SQL транзакція починається з першого, що виконується SQL-оператора (у деяких системах потрібен явний оператор початку транзакції на зразок begin transaction). Транзакція завершується операторами commit або rollback. Оператор commit записує зміни в базу даних як постійні. Оператор rollback стирає будь-які зміни, зроблені транзакцією.
Транзакція відрізняється властивістю атомарності (atomic) - результат усіх SQL-операторів, що утримуються в транзакції, або повністю підтверджується (commit), або відкидається (rollback). Користувач визначає тривалість (довжину) транзакції. Залежно від характеру бізнес-вимог, області додатка, стилю взаємодій користувача з комп'ютером транзакція може бути зовсім короткою, що складається з одного SQL-оператора, або містити послідовність SQL-операторів.
Песимістичне керування паралельністю
Архітектура традиційних СУБД - ОСУБД становлять тут помітне виключення - орієнтована на короткі транзакції. Ці системи працюють відповідно до алгоритму песимістичного керування паралельністю (pessimistic concurrency control}. При обробці транзакцією кожного постійного об'єкта вона запитує блокування (lock). Існує чотири типи блокувань по об'єктах.
1. Привілейоване блокування (exclusive lock) (по запису) – інші транзакції повинні очікувати, поки транзакція, що утримує подібне блокування, завершиться і звільнить блокування.
2. Блокування відновлення (update lock) (no можливому запису) - інші транзакції можуть читати об'єкт, однак, транзакції, що утримує блокування, гарантується можливість виконати відновлення в привілейованому режимі, як тільки в неї виникне в цьому потреба.
3. Блокування читання (read lock) (з поділом) - інші транзакції можуть читати і, можливо, одержати блокування відновлення по об'єкту.
4. Відсутність блокування (nо lock) - інші транзакції можуть обновляти об'єкт у будь-який момент; підходить тільки для додатків, що допускають "чорнове читання", - тобто транзакція зараховує дані, які можуть бути модифіковані або навіть вилучені (іншою транзакцією) до завершення транзакції.
Точка збереження
Точка збереження (savepoint) - це оператор програми, який ділить довгу транзакцію на більш короткі частини. Іменована точка збереження міститься в стратегічно важливих пунктах програми. Згодом програміст має можливість здійснити відкат виконаної роботи до точки збереження, а не до початку транзакції.
Наприклад, програміст може помістити точку збереження прямо перед операцією update. Якщо операція update завершилася неуспішно, програма виконує відкат до точки збереження і намагається повторити відновлення. Замість цього програма може почати будь-які інші дії, щоб уникнути повного аварійного припинення транзакції.
У програмах великого обсягу точки збереження можна поміщати перед кожною підпрограмою. Якщо підпрограма відмовляє, є можливість здійснити відкат до початків підпрограми і повторити її виконання з виправленими параметрами. При необхідності спеціально спроектовані і запрограмовані підпрограми відновлення можуть виконати очищення, так що транзакція може відновити виконання.
