Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП / ООП / ры_приложений_полная_книга.pdf
Скачиваний:
524
Добавлен:
18.02.2017
Размер:
7.08 Mб
Скачать

снижения вероятности успеха атак и их негативного влияния на работу системы. Безопасная система должна защищать ресурсы и предотвращать несанкционированный доступ или изменение данных. Безопасность системы определяют такие факторы, как конфиденциальность, целостность и доступность. Для обеспечения безопасности системы используются аутентификация, шифрование, аудит и протоколирование. Рассмотрим основные проблемы безопасности:

Подделка удостоверения пользователя. Избежать подделки удостоверения пользователя позволят аутентификация и авторизация. Определите границы доверия и проводите аутентификацию и авторизацию пользователей, пересекающих эти границы.

Нанесение ущерба злонамеренным вводом, таким как внедрение SQL-кода или межсайтовая атака внедрением сценариев. Защититься от таких атак поможет проверка длины, диапазона, формата и типа всего ввода с использованием принципов ограничения, отклонения и очистки. Выполняйте кодирование всех выходных данных, отображаемых пользователю.

Повреждение или подделка данных. Используйте разделение для анонимных, идентифицированных и аутентифицированных пользователей на сайте и применяйте инструментарий для протоколирования и реализации поведения, которое может отслеживаться. Также пользуйтесь защищенными транспортными каналами, шифруйте и подписывайте передаваемые по сети конфиденциальные данные.

Отказ пользователя от выполненных действий. Используйте инструментарий для аудита и протоколирования всех взаимодействий пользователя для наиболее важных операций приложения.

Разглашение сведений и утрата конфиденциальных данных. При проектировании всех аспектов приложения обеспечьте невозможность доступа или разглашения конфиденциальных данных системы или приложения.

Перебои в обслуживании из-за атак отказа в обслуживании (DoS). Сократите время ожидания сеансов и реализуйте код или аппаратные средства для выявления и предотвращения подобных атак.

Обеспеченность технической поддержкой

Обеспеченность технической поддержкой – это способность системы предоставлять сведения, необходимые для выявления и разрешения проблем при некорректной работе. Рассмотрим основные проблемы, связанные с обеспеченностью технической поддержкой:

Недостаток диагностических сведений. Примите решение о том, как будет выполняться наблюдение за работой системы и производительностью. Используйте программное обеспечение системного мониторинга, такое как Microsoft System Center.

Отсутствие инструментов диагностики и устранения неисправностей. Включите код для создания снимка состояния системы, который может использоваться для диагностики неисправностей, и специальный инструментарий, который сможет обеспечить подробные операционные и функциональные отчеты. Предусмотрите сбор данных

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

Отсутствие трассировки. С помощью обычных компонентов обеспечьте поддержку трассировки в коде, возможно, посредством методик аспектно-ориентированного программирования (Aspect Oriented Programming, AOP) или внедрения зависимостей. Включите трассировку в Веб-приложениях для выявления ошибок.

Отсутствие качественного мониторинга. Создайте хорошую модель, определяющую существенные изменения состояния, которые могут влиять на производительность приложения, и используйте эту модель для определения требований по инструментированию управления. Реализуйте инструментарий, такой как счетчики событий и производительности, которые выявляют изменения состояния и предоставляют эти изменения через стандартные системы, такие как журналы событий, файлы трассировки или Инструментарий управления Windows (WMI). Отслеживайте и собирайте достаточное количество сведений об ошибках и изменениях состояния для обеспечения точного мониторинга, отладки и управления. Также рассмотрите возможность создания пакетов управления, которые могут использоваться администраторами в средах мониторинга для управления приложением.

Тестируемость

Тестируемость – это мера того, насколько просто создать критерий проверки для системы и ее компонентов и выполнить эти тесты, чтобы определить, отвечает ли система данному критерию. Тестируемость означает, что сбои в системе могут быть своевременно и эффективно изолированы. Рассмотрим основные проблемы, связанные с тестируемостью:

Невозможность согласованного тестирования сложных приложений с множеством связей в логике работы, вероятно, из-за невозможности автоматизированного или детального тестирования приложения, имеющего монолитный дизайн. Обеспечивайте тестируемость, создавая модульные системы. Обеспечивайте инструментарий или реализуйте точки внедрения для тестирования, механизмы для отладки вывода и способы простого задания ввода. Проектируйте высокосвязные и слабосвязанные компоненты, которые могут тестироваться отдельно от остальной системы.

Отсутствие планирования тестов. Начинайте тестирование в цикле разработки как можно раньше. Используйте при тестировании фиктивные объекты и создавайте простые структурированные решения для тестирования.

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

Несогласованность входных данных и результатов; несоответствие результатов вводимым данным и неполное покрытие результатами предметной области вывода

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

Взаимодействие с пользователем /удобство и простота использования

Интерфейсы приложений должны проектироваться с учетом требований пользователя и потребителя, так чтобы они были просты в использовании, могли быть локализованы и глобализованы, были доступны для пользователей с физическими недостатками и обеспечивали хорошее взаимодействие с пользователем в общем. Рассмотрим основные проблемы взаимодействия с пользователем:

Для выполнения задачи требуется слишком много действий (и нажатий клавиш). Обеспечивайте максимальную простоту использования при проектировании логики работы с окнами и вводом данных, а также сценариев взаимодействия с пользователем.

Неверная последовательность выполнения шагов в многошаговых интерфейсах. По возможности используйте рабочие процессы для упрощения многошаговых операций.

Неправильная группировка элементов данных и элементов управления. Правильно выбирайте типы элементов управления (такие как группы переключателей и кнопкифлажки) и компонуйте элементы управления и содержимое, используя общепринятые шаблоны проектирования UI.

Плохая обратная связь с пользователем, особенно для ошибок и исключений, и в случаях, когда приложение не отвечает. Реализуйте технологии и техники, обеспечивающие максимальное взаимодействие с пользователем, такие как Asynchronous JavaScript and XML (AJAX)1 на Веб-страницах и проверка ввода на стороне клиента. Для фоновых задач и таких задач, как заполнение элементов управления данными или выполнение длительных задач, применяйте асинхронные методики.

Дополнительные источники

Электронная версия списка используемых источников по реализации и аудиту показателей качества доступна по адресу http://www.microsoft.com/architectureguide.

«Implementing System-Quality Attributes» (Реализация показателей качества системы)

по адресу http://msdn.microsoft.com/en-us/library/bb402962.aspx.

«Software Architecture in the New Economy» (Архитектура ПО в новых экономических условиях) по адресу http://msdn.microsoft.com/en-us/library/cc168642.aspx.

«Quality-Attribute Auditing: The What, Why, and How» (Аудит показателей качества: что,

как и почему) по адресу http://msdn.microsoft.com/en-us/library/bb508961.aspx.

Майкл К. Физерс. Эффективная работа с унаследованным кодом. Вильямс, 2009.

1 Асинхронный JavaScript и XML (прим. переводчика).

Кайл Бейли (Kyle Baley) и Дональд Белчам (Donald Belcham). Brownfield Application Development in .NET (Разработка приложений Brownfield в .NET). Manning Publications Co, 2008.

Майкл Найгард (Michael Nygard). Release It!: Design and Deploy Production-Ready Software (Проектирование и развертывание готового к производственной эксплуатации ПО). Pragmatic Bookshelf, 2007.

Соседние файлы в папке ООП