Введение
На сегодняшний день в мире существует более 130 миллионов компьютеров и более 80 % из них объединены в различные информационно-вычислительные сети от малых локальных сетей в офисах до глобальных сетей типа Internet. Всемирная тенденция к объединению компьютеров в сети обусловлена рядом важных причин, таких как ускорение передачи информационных сообщений, возможность быстрого обмена информацией между пользователями, получение и передача сообщений (факсов, E-Mail писем и прочего) не отходя от рабочего места, возможность мгновенного получения любой информации из любой точки земного шара, а так же обмен информацией между компьютерами разных фирм производителей работающих под разным программным обеспечением.
Такие огромные потенциальные возможности, которые несет в себе вычислительная сеть и тот новый потенциальный подъем, который при этом испытывает информационный комплекс, а так же значительное ускорение производственного процесса не дают нам право не принимать это к разработке и не применять их на практике.
Поэтому необходимо разработать принципиальное решение вопроса по организации ИВС (информационно-вычислительной сети) на базе уже существующего компьютерного парка и программного комплекса отвечающего современным научно-техническим требованиям с учетом возрастающих потребностей и возможностью дальнейшего постепенного развития сети в связи с появлением новых технических и программных решений.
Прикладное ПО (введение)
Прикладно́е (специальное) програ́ммное обеспе́чение (прикладное ПО, прикладные программы) — программы, предназначенные для выполнения определенных пользовательских задач и рассчитанные на непосредственное взаимодействие с пользователем. В отличие от прикладного, системное программное обеспечение (операционная система) используется для обеспечения работы компьютера самого по себе и выполнения прикладных программ. Если в качестве простой аналогии рассматривать операционную систему как корпус, мотор, шасси, колёса и другие компоненты автомобиля (те детали которые позволяют автомобилю ехать), то роль прикладных программ будут играть рулевое управление, сиденья, приборная панель, кондиционер и т. п., то есть те части которые позволяют нам использовать автомобиль в целях передвижения в нём и разнообразные дополнительные опции, повышающие удобство этого использования. Аналогично автомобилю, которым невозможно пользоваться без руля, разве что только для обогрева помещения, так и компьютер без прикладного ПО практически бесполезен, можно из него сделать разве что файл-сервер или принт-сервер.
Что такое программное обеспечение?
Программное обеспечение (software) – это набор команд, управляющих работой компьютера. Без программного обеспечения компьютер не сможет выполнять задачи, которые мы обычно связываем с компьютерами. Функции программного обеспечения следующие:
· управлять компьютерными ресурсами организации;
· обеспечивать пользователя всеми инструментами, необходимыми для извлечения пользы из этих ресурсов;
· выполнять роль посредника между организациями и хранимой информацией.
Выбор соответствующего потребностям организации программного обеспечения – одна из ключевых задач управляющего персонала.
Программы
Программа (program) – это набор команд для компьютера. Процесс создания или написания программ называется программированием, а люди, которые специализируются на этом виде деятельности – программистами. Синонимом слову "программа" является термин "приложение" (application).
Для того чтобы программа была выполнена, она должна быть загружена в оперативную память компьютера вместе с данными, которые необходимо обработать (обычно говорят запустить программу или запустить на выполнение). Когда выполнение программы завершено, она выгружается из оперативной памяти компьютера. Все современные компьютеры позволяют загрузить на выполнение несколько программ одновременно.
Основные типы программного обеспечения
Существует два основных типа программного обеспечения: системное и прикладное. Каждый тип выполняет различные функции. Системное программное обеспечение (system software) – это набор программ, которые управляют компонентами компьютера, такими как процессор, коммуникационные и периферийные устройства. Программистов, которые создают системное программное обеспечение, называют системными программистами.
К прикладному программному обеспечению (application software) относятся программы, написанные для пользователей или самими пользователями, для задания компьютеру конкретной работы. Программы обработки заказов или создания списков рассылки – примеры прикладного программного обеспечения. Программистов, которые пишут прикладное программное обеспечение, называют прикладными программистами.
Оба типа программного обеспечения взаимосвязаны и могут быть представлены в виде диаграммы, изображенной на стр.3 Как видите, каждая область тесно взаимодействует с другой. Системное программное обеспечение обеспечивает и контролирует доступ к аппаратному обеспечению компьютера. Прикладное программное обеспечение взаимодействует с аппаратными компонентами через системное. Конечные пользователи в основном работают с прикладным программным обеспечением. Чтобы обеспечить аппаратную совместимость, каждый тип программного обеспечения разрабатывается для конкретной аппаратной платформы.
Прикладное программное обеспечение
Основной функцией прикладного программного обеспечения является выполнение задач, поставленных конечными пользователями. Для разработки прикладного ПО может быть использовано множество языков программирования. Каждый из этих языков имеет свои сильные и слабые стороны.
Чтобы работать с компьютерами первого поколения, программисты писали свои программы в машинных кодах (machine language) – то есть с помощью одних только нулей и единиц. Конечным пользователям приходилось тесно взаимодействовать с программистами, которым, в свою очередь, чтобы разрабатывать приложения в машинных кодах, приходилось даже думать в той манере, как работают компьютеры. Программирование с помощью двоичного кода (все операции, такие как сложение, вычитание и прочие, а также сами данные, переводились в последовательность 0 и 1) было очень медленным и трудоемким процессом.
С развитием аппаратного обеспечения компьютеров, увеличивалась скорость обработки и емкость памяти. Это привело к изменениям в языках программирования – они стали проще и понятнее для людей. Языки программирования в своем развитии прошли практически те же стадии, что и сами компьютеры. Диаграмма на Стр. 4 показывает, как происходило развитие языков программирования вместе с поколениями компьютеров за последние 50 лет. Основная тенденция – увеличение простоты взаимодействия пользователя с аппаратным и программным обеспечением компьютеров.
С развитием возможностей аппаратного обеспечения компьютеров, языки программирования в своем развитии прошли путь от машинных кодов до языков высокого уровня и языков четвертого поколения.
Машинные коды были языком программирования первого поколения. Второе поколение ознаменовалось появлением в начале 50х годов языка программирования Ассемблера (assembly language). Вместо одних только нулей и единиц, программисты теперь могли пользоваться операторами, которые были похожи на слова английского языка. Компилятор преобразовывал эти выражения в машинные коды.
Вместе с появлением компьютеров третьего поколения, развитие языков программирования также вступило в новую фазу. Период с середины 50-х до 70-х годов отмечен появлением первых языков программирования высокого уровня (high-level languages). Эти языки впервые позволили ученым (прежде всего, математикам) работать с компьютерами. Язык программирования FORTRAN позволял довольно легко определять переменные и использовать для вычислений математические выражения. Для языков высокого уровня, таких как FORTRAN и COBOL, понадобились более быстрые, высокоэффективные компиляторы, поскольку при преобразовании исходного кода, выходные программы получались большими.
Четвертое поколение языков программирования зародилось в конце 70-х, а развитие их продолжается по сей день. Эти языки существенно уменьшили время разработки ПО и позволили выполнять эту работу даже людям без технического образования, и не прибегая к помощи профессиональных программистов. Сегодня для выполнения многих задач программирование как таковое вообще не требуется. Например, появление приложений электронных таблиц (spreadsheets), таких как Microsoft Excel, позволяет обычным пользователям обрабатывать финансовую информацию и управлять большими массивами данных. В 60-х и 70-х годах так просто, без применения языков программирования, использовать возможности компьютеров было невозможно.
Популярные языки программирования
Большинству менеджеров не нужно быть профессиональными программистами, но они должны понимать, как происходила эволюция программного обеспечения, чтобы выбрать верную платформу для создания информационной системы организации. Здесь мы коротко опишем наиболее популярные языки программирования высокого уровня.
Ассемблер
Многие программисты продолжают использовать Ассемблер, так как этот язык программирования дает им полный контроль над аппаратным обеспечением компьютера и генерирует очень эффективный исполняемый код. Как и машинные коды, Ассемблер разрабатывается под определенные типы компьютеров и микропроцессоров. Несмотря на описанные преимущества, программирование на этом языке требует больших затрат времени, он труден для изучения и понимания; программы, написанные на Ассемблере трудно отлаживать. Ассемблер сегодня используется в основном для написания системного ПО.
FORTRAN
FORTRAN – FORmula TRANslator был спроектирован в 1956 году в основном для инженеров, математиков и ученых, которые имеют в основном дело с формулами и проблемами, ориентированными на вычисления. На FORTRANе можно довольно просто описывать сложные вычисления, манипулировать массивами и распечатывать выходные множества чисел. Хотя на этом языке было написано немало бизнес-приложений, он не очень подходит для частых операций ввода-вывода и работы со списками. FORTRAN сравнительно легко осваивается, но его синтаксис очень требователен к точности ввода операторов, что вызывает частые ошибки и делает сложной отладку программ.
COBOL
COBOL – Common Business-Oriented Language (Рис 2.9) – общий язык для приложений, ориентированных на бизнес и коммерцию. COBOL был разработан в начале 60-х годов, для того чтобы было легче писать программы для бизнеса, которые могли использоваться в таких видах деятельности как обработка заказов, ведение бухгалтерии, планирование производства и т.д. Данные, которыми оперирует COBOL – это, прежде всего, записи, файлы, таблицы и списки. Программы, написанные на языке COBOL, относительно понятны даже неспециалистам.
COBOL и FORTRAN были первыми языками, которые действительно сделали программирование доступным для обычных людей. Машинные коды и ассемблер были слишком тяжелыми для изучения и трудными в использовании для любой степени применения.
Десятки тысяч студентов университетов в 60-х и начале 70-х годов впервые получили FORTRAN для обучения разработке простых программ. Пришло это через вводный курс по информатике либо как часть инженерного или математического учебного плана, но, обучившись языку FORTRAN, они познакомились с истинным значением слова компьютер. Позже большинство из них поняли, что огромный компьютерный мир постоянно меняется, но FORTRAN все еще нужен им для написания программ, которые решают их производственные проблемы. Даже сегодня в научном и инженерном сообществе язык FORTRAN еще достаточно распространен и превалирует над многими языками.
BASIC
BASIC (Beginners All-purpose Symbolic Instruction Code) был создан в 1964 году для обучения студентов колледжей использованию компьютеров. Вероятно, сегодня BASIC – один из самых используемых языков программирования. Это простой язык, который недавно подошел к такому уровню развития, при котором его можно использовать даже для построения больших систем высокой производительности. Слабая сторона BASICа – то что он выполняет все задачи одинаково, без оптимизации кода. Хотя BASIC прост и привлекателен, ему очень не хватает формальной структуры, которая делает язык, подобный C и C++, более подходящим для больших проектов.
Pascal
Названный в честь Блеза Паскаля, французского математика и философа, язык программирования Pascal был разработан швейцарским профессором компьютерных наук Никлаусом Виртом в конце 60-х. Программирование на Pascal стало весьма популярным на платформе микрокомпьютеров, в основном благодаря тому, что в сочетании с высокоэффективным выходным кодом, генерируемым компилятором этого языка, программы, написанные на нем занимают немного места в памяти. Благодаря наличию возможностей обработки сложных массивов данных и набору простых, но мощных команд, Pascal применяют в основном для обучения будущих профессионалов навыкам программирования. Для начинающих Pascal слишком сложен, а профессионалы для разработки сложных приложений предпочитают C.
C и C++
Язык С (читается "си") был разработан в начале 70-х в AT&T Bell Labs. На сегодня эти языки являются фактически единственным выбором для построения операционных систем и сложных приложений, таких как электронные таблицы, компиляторы, сетевые утилиты, коммерческие приложения и проч. Операционные системы UNIX, Linux и Windows большей частью написаны на C, даже компилятор C написан на C. Эти мощные и сложные языки генерируют быстрый и эффективный код. Работать на C можно на любых компьютерах – от микроЭВМ до мэйнфреймов. Программист, владеющий С, имеет полный контроль над средой разработки и может заставить компьютер делать практически все, что ему нужно. С сильно потеснил COBOL в приложениях для бизнеса, но основная область его применения – коммерческие пакеты прикладных программ для микрокомпьютеров – серверов, рабочих станций и ПК. Как и ожидалось, эти языки очень сложны, и для того, чтобы овладеть навыками программирования на С, одного желания мало – нужен талант, как и в случае работы с Ассемблером и машинными кодами.
В компьютерном мире было, по крайней мере, две неудавшиеся попытки разработать и внедрить некий универсальный язык. Первая, в середине 60-х, ознаменовалась изобретением IBM языка, названного PL/1. Не так давно Министерство обороны США постановило разработать язык, который должен был затем получить статус стандарта. Это усилие было не более успешным, чем попытка IBM продвинуть PL/1, заменяющий сотни языков программирования, широко используемых во всём мире.
PL/1
PL/1 (Programming Language 1) был разработан компанией IBM в 1964 году. Это очень мощный, но и очень сложный многоцелевой язык программирования. Он пригоден для проектирования как научных, так и бизнес-приложений и даже операционных систем (огромная операционная система MULTICS была написана на PL/1). IBM, бывшая в то время безоговорочным лидером в мире компьютеров, провозгласила, что PL/1 стратегически необходим всем компаниям. Однако, попытка создать универсальный язык провалилась – программисты не желали переучиваться с COBOLа и FORTRANа на абсолютно новый язык, а коммерческие компании не хотели тратить миллионы долларов на перепроектирование своих приложений, написанных на COBOLе и FORTRANе.
Ada
Другую попытку создать компьютерный эсперанто предприняло в 1980 году Министерство обороны США. Отдав привилегию разрабатывать язык, названный ADA, международному сообществу, правительство начало обсуждать заключение контрактов на его использование. Язык предполагалось использовать прежде всего для разработки программного обеспечения систем вооружений. Предполагалось, что он будет одинаково эффективен для различных аппаратных платформ. Специалисты, работавшие в правительстве США, надеялись, что именно ADA станет удачной заменой языкам программирования, применявшихся в бизнесе. Но этого не случилось по тем же причинам, что и с PL/1 – природа языка ADA весьма сложная. Несмотря на привлекательность в некоторых нюансах, в решении других проблем ADA сильно ограничен.
В 1984 г. началось повальное увлечение системами искусственного интеллекта (ИИ). Считалось, что спустя несколько лет, специалисты компьютерной сферы наконец-то научат компьютеры обучаться самостоятельно. Встраивая ИИ в приложения, можно будет в конце концов избавиться от программирования как такового. Программные средства будут самостоятельно адаптироваться к потребностям пользователей, а фирмы работать с системами, создавшими сами себя. Сегодня в это верится с трудом. В течение последующих пяти лет интерес к ИИ начал постепенно угасать. Тем не менее, именно в этой сфере нашли применение языки Prolog и LISP.
LISP и Prolog
LISP был создан в конце 50-х годов математиком Джоном Маккарти (John McCarthy), который ориентировал этот язык на формирование из вводимых символов, которые в свою очередь являлись операторами, переменными и значениями данных, значащих списков. LISP больше подходит для манипулирования такими списками, чем для решения громоздких числовых задач. Prolog, разработанный в 1970 году, также подходил для этих целей. Отличается же Prolog от LISP в основном тем, что с первым можно работать на обычных компьютерах, а второй работает лучше на машинах, специально созданных для работы с LISP.
СРЕДСТВА РАЗРАБОТКИ четвертого поколения
К языкам четвертого поколения относятся программные инструменты, которые позволяют пользователям разрабатывать программы, обладая минимальными техническими навыками, а также новые средства разработки, которые повышают производительность труда программистов. Языки четвертого поколения постепенно становятся менее процедурными или даже непроцедурными в сравнении с обычными языками программирования. Процедурный язык требует описания последовательных шагов, или процедур, которые "говорят" компьютеру, что нужно сделать и каким образом это должно быть сделано. Непроцедурные языки требуют от пользователя только указания, что надо сделать, без подробного описания, как это должно быть выполнено. Таким образом, с помощью непроцедурного языка можно выполнить некоторую задачу, описав меньшее число шагов, чем при решении той же задачи, пользуясь процедурным языком.
Существует семь категорий языков четвертого поколения: языки запросов, генераторы отчетов, графические языки, языки программирования очень высокого уровня, пакеты прикладных программ, а также некоторые виды программ для персональных компьютеров. На рисунке показана схема этих приложений и даны примеры некоторых известных программ каждой из категорий.
Некоторые из средств разработки четвертого поколения по-прежнему ориентированы на профессиональных программистов, но большинство предназначено для обычных пользователей.
Языки запросов (введение)
Языки запросов (query languages) являются языками высокого уровня, которые предназначены для извлечения информации из баз данных. Обычно эти языки интерактивны, работают в реальном режиме времени и способны формировать запросы к нестандартизированным данным. Часто они бывают тесно связанными с системами управления базами данных и некоторыми другими программами для ПК. С помощью языка запросов можно выполнять поиск необходимой информации в базе данных, используя простые или сложные критерии отбора, с последующим выводом результатов поиска на экран монитора или печатающее устройство. Языки запросов имеют различные синтаксис и структуру, некоторые из них поддерживают не только поиск информации, но и динамическое обновление данных. Пример обычного пользовательского запроса, выполненный с помощью двух различных языков запросов, Query-by-Example и FOCUS.
Языки запросов.
Генераторы отчетов
Генераторы отчетов (report generators) – это программные инструменты для создания пользовательских отчетов. Генераторы отчетов способны извлекать информацию из отдельных файлов или баз данных и создавать на основе этой информации отчеты различных видов. Как правило, эти инструменты дают большую свободу в оформлении информации, чем языки запросов. Некоторые мощные генераторы отчетов позволяют произвести над данными различные вычисления, например, вычислить итоговую сумму или среднее значение. Большинство генераторов отчетов сегодня входят в системы управления базами данных.
Графические языки
Графические языки (graphical languages) позволяют извлекать данные из файлов и баз данных и отображать найденную информацию в графическом виде (с помощью графиков и диаграмм). Большинство подобных инструментов могут выполнять над данными арифметические и логические операции. Примерами популярных графических языков могут служить SAS, Harvard Graphics и Lotus Freelance Graphics.
Генераторы приложений
Генераторы приложений (application generators) содержат запрограммированные модули кода, которые могут генерировать целые приложения, существенно ускоряя обработку. Пользователь может указать, что он хочет получить, и генератор приложений создаст соответствующий программный код для ввода, проверки, обновления, обработки и вывода данных. Большинство полнофункциональных генераторов приложений содержат полный интегрированный набор инструментов разработки: систему управления базами данных, словарь данных, язык запросов, генератор графики, генератор отчетов, инструменты поддержки и моделирования принятия решений, средства защиты, а также язык программирования высокого уровня. Для особых ситуаций, когда требуемый код не может быть получен с помощью имеющихся модулей разработки, во многих генераторах приложений предусмотрены пользовательские выходы (user exits), куда можно вставлять программный код, написанный пользователем.
Языки программирования очень высокого уровня
Языки программирования очень высокого уровня (very high-level programming languages) служат для генерирования программного кода с меньшим количеством инструкций, чем у обычных языков, таких как FORTRAN или COBOL. Программы, разрабатываемые с применением языков очень высокого уровня, могут созданы в более короткие сроки. Хотя некоторые возможности этих языков могут быть использованы обычными пользователями, они все же создавались для повышения производительности труда профессиональных программистов. Окно Организаций показывает, как Канадская телефонная компания использовала один из таких языков, Magic, для решения некоторых задач.Окно Организаций Bell Quebec ремонтирует свои таксофоны с помощью Magic.
В 1993 году канадская компания Bell Quebec (подразделение Bell Canada в Монреале) столкнулась с множеством проблем. Часть из них была связана с тем, что агенты по обслуживанию абонентов не успевали реагировать на их замечания и жалобы. Агенты теряли много времени, чтобы выяснить, сигнализировал ли уже кто-нибудь о той или иной проблеме с таксофоном, был ли выслан техник и устранил ли он неисправность. Когда же техник все-таки выезжал, часто он обнаруживал несколько монет в монетосборнике, что по правилам компании требовало оповестить финансовый отдел. Ремонт телефона откладывался до приезда инкассатора, который изымал из автомата деньги.
У Bell Quebec была система мониторинга телефонных автоматов, которая периодически опрашивала каждый таксофон, чтобы выяснить, работает ли он. Однако, эта система была настоящим кошмаром. Данные передавались в мэйнфрейм, установленный в штаб-квартире компании, где они накапливались, а затем раз в день распечатывались, образовывая пачки бумаги шестидюймовой толщины (около 15 см). Затем работники компании вручную анализировали эти кипы бумаги, выясняя, какой из таксофонов неисправен, чтобы направить техника для проведения ремонта. Части системы были изолированы – в Bell Quebec службы установки и поддержки, ремонта и сервиса, маркетинга и управления финансами не были связанными друг с другом системами, каждая из них хранила свою, часто противоречивую, информацию в своем формате, и не предоставляла ее в совместное пользование другим службам. Хуже того, каждая из этих изолированных систем работала на различных аппаратных платформах – здесь были и мэйнфреймы фирм IBM, Hewlett-Packard (HP), Amdahl, и микрокомпьютеры Sequent, Tandem и DEC VAX, и рабочие станции Sun, и компьютеры HP9000, а также множество ПК и локальных сетей различной конфигурации. Операционных систем также было несколько: MVS, VMS, HP-UX и SunOS.
Пакеты прикладных программ
Пакет прикладных программ (software package) – это готовый исходный код нескольких приложений, который можно приобрести у компании-разработчика или дилера. Приобретение готового исходного кода избавляет компании от необходимости писать собственное программное обеспечение для выполнения определенных задач. Существуют пакеты прикладных программ для системного ПО, но подавляющая их часть предназначена для прикладного использования.
Исходный код, входящий в пакеты прикладных программ, может быть откомпилирован на тех компьютерах, где он будет выполняться. Компании, создающие пакеты прикладных программ для различных бизнес-операций, предусматривают возможность изменения кода программ, чтобы программисты, работающие на компанию-заказчика могли сделать необходимые изменения. Пакеты прикладных программ, предназначенные для больших систем, устанавливаются на компьютеры и настраиваются специалистами. В то же время, многие из этих инструментов, особенно для микрокомпьютеров, предназначены для конечных пользователей.
Программы для персональных компьютеров
Многие наиболее популярные инструменты четвертого поколения представляют собой приложения, разработанные для микрокомпьютеров. Это, прежде всего, текстовые редакторы, электронные таблицы, системы управления базами данных, графические инструменты, а также целые наборы офисных приложений, такие как Microsoft Office.
ТЕКСТОВЫЕ РЕДАКТОРЫ.
Текстовые редакторы (word processing software) позволяют выполнять обработку текстовых данных с помощью компьютера. Эти программы избавляют пользователей от многократного набора текстов на печатающих машинках, а также позволяют качественно оформлять текстовые документы, изменяя межстрочный интервал, размеры полей, размер букв и ширину колонок текста. Наиболее популярные текстовые редакторы – Microsoft Word и WordPerfect. На рисунке изображено окно Microsoft Word с документом, содержащим текст, таблицу и элементы графики. Современные текстовые редакторы содержат модули, существенно облегчающие и автоматизирующие ввод и обработку текста: проверку орфографии и грамматики, автоматический перенос слов, словарь синонимов, опции почтовой рассылки и проч.
ЭЛЕКТРОННЫЕ ТАБЛИЦЫ.
Электронные таблицы (spreadsheets) представляют собой компьютеризированные версии традиционных финансовых инструментов для расчетов и моделирования, таких как блокнот, карандаш и калькулятор. Электронные таблицы состоят из колонок и рядов, образующих сетку ячеек. В ячейки заносятся данные и формулы. При изменении значений в ячейках, все связанные с этими ячейками формулы автоматически перерасчитываются. Электронные таблицы применяются для выполнения задач, где требуется производить множество вычислений с блоками связанных друг с другом данных. Их также применяют для моделирования и анализа типа "что-если". После того как пользователь создаст набор математических взаимосвязей, электронная таблица будет автоматически выполнять перерасчет, подставляя различные блоки входных значений. Большинство приложений электронных таблиц имеют встроенные функции построения многих видов графиков и диаграмм. Это удобно для проведения анализа полученных результатов расчетов. На рмсунке вы видите окно Microsoft Excel с таблицей данных и трехмерной диаграммой.
СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ
Если электронные таблицы удобны для вычислений, то системы управления базами данных (database management systems), или СУБД, предназначены для манипулирования данными различных типов – текстовыми, числовыми, графическими и другими. СУБД для персональных компьютеров оснащены функциями создания баз данных, формирования запросов, анализа данных, генерирования отчетов, программирования и многими другими, что позволяет компаниям создавать собственные небольшие информационные системы. Популярными приложениями для работы с базами данных являются Microsoft Access, Paradox, Microsoft FoxPro. На рисунке изображено окно Microsoft Access с загруженной базой данных.
Новые подходы и инструменты разработки программного обеспечения
Возрастание потенциала программного обеспечения, а также потребность компаний в создании гибких и быстрых систем, привели к возникновению новых методов разработки приложений. Примерами новых технологий создания ПО могут служить объектно-ориентированное программирование и язык Java.
Объектно-ориентированное программирование
Традиционные методы разработки программного обеспечения рассматривают данные и процедуры как независимые компоненты. Когда программисту необходимо сделать что-либо с отдельным массивом данных, он должен написать специально для этой операции отдельную процедуру. Процедуры работают с данными, которые им передает программа.
Что делает объектно-ориентированное программирование отличным от традиционного?
В объектно-ориентированном программировании (object-oriented programming) данные и предназначенные для их обработки процедуры соединяются в один объект (object). Объект, таким образом, представляет собой комбинацию данных и программного кода. Вместо передачи данных процедурам, программа посылает объекту сообщение (message) выполнить процедуру, уже встроенную в него. (В объектно-ориентированных языках программирования процедуры называются методами [methods]). То же сообщение может быть послано множеству других объектов, но каждый объект будет обрабатывать сообщение отлично от другого.
Например, объектно-ориентированное финансовое приложение может содержать объекты "Заказчик", которые отсылают сообщения объектам "Счет". Объекты "Счет", в свою очередь, могут содержать объекты "Наличные деньги", "Счета к оплате", "Оплаченные счета".
Данные объекта скрыты от других частей программы, и могут быть обработаны только внутри объекта. Способ обработки данных объекта может изменяться внутри самого объекта, не оказывая влияния на остальные части программы. В то же время, дочерние объекты могут наследовать свойства родительских, что упрощает процесс разработки приложений. Программисты могут сфокусировать свое внимание на том, что объект должен сделать, а объект решает, как это сделать. Поскольку данные объекта инкапсулированы (то есть, отделены) от других частей системы, каждый объект представляет собой отдельный программный блок, который может быть использован во многих различных системах без изменения исходного кода. Следовательно, можно предположить, что объектно-ориентированное программирование уменьшит время и стоимость разработки программного обеспечения, предоставив разработчикам повторно используемый код, который можно использовать на самых разных аппаратных платформах. Некоторые аналитики считают, что в будущем программирование сведется к созданию приложений на основе данных библиотек повторно используемого кода.
Объектно-ориентированное программирование привело к возникновению новой технологии, визуальному программированию (visual programming). При использовании визуального программирования программистам не нужно писать код программ. Вместо этого они с помощью мыши копируют необходимые объекты из библиотек или устанавливают связи между объектами простым рисованием линий.
Язык Java и революция в программном обеспечении
Java – язык программирования, разработанный в Sun Microsystems, способный ключевым образом изменить подходы к созданию приложений.
Традиционно, приложения выполняют, как правило, одну, главную функцию, но содержат множество других, дополнительных функций. Например, популярные текстовые редакторы включают помимо основных возможностей, таких как установка полей, абзацев, межстрочного интервала, написания букв, множество других функций – возможность работы с нумерованными и маркированными списками, верхним и нижним колонтитулами, графикой, почтовой рассылкой, проверкой орфографии и грамматики и многими другими. Кто-то пользуется некоторыми из этих возможностей, но никому из пользователей не нужны они все сразу. Некоторые приложения весьма требовательны к аппаратным возможностям компьютеров. Кроме того, часто программы могут запускаться только на тех типах компьютеров, для которых они были разработаны.
Технология Java
Java – это объектно-ориентированный язык программирования, комбинирующий данные и определенные функции обработки этих данных. Java сконструирован таким образом, что программист может создавать апплеты (applets) – крохотные Java-программки, каждая из которых выполняет одну небольшую функцию. К примеру, чтобы изменить данные о подчиненных какого-либо работника, вместо запуска целой персональной информационной системы, вы можете запустить только маленький апплет для выполнения именно этой операции. Теперь, если допустить, что ваша информационная система написана на Java и находится на сервере локальной сети вашей организации, а не на вашем ПК, все, что потребуется вашей программе – запросить у системы на сервере необходимые данные. Будут получены только те данные, которые вам необходимы. Когда вы закончите обработку, вы сохраните результаты работы на сервере, а ненужная уже информация автоматически исчезнет с вашего ПК. Заметьте, что такая система не потребует от пользователя забот, связанных с приобретением ПО, его установкой, настройкой, обновлением и аппаратной несовместимостью. Технология Java позволяет хранить все программное обеспечение в сети, загружать его на ПК при необходимости, а затем удалять с этого ПК, когда обработка закончена.
Язык Java был специально разработан для использования в Интернет, но он также может быть использован в качестве основного языка программирования для разработки корпоративных приложений. Любой компьютер, удовлетворяющий стандартам работы в Интернет, может соединиться через локальную или глобальную сеть с другим компьютером, подключенным к Интернет. Причем неважно, принадлежат эти компьютеры к одной или разным платформам. Таким образом, Java – это кросс-платформенная технология, позволяющая выполнять Java-программы на различных компьютерных системах, независимо от того, какие микропроцессоры или операционные системы эти компьютеры используют.
Поскольку Java является технологией, ориентированной на использование в сетях, разработчики Sun уделили много внимания проблеме обеспечения безопасности. Однако, это не спасает пользователей от проблем – уже существуют Java-вирусы, очень опасные именно потому, что появляются и выполняются они на компьютере незаметно для пользователя, ну и конечно, как и положено Java-программам, ничего после себя не оставляют – ни программ, ни данных, ни самих себя. К недостаткам Java можно также отнести большую сложность в освоении этой технологии. Создатели Java сами не заметили, как их язык программирования постепенно по сложности приблизился к C, так что пока Java остается языком не для пользователей, а для профессионалов.
Примеры прикладного программного обеспечения.
Менеджер загрузок
Менеджер загрузок предназначен для автоматизации и ускорения загрузок различных файлов из сети Internet. Как правило, программы такого класса умеют создавать несколько одновременных подключений к файлу, находящемуся на FTP или HTTP прокси-сервере, что уменьшает время скачивания, автоматически докачивать файлы, если по каким-либо причинам произошел обрыв связи, а также планировать работу на определенное время, что позволяет загружать файлы во момент наибольшей разгрузки сети. (Download Master)
Архиваторы
7-Zip
Архиватор 7-Zip — архиватор с высокой степенью сжатия. Поддерживает ZIP, 7z, RAR, CAB, GZIP, BZIP2 и TAR архивы. Степень сжатия для ZIP формата на 2-10 % выше, чем у PKZip/WinZip. Высокая скорость. Есть версия для командной строки и плагин для FAR Manager, который позволяет работать с архивами без внешних архиваторов.
WinRar — один из известнейших архиваторов, поддерживающий большое количество архивов. Прост в использовании, обладает высокой степенью сжатия файлов. Имеет возможность создавать самораспаковывающиеся архивы (SFX), добавлять информацию для восстановления, комментарий, блокировать архивы от изменений, а также разбивать архив на несколько томов (т.е. с возможностью создавать тома любого размера).
Плееры видео-файлов
Плееры видео-файлов — это программы, с помощью которых можно проигрывать wav, avi, mid, но и mp3, qt, avs, wms, wmf, wmv, wma, aiff и другие форматы.
В последнее время все большее распространение получает DivX — технология видеозаписи, позволяющая практически без потери качества получать видео-файлы значительно меньшего размера, чем DVD.
Bsplayer
Один из лидеров среди плееров, поддерживающих DivX. Хорошее качество воспроизведения, умение масштабировать изображение, небольшая нагрузка на процессор, поддержка субтитров, возможность просмотра фильма на нескольких языках — вот основные черты этого проигрывателя. И об интерфейсе: он прост, понятен и допускает свое изменение с помощью скинов.
JetAudio
Универсальный проигрыватель музыкальных и видео-файлов, риппер, конвертер и т.д., в общем, все в одном комплекте. Программа поддерживает практически все музыкальные форматы (т.е. MP3, MP2, WAV, MID, REAL AUDIO/VIDEO, S3M, MOD, MPG, AVI, MOV, Video/Audio CD, RealPlayer G2 и некоторые другие форматы мультимедийных файлов). Позволяет записывать аудио-компакт-диски или копировать их содержимое на жесткий диск ПК, а также накладывать на композиции различные эффекты. Программа поддерживает синхронизацию для караоке, имеется эквалайзер, конвертер форматов, редактор тэгов, кроссфейдинг, субтитры и т.д.
ICQ–клиенты
ICQ — это интернет-пейджер, предназначенный для обмена короткими текстовыми сообщениями между пользователями сети. ICQ привлекает прежде всего возможностью общения в режиме реального времени. Если вам необходимо что-то спросить у друга, либо просто перекинуться парой фраз, обсудить дела или просто познакомиться с людьми со всего мира, необходимо установить программу и зарегистрироваться. При регистрации в сети ICQ каждому пользователю назначается уникальный идентификационный номер (UIN). По этому номеру ваши друзья и знакомые могут найти вас среди миллионов других пользователей ICQ. После регистрации в контакт-лист программы (т.е. в список Ваших собеседников) можно добавлять пользователей ICQ, а также осуществлять поиск по соответствующим параметрам. При этом Ваш контактный лист хранится на сервере ICQ, что дает возможность загружать его с любого компьютера, где бы Вы ни находились.
Особенностью ICQ является то, что для связи с собеседником не требуется его обязательное присутствие в Интернете. Выбираете пользователя и посылаете ему сообщение и при следующем входе в ICQ он получит ваше сообщение.
Для общения в сети ICQ, помимо стандартных программ ICQ и Icq Lite, существует большое количество ICQ-клиентов. Каждый клиент рассчитан на конкретного пользователя и имеет свои особенности, достоинства и недостатки. Для пользователей, которые любят простоту, но в то же время ценят удобство, можно порекомендовать использовать &RQ или Miranda. Это наиболее популярные клиенты.
Пользовательский интерфейс
Сегодня, благодаря совершенно неожиданным (по меркам 5-летней давности) применениям компьютеров, пользовательский интерфейс привлекает все больше внимания. К сожалению, как всякое модное слово (искусственный интеллект, мультимедиа, Internet) термин пользовательский интерфейс незамедлительно начали использовать в качестве рекламного аргумента в результате чего его смысл стал куда менее определенным. В этой ситуации было бы странно претендовать на истину, однако некоторыми соображениями автор этих строк хотел бы поделиться с читателями.
Во-первых, в понятие пользовательского интерфейса (ПИ) входит не только, и даже не столько, картинка на экране – трехмерная, анимированная, просто выполнена в модном дизайне, – а способы взаимодействия пользователя с системой. В этом контексте очень интересно сравнить материалы по ПИ в российской компьютерной прессе (напоминающие мне рецензии искусствоведов на художественные выставки) и классическую книгу Дональда Нормана "Психология повседневных вещей" ("The Psychology of Everyday Things"), где основным примером книги оказался дизайн дверных ручек.
Еще одна книга, очень популярная среди американских специалистов по ПИ, анализирует развитие столовых приборов в средние века. В обеих книгах дизайн имеет подчиненное положение. Его главная цель – облегчить пользование предметом.
Этот взгляд кардинально отличается от широко распространенного мнения, что пользовательский интерфейс – это набор "интерфейсных элементов" и их расположение на экране. Сама номенклатура принятых в среде Windows интерфейсных элементов вызывает большие сомнения в том, что на ее базе можно создать действительно удобные интерфейсы.
Например, такой интерфейсный элемент как линейка прокрутки находится в противоречии с одним из основных принципов психологии восприятия: у человека может быть только одна точка активного внимания. При использовании же линейки прокрутки приходится смотреть в две совершенно различные точки – на прокручиваемое изображение (не пора ли остановиться) и на линейку. Всем знакомые неприятности с непопаданием мышью в нужную точку при прокрутке или с "соскакиванием" мыши с линейки – очевидное следствие вышеуказанного противоречия.
Нам, конечно, не привыкать к тому, что неестественные вещи объявляются самыми правильными, но все-таки никакие уговоры и маркетинговые ходы не сделают правильным и удобным то, что противоречит человеческой природе.
Давайте предположим, что ни оконного, ни какого-то другого интерфейса еще не существует и нам нужно придумать способ общения человека с компьютером. Первое и важное замечание – необходимо отличать профессионального пользователя (т. е. пользователя, выполняющего на компьютере свою профессиональную работу и, грубо говоря, получающего за это деньги) от пользователя развлекающегося и уж, во всяком случае, не приговоренного к сидению за дисплеем. Хорошей аналогией может стать система управления автомобиля для профессионального шофера и шофера любителя.
Первому можно предложить практически любой интерфейс. У него есть время и мотивация для приспосабливания к сколь угодно сложному и противоестественному интерфейсу. Время, которое он проводит с компьютером, достаточно велико, чтобы даже большие затраты на обучение окупились. Более того, постоянное общение с компьютером предотвратит возможное забывание выученного. И, наконец, он не может просто плюнуть и перестать пользоваться неудобной системой, особенно если рядом нет удобной системы с аналогичными возможностями.
С пользователем-любителем все наоборот. Пока в уголовном кодексе не предусмотрено наказание типа "заключения в пользовательский интерфейс", он имеет право выбора (не между одной программой и другой, а между компьютером и телевизором или даже книгой). Он хочет за компьютером развлекаться, и тратить время и силы на овладение неудобным интерфейсом ему не с руки. Исключением являются фанаты, общающиеся с компьютером по принципу "охота пуще неволи".
Вы скажете, что люди все же учатся. Это неправда, поскольку сегодня практически нет пользователей-любителей. До последнего времени на компьютерах любители могли только играть в игры. (Кстати, у популярных игр интерфейс очень хороший и совершенно не оконный.) Сегодня Internet стал для обыкновенных людей мощной побудительной причиной покупать компьютеры. И уже раздаются критические голоса об интерфейсе, трудно понимаемом простыми пользователями. Можно с уверенностью предсказать, что дальше станет хуже. Прирастать пользователи будут только любителями.
Так что давайте оставим профессионалам тот интерфейс, к которому они привыкли (не выбрасывать же деньги, затраченные на их обучение), и подумаем, на каких принципах строить интерфейс для любителей.
Отправной точкой всякого хорошего интерфейса является метафора. Обстановка на экране и способы взаимодействия с системой должны апеллировать к ситуации, хорошо знакомой пользователю. Так, оконный интерфейс задумывался как метафора рабочего стола с документами. Использованием метафоры убивается сразу несколько зайцев. Во-первых, пользователю легче понимать и интерпретировать изображение на экране. Во-вторых, ему не нужно каждый раз заглядывать в руководство, чтобы узнать, как выполняется то или иное действие. По крайней мере некоторые действия должны "естественно" следовать из метафоры. В-третьих, у пользователя возникает чувство психологического комфорта, характерного для встречи с чем-то хорошо знакомым. (В этом, кстати, секрет популярности старых мелодий. Все гастролеры знают, что публика им не простит, если они не исполнят что-нибудь давно и хорошо известное.)
Однако в использовании метафоры есть несколько подводных камней. Все-таки процесс взаимодействия с пользователем проходит не в реальном мире, а с помощью таких искусственных приспособлений, как экран, мышь и клавиатура. Поэтому где-то приходится метафору "подправлять". Кроме того, возможности мира внутри компьютера обычно шире возможностей физического мира, и это может с успехом использоваться для более мощного интерфейса. Наконец, существует сложившаяся практика пользования компьютером у профессионалов, и эта практика кажется естественной создателям новых интерфейсов.
В качестве примера удачной метафоры в интерфейсе можно привести Lotus Organizer, внешний вид которого напоминает привычный еженедельник, функции которого и выполняет этот продукт. Примером неудачной метафоры, точнее ее полного отсутствия там, где она необходима, может служить Explorer Windows 95.
Итак, мы придумали замечательную метафору для нашего интерфейса. Сохраним ее в секрете как коммерческую тайну и пойдем дальше. Теперь нам нужно сделать концептуальный дизайн интерфейса. Что это такое? В рамках нашей метафоры мы должны разработать систему интерфейсных элементов, своего рода алфавит взаимодействия, изучив который пользователь сможет легко делать то, что ему нужно. Еще мы должны найти изящный способ изображения как отдельных элементов так и их групп. И, наконец, мы должны выбрать общий изобразительный стиль, который был бы легко узнаваем и приятен для глаз.
Наш (не)удачный предшественник – оконный интерфейс решил только первую задачу концептуального дизайна. В нем есть понятие "контролей" – интерфейсных элементов, с которыми в основном и происходит взаимодействие. В Windows 95 сделана попытка выработки общего изобразительного стиля для контролей. Об общем стиле экранного изображения речи вообще не идет, если только не считать за таковой набор "тем", входящий в состав Microsoft Plus.
Примером хорошего концептуального дизайна интерфейса (помимо некоторых компьютерных игр) может служить система дорожных знаков. Ее разработка не так проста как может показаться на первый взгляд. Обратите внимание на сочетание "реалистических" пиктограмм с "абстрактными", на комбинирование многих знаков, висящих вместе, на "словарь фонов". Кроме того, удалось решить поистине титаническую задачу – знаки заметны и не портят красоту окружающей природы там, где эта красота есть. И, главное, эта система хорошо работает и не требует от своих пользователей высшего образования. Во многих моих интерфейсных раздумьях дорожные знаки занимают значительное место.
Концептуальный дизайн интерфейса должен базироваться на идее интерфейсной среды. В сущности, на время работы с системой пользователь погружается в среду интерфейса подобно тому, как приехав на сафари, турист погружается в среду дикой природы. Здесь слово "среда" применяется не для красоты, а как обозначение типичной для поведения человека в различных средах связки "сигнал-действие".
Эта идея принадлежит психологу Гибсону (не путайте с популярным фантастом) и извлечена мной из его книги "Экологический подход к психологии восприятия". Он утверждает, что наше восприятие основано на мотивации в том смысле, что если мы хотим есть, то видим только съедобные вещи, а если устали – то только предметы мебели, предназначенные для отдыха. То есть человек не просто видит, а опрашивает среду, руководствуясь различными мотивами. В свою очередь, среда подает человеку разные сигналы. Наряду с ответами на его запросы, есть сигналы первоочередные (или всегда запрашиваемые), связанные с физической опасностью. Опираясь на полученные сигналы, человек осуществляет различные действия.
Для искусственных сред (например, системы автомобильных дорог) такая модель с очевидностью верна. Гибсон, впрочем, считает, что она верна и для естественных сред. Во всяком случае, как отправная точка для дизайна интерфейса, она очень продуктивна. Так, кнопки различных диалогов в стандартном оконном интерфейсе можно трактовать как сигналы к их нажатию. Но эти сигналы крайне слабы, поскольку все кнопки выглядят одинаково, отличаясь только текстами в них, а функции у них совершенно различны. То есть из всего разнообразия изобразительных средств – формы, размера, цвета, текста – в кнопках диалогов используется только текст. Считается хорошим тоном иметь кнопки одного размера и аккуратно расположенные, чтобы вынудить пользователя каждый раз прочитывать текст. Исключением, подтверждающим правило, является кнопка OK, которая смотрится не как текст, а как изображение (иероглиф). Не случайно ни в одной из известных мне локализаций надпись на этой кнопке не переводится на другой язык.
Чтобы понять, что разнообразие не означает эстетического нарушения, посмотрим на пульты дистанционного управления телевизора или видеомагнитофона. В них кнопки разбросаны в кажущемся беспорядке, имеют разный размер, большинство обозначено пиктограммами, а текст остальных очень короток (например, Play) и тоже скорее играет роль пиктограммы. Пульты дистанционного управления тем не менее приятно смотрятся и вполне легки в пользовании. При этом пользователи этого интерфейса как раз те самые, для кого мы задумываем наш новый интерфейс с компьютером.
Понятия среды и понятие метафоры близко связаны. Если среда по виду и некоторым опорным элементам будет напоминать пользователю что-то уже знакомое, он сможет быстрее приспособиться к ней. Вместе с тем выбранная метафора может продиктовать все изобразительные решения дизайна интерфейса. Однако следует остерегаться фотографической похожести среды в компьютере с выбранной метафорой. (Тут есть аналогия с живописью.) Все-таки компьютерная среда – искусственна и полностью повторить все элементы взаимодействия из физического мира не удастся. А фотографическая похожесть может спровоцировать пользователя на то, чтобы пользоваться этой искусственной средой в точности как той, которую она напоминает. В первый же раз, когда пользователь натолкнется на различие, он испытает тяжелый психологический шок, который может привести к полному отторжению системы.
В этом секрет непопулярности многих компьютерных игр с прекрасным изобразительным рядом. А вот другие игры, скажем Тетрис и столь же популярные сегодня Color Lines (шарики), имеют очень простую и условную среду, обеспечивающую психологический комфорт пользователя.
Тут мы подходим к еще одному важному принципу построения дизайна интерфейса – балансу между интерактивными возможностями программы и сложностью ее изобразительного ряда. Так же как при создании игр главным является баланс между сложностью игры и ее увлекательностью, выработка которого занимает основное время, так и в интерфейсе должен обеспечиваться баланс между функциональными возможностями программы, возможностями манипуляции ею и ее изобразительным рядом. Простая программа не имеет права сложно управляться, это очевидно, но она и не имеет права на слишком изощренную графику – грех, типичный для сегодняшних продуктов.
Сложная картинка психологически готовит к сложной жизни с программой. Из этого, кстати, не следует, что у сложной программы должна быть изощренная графика и сложные пути взаимодействия. (Важное напоминание – мы разговариваем не о программах, предназначенных для профессиональной деятельности!) Лучше эту сложность "вытаскивать" постепенно, подобно кролику из шляпы или подобно наращиванию уровней в компьютерных играх.
Пользователь простит вам обман, заключающийся в том, что простая на первый взгляд программа постепенно приоткрывает свои новые (в том числе и интерфейсные) возможности. Это может получиться случайно, когда пользователь по привычке попробует прием, освоенный в общении с другой программой, и с радостным удивлением обнаружит, что ваша программа правильно разобралась в том, чего он хотел. Похожий эффект может стать и естественным развитием среды, когда из освоенных простых действий пользователь сделает заключение, что должно существовать и некое сложное, и программа снова обрадует его взаимопониманием. Важно, чтобы эти сложности не лезли в глаза при первом знакомстве с программой, отпугивая новичка. Таким образом, картинка на экране остается прежней, а возможности пользователя расширяются.
На самом деле, с этой позиции хорошо видна основная проблема оконного интерфейса. Все интерфейсные элементы заявляются с самого начала, они всегда присутствуют на экране. Чтобы пользователю легко было с ними взаимодействовать, они должны занимать на экране заметное место (а то трудно будет попасть в них мышью). В итоге места для содержательной информации о среде и функциональности остается совсем мало, а экран производит впечатление рабочего стола, который давно не разбирали. Правда, и в стандартном оконном интерфейсе есть пара спрятанных интерфейсных элементов, например элементы изменения размеров окон. Но дизайнеры этого интерфейса сочли эти элементы исключением из правил, хотя на их базе можно строить очень неплохие среды, конечно оставляя главные элементы "видимыми".
Если у читателя создалось впечатление, что я ругаю оконный интерфейс, то это не так. Я использую его как всем известный источник аналогий и примеров. Оконный интерфейс был в начале 80-х столь же революционным и сыграл столь же положительную роль, что и текстовый интерфейс 70-х. Просто всему свое время. сегодня вычислительные возможности машин позволяют разработчику интерфейсов пользоваться средствами, о которых полтора десятка лет назад страшно было подумать.
Во всех центрах, известных разработкой новых интерфейсов (XEROX PARC, MIT Media Lab, Apple Computer, Carnegie Mellon University), идут разработки разных концепций дизайна интерфейсов, опирающихся на возможности анимации. Прежде чем описывать их, я хочу изложить свою точку зрения на "физику интерфейса", однажды уже опубликованную, но которую уместно здесь повторить.
Основной проблемой в интерфейсе с пользователем является синхронизация точки внимания пользователя и точки активности системы. Эта проблема должна решаться в обе стороны. С одной стороны, пользователь должен уметь сказать системе, где и что он хочет изменить (обычно это делается щелчком мыши в нужном месте). С другой стороны, система должна уметь привлечь внимание пользователя к месту наиболее актуальных изменений.
При переходе от алфавитно-цифровых дисплеев к графическим поле дисплея казалось непомерно большим и проблема синхронизации точки взаимодействия была самой сложной. Ее решение было выполнено по принципу "разделяй и властвуй". Поле экрана разбивалось на прямоугольники-окна и вся работа велась только в одном из них – так называемом активном окне. Одновременно сменилась форма текстового курсора, и, что очень важно, он начал подмигивать. Это требовалось для облегчения проблемы поиска текстового курсора в окне. Поиск же курсора мыши при его потере из поля внимания пользователь (до сих пор) выполняет подергиванием мыши.
На самом деле, и тот, и другой способ используют тот очевидный факт, что движущийся предмет легче привлекает внимание. Но главным способом локализации внимания пользователя было геометрическое разбиение экрана, в частности потому, что более активное использование анимации в то время казалось фантастикой. Сегодня же не видно никакой причины не привлекать внимание пользователя движением в нужной точке экрана. В конце концов, во многих приложениях используются разные формы динамики изображения, которые называются модным словом мультимедиа.
Эта возможность не только теоретически осознана, но и уже около пяти лет находится в стадии экспериментального исследования. Две анимированные среды интерфейса разработаны в той самой фирме XEROX PARC, которой мы обязаны появлением идеи оконного интерфейса (и даже в группе того самого Стюарда Карда, которому принадлежит авторство этой идеи). Одна – "Конические деревья" – является визуализацией файловой системы компьютера и похожа на систему детских пирамидок, каждый уровень которой соответствует уровню файлового каталога. Сами файлы из каталога отображаются в виде 3-мерной карусели под своим каталогом. Соль модели в том, что нужный файл можно "приблизить" поворотом карусели (может быть, не одной), идущим в режиме анимации.
Вторая модель – "Стена в перспективе" – также отображает файловую систему, но вне ее иерархии, согласно двум каким-то параметрам, например частоте обращения к файлу и его размеру. Это нормальная стена, только очень длинная, разбитая на три отрезка. Средний из них отображается на экране плоско, а два крайних уходят в перспективу. Пользователь может сделать средним любой отрезок стены, причем это тоже происходит в режиме анимации. Для Карда анимация – принципиальный момент, так как "анимация сохраняет в восприятии пользователя идентичность объекта", то есть пользователь легко соотносит объекты в конечной точке движения с объектами в начальной.
На это свойство анимационного интерфейса следует обратить особое внимание. В графическом интерфейсе пользователь имеет дело с последовательностью картинок. Программисты, хвастаясь скоростью своих программ, замеряют время, "теряемое" между картинками. Однако психологи, занимающиеся интерфейсом, говорят о совсем другом времени, – времени, когда пользователь может начать взаимодействие с новой картинкой на экране. В этот интервал входит не только время вывода новой картинки на экран, но и время осознания ее пользователем, ведь определенное время и усилия тратятся пользователем на то, чтобы понять, как каждая следующая картинка соотносится с предыдущей.
Анимация за счет увеличения времени перехода от одной картинки к другой (а именно времени анимированного преобразования картинок) существенно сокращает время осознания новой картинки. В психологическом смысле новой картинки и не существует, существует преобразованная старая, а так как все преобразования шли "на глазах у изумленных зрителей", то пользователь практически немедленно готов к взаимодействию.
Существует еще одно свойство анимационного пользовательского интерфейса, которое существенно улучшает его полезность по сравнению с графическим интерфейсом, а именно динамически визуальные сигналы.
Динамические визуальные сигналы – это изменение изображения на экране с целью дать пользователю дополнительную информацию. Уже в стандартном оконном интерфейсе мы можем видеть примеры таких сигналов. При выполнении программой длительных действий курсор мыши приобретает форму песочных часов. Это – сигнал о том, что на действия пользователя система временно реагировать не будет. Второй пример – изменение изображения кнопки при нажатии на нее мышью. Это – сигнал о том, что система считает, что пользователь взаимодействует именно с этой кнопкой.
Беда в том, что в оконном интерфейсе динамические визуальные сигналы носят характер гениальных находок и не образуют полную логичную систему. В качестве аналогии отмечу разницу между алфавитом и иероглифами. Выучив алфавит, можно читать любой текст. Выучив иероглифы, нельзя гарантировать, что не появится новый.
Создавая анимационный интерфейс, надо закладывать систему динамических визуальных сигналов с самого начала, поскольку они являются столь же естественной, сколь и необходимой частью анимационного интерфейса.
Кроме того, информационная емкость (т. е. количество разных различимых вариаций) динамических сигналов огромна. Современные дисплеи отображают миллионы цветов, но это – вещь в себе, поскольку, даже если человеческий глаз и в состоянии отличить столько оттенков, человеческий мозг не в состоянии придавать им смысл. С другой стороны, и такой простой сигнал, как мигание, имеет действительно миллионы хорошо осознаваемых оттенков, связанных с изменением яркости объекта во времени. Здесь уместна аналогия с музыкой, где из небольшого количества нот составляется неисчислимое множество мелодий.
Однако, решая многие проблемы для пользователя, анимационный интерфейс, как это часто бывает, ставит тяжелые проблемы перед программистом и дизайнером.
Многие программисты еще помнят о трудностях перехода к созданию программ, управляемых событиями, как того требует оконная среда. Для использования анимационного интерфейса придется переходить к программам, управляемым временем. Вне зависимости от активности пользователя программе, построенной на анимационном интерфейсе, всегда есть что делать (например, менять фазу мигания). При этом, естественно, она должна постоянно быть доступной для взаимодействия, но, в отличие от многих сегодняшних мультимедиа-программ, не прерывать отображаемый поток, а плавно изменять его в соответствии с воздействием пользователя.
Такие требования легче всего реализуются в специфической архитектуре программ, управляемых временем. На каждом такте работы такой программы заново строится изображение на экране, а события, инициированные пользователем, например ввод с клавиатуры, отрабатываются всего лишь изменением состояния программы. Соответствующее изменение на экране происходит (быть может, не сразу) на очередном временном такте. Таким образом, к двум привычным уровням программы – функциональному и интерфейсному – добавляется визуальный.
Для дизайнеров интерфейсов конкретных продуктов работа тоже существенно усложнится. Анимационный интерфейс – орудие очень мощное и поэтому требует особой осторожности. Попытки потрясти мир могут привести к быстрой утомляемости пользователя и, как следствие, отторжению системы. Основной задачей дизайнера становится организация не неподвижного пространства, а целой серии пространств, неразрывно связанных между собой. Аналогия с созданием фильмов представляется здесь очень уместной.
Для дизайна конкретной программы требуется разработка собственной среды взаимодействи (направленной на реализацию конкретной функциональности) на базе общепринятой системы динамических визуальных сигналов. Предпочтительно иметь сквозное визуальное решение. Практически единственный положительный пример можно взять из телевидения, а именно серию заставок Левина к программам НТВ. Все компьютерные программы в корне меняют дизайн при переходе от одного окна к другому.
После выработки сквозного визуального решения необходимо прорисовать картинки, называемые у аниматоров "фонами". Точнее называть их неподвижной составляющей подвижного изображения. На каждом фоне надо расположить анимированные элементы взаимодействия. И, наконец, самое трудное – надо спроектировать визуальные переходы между существенно отличающимися состояниями. И все это, сохраняя выбранный стиль!
Кому это нужно? Пользователю, который ничего этого не заметит, но зато будет гораздо проще и быстрее взаимодействовать с системой. Хороший интерфейс похож на удобную обувь – никто его не замечает, а, если обратить на него внимание, в ответ получишь равнодушное "Ну и что такого?". Зато плохой интерфейс у всех на виду и на устах.
На самом деле, хороший интерфейс пользователями замечается подсознательно, и, когда он нравится, симпатии переносятся на функциональную часть программы. (Про "ДИСКо Командир" многие говорят, что он хорош, но НИКТО не говорит, чем именно.)
К сожалению, следует констатировать, что сегодня стандартом стал плохой интерфейс, даже не столько плохо сделанный, сколько вообще "получившийся сам собой". Так, самое модное сейчас применение компьютеров – блуждание по Сети – имеет тот интерфейс, который вытекает из языка HTML, а он, в свою очередь, производит впечатление "времянки", которая, как теперь ясно, пришла всерьез и надолго.
Моя любимая цитата из обзора интерфейсов – "Интерфейс этой программы неестественен, потому что клавиша Alt+F4 не закрывает приложения". Здесь уже требуется талант Дарвина, чтобы понять происхождение такого вида естественности!
Многие интерфейсные проблемы являются естественным продолжением маркетинговых достижений. Предположим, что ваша фирма выходит на рынок с новой моделью аудиомагнитофона, отличающейся от всех остальных некой возможностью А. Для успешной продажи этой модели та кнопка на панели управления, которая реализует А, должна быть как можно заметнее. Тогда потенциальный покупатель сам спросит "А что это?" – и продать ваше изделие будет гораздо легче. Однако, купив его и включив дома, этот покупатель будет, скорее всего, пользоваться стандартными кнопками для стандартных действий, показывая возможность А только гостям.
Таким образом, налицо противоречие, следующее из двух разных функций одного и того же товара. Первая функция – продавать самого себя за счет привлекательности и/или необычности внешнего вида, а вторая – использоваться по назначению. С точки зрения продавца (а часто, и производителя), первая функция гораздо важнее. Поэтому навязывается "стандарт", направленный именно на успешность первой функции. Замените аудиомагнитофон интерфейсными средами, и станет понятным, что я имею в виду. (Желающих увидеть эту проблему крупным планом приглашаю на рынок пиратских CD-ROM, где покупатель принимает решение о покупке в общем-то недешевого товара, глядя только на обертку и даже будучи уверенным, что содержание в какой-то мере ей не соответствует.)
Ряд интерфейсных проблем связан с конкурентной борьбой на рынке программ. Пожалуй, главная из них – какие формы должно принимать авторское право на интерфейсные решения. С одной стороны, ясно, что придумать и реализовать хороший интерфейс – очень сложная задача, и авторы такого интерфейса должны получить не только моральное вознаграждение. С другой стороны, если "защитить" такое решение патентом с последующими лицензионными выплатами, это может спровоцировать авторов новых продуктов искать свои, нехоженые и, зачастую, худшие пути в интерфейсе. В качестве яркого примера можно попробовать представить себе последствия патентования использования клавиши "F1" для вызова справки.
Лицензионная защита интерфейсных решений – прямой путь к тому, что одни и те же интерфейсные функции будут реализовываться в разных продуктах по-разному, а это далеко не в интересах пользователя. При всей моей нелюбви к фактической монополии фирмы Microsoft на рынке операционных сред должен отметить, что положительной чертой этой монополии явилась "бесплатная" стандартизация интерфейса под Windows.
С проблемой защиты авторского права в области пользовательского интерфейса связаны два громких судебных процесса – Apple Computer против той же Microsoft, где предметом был сам оконный интерфейс, и Lotus против Borland, где с правовой точки зрения оспаривалось включение в Quattro Pro (наравне с несколькими другими) интерфейса Lotus 1-2-3. Нельзя сказать, что решения по этим делам могут использоваться как прецеденты, так как интересы пользователей в них почти не учитывались, а результат, как это часто бывает, соответствовал финансовым затратам сторон.
К сожалению, сегодняшнее состояние рынка программного обеспечения таково, что дорогу себе прокладывают не лучшие решения, а решения, имеющие "большую пробивную силу", в основном связанную с финансовой мощью предлагающих их компаний. Это особенно верно для пользовательского интерфейса. Если взглянуть на программы просмотра WWW, то вообще трудно говорить о дизайне интерфейса – получилось как получилось. Терпимо, но не более. А ведь этими программами пользуется большее число людей, чем какими-либо другими. Теперь такой интерфейс становится фактическим стандартом, а это значит, что последующий переход к более естественному интерфейсу (который, безусловно, рано или поздно произойдет) будет связан с тяжелой психологической ломкой.
Будем надеяться, что такую ломку пользователям придется испытать только один раз, а не несколько, как это вполне может случиться при замене одного плохого интерфейса другим.
Стандартизация пользовательского интерфейса
При разработке, тестировании и оценке качества пользовательского интерфейса необходимо применять соответствующие государственные и отраслевые стандарты. Однако это сразу порождает целый ряд вопросов, например: как стандарты соотносятся с различными аспектами пользовательского интерфейса? Что такое правильный интерфейс? Как применять эргономические стандарты при проектировании и тестировании интерфейса? Влияет ли стандартизация на качество разрабатываемых изделий?
Прогресс в разработке пользовательских интерфейсов привел к появлению соответствующих стандартов — сначала на уровне ведущих компаний-разработчиков, а позднее и ISO. В их основе лежит накопленный опыт разработки и оценки качества наиболее продвинутых программных проектов. С другой стороны, стандарты содержат определенный элемент произвольности, а также испытывают на себе давление производителей. В этом смысле стандартизация олицетворяет консервативную сторону прогресса. Но, однажды возникнув, стандарт становится общепризнанным и часто обязательным нормативом дальнейшего прогресса в соответствующей области.
Структура и классификация пользовательских интерфейсов
В дизайне пользовательского интерфейса можно условно выделить декоративную и активную составляющие. К первой относятся элементы, отвечающие за эстетическую привлекательность программного изделия. Активные элементы подразделяются на операционные и информационные образы моделей вычислений и управляющие средства пользовательского интерфейса, посредством которых пользователь управляет программой. Управляющие средства различных классов программных изделий могут значительно различаться. Поэтому необходимо провести хотя бы предварительную классификацию интерфейсов и соответствующих им управляющих средств.
На первом уровне такой классификации полезно выделить классы интерфейсов, происхождение которых связано с используемыми базовыми техническими средствами человеко-машинного взаимодействия. Исторически, появление таких средств вызывает возникновение новых классов пользовательского интерфейса. Впрочем, с появлением новых средств использование интерфейсов старых классов не обязательно полностью прекращается. Классы интерфейса являются слишком широкими понятиями. Классы, задаваемые базовыми интерактивными средствами, целесообразно разбить на подклассы, например, в пределах графического класса различаются подклассы: двухмерные и трехмерные интерфейсы. По этой классификации широко распространенный интерфейс WIMP относится к первому из указанных подклассов. Сегодня развиваются такие новые классы интерфейсов, как SILK (речевой), биометрический (мимический) и семантический (общественный). Не претендуя на полноту классификации пользовательского интерфейса, приведем схему, отражающую соотношение классов, видов и типов пользовательского интерфейса.
В основе управляющих средств пользовательского интерфейса лежит тот или иной интерфейсный язык. При этом роль синтаксиса играют используемые графические образы и их динамические свойства. О типах управляющих средств пользовательского интерфейса мы будем говорить, имея в виду различные формы (элементы дизайна) типизированных управляющих элементов пользовательского интерфейса определенного подкласса. Дизайн конкретных реализаций интерфейса может включать композицию, вообще говоря, различных типов управляющих средств, информационные образы предметной области и декоративные элементы (в первую очередь метафоры интерфейса). Компоненты дизайна не произвольны, а образуют некоторое стилевое единство.
Таким образом, мы приходим к понятию интерфейсного стиля программных изделий. Понятие стиля не является устоявшимся. Согласно, «если речь идет о достаточно большом проекте, то в рассмотрение вводится еще и понятие стиля — социально узнаваемого образа, который ассоциируется с этим проектом, продуктом и его составными частями. И в этом смысле дизайн интерфейса, безусловно, должен не противоречить, а подчеркивать общий стиль проекта».
Тип интерфейса — языковый аспект
Система управляющих средств пользовательского интерфейса конкретного подкласса является одновременно шаблоном возможного «текста» на некотором (неявном) языке пиктограмм управления и имитацией с помощью средств машинной графики управляющей панели инструмента обработки данных. В разных типах интерфейса удельная роль языковой и имитационной составляющей может быть различной. Трактовка управляющих средств пользовательского интерфейса как языка пиктограмм не нова: «функциональность программной системы следует считать семантикой ее интерфейса». При этом роль синтаксиса играют выразительные формы интерфейса и последовательности манипуляций с ними. В таком виде интерфейса, как командная строка, язык пиктограмм вырождается в конкретный программный язык управления заданиями. Таким образом, управляющая составляющая интерфейса приложения является конкретной реализацией явно или неявно выбранного типа пользовательского интерфейса, его синтаксиса, дизайна и манипуляционных свойств. Выбор типа (или типов) интерфейса в развитом приложении должен определяться характером предметной области, что не исключает возможности миграции элементов стиля из одной области в другую.
Показатель синтаксической правильности пользовательского интерфейса вводится в предположении существование некоторого эталона «правильного» интерфейса, в качестве которого естественно считать нормативные документы (стандарты), содержащие явное или неявное описание синтаксиса на уровне пиктограмм и способов манипуляции ими.
Знаковая система графического пользовательского интерфейса определяется конечным словарем графических управляющих элементов (ГУЭ). Каждый ГУЭ обладает стандартизированными свойствами описанного вида, составляющими его регламент. Нарушение регламента ГУЭ следует рассматривать как ошибку проектирования пользовательского интерфейса.
Что касается подкласса WIMP, то соответствующие нормативные документы для офисных приложений первоначально были предложены ведущими разработчиками (в рамках проекта SSA от IBM, Microsoft, Apple) и оказали решающее влияние на содержание принятых позднее ряда международных стандартов пользовательского интерфейса. В таблице 2 приведен перечень стандартов ISO на графический пользовательский интерфейс WIMPS.
Правильность управляющих средств пользовательского интерфейса конкретного приложения — это соответствие управляющих средств синтаксису интерфейсов соответствующего типа. Для экспертной оценки правильности управляющих средств пользовательского интерфейса на основе таких стандартов удается сформировать списки оценочных элементов (в терминах ГОСТ 28195-89 «Оценка качества программных продуктов. Общие положения»). В англоязычной литературе говорят о контрольных списках (cheklists). Обратим внимание на отличие элементов контрольных списков от тестов (test cases), используемых при обычном тестировании. Обычные тесты являются конкретными частными значениями входных данных, в то время как элементы контрольных списков — это обобщенные правила оформления и функционирования управляющих средств пользовательского интерфейса. Тестирование правильности пользовательского интерфейса возможно, если в формулировке требований к пользовательскому интерфейсу в техническом задании на программный продукт указывается тип (стиль) выбранного интерфейса, что, кстати, требует ГОСТ Р ИСО/МЭК 12119-2000 (п. 3.1.5).
Качество интерфейса — эргономический аспект
Качество определяется в ГОСТ Р ИСО/МЭК 9126-93 как «объем признаков и характеристик продукции или услуги, который относится к их способности удовлетворять установленным или предполагаемым потребностям». При комплексной оценке показателей качества программного продукта качество пользовательского интерфейса вносит определяющий вклад в такую субхарактеристику качества, как практичность (usability) (ГОСТ Р ИСО/МЭК 9126-93). С семиотической точки зрения качество соотносится со стандартизированностью как семантика и прагматика с синтактикой. Другими словами, качество характеризует содержание (смысл) и полезность текста, в то время как стандартизированность — грамотность (корректность).
В качестве пользовательского интерфейса можно выделить два аспекта интерфейса — функциональный и эргономический. О качестве функциональности интерфейса трудно говорить безотносительно предметной области, например, сформулировать «руководящие принципы функциональности» пользовательского интерфейса. Формально его можно связать со степенью «соответствия задаче» (ISO 9241-10-1996, p.10).
Поскольку интерфейс является физическим динамическим устройством, взаимодействующим с пользователем, то наряду с абстрактно-синтаксическим возникает и дополняющий его независимый эргономический аспект, который, в зачаточной форме и соответствует обычному текстовому объекту (размер шрифта, цветовое оформление, размер и толщина книги, защита от старения и разрушения, навигация по страницам и т.д.). В случае компьютерного интерфейса появляются новые особенности, связанные с комфортностью экранного представления, достаточной оперативностью реакции программного средства на действия пользователя, удобством манипулирования мышью и клавиатурой (и их скоростными показателями).
Нормативные требования по эргономике пользовательского интерфейса отличаются по своей природе от синтаксических и манипуляционных правил — они относятся к психофизиологическим свойствам конкретной реализации уже выбранного типа (стиля) пользовательского интерфейса (и соответствующего стандарта) в конкретном приложении. В этих условиях эргономические стандарты могут лишь требовать достижения некоторых общих руководящих эргономических принципов, которым должно удовлетворять реализация в приложении выбранного тип (стиля). При этом предполагается, что приложение должно оптимально инкорпорировано в техническую среду. Ряд более ранних стандартов (стандарты ISO 9241) касаются именно этой среды (клавиатура, дисплеи, устройства ввода с клавиатуры и мыши, мебель рабочей станции и показатели рабочей среды, например, освещение или уровни шума). Эргономические аспекты пользовательского интерфейса приложения являются естественным расширением эргономики технических средств и рабочего места. Сегодня существует два подхода к оценке эргономического качества, которые можно отнести к методам «черного» и «белого ящика».
В первом подходе оценку производит конечный пользователь (или тестер), суммируя результаты работы с программой в рамках следующих показателей ISO 9241-10-98 Ergonomic requirements for office work with visual display terminals (VDTs). Guidance on usability specification and measures:
· эффективности (effectiveness) - влияния интерфейса на полноту и точность достижения пользователем целевых результатов;
· продуктивности (efficiency) или влияния интерфейса на производительность пользователя;
· степени (субъективной) удовлетворенности (satisfaction) конечного пользователя этим интерфейсом.
Эффективность является критерием функциональности интерфейса, а степень удовлетворенности и, косвенно, продуктивность — критерием эргономичности. Вводимые здесь меры соответствуют общей прагматической концепции оценки качества по соотношению «цели/затраты».
Во втором подходе пытаются установить, каким (руководящим эргономическим) принципам должен удовлетворять пользовательский интерфейс с точки зрения оптимальности человеко-машинного взаимодействия. Развитие этого аналитического подхода было вызвано потребностями проектирования и разработки ПО, поскольку позволяет сформулировать руководящие указания по организации и характеристикам оптимального пользовательского интерфейса. Этот подход может быть использован и при оценке качества разработанного пользовательского интерфейса. В этом случае показатель качества оценивается экспертом по степени реализации руководящих принципов или вытекающих из них более конкретных графических и операционных особенностей оптимального «человеко-ориентированного» пользовательского интерфейса.
В литературе предложены различные формулировки руководящих принципов проектирования интерфейса. В стандартах ISO руководящие принципы представлены в ряде документов. Как указывалось в общем контексте в ГОСТ Р ИСО/МЭК 9126-93, в настоящее время существует ряд систем комплексных показателей (моделей качества) разной степени завершенности, однако, принятую в стандартах модель качества не нужно абсолютизировать. Цель введения стандартов — стимулировать широкое практическое использование руководящих принципов, а также накопление опыта для их последующего уточнения и развития. Стандартизированная модель отражает, по крайней мере, минимальный набор обязательных (или общепризнанных) принципов.
Стандартизация и проектирование
При проектировании пользовательского интерфейса исходным решением является выбор базовых стандартов типов управляющих средств интерфейса, который должен учитывать специфику соответствующей предметной области. Конкретизация стиля пользовательского интерфейса осуществляется в нормативных документах отраслевого и фирменного уровня. Возможна дальнейшая детализация дизайна интерфейса для определенной группы программных продуктов фирмы-разработчика. При разработке пользовательского интерфейса необходим учет характеристик предполагаемых конечных пользователей разрабатываемого программного средства. Спецификация типа пользовательского интерфейса определяет только его синтактику.
Второе направление стандартизации в области проектирования — формирование конкретной системы руководящих эргономических принципов. Решение об их выборе должно вырабатываться совместно всеми членами команды по проектированию. Эта система должна быть согласована с соответствующим базовым стандартом (или группой стандартов). Для того чтобы стать эффективным инструментом проектирования система руководящих принципов должна быть доведена до уровня конкретных инструкций для программистов. При разработке инструкций учитываются нормативные документы по типу (стилю) интерфейса, а нормативные документы по проектированию пользовательского интерфейса должны войти в профиль стандартов программного проекта и в техническое задание.
Стандарты и качество
Формально стандартизированность пользовательского интерфейса уместно связать с другими инфраструктурными субхарактеристиками качества программного продукта, такими, как соответствие (conformance) (в том числе и соответствие стандартам) и взаимозаменяемость (replaceability) (ГОСТ Р ИСО МЭК 9126-93). Выбор конкретного средства проектирования (языки быстрой разработки приложений, CASE-средства, конструкторы графических интерфейсов) может привести разработчика к необходимости придерживаться стандарта интерфейса, положенного в его основу.
С другой стороны, выбор разработчиком стандарта типа (стиля) пользовательского интерфейса, адекватного предметной области и используемой ОС, потенциально должен обеспечить, хотя бы отчасти, выполнение таких принципов качества пользовательского интерфейса, как естественность и согласованность в пределах рабочей среды. Явный учет синтактики интерфейса облегчает создание однородного по стилю и предсказуемого для пользователя интерфейса. Кроме того, нужно учесть, что при разработке самого стандарта уже учитывались базовые принципы проектирования пользовательского интерфейса.
Вводимые в ISO 9241-11 меры практичности организация-заказчик может использовать до разработки заказной системы в качестве общих рамок для определения требований по практичности, которым должна соответствовать будущая система и по которым будут проводиться приемочные испытания. Таким образом, создается основа для обеспечения полноты, измеримости и сопоставимости этих требований, что может косвенно оказывать позитивное влияние на качество проектируемого программного изделия.
Означает ли, что неукоснительное следование стандартам может обеспечить необходимое качество пользовательского интерфейса? Для простых и рутинных приложений — следование стандарту гарантирует только минимальный уровень качества. Для сложных и пионерских приложений требование обеспечения функциональной полноты может вступить в противоречие с ограниченными возможностями, предоставляемыми стандартом управляющих средств пользовательского интерфейса.
Тоффлер Элвин. Метаморфозы власти. М.: АСТ, 2001
Скопин И.Н. Разработка интерфейсов программных систем. "Системная информатика", вып. 6. Новосибирск: Наука, 1998
Денисов Ю.А. Основы информационных систем, вып. I (11), www.citforum.ru_80/ operating_systems/ ois/ a.shtml
Программирование на Visual C++, http://vnews.uka.ru/ html/ aticles.htm
Проектирование пользовательского интерфейса на персональных компьютерах. Стандарт фирмы IBM. Вильнюс: DBS Ltd, 1992
Official Guidelines for User Interface Developers and Designers, http://msdn.microsoft.com/ library/ default.asp?url=/ library/ en-us/ dnwue/ html/ welcome.asp
Macintosh Human Interface Guidelines, http://developer.apple.com/ techpubs/ mac/ HIGuidelines/ HIGuidelines-2.html#avail1-0
X Window System technology and standards, http://www.x.org/about.htm
Мандел Тео. Разработка пользовательского интерфейса. М.: ДМК Пресс, 2001
Дениг В., Эссиг Г., Маас С. Диалоговые системы "человек-ЭВМ". Адаптация к требованиям пользователя. М.: Мир, 1984
Алексеенко Е.А., Гавриленко Е.В. Оценка качества пользовательского интерфейса. "Управляющие системы и машины", 2000, № 2
Гультяев А.К., Мишин В.А. Проектирование и дизайн пользовательского интерфейса. С.-Пб.: КОРОНА-принт, 2000
Липаев В.В., Филинов Е.Н. Формирование и применение профилей открытых информационных систем. "Открытые системы", 1997, № 5
Донской М. PC Magazine – Russian Edition © СК Пресс, 10/96.
Содержание
Введение. 1
Часть 1.1 Прикладное ПО (введение) 2
Часть 1.2 Что такое ПО?. 2
Часть 1.3 Программы.. 3
Часть 1.4 Основные типы ПО.. 3
Часть 2.1 Прикладное ПО.. 4
Часть 2.2 Популярные языки программирования. 6
Часть 2.3 Средства разработки IV поколения. 9
Часть 2.4 Языки запросов (введение) 10
Часть 2.5 Языки запросов. 11
Часть 2.6 Новые подходы и методы разработки ПО.. 15
Часть 2.7 Примеры прикладного ПО.. 18
Часть 3.1 Пользовательский интерфейс. 20
Часть 3.2 Стандартизация пользовательского интерфейса. 30
Источники. 37
|