Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Технологии и методы программирования. Учебное пособие-1
.pdf
включающее несколько ядер, потоков или процессоров, что позволяет
им запускать множество процессов одновременно и максимально использовать их вычислительный потенциал;
простая и удобная структура программы, за счет этого в некото-
рых ситуациях технологии параллельного программирования снижают
трудозатраты разработчика ПО.
Распределенное программирование – способ обработки данных,
при котором различные части программы
выполняются на нескольких
компьютерах, образующих распределенную вычислительную систему
с возможностью наращивания производительности. Распределенное
программирование реализуется программными платформами, обеспечивающими разбиение больших задач на множество подзадач, распределение подзадач по различным компьютерам, прием результатов вычислений и объединение их в единое целое. Распределенное программирование обычно включает сетевое программирование в той
или иной
форме.
Преимущества распределенного программирования (распределен-
ных вычислительных систем):
возможности масштабирования. С ростом рабочих нагрузок и тре-
бований при необходимости можно добавлять в распределенные вычислительные сети новые узлы (дополнительные вычислительные устройства);
доступность. Структура распределенной вычислительной си-
стемы характеризуется отказоустойчивостью, поскольку при дублировании программ и данных
она может продолжать работать, даже если
откажет отдельный узел;
эффективность Распределенные вычислительные системы обес-
печивают повышенную производительность и оптимальное использование ресурсов;
прозрачность. Распределенные вычислительные системы обеспе-
чивают логическое разделение между пользователем и физическими
устройствами, поэтому для создания распределенных программ можно
использовать различное программное обеспечение и операционные
си-
стемы.
Известны две технологии поддержки параллельного и распределен-
ного программирования.
1. OpenMP (Open Multi-Processing). С помощью этой технологии
можно задействовать несколько ядер процессора компьютера, на котором
61

осуществляется решение задачи. OpenMP реализует параллельные вычисления с помощью многопоточности, в которой главный (master) поток создает набор подчиненных (slave) потоков и задача распределяется
между ними [75, 76].
2. MPI (Message Passing Interface). Эта технология позволяет задействовать несколько ядер процессора компьютера, на котором осуществляется решение задачи, или процессоры нескольких компьютеров, находящихся в локальной сети. Программа в
этом случае – множество параллельных взаимодействующих процессов, которые работают каждый
в своей выделенной области памяти. По сути – это независимые программы, которые общаются между собой в ходе работы. Каждый процесс параллельной программы может исполнять один и тот же программный код (модель SPMD – Single Process, Multiple Data), или же
исполнять разные исходные коды (модель
MIMD – Multiple Instruction,
Multiple Data) [77].
ЗАМЕЧАНИЕ ПО АЛГОРИТМИЗАЦИИ
Алгоритмизация – процесс составления описания необходимой последовательности действий (алгоритма), с помощью которой можно однозначно реализовать выбранный метод решения задачи.
Алгоритм – конечное упорядоченное множество точно определенных правил для решения конкретной задачи [3].
Из определения алгоритма вытекают его основные свойства:
детерминированность – однозначность получения результата при
одних и тех же исходных
данных;
результативность – обязательность получения искомого резуль-
тата за конечное число шагов;
массовость – возможность получения результата при различных
исходных данных рассматриваемого класса задач;
дискретность – возможность разбиения алгоритма на отдельные
элементарные действия, позволяющие рассматривать алгоритм с различным уровнем детализации.
При разработке алгоритма сложной задачи целесообразно провести
декомпозицию вычислительного процесса
, составить укрупненную
схему алгоритма с целью выявления типовых участков алгоритма и использования для их реализации стандартных или ранее разработанных
алгоритмов (процедурное программирование). Время, потраченное
62

на разработку вначале укрупненного, а затем детального алгоритма,
полностью окупается при программировании и отладке программы.
Визуализация описания алгоритмов может осуществляться следую-
щими способами:
на псевдокоде – описание на подмножестве естественного языка,
имитирующем алгоритмический язык;
в виде блок-схем – изображение, содержащее функциональные
общепринятые графические символы алгоритма [78];
непосредственно на языке программирования
(исходный код);
с помощью словесно-формульного описания на естественном
языке.
63

7. ПРОЕКТИРОВАНИЕ
ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА
ОБЩИЕ СВЕДЕНИЯ
Не вдаваясь в существо прикладных задач, решаемых программным
средством, среди функций программы можно выделить функции, обслуживающие взаимодействие пользователя с программой. Это взаимодействие пользователя с компьютером, т. е. использование программного
продукта в деятельности, реализуется через пользовательский интерфейс (ПИ, GUI). От того, насколько интерфейс будет согласован с решаемой задачей, возможностями
теля), зависят востребованность программы, ее конкурентность и коммерческая ценность.
Интерфейс пользователя – компоненты интерактивной системы
(программное обеспечение и аппаратные средства), которые предостав-
ляют пользователю информацию и инструменты управления для выполнения производственных заданий [79].
Основываясь на этом определении, можно говорить об интерфейсе
деловых приложений, т. е. программ
ности человека. Это уточнение исключает из рассмотрения в рамках
настоящего пособия игровые программы, имитаторы и им подобные,
для которых характерно воспроизведение с той или иной подробностью
реального мира.
Интерфейс пользователя – элементы и компоненты программы, которые способны оказывать влияние на взаимодействие пользователя
с программным обеспечением. В
набор задач пользователя, которые он решает при помощи си-
стемы (функциональность интерфейса);
и пристрастиями человека (пользова-
, используемых в деловой деятель-
том числе:
64

элементы управления программой;
средства отображения информации, отображаемая информация,
форматы и коды;
командные режимы, язык пользователь-интерфейс;
устройства и технологии ввода данных;
диалоги, взаимодействие и обмен данными между пользователем
и компьютером;
обратная связь с пользователем;
поддержка принятия решений в конкретной предметной области;
порядок
использования программы и документация на нее.
Интерактивная система – система компонентов аппаратного
и программного обеспечения, которая получает информацию, вводимую пользователем, и передает ему свой ответ, помогая в работе или
выполнении задачи [80].
Интерактивная система – диалоговая система, являющаяся комбинацией компонентов аппаратных средств и программного обеспечения,
входом которой служат команды и данные,
поступающие от пользователя, а выход определяют реакции самой системы, направленные на
поддержание взаимодействия с пользователем для выполнения производственного задания [80].
Диалог – взаимодействие между пользователем и интерактивной
системой, рассматриваемое как последовательность действий пользователя (входы) и ответных реакций системы (выходы), направленное на
достижение установленной цели.
Примечание 1. Действия пользователя включают не только ввод данных, но
и действия по перемещению данных.
Примечание 2. Понятие диалога охватывает как форму (синтаксис), так
и смысл (семантику) взаимодействия.
Принципы организации диалога – установление общих целей раз-
работки диалога без привязки к конкретным методам.
Требования к организации диалога – требования, отражающие
потребности пользователя в пределах установленной области применения.
Индустрия программного обеспечения, ориентированная на рынок, предъявляет определенные требования к пользовательскому
интерфейсу и соответственно к разработчикам и программистам.
65

Привлекательность, комфортность для пользователя стали таким же
существенным фактором, как и функциональность. Преимущества
хорошего пользовательского интерфейса:
снижение количества ошибок пользователя;
снижение стоимости поддержки системы;
уменьшение потерь продуктивности работников при внедрении
системы и более быстрое восстановление утраченной продуктивности;
улучшение морального состояния персонала;
уменьшение расходов на модификацию графической
турно-функциональной составляющей (редизайн)
1
пользовательского
и/или струк-
интерфейса по требованию пользователей;
доступность функциональности системы для максимального ко-
личества пользователей.
Однако существующая практика внедрения современных информационных технологий показывает, что очень часто разработчики нечетко
понимают, кто реальные пользователи создаваемого программного продукта, а пользователи, в свою очередь, не понимают, зачем нужен данный программный продукт в
их деятельности.
Таким образом, основная проблема разработки ПИ связана, с одной
стороны, со сложностью представления опыта и ожиданий пользователя, с другой – изменением условий деятельности (обучением пользователя работе в новых условиях и изменением условий использования
программного средства).
При создании программного продукта необходимо учитывать следующее.
1. Не может быть одного
наилучшего инструмента, наилучшей программы и интерфейса для пользователя, потому что цели их использования меняются в зависимости от возникающих проблем и решаемых
пользователем задач.
2. Использование программного продукта – это одно из возможных
средств решения задач пользователем.
3. Нельзя давать пользователю (в интерфейсе) инструментов, кото-
рые позволят ему делать то, что не
входит в его полномочия и может
нанести ущерб организации в целом.
1
Редизайн – это обновление, переработка интефейса в целом, в том числе
доработка структуры, юзабилити, а иногда функционалюности
66

Последнее требование сложно выполнить, так как полномочия пользователя вследствие непрерывности процесса организации могут меняться за счет перераспределения их на временной или постоянной основе.
Из этого следует, что нет такого программного продукта и соответственно пользовательского интерфейса, которые отвечали бы всем потребностям пользователя. Поэтому при создании пользовательских ин
-
терфейсов особое внимание необходимо уделять вопросам согласованного понимания заказчиком, пользователями и группой разработчиков
программного продукта, «опыта» и ожиданий пользователей, т. е. вопросам юзабилити
2
и построения концептуальной (ментальной) модели
пользователя.
ЭТАПЫ ПРОЕКТИРОВАНИЯ ИНТЕРФЕЙСА
Проектирование интерфейса включает в себя создание концепции
интерфейса и информационной архитектуры системы, а также прототипирование и описание интерфейса приложения.
1. Составляются и детально прорабатываются сценарии работы
пользователей с программой. Сценарий – это описание действий,
выполняемых пользователем в рамках решения конкретной задачи по
достижению его цели. После определения сценариев формируется список
всех функций (функциональных требований) приложения с привязкой к группам пользователей, их потребностям и задачам. В программе
функция представлена функциональным блоком с соответствующей
экранной формой (формами). Возможно, что несколько функций объединяются в один функциональный блок. Таким образом, на этом этапе
устанавливается необходимое число экранных форм и навигационные
взаимосвязи функциональных блоков
.
2. На основе выделенных пользовательских групп, сценариев ра-
боты с приложением, а также пользовательских и функциональных требований разрабатывается внешний вид всех экранов (форм) или страниц
приложения.
2
Юзабилити – мера эффективного и удобного использования продукта
пользователями для достижения заданных целей [80].
67

ПРИНЦИПЫ ПРОЕКТИРОВАНИЯ ИНТЕРФЕЙСА
1. Ориентация на метафору3. В интерфейсе необходимо использовать термины и понятия, взятые из опыта пользователей системы. Это
позволит пользователю легче понимать и интерпретировать изображение на экране, ему не нужно каждый раз заглядывать в руководство,
чтобы узнать, как выполняется то или иное действие – оно воспринимается на интуитивном уровне. Кроме того, у пользователя
возникает чувство психологического комфорта, когда он встречает хорошо знакомую
обстановку.
2. Согласованность. Интерфейс должен быть согласованным в том
смысле, что однотипные операции должны выполняться одним и тем же
способом.
3. Минимум неожиданностей. Поведение системы должно быть
прогнозируемым.
4. Справочная система. Интерфейс должен предоставлять необходи-
мую информацию в случае ошибок пользователя и поддерживать средства контекстно-зависимой справки.
5. Учет разнородности пользователей. В интерфейсе должны быть
средства для удобного взаимодействия с пользователями, имеющими
разный уровень квалификации.
Считается, что использование принципов и правил проектирования
пользовательских интерфейсов на практике позволит создавать интуитивно понятные интерфейсы.
Основные составляющие «понятности интерфейса»:
1) использование при разработке
ПИ одного из способов построения
ментальной модели пользователем;
2) использование метафор;
3) использование аффорданса;
4) использование стандартов.
Нужно заметить, что это не дает возможности построить эффективную ментальную модель
4
, поэтому пользователю надо давать такую воз-
можность, обучая одним из способов:
3
Метафора (визуальная) – изображение, которое символизирует сложную
идею или показывает отношение между двумя понятиями, обычно не связанными между собой. Метафора помогает объяснить новое, незнакомое явление
через то, которое пользователь уже знает.
4
Ментальная модель – основанное на предыдущем опыте осмысление спо-
соба взаимодействия с продуктом.
68

1) пользователь должен всё делать так, как этого требует система,
следуя принципу «делай как я». При этом от пользователя не требуется
понимания «зачем он это делает» – так положено по инструкции;
2) пользователю сначала следует объяснить на определенном уровне
суть процессов, происходящих в системе, а затем закрепить понимание
на практике.
Ментальная модель пользователя
(в юзабилити) – концепция, согласно которой пользователь при работе с системой (продуктом, интерфейсом) формирует свое представление (внутреннюю модель) того, чем
является эта система и по каким принципам она работает.
Ментальные модели включают в себя как само содержание знания,
так и структуру взаимоотношений его компонентов, принципы работы
системы. Ментальные модели
нового опыта и знаний, при этом релевантный
не статичны и изменяются с получением
5
опыт может быть получен в совершенно других ситуациях, изменяя ожидания пользователя
(например, получение опыта онлайн-покупки в одном магазине может
создать устойчивую ментальную модель и ожидания от работы всех
интернет-магазинов). Это означает, что появление новых продуктов
или интерфейсных решений возможно, но требует от разработчиков
внимания к существующим
пользовательским ментальным моделям,
а также добавления инструментов обучения для формирования новых
ментальных моделей (например, стартового обучения, всплывающих
подсказок в интерфейсе и др.).
Одна из больших проблем юзабилити – это разрыв между ментальными моделями разработчиков и пользователей. Поскольку разработчики четко знают, как работает система и ее элементы, они формируют
точные ментальные
модели для разрабатываемых продуктов и уверены,
что системы абсолютно понятны. Однако в реальности ментальные модели пользователей могут быть далеки от ментальных моделей разработчиков – пользователи могут не знать принципов работы системы, не
обладать важными техническими знаниями или не иметь предшествующего опыта работы, что превращает идеально соответствующую ментальной
модели разработчика систему в запутанную и сложную систему
для пользователя.
Соответственно при разработке интерфейсов и систем понимание мен-
тальной модели пользователя должно лежать в основе проектирования.
5
Релевантный – уместный, относящийся к делу.
69

Основная цель разработчиков – сделать так, чтобы пользовательский
интерфейс хорошо передавал основы системы и пользователи формировали точные ментальные модели.
Метафора – это одно из ключевых понятий при проектировании
ПИ. Оно означает перенос свойства или признаков одного объекта на
другой для выяснения их сходства или аналогии. Суть использования
метафор в том, что они
позволяют пользователю не создавать новую
ментальную модель, а воспользоваться ранее построенной для других
целей.
Ориентация на метафору означает, что в интерфейсе необходимо использовать термины и понятия, взятые из опыта пользователей системы.
Это позволит пользователю легче понимать и интерпретировать изображение на экране, ему не нужно каждый раз заглядывать в
руководство,
чтобы узнать, как выполняется то или иное действие, – оно воспринимается на интуитивном уровне. Это создает чувство психологического
комфорта.
Компьютерные метафоры помогают:
пользователям – осваивать новые для себя области деятельности,
осмысляя их в терминах области, которая им уже знакома и понятна;
проектировщикам – структурировать элементы интерфейса по
аналогии с известной
пользователям областью.
Особенности применения метафор
Опасно полностью копировать образец, используя метафору, доста-
точно взять из него самое лучшее.
Не обязательно брать метафору из реального мира, ее можно приду-
мать.
Эффективнее всего метафорически объяснять значение отдельных
объектов.
Если метафора как-то ограничивает систему, от нее следует отка-
заться.
Недостатки метафор
Не
для любой функциональности можно подобрать подходящую метафору. Начиная поиск, заранее узнать о существовании хорошей метафоры невозможно.
Метафора может оказаться бесполезной, если ее понимает проектировщик, но не знают пользователи или ее невозможно однозначно передать в интерфейсе.
70
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
