|
|
|
Повышение надежности |
Компоненты, повторно используемые в других системах, оказываются значительно надежнее новых компонентов. Они протестированы и проверены в разных условиях работы. Ошибки, допущенные при их проектировании и реализации, обнаружены и устранены еще при первом их применении. |
Уменьшение проектных рисков |
Для уже существующих компонентов можно более точно прогнозировать расходы, связанные с их повторным использованием, чем расходы, необходимые на их разработку. Такой прогноз — важный фактор администрирования проекта, так как позволяет уменьшить неточности при предварительной оценке сметы проекта. |
Эффективное использование специалистов |
Часть специалистов, выполняющих одинаковую работу в разных проектах, может заниматься разработкой компонентов для их дальнейшего повторного использования, эффективно применяя накопленные ранее знания. |
Соблюдение стандартов |
Некоторые стандарты можно реализовать в виде набора стандартных компонентов. Использование стандартного пользовательского интерфейса повышает надежность систем, так как, работая со знакомым интерфейсом, пользователи совершают меньше ошибок. |
Ускорение разработки |
Часто для успешного продвижения системы на рынке необходимо как можно более раннее ее появление, причем независимо от полной стоимости ее создания. Повторное использование компонентов ускоряет создание систем, так как сокращается время на их разработку и тестирование |
Для успешного проектирования и разработки ПО с повторным использованием компонентов должны выполняться три основных условия:
Возможность поиска необходимых системных компонентов.
При повторном использовании необходимо удостовериться, что поведение компонентов предсказуемо и надежно. В идеале все компоненты должны быть сертифицированы, чтобы подтвердить соответствие определенным стандартам качества.
На каждый компонент должна быть соответствующая документация, цель которой — помочь разработчику получить нужную информацию о компоненте и адаптировать его к новому приложению.
Таблица 4 ‑ Проблемы повторного использования
Повышение стоимости сопровождения системы |
Недоступность исходного кода компонента может привести к увеличению расходов на сопровождение системы, так как повторно используемые системные элементы могут со временем оказаться не совместимыми с изменениями, производимыми в системе. |
Недостаточная инструментальная поддержка |
CASE-средства не поддерживают разработку ПО с повторным использованием компонентов. |
Синдром "изобретения велосипеда" |
Некоторые разработчики предпочитают переписать компоненты, так как полагают, что смогут при этом их усовершенствовать. Кроме того, многие считают, что создание программ "с нуля" перспективнее и "благороднее" повторного использования написанных другими программ. |
Содержание библиотеки компонентов |
Заполнение библиотеки компонентов и ее сопровождение может стоить дорого. В настоящее время еще недостаточно хорошо продуманы методы классификации, каталогизации и извлечения информации о программных компонентах |
Поиск и адаптация компонентов |
Компоненты ПО нужно найти в библиотеке, изучить и адаптировать к работе в новых условиях, что "не укладывается" в обычный процесс разработки ПО |
Покомпонентная разработка
Компонент — это независимо выполняемый программный объект. Исходный код компонента может быть недоступен, поэтому такой компонент не компилируется совместно с другими компонентами системы.
Компоненты объявляют свой интерфейс и все взаимодействия с ними осуществляются с его помощью. Интерфейс компонента описывается в терминах параметризованных операций, а внутреннее состояние компонента всегда скрыто.
Компоненты определяются через свои интерфейсы. В большинстве случаев компоненты можно описать в виде двух взаимосвязанных интерфейсов:
Интерфейс поставщика сервисов, который определяет сервисы, предоставляемые компонентом.
Интерфейс запросов, который определяет, какие сервисы доступны компоненту из системы, использующей этот компонент.
Рис. 46 ‑ Компонент службы печати
Компоненты могут существовать на разных уровнях абстракции:
- Функциональная абстракция. Компонент реализует отдельную функцию. В сущности, интерфейсом поставщика сервисов здесь является сама функция.
- Бессистемная группировка. В данном случае компонент — это набор слабо связанных между собой программных объектов и подпрограмм, например объявлений данных, функций и т.п. Интерфейс поставщика сервисов состоит из названий всех объектов в группировке.
- Абстракции данных. Компонент является абстракцией данных или классом, описанным на объектно-ориентированном языке. Интерфейс поставщика сервисов состоит из методов (операций), обеспечивающих создание, изменение и получение доступа к абстракции данных.
- Абстракции кластеров. Здесь компонент — это группа связанных классов, работающих совместно. Такие компоненты иногда называют структурой. Интерфейс поставщика сервисов является композицией всех интерфейсов объектов, составляющих структуру.
- Системные абстракции. Компонент является полностью автономной системой. Повторное использование абстракций системного уровня иногда называют повторным использованием коммерческих продуктов. Интерфейсом поставщика сервисов на этом уровне является так называемый программный интерфейс приложений (Application Programming Interface — API), который предоставляет доступ к системным командам и методам.
Рис. 47 ‑ Процесс проектирования с повторным использованием компонентов
Объектные структуры приложений
Существует три основных класса объектных структур:
Инфраструктуры систем. Обеспечивают разработку инфраструктур для систем связи (коммуникационных систем), пользовательских интерфейсов и компиляторов.
Интеграционные структуры. Как правило, состоят из набора стандартов и связанных с ними классов объектов, обеспечивающих взаимодействие и обмен данными между компонентами.
Структуры инструментальных сред разработки приложений. Связаны с отдельными прикладными областями, такими как телекоммуникации или финансы. Они встраиваются в систему знаний области приложения и поддерживают разработку приложений конечного пользователя.
Одной из самых известных и распространенных объектных структур для графических интерфейсов пользователя (GUI) является объектная структура «модель-представление-контроллер»:
Рис. 48 – Пример объектной структуры
Основные недостатки объектных структур — их сложность и время, необходимое для того, чтобы научиться работать с ними. Для полного изучения объектных структур может понадобиться несколько месяцев. Именно поэтому в больших организациях некоторые разработчики ПО специализируются по объектным структурам. Нет никаких сомнений в эффективности данного подхода к повторному использованию, однако высокие затраты на изучение объектных структур ограничивают его повсеместное распространение.
Повторное использование коммерческих программных продуктов
Термин "коммерческие программные продукты" можно применить к любому компоненту, созданному независимым производителем.
В принципе использование коммерческих систем не отличается от использования любого другого более специализированного компонента. Для этого необходимо изучить интерфейсы системы и использовать их для организации взаимодействия с другими системными компонентами, также необходимо разработать системную архитектуру, которая поддерживала бы коммерческие системы при совместной работе.
Разработка повторно используемых компонентов
Разработка идеального компонента для повторного использования должна быть процессом (основанным на опыте и знаниях о проблемах повторного использования) создания обобщенных компонентов, которые можно адаптировать для разных вариантов их использования.
Программный компонент, предназначенный для повторного использования, имеет ряд особенностей:
- Должен отражать стабильные абстракции предметной области, т.е. фундаментальные понятия области приложения, которые меняются медленно.
- Должен скрывать способ представления своего состояния и предоставлять операции, которые позволяют обновлять состояния и получать к нему доступ.
- Должен быть максимально независимым. В идеале компонент должен быть настолько автономным, чтобы не нуждаться в других компонентах.
- Все исключительные ситуации должны быть частью интерфейса компонента. Компоненты не должны сами обрабатывать исключения, так как в разных приложениях существуют разные требования для обработки исключительных ситуаций. Лучше определить те исключения, которые необходимо обрабатывать, и объявить их как часть интерфейса компонента.
Семейства приложений
Один из наиболее эффективных подходов к повторному использованию базируется на понятии семейства приложений. Семейство приложений, или серия программных продуктов, — это набор приложений, имеющих общую архитектуру, отражающую специфику конкретной предметной области. Вместе с тем все приложения одной серии различны. Каждый раз при создании нового приложения повторно используется общее ядро семейства приложений.
Существуют различные специализации семейств приложений:
Платформенная специализация, при которой для разных платформ разрабатываются свои версии приложения.
Конфигурационная специализация, при которой разные версии приложения создаются для управления различными периферийными устройствами.
Функциональная специализация, при которой создаются разные версии приложения для заказчиков с различными требованиями.
Процесс адаптации семейства приложений для создания нового приложения состоит из нескольких этапов:
Рис. 49 – Процесс адаптации семейства приложений
Проектные паттерны
Попытки повторно использовать действующие компоненты постоянно ограничиваются конкретными решениями, принятыми системными разработчиками. Один из способов решения данной проблемы — повторное использование более абстрактных структур, не содержащих деталей реализации. Такие структуры разрабатываются специально для того, чтобы соответствовать определенному приложению.
Паттерн — это описание проблемы и метода ее решения, позволяющее в дальнейшем использовать это решение в разных условиях. Паттерн не является детальной спецификацией. Скорее, он представляет собой описание, в котором аккумулированы знания и опыт. Паттерн — решение общей проблемы.
При создании ПО проектные паттерны всегда связаны с объектно-ориентированным проектированием. Чтобы обеспечить всеобщность, паттерны часто используют такие объектно-ориентированные понятия, как наследование и полиморфизм. Однако общий принцип использования паттернов одинаково применим при любом подходе к проектированию ПО.
Основные элементы проектного паттерна:
Содержательное имя, которое является ссылкой на паттерн.
Описание проблемной области с перечислением всех ситуаций, в которых можно использовать паттерн.
Описание решений с отдельным описанием различных частей решения и их взаимоотношений. Это не описание конкретного проекта, а шаблон проектных решений, который можно использовать различными способами.
Описание "выходных" результатов — это описание результатов и компромиссов, необходимых для применения паттерна. Обычно используется для того, чтобы помочь разработчикам оценить конкретную ситуацию и выбрать для нее наиболее подходящий паттерн.
Часто в описание паттерна вводятся также разделы мотивации (обоснование полезности паттерна) и применимости (описание ситуаций, в которых можно использовать паттерн).
В качестве примера рассмотрим паттерн Обозреватель. Данный паттерн используется тогда, когда необходимы разные представления состояния объекта. Он выделяет нужный объект и представляет его в разных формах:
Рис. 50 ‑ Паттерн Обозреватель - используется тогда, когда необходимы разные представления состояния объекта. Он выделяет нужный объект и представляет его в разных формах
Проектирование вычислительных систем охватывает широкий спектр проектных действий — от проектирования аппаратных средств до проектирования интерфейса пользователя.
Организации-разработчики часто нанимают специалистов для проектирования аппаратных средств и очень редко для проектирования интерфейсов.
Виды интерфейсов: текстовый и графический.
Графические интерфейсы обладают рядом преимуществ:
- Их относительно просто изучить и использовать. Пользователи, не имеющие опыта работы с компьютером, могут легко и быстро научиться работать с графическим интерфейсом.
- Каждая программа выполняется в своем окне (экране). Можно переключаться из одной программы в другую, не теряя при этом данные, полученные в ходе выполнения программ.
- Режим полноэкранного отображения окон дает возможность прямого доступа к любому месту экрана.
На схеме изображен итерационный процесс проектирования пользовательского интерфейса. Наиболее эффективным подходом к проектированию интерфейса пользователя является разработка с применением моделирования пользовательских функций.
Рис. 51 – Процесс проектирования интерфейса пользователя
Таблица 5 ‑ Принципы проектирования интерфейсов
Принцип |
Описание |
Учёт знаний пользователя |
Необходимо использовать термины и понятия, взятые из опыта будущих пользователей системы, а объекты, управляемые системой, должны быть напрямую связаны с рабочей средой пользователя. |
Согласованность |
Команды и меню системы должны быть одного формата, параметры должны передаваться во все команды одинаково и пунктуация команд должна быть схожей. Удобно, когда для всех типов объектов системы поддерживаются одинаковые методы. |
Минимум неожиданностей |
Одно и тоже действие в различных ситуациях должно приводить к аналогичной реакции. |
Способность к восстановлению |
В интерфейсах должны быть средства предотвращающие ошибки пользователя, а также позволяющие корректно восстановить информацию после ошибок. Это подтверждение деструктивных действий и возможность отмены действий. |
Руководство пользователя |
Интерфейс должен предоставлять необходимую информацию в случае ошибок пользователя и поддержать средства контекстно-зависимой справки. |
Учёт разнородности пользователей |
В интерфейсе должны быть средства для удобного взаимодействия с пользователями, имеющими разный уровень квалификации и различные возможности. |
Разработчиками интерфейсов предусмотрены 5 основных стилей взаимодействия пользователя с системой.
Таблица 6 – Стили взаимодействия с пользователем
1. |
Непосредственное манипулирование |
|
2. |
Выбор из меню |
|
3. |
Заполнение форм |
|
4. |
Командный язык |
|
5. |
Естественный язык |
|
Таблица 7 ‑ Преимущества и недостатки стилей взаимодействия
Стиль взаимодействия |
Основные преимущества |
Основные недостатки |
Примеры приложений |
Прямое манипулирование |
Быстрое и интуитивно понятное взаимодействиеЛегок в изучении |
Сложная реализация. Подходит только там, где есть зрительный образ задач и объекта |
Видеоигры; системы автоматического проектирования |
Выбор из меню |
Сокращение количества ошибок пользователя. |
Медленный вариант для опытных пользователей. Может быть сложным, если меню состоит из большого количества вложенных пунктов |
Главным образом системы общего назначения |
Заполнение форм |
Ввод с клавиатуры минимальный |
Занимает пространство на экране |
Системы управления запасами; обработка финансовой информации |
Командный язык |
Простой ввод данных. |
Труден в изучении. |
Операционные системы; библиотечные системы |
Естественный язык |
Легок в изучении, мощный и гибкий. Подходит неопытным пользователям. Легок в настройке |
Сложно предотвратить ошибки ввода Требует большого ручного набора |
Системы расписания; системы хранения данных WWW |
Модель с разделенными интерфейсом командного языка и графическим интерфейсом лежит в основе некоторых операционных систем, в частности Linux.
Рис. 52 ‑ Модель с разделенными интерфейсом
Рис. 53 – Модель представления информации
Принимая решение по представлению данных, разработчик должен учитывать ряд факторов:
- Что нужно пользователю: точные значения данных или соотношения между значениями?
- Насколько быстро будут происходить изменения значений данных? Нужно ли немедленно показывать пользователю изменение значений?
- Должен ли пользователь предпринимать какие-либо действия в ответ на изменение данных?
- Нужно ли пользователю взаимодействовать с отображаемой информацией посредством интерфейса с прямым манипулированием?
- Информация должна отображаться в текстовом (описательно) или числовом формате? Важны ли относительные значения элементов данных?
Альтернативы
Часто визуальное представление информации нагляднее, чем табличный аналог
|
![]() |
Использование в интерфейсах цвета:
- Используйте ограниченное количество цветов
- Используйте разные цвета для показа изменений в состоянии системы
- Для помощи пользователю используйте цветовое кодирование
- Используйте цветовое кодирование продуманно и последовательно
- Осторожно используйте дополняющие цвета
Рис. 54 ‑ Пример неправильного использования цветов
Средства поддержки пользователя
Одним из основных аспектов проектирования пользователя является справочная система. Справочную систему приложения составляют:
- сообщения, генерируемые системой в ответ на действия пользователя;
- диалоговая справочная система;
- документация, поставляемая с системой.
Таблица 8 ‑ Факторы проектирования текстовых сообщений
Фактор |
Описание |
Содержание |
Справочная система должна знать, что делает пользователь, и реагировать на его действия сообщениями соответствующего содержания |
Профессиональный уровень пользователя |
Сообщения должны содержать сведения, соответствующие профессиональному уровню пользователей. |
Опыт пользователя |
Если пользователи хорошо знакомы с системой, им не нужны длинные и подробные сообщения. В то же время начинающим пользователям такие сообщения покажутся сложными, мало понятными и слишком краткими. |
Фактор |
Описание |
Стиль сообщений |
Сообщения должны иметь положительный, а не отрицательный оттенок. Всегда следует использовать активный, а не пассивный тон обращения. Не должно быть оскорблений или попыток пошутить |
Культура |
Разработчик сообщений должен быть знаком с культурой той страны, где продается система. Сообщение, вполне уместное в культуре одной страны, может оказаться неприемлемым в другой |
Таблица 9 ‑ Факторы проектирования текстовых сообщений
Фактор |
Описание |
Содержание |
Справочная система должна знать, что делает пользователь, и реагировать на его действия сообщениями соответствующего содержания |
Профессиональный уровень пользователя |
Сообщения должны содержать сведения, соответствующие профессиональному уровню пользователей. |
Опыт пользователя |
Если пользователи хорошо знакомы с системой, им не нужны длинные и подробные сообщения. В то же время начинающим пользователям такие сообщения покажутся сложными, мало понятными и слишком краткими. |
Фактор |
Описание |
Стиль сообщений |
Сообщения должны иметь положительный, а не отрицательный оттенок. Всегда следует использовать активный, а не пассивный тон обращения. Не должно быть оскорблений или попыток пошутить |
Культура |
Разработчик сообщений должен быть знаком с культурой той страны, где продается система. Сообщение, вполне уместное в культуре одной страны, может оказаться неприемлемым в другой |
Первое впечатление пользователя о системе основано на сообщениях об ошибках, они должны:
- Быть последовательными и конструктивными
- Быть вежливыми, краткими, не содержать оскорблений.
- Не содержать звуковых сигналов, которые могут сбить с толку посетителей.
Желательно:
- Связать сообщение с контекстно-зависимой справкой.
- Включить в сообщение варианты исправления ошибки.
|
|
Это сообщение скорректировано плохо: - Оно обвиняет пользователя в совершении ошибки. - Не рассчитано на уровень знаний пользователя. - Не предполагаются способы исправления ошибки.
|
Это сообщение лучше: - Оно доброжелательно - В нем используются медицинские термины. - Предполагается простой способ исправления ошибки
|
В связи с тем, что справочная система имеет иерархическую структуру, где на верхних уровнях иерархии содержится более полная информация, а на нижних – более подробная, может возникнуть следующая ситуация: пользователь заходит в систему получив сообщение об ошибке и затем перемещается в системе по ссылкам. Через некоторое время он запутывается и ему необходимо начинать все сначала. Чтобы таких ситуаций не возникало информацию удобно отображать в нескольких окнах.
Рис. 55 ‑ Пример справочной системы
Тексты справочной системы должны быть:
- Написаны совместно с создателями приложения.
- Продуманы так, чтобы его можно было прочитать в окне малого размера(только необходимая информация).
- Адаптированы к неопытному пользователю.
Документация пользователя должна содержать 5 документов:
- Функциональное описание, в котором кратко представлены функциональные возможности системы. Прочитав функциональное описание, пользователь должен определить, та ли это система, которая ему нужна.
- Документ по инсталляции системы, в котором содержится информация по установке системы.
- Вводное руководство, представляющее неформальное введение в систему, описывающее ее "повседневное" использование.
- Справочное руководство, в котором описаны возможности системы и их использование, представлен список сообщений об ошибках и возможные причины их появления, рассмотрены способы восстановления системы после выявления ошибок.
- Руководство администратора, необходимое для некоторых типов программных систем. В нем дано описание сообщений, генерируемых системой при взаимодействии с другими системами, и описаны способы реагирования на эти сообщения.
Рис. 56 ‑ Документация пользователя
Вместе с перечисленными руководствами необходимо предоставлять другую удобную в работе документацию. Для опытных пользователей системы удобны разного вида предметные указатели, которые помогают быстро просмотреть список возможностей системы и способы их использования.
Оценивание интерфейса
Это часть общего процесса тестирования и аттестации систем ПО, в котором оценивается удобство использования и степень соответствия интерфейса требованиям пользователя.
Таблица 10 ‑ Показатели удобства использования.
ПОКАЗАТЕЛЬ |
ОПИСАНИЕ |
Изучаемость |
Количество времени обучения, необходимое для начала продуктивной работы. |
Скорость работы |
Скорость реакции системы на действия пользователя. |
Устойчивость |
Устойчивость системы к ошибкам пользователя. |
Восстанавливаемость |
Способность системы восстанавливаться после ошибок пользователя. |
Адаптируемость |
Способность системы “подстраиваться” к разным стилям работы пользователя. |
Существуют простые и не дорогостоящие методики оценивания, позволяющие выявить отдельные дефекты в интерфейсах.
- Анкеты, в которых пользователи оценивают интерфейс. Эти сведения дают возможность разработчикам зафиксировать, пользователи с каким уровнем знаний имеют проблемы с интерфейсом.
- Наблюдения за работой пользователей. Позволяют отслеживать, какие используются сервисы, совершаемые ошибки, как пользователи взаимодействуют с системой.
- Видеонаблюдения типичного использования системы. Может оказаться полезным для обнаружения проблем, но для уточнения используются другие методы оценивания.
- Добавление в систему программного кода, который собирал бы информацию о наиболее часто используемых системных сервисах и наиболее распространенных ошибках. Способствует изменению интерфейса так, чтобы доступ к наиболее часто использующимся операциям был минимален.
Выводы
Грамотно спроектированный интерфейс пользователя крайне важен для успешной работы системы. Сложный в применении интерфейс, как минимум, приводит к ошибкам пользователя. Основой принципов проектирования интерфейсов пользователя являются человеческие возможности.
Важным аспектом интерфейса является грамотное взаимодействие с пользователем: ввод данных и их представление.
Разработчики ПО должны уделять должное внимание средствам поддержки пользователя.
Оценивание интерфейса является частью общего процесса тестирования и аттестации систем ПО.
Каково место проектирования и оценивания интерфейса пользователя в жизненном цикле ПО?
Почему проектирование интерфейса является важным моментом при создании ПО?
Какими принципами должен руководствоваться разработчик ПО при разработке интерфейса пользователя.
Перечислите преимущества и недостатки основных стилей взаимодействия пользователя с системой.
В каких случаях следует представлять «голые» данные для пользователя, а в каких некоторое представление от данных?
Какие ошибки допускают разработчики интерфейсов при использовании цветов?
Существует мнение, что пользователю необязательно показывать сообщение с ошибкой, а лучше исправить её системными средствами, не напрягая лишний раз пользователя. Верно ли оно? Обосновать.
Что входит в документацию пользователя?
Обосновано ли привлечение специалистов (каких?) для оценивания интерфейса?
|