Процесс проектирования информационных систем, страница 3

•  Масштабирование вглубь – увеличение производительности аппаратного обеспечения без увеличения количества его единиц

•  Масштабирование вширь – увеличение количества единиц аппаратного обеспечения без увеличения производительности отдельной единицы

Достижение масштабируемости

•  Приложение не должно ждать

•  Компоненты приложения не должны конкурировать за ресурсы

–  Самые большие ресурсы следует выделять в начале работы приложения

–  Минимизировать обращения к файловым хранилищам и БД

–  Выделять ресурсы как можно позднее и высвобождать как можно ранее

•  Проектировать процессы коммутативными, т.е. при любом порядке выполнения и одинаковых входных данных выдающих одинаковый результат

•  Проектировать элементы приложения взаимозаменяемыми, что позволяет объединить ранее использованные элементы в пул

•  Минимизировать связи между действиями и ресурсами, что позволяет избежать узких мест и оптимально использовать вычислительные ресурсы

Готовность

•  Готовность – мера того, как часто система готова к обработке запросов относительно запланированного времени работы системы

•  Достижение готовности

–  Сокращение запланированного времени простоя

–  Сокращение незапланированного времени простоя, например за счёт применения кластеров

–  Использование балансировки сетевой нагрузки в кластерах

–  Использовать RAID массивы

–  Изолировать критичные приложения

Надёжность

•  Надёжность информационной системы – способность выдавать правильные результаты

•  Достижение надёжности

–  Документировать требования по надёжности в спецификации

–  Использовать продуманную архитектуру

–  Разработать систему самоконтроля

–  Использовать избыточность

–  Использовать качественные средства разработки

–  Использовать проверки надёжности внутри приложения

–  Реализовать систему обработки исключений

–  Использовать постепенное снижение возможностей системы при возникновении исключительных ситуаций

Производительность

•  Производительность системы определяется её количественными временными параметрами, например, количеством обрабатываемых запросов в секунду

•  Достижение производительности

–  Выделение ограничений с технической стороны (применяемые технологии могут ограничивать производительность, выявить аппаратные ограничения) и с организационной стороны (рассмотреть возможность смены технологий)

–  Определение возможностей системы – необходимо определить, для какой части системы, какой её возможности производительность является критичной и разработать тесты производительности

–  Определение нагрузки – нагрузка на систему определяет её производительность

Виды тестирования

•  Покрывающее тестирование (coverage testing) – тестирование программного кода на низком уровне

–  Основное техническое тестирование – выполняется автором кода

–  Внешнее тестирование – выполняется тестировщиком или экспертом

–  Коллегиальное тестирование – осуществляется программистом, не являющимся автором кода

•  Пользовательское тестирование (usage testing) – выполняется потенциальными пользователями системы

–  Определяет характер взаимодействия пользователей с системой

–  Позволяет выявить недостатки производительности системы

Термины тестирования

•  Входные тесты (Сheck-in tests) – при отправке кода в систему контроля версий

•  Блочные тесты (Unit tests) – контроль реализации возможностей системы, используется в покрывающих тестах

•  Функциональные тесты (Functional tests) – контроль реализации требуемого функционала, а не отдельных возможностей