Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Технологии и методы программирования. Учебное пособие-1

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
включающее несколько ядер, потоков или процессоров, что позволяет им запускать множество процессов одновременно и максимально ис­пользовать их вычислительный потенциал;
простая и удобная структура программы, за счет этого в некото-
рых ситуациях технологии параллельного программирования снижают трудозатраты разработчика ПО.
Распределенное программирование – способ обработки данных,
при котором различные части программы
выполняются на нескольких компьютерах, образующих распределенную вычислительную систему с возможностью наращивания производительности. Распределенное программирование реализуется программными платформами, обеспе­чивающими разбиение больших задач на множество подзадач, распре­деление подзадач по различным компьютерам, прием результатов вы­числений и объединение их в единое целое. Распределенное програм­мирование обычно включает сетевое программирование в той
или иной
форме.
Преимущества распределенного программирования (распределен-
ных вычислительных систем):
возможности масштабирования. С ростом рабочих нагрузок и тре-
бований при необходимости можно добавлять в распределенные вычис­лительные сети новые узлы (дополнительные вычислительные устрой­ства);
доступность. Структура распределенной вычислительной си-
стемы характеризуется отказоустойчивостью, поскольку при дублиро­вании программ и данных
она может продолжать работать, даже если
откажет отдельный узел;
эффективность Распределенные вычислительные системы обес-
печивают повышенную производительность и оптимальное использова­ние ресурсов;
прозрачность. Распределенные вычислительные системы обеспе-
чивают логическое разделение между пользователем и физическими устройствами, поэтому для создания распределенных программ можно использовать различное программное обеспечение и операционные
си-
стемы.
Известны две технологии поддержки параллельного и распределен-
ного программирования.
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]