
- •Технология проектирования программных систем методические указания к изучению курса с элементами кредитно - модульной системы организации учебного процесса
- •Содержание лекционных занятий
- •Темы лабораторных работ
- •Оценка успешности в баллах при полном выполнении условий и графика учебного процесса
- •Распределение баллов по смысловыми модулями для определения оценки по результатам изучения учебной дисциплины
- •Шкала оценивания
- •Лабораторная работа № 1
- •Краткие теоретические сведения:
- •Моделирование взаимодействий
- •Взаимодействия
- •Лабораторная работа № 2
- •Краткие теоретические сведения:
- •Выявление требований
- •Прототипирование
- •Системные сервисы
- •Системные ограничения
- •Проектные вопросы
- •Приложения
- •Спецификации состояний
- •Моделирование классов
- •Выявление классов
- •Подход на основе использования именных групп
- •Подход на основе использования общих шаблонов для классов
- •Подход на основе использования прецедентов
- •Комплексный подход
- •Некоторые правила выявления классов
- •Лабораторная работа № 3
- •Краткие теоретические сведения
- •Архитектура программного обеспечения
- •Распределенная архитектура
- •Трехзвенная архитектура
- •Программирование баз данных
- •Взаимодействие "приложение-база данных"
- •Стратегия повторного использования
- •Компоненты
- •Развертывание
- •Проект развертывания
- •Модели данных
- •Модель объектной базы данных
- •Объектно-реляционная модель базы данных
- •Элементарные типы модели рбд
- •Реляционные таблицы
- •Лабораторная работа № 4
- •Краткие теоретические сведения
- •Связность и увязка классов
- •Виды увязки классов
- •Закон Деметра
- •Методы открытия доступа и бессмысленные классы
- •Проектирование клиент-серверных кооперативных взаимодействий
- •Хранимые процедуры
- •Триггеры
- •Проектирование транзакций
- •Пессимистическое управление параллельностью
- •Точка сохранения
- •Триггерный откат
- •Тестирование баз данных
- •Тестирование авторизации
- •Тестирование других ограничений
Триггерный откат
Триггерный откат (trigger rollback) представляет собой особый вид точки сохранения. Триггер можно использовать для программирования бизнес-правил любой сложности. В некоторых случаях откат всей транзакции неприемлем, когда триггер отказывается модифицировать таблиц) (из-за того, что транзакция пытается нарушить бизнес-правило). Транзакции может потребоваться предпринять корректирующие действия.
Вследствие приведенных выше причин СУБД может обеспечить возможности программирования триггера для отката либо всей транзакции, либо только триггера. В последнем случае программа (возможно, хранимая процедура) может проанализировать проблему и принять решение о дальнейших действиях. Даже если необходимо постепенно свернуть всю транзакцию, программа будет иметь возможность более тщательной интерпретации причины ошибки и отображения более осмысленного сообщения для пользователя.
Тестирование баз данных
Аналогично тестированию GUI-интерфейса тестирование баз данных связано со многими другими видами тестирования. Так, тестирование по методу черного ящика (тестирование по отношению к спецификации) зачастую основано на использовании входной и выходной информации для базы данных. Однако, это не исключает необходимости в отдельной методике тестирования баз данных.
Послереализационное тестирование баз данных включает всестороннее тестирование по методу прозрачного ящика (в соответствии с программным кодом). Наиболее существенной частью тестирования баз данных является тестирование транзакций. Тестирование некоторых других аспектов баз данных - производительности, параллелизма, проверка полномочий пользователей - иногда выделяют в отдельные группы тестов.
Аналогично тестированию GUI-интерфейса некоторые тесты баз данных требуется проводить повторно для всех различных функций приложения. Вопросы, требующие рассмотрения при тестировании баз данных, необходимо оформить в виде общего документа. Этот общий документ следует затем присовокупить к описанию всех функциональных тестов (тестов системных услуг). Ниже приводится примерный перечень вопросов, на которые следует обратить внимание при тестировании баз данных.
Проверить, выполняется ли транзакция надлежащим образом при правильных входных данных. Корректна ли обратная связь системы с GUI-интерфейсом? Корректно ли содержимое базы данных после транзакции?
Проверить, выполняется ли транзакция надлежащим образом при неправильных входных данных. Корректна ли обратная связь системы с GUI-интерфейсом? Корректно ли содержимое базы данных после транзакции?
Прервать транзакцию до ее завершения. Корректна ли обратная связь системы с GUI-интерфейсом? Корректно ли содержимое базы данных после транзакции?
Запустить одну и ту же транзакцию параллельно во многих процессах. Сознательно заставить одну из транзакций заблокировать ресурс, необходимый другим транзакциям. Получают ли пользователи понятное объяснение ситуации? Корректно ли содержимое базы данных после транзакций?
Извлечь каждый из клиентских SQL-операторов из клиентской программы и выполнить их над базой данных в интерактивном режиме. Совпадают ли полученные результаты с ожидаемыми, а также соответствуют ли они результатам при выполнении SQL-операторов в составе программы?
Выполнить интерактивное тестирование каждого более сложного SQL-запроса (выдаваемого из клиентской программы или хранимой процедуры) по методу прозрачного ящика, включая внешние соединения, объединения, подзапросы, значения типа null, функции агрегации и т.д.