Современное программное обеспечение пвм. Тенденции развития программного обеспечения

Преобладающими в развитии программного обеспечения являются следующие тенденции:

1. Наглядный, удобный, привычный и интуитивно понятный пользователю интерфейс .

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

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

4. Функциональность программ , т.е. полнота удовлетворения потребностей пользователя.

5. Увеличение мощности программ , которые обрабатывают большие объемы данных, делают это быстрее, предоставляют пользователю больше функций и т.д.

6. Объединение противоречивых свойств : универсализация и специализация.

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

8. Стандартизация отдельных элементов интерфейса программ, форматов данных и т.д.

Разработчики программ перенимают друг у друга удачные приемы и стремятся обеспечить совместимость с другими популярными программами.

В исследовательской лаборатории Microsoft, разрабатываются новые программные решения. Идеи, разрабатывающиеся в Microsoft, – это устойчивость к сбоям, самонастраиваемость и безопасность.

Компания IBM работает над расширением возможностей существующих операционных систем. Исследование направлено на создание самооптимизирующейся, самонастраиваемой, самовосстанавливающейся системы, сходной с нервной системой человека.

Контрольные вопросы

1. Программы-органайзеры

2. Уровни внедрения информационных технологий в делопроизводство

3. Основные функции корпоративной электронной системы управления документами

4. Программа Microsoft Outlook

5. Средства Microsoft Outlook для организации рабочего места

6. Тенденции развития программного обеспечения


ТЕМА 11. системы программирования

Вопросы

1. Этапы решения задач на компьютере

2. Алгоритм

3. Инструментальные средства программирования

4. Технологии программирования



1. ЭТАПЫ РЕШЕНИЯ ЗАДАЧ НА КОМПЬЮТЕРЕ

Под организацией и реализацией вычислительного процесса на компьютере понимается совокупность работ, которую принято рассматривать в виде последовательности следующих этапов:

1. Постановка задачи

2. Разработка математической модели

3. Разработка алгоритма

4. Составление программы

5. Отладка программы

6. Тестирование программы

7. Проведение расчетов

8. Анализ результатов

9. Сопровождение программы

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

· организационно-экономическую сущность задачи;

· информацию, связанную с ней;

· описание алгоритма и контрольный пример для ее решения.

Для решения задачи должна быть разработана математическая модель и выбран метод решения. Критерии выбора метода:

· обеспечение наименьшего времени решения задачи;

· возможность использования метода при существующем объеме памяти компьютера;

· обеспечение нужной точности вычислений;

· возможность использования готовых программных средств.

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

Составление программы , то есть программирование – запись алгоритма в форме, воспринимаемой компьютером.

Отладка – выявление и исправление ошибок в программе.

Тестирование – «прогон» программы на наборах реальных данных, подготовленных специалистами предметной области в качестве контрольного примера.

После отладки программы проводятся расчеты – непосредственное решение задачи на компьютере для конкретного варианта исходных данных.

Анализ полученных результатов проводится специалистами соответствующейпредметной области.

Сопровождение программы выполняют ее разработчики в течение определенного периода.

2. АЛГОРИТМ

Алгоритм – точное предписание, определяющее вычислительный процесс, ведущий от варьируемых исходных данных к искомому результату. Алгоритм, записанный в форме, воспринимаемой компьютером, называется программой .

Оператор (инструкция)– совокупность символов, указывающих операцию и значение или местонахождение ее операндов. Например : delete s;

Операнд – объект, над которым выполняется операция в компьютере.

Машинная команда – оператор, опознаваемый и выполняемый техническими средствами компьютера.

Процесс составления программы называется программированием .

Основные способы (средства) представления (записи) алгоритмов:

1. Словесный

2. Графический (блок-схемы)

3. Языки программирования.

Запись алгоритма с помощью алгебраических символов и словесного текста называют словесной .

Например . Алгоритм Евклида – нахождение наибольшего общего делителя Н двух положительных чисел: А и В.

1. Сравнить А и В:

· если А = В, то Н = А и перейти к третьему шагу;

· если А < В, то поменять А и В местами, и перейти к следующему шагу;

· если А > В, то перейти к следующему шагу.

2. Найти А = А–В и перейти к первому шагу.

3. Процесс вычислений прекратить.

Блок-схема – графическое изображение логической структуры алгоритма, в котором каждый этап процесса обработки данных представляется в виде геометрических фигур (блоков).

Язык программирования – язык, предназначенный для записи программ и описания данных.

Имеются следующие типы алгоритмических процессов:

1. Линейные

2. Ветвящиеся

3. Циклические

Линейные процессы : алгоритм представляется в виде линейной последовательности операций (рис.11.1).

Пример : Найти С=S/n.

Рис.11.2. Алгоритм ветвящегося процесса

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

Пример : найти квадраты N чисел.

N=1
Вывод N, K
Конец
Нет
N=N+1
даа

Рис.11.3. Алгоритм циклического процесса

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

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

Интеллектуальность
Давно уже прошли времена монохромных символьных дисплеев и мигающего курсора в командной строке. Написать учетную систему, игрушку- это давно уже не “высокие космические технологии”. Наработаны приемы программирования, алгоритмы, библиотеки. Придумать что-то еще новенькое в области автоматизации почти нереально. Повышение конкурентоспособности ПО лежит в области повышения интеллектуальности продукта. Даже в простых программах где, казалось бы, некуда “приткнуть” интеллектуальность, можно предпринять ряд шагов, делающих программу более удобной в использовании:
  1. Прогнозирование последующих действий пользователя. Это позволит, например, сформировать подсказку, динамическое меню для того, чтобы у пользователя сразу “под рукой” были весь требуемый инструментарий для работы.
  2. Интеллектуальное кэширование данных, обработка звука, изображений.
  3. Автосохранение, автобэкапы, версионность файлов- в случае сбоя у пользователя всегда будет под рукой резервный вариант.
Повышение интеллектуальности ПО может быть связано с подстройкой под настроение пользователя, регулирование его настроения, вплоть до угадывание его мыслей. Это примерно то, о чем говорила Алена Попова в своем блоге . По мимике и жестам, полученной с web-камеры, по вздохам, слышимым в микрофон можно определить настроение пользователя. По настроению пользователя можно подбирать музыкальные композиции, фоновые рисунки, сортировать новостную подборку с RSS-лент.
Другое направление интеллектуализации ПО- создание адаптирующихся интерфейсов пользователя. Например, используя web-камеру, можно мерять внешнее освещение и соответственно подстраивать яркость экрана. Другой пример, если пользователь весьма активно работает с одной программой, то фоновые приложения откладывают уведомления о пришедшей почте, требуемых обновлениях ПО, чтобы меньше отвлекать пользователя от его текущей активной работы.
Тема удобных, красивых, интеллектуальных пользовательских интерфейсов становится ключевой на ближайшие годы.
Пользовательские интерфейсы
Лет десять-пятнадцать назад удобство пользовательского интерфейса не было решающим фактором при выборе ПО. Ценилась больше функциональность. Это было связано с тем, что программы были не столь функциональны, инструментарий программиста был не такой мощный. В результате, программирование одной функции было огромной работой. Если ваше ПО имело на 2-3 функции больше, чем у конкурента, то у вас были большие шансы на успех. Сегодня практически любой функционал легко и быстро повторяется конкурентами. Получить длительное по времени конкурентное преимущество можно, внедрив более интеллектуальный функционал и, как ни удивительно, разработав хороший интерфейс пользователя. Создать удачный интерфейс- это большая работа. Фактически, действительно мощный инструментарий для создания пользовательских интерфейсов начал появляться совсем недавно.
Тенденция создания удобных интерфейсов – очень сильная и явная. Примеров множество- iPhone, Android, лента меню Ribbon от Microsoft. Даже в области корпоративного ПО она будет проявляться все сильнее. Об этом подробнее можете прочитать у Петра Диденко .
Производительность
Ярким примером, иллюстрирующим тему данного абзаца, можно назвать гонку браузеров за производительностью их движков. Разработчики активно оптимизируют операционные системы, различное прикладное ПО. Например, последний MS Office 2010 чувствительно быстрее своего предшественника. Windows 7 шустрее Vista.
У пользователя несколько процессоров, много памяти, графический ускоритель- так почему бы не задействовать это на “полную катушку”? В конечном итоге, быстрый, отзывчивый и удобный интерфейс очень понравится пользователю.
К счастью, в распоряжении разработчика есть ряд удобных инструментов для выявления “узких мест” в программе, поиска утечек памяти и т.п. Ряд известных программистов в интервью не раз упоминали о том, что оптимизация производительности- это тренд, минимум, на ближайшие пять лет. Поэтому, профайлер в зубы, и вперед!
Кроссплатформенность
Платформ опять стало много. iOS, Android, Simbian, Windows Phone, Linux, MS Windows и еще многие другие. Все важные, все занимают существенную долю рынка, чтобы их игнорировать. Разработчики давно уже тяготеют к кроссплатформенным решениям. Программы на C/C++ часто пишут так, что они успешно компилируются под разными платформами. Java, .Net, Python концептуально кроссплатформенные. Обеспечить кроссплатформенность тому или иному алгоритму на сегодняшний не сложно. Но вот интерфейсы… с ними загвоздка. Есть очень неплохие решения, обеспечивающие кроссплатформенность интерфейсов. Например, Qt. Тем не менее, это далеко не идеальные решения.
Громадная каменюка “преткновения” кроется в том, что под разными ОС не только внешний вид разный, но поведение элементов интерфейса может отличаться. В результате, приходится реализовывать под разные ОС некий усредненный вариант интерфейса. Что не придает приложению ни красоты, ни удобства.
Тогда разработчики приноровились использовать web-интерфейсы даже в исключительно оффлайновых приложениях. Такой способ позволяет снять ряд проблем при создании кроссплатформенных интерфейсов. Все же HTML-страница более-менее сохраняет свой вид в разных ОС, да и функциональность элементов интерфейса тоже будет одинаковая. Но и тут нет совершенства.
И вот, на сцене появляется HTML5. Пока он не распространен широко, но те немногие примеры его использования, что довелось увидеть, впечатляющи. Правда, и тут видны недостатки. Как говорится, предела совершенству нет. Тем не менее- встречайте HTML5! Рассмотрите возможность его использования для организации интерфейсов как онлайновых, так и оффлайновых приложений. Это позволит создавать функциональные, удобные и красивые кроссплатформенные приложения.
Использование технологии облачных вычислений
Web-приложения, инсталлируемое ПО- у каждого типа приложений есть свои достоинства и недостатки. И как всегда хочется получить достоинства обоих типов приложений. С одной стороны, web-приложения позволяют нам просто делать свое дело и не заботиться об установке ПО, о резервных копиях данных- просто залогинился и работай. С другой стороны, инсталлируемое ПО позволяет работать в оффлайновом режиме, задействовать все имеющиеся ресурсы на компьютере. Например, Web-приложение нельзя установить как сервис в ОС. Возможность получить преимущества от обоих типов ПО дают облачные вычисления.
Обратите внимание, что на сегодняшний день под облаками часто понимаются все те же web-приложения, только “размазанные” по сотням серверов. Предлагается расширить использование облаков, задействуя их в полноценном инсталлируемом ПО.
Объединение возможностей инсталлируемых приложений и web-приложений позволит:
  1. Организовать автоматическое резервирование данных в “облаке”. Так как данные сохраняются в облаке, то они будут доступны пользователю с любого компьютера. С другой стороны, если отсутствует доступ в Интернет, то можно работать с их локальной копией.
  2. Предоставить разные способы доступа к данным: инсталлируемое ПО, web-приложение, доступ с мобильного устройства.
  3. Организовать коллективную работу с данными.
  4. Переложить заботу о сохранности данных и их постоянной доступности на плечи “облачного” сервиса.
  5. Находясь на своем рабочем месте получить полноценное приложение, использующее все возможности компьютера, ОС для плодотворной работы за счет использования инсталлируемого ПО.
  6. Получить оперативно удаленный доступ через web-приложение, через мобильное устройство, находясь вне рабочего места.
  7. Получить все преимущества “облачной” технологии, связанные с масштабируемостью и отказоустойчивостью “облаков”.
Высокоуровневость
На сегодняшний день в низкоуровневом программировании, практически, не осталось “ноу-хау”. Работа с USB, камерой, видео, звук, дисковые операции- это умеет делать хорошо любая ОС. Преимущества тут уже давно нет ни у одной ОС. Если подниматься на более высокие уровни кода, то можно заметить, что даже набор прикладного ПО, идущего в составе ОС уж давно не уникален. Ну на какой ОС нет аналога Блокнота, Калькулятора, Paint’a? Разве что Apple можно “пнуть” за отсутствие “флэша”, и то- это умышленный ход.
Потребителя теперь завоевывают сложными, высокоуровневыми приложениями: распознавание голоса (например, голосовой поиск от Google), распознавание изображений (лиц на фотографиях- Picasa, Windows Live), рукописного текста (Windows 7), фильтрация спама (Gmail), распознавание движений (Kinnect), поисковые технологии (Google, Yandex). И тут поле деятельности весьма широкое: эти технологии, с одной стороны, на более качественном уровне решают проблемы человеко-машинного интерфейса, с другой стороны, сложны в воспроизведении конкурентами, что дает достаточно времени для “снятия сливок” с рынка. Наделение коммерческого ПО элементами искусственного интеллекта- тема еще свежая, “мало раскопанная”, поэтому тут есть, где развернуться, есть интерес со стороны потребителей, есть деньги.
Можно констатировать, что обладание своими низкоуровневыми технологиями на сегодняшний день- недостаток. Ведь на поддержку и развитие их надо тратить время и деньги. При этом, конкурентных преимуществ никаких. С другой стороны- высокоуровневое программирование с новыми перспективами, денежными рынками.
Как бы смело это ни звучало сейчас, но со стороны той же Microsoft было бы разумным перейти на использование наработок сообщества open source. Например, как это сделала Apple, Google. Google, вообще, очень эффективно использует наработки open source: и Linux, и Python, и web-приложения. Еще пример: Intel, Nokia с MeeGo.
Из антипримеров: Windows phone 7. Огромные усилия затрачены на ее разработку с нуля. В результате, этой ОС надо еще 1-2 года, чтобы довести ее до конкурентоспособного состояния. Думаю, что если бы они пошли по пути Google, и использовали ядро Linux, чтобы создать свою ОС для смартфонов, то это у них бы заняло существенно меньше времени и результат был бы лучше.
Времена меняются. Сейчас надо использовать шире уже наработанные решения, придерживаться стандартов и создавать высокоуровневое ПО.
Стандартизация
Как всегда это бывает, на заре любой отрасли существуют различные не совместимые решения, все сумбурно и знания быстро устаревают. Потом все “устаканивается”, появляются отраслевые стандарты и с полученными знаниями, опытом специалист может спокойно прожить всю жизнь, не боясь, что он завтра станет никому не нужен из-за того, что его знания устарели.
Аналогичная картина развития отрасли наблюдается и в ИТ. Все больший приоритет приобретают стандарты при проектировании ПО. Формируются приемы программирования (например, см. GoF), накатываются методики ведения проектов. Хотя проблема быстрого устаревания знании еще актуальна, но она уже явно менее остра, чем 20 лет назад. ИТ стабилизируются в своем развитии, выходят на плоское плато S-образной кривой развития. Это замечательно. Так и должно быть.
Свое стремление соблюдать стандарты, подтверждая это делами, демонстрирует даже какой яркий нарушитель стандартов как Microsoft. Эта тенденция видна повсеместно и касается всего: пользовательских интерфейсов, протоколов обмена данными, форматов хранения данных и т.д.
Вывод
Перечисленные семь наблюдаемых в последние годы тенденций: интеллект, интерфейс, производительность, кроссплатформенность, “облака”, высокоуровневость, стандартизация характеризуются устойчивым, сильным трендом. Нет оснований полагать, что в ближайшие минимум пять лет произойдет смена этих тенденций другими.
Правильным путем развития программных продуктов будет следование этим тенденциям в той или иной степени. Например, можно пойти по пути улучшения пользовательского интерфейса, или добавить интеллекта в свое ПО, или сделать одновременно и то и другое.
Какой бы Вы путь ни выбрали из перечисленных пунктов, помните, что в конечном итоге “видеть” надо человека, пользователя вашего продукта. Эти тенденции- только направление движения к решению проблем пользователя, а какую именно дорожку выберете Вы- это и есть Ваш элемент творчества, который не отнимут у вас никакие стандарты, никакое плато. Так что, дерзайте!

С возникновением персональных компьютеров разработка программного обеспечения превратилась мощный бизнес, в развитии которого прослеживаются некоторые тенденции, в частности:

    программное обеспечение является товаром, который пользуется широким спросом на рынках;

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

    с развитием аппаратной части увеличивается мощность программ, а также расширяются их функциональные возможности;

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

Развитие СПО в нашей стране постепенно трансформируется в создание национальной программной платформы (НПП), которая направлена на решение важнейших национальных задач:

    переориентация финансовых потоков на отечественный рынок (импортозамещение);

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

    ликвидация отставания в объеме и уровне использования информационных технологий в экономике, государственном управлении и общественной жизни;

    развитие отечественных центров разработки информационных технологий мирового класса;

    повышение конкурентоспособности отечественных программных продуктов на мировом рынке.

В апреле 2011 года комиссия по высоким технологиям и инновациям при правительстве РФ одобрила создание НПП. К созданию новых программных продуктов подключилось более 130 отечественных компаний, которые вошли в специальный комитет по разработке НПП.

Лекция 5. Системное программное обеспечение персонального компьютера

1. Назначение и состав системного по

Системное программное обеспечение предназначено:

    для создания операционной среды функционирования других программ (другими словами, для организации выполнения программ);

    автоматизации процесса разработки новых программ;

    обеспечения надежной и эффективной работы компьютера и вычислительной сети;

    проведения диагностики и профилактики аппаратуры компьютера и вычислительных сетей;

    выполнения вспомогательных технологических процессов, например, копирование, архивирование, восстановление файлов и т.д.).

Программные продукты данного класса в основном ориентированы на квалифицированных пользователей – профессионалов в компьютерной области: системного программиста или администратора сети.

Сист e мное ПО – это комплекс программ, предназначенный для управления процессором, оперативной памятью, устройствами ввода-вывода, сетевым оборудованием и организации «межслойного интерфейса» между аппаратной частью и приложениями пользователя 7 .

Системное ПО принято делить на базовое и сервисное.

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

    операционные системы и драйверы в составе операционной системы;

    интерфейсные оболочки, обеспечивающие взаимодействие пользователя с операционной системой;

    системы управления файлами.

Сервисное системное ПО включает программы, которые расширяют возможности базового программного обеспечения, организуют более удобную среду работы пользователя и содержат в том числе:

    драйверы специальных устройств;

    программы диагностики компьютера;

    антивирусные программы;

    программы архивирования данных и т.п.

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

    Программы-упаковщики – осуществляют архивирование и разархивирование файлов с целью экономии памяти компьютера.

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

    Коммуникационные программы – обеспечивают обмен данными между компьютерами.

    Программы диагностики компьютера – осуществляют проверку конфигурации, объема памяти, работоспособности дисков и т.п.

    Программы оптимизации дисков – производят оптимальное распределение файлов на диске для ускорения доступа.

    Программы динамического сжатия дисков – при записи сжимают, а при чтении восстанавливают данные в исходном виде.

Вопросы для самоконтроля

1. Программное обеспечение:

· первого поколения;

· второго поколения;

· третьего поколения;

· четвертого поколения;

· пятого поколения.

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

· функциональностью, т.е. полнотой удовлетворения потребностей пользователя;

· наглядностью, удобным, интуитивно понятным и привычным пользователю интерфейс;

· простотой освоения начинающими пользователями, для чего используются информативные подсказки, встроенные справочники и подробная документация;

· надежностью, т.е. устойчивостью ее к ошибкам пользователя, отказам оборудования и т.д. и разумностью ее действия в этих ситуациях;

· стандартизацией.

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

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

· ниспадающие меню;

· панели для выбора, ответа;

· встроенные диалоговые справочники и т.п.

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

Преобладающими в развитии программного обеспечения являются следующие тенденции:

  • Объединение противоречивых свойств , таких как универсализация и специализация. Такой подход позволяет разработчикам удовлетворить потребности большого количества потребителей.
  • Упрощение работы пользователя достигается за счет ужесточения требований к ресурсам ПЭВМ . Интерфейс пользователя обеспечивается аппаратурными и программными средствами и основан на следующих принципах:
    • Общий интерфейс пользователя определяет: стандартный путь подачи команд компьютеру, одинаковую структуру приложений и инструментарий (выпадающее меню, система подсказок и пр.). Он принят на вооружение компьютерными гигантами Apple, Microsoft и IBM.
    • Наличие битовой карты, высокая разрешающая
      способность, цветной дисплей. Каждый объект, отображаемый на экране, имеет, по крайней мере, два представления: внутреннее и внешнее. Внутреннее представление (не видимое) основано на некоторой модели мира, а внешнее (видимое) выводится на экран и состоит из пикселей. Это пассивное изображение называют битовой картой, так как оно создано из отдельных битов.
    • What You See Is What You Get (WYSIWYG) – что видишь (на экране), то и получаешь (при печати на бумаге).
    • Прямая манипуляция . Пользователь должен манипулировать «созданным миром» без посредника (прямая манипуляция), не задумываясь о проблемах манипуляции. Например, вставляемая в текст картинка должна ложиться именно в то место, которое для нее определено пользователем. При этом текст должен подвинуться без искажений.

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

Тенденции развития программного обеспечения
Программное обеспечение как товар. Создание программного обеспечения для персональных компьютеров за какой-то десяток лет превратилось из занятия программистов-одиночек в важную и мощную сферу промышленности. Только в США более 50 фирм - производителей программного обеспечения имеют объемы продаж более 10 млн. дол., а у десяти из них (в частности, Microsoft, Lotus, Novell, Borland, Autodesk, Symantec и Computer Associates) объемы продаж превышают 100 млн. дол. Поэтому развитие программного обеспечения, предназначенного для широкого круга пользователей, происходит уже не в состязании индивидуальных программистов, а в процессе ожесточенной конкурентной борьбы между фирмами-производителями программного обеспечения. Доля некоммерческого программного обеспечения постоянно снижается и все более ограничивается программами, создаваемыми в процессе научных исследований или для собственного удовольствия.
Важнейшие свойства программ. При разработке коммерческих программ основной задачей фирм-разработчиков является, естественно, обеспечение их успеха на рынке. Для этого необходимо, чтобы программы обладали следующими качествами:
* функциональность программы, т.е. полнота удовлетворения ею потребностей пользователя;
* наглядный, удобный, интуитивно понятный и привычный пользователю интерфейс (т.е. способ взаимодействия программы с пользователем);
* простота освоения программы даже начинающими пользователями, для чего используются информативные подсказки, встроенные справочники и подробная документация;
* надежность программы, т.е. устойчивость ее к ошибкам пользователя, отказам оборудования и т.д., и разумные ее действия в этих ситуациях.
Стандартизация. Во многих областях совместная работа различных производителей программного обеспечения приводит к стандартизации отдельных элементов интерфейса программ, форматов данных и т.д., что весьма удобно для пользователей. Это происходит прежде всего потому, что разработчики программ перенимают друг у друга удачные находки и приемы и стремятся обеспечить совместимость с другими наиболее популярными программами. В результате использования ниспадающих (pull-down) меню или вид таблицы табличного процессора будут приблизительно одинаковыми во всех программах, хотя они созданы различными разработчиками, подобно тому, как похожи кнопки в лифтах, изготовленных разными заводами.
Удобство пользовательского интерфейса программ является важнейшим фактором, определяющим приемлемость программы для пользователей, а значит, и ее успеха на рынке. Большинство выпускаемых на рынок программ используют достаточно стандартные методы организации интерфейса: ниспадающее меню, панели для выбора ответа, встроенные диалоговые справочники и т.д. Как правило, пользователь может работать не только с клавиатурой, но и с мышью. В последнее время все большее количество программ используют графический пользовательский интерфейс (graphical user interface, GUI), в котором, в частности, для упрощения работы пользователя вместо надписей на экране употребляются рисунки (пиктограммы). При этом графический интерфейс используется не только в таких программах, как графические редакторы или издательские системы, но и в табличных процессорах, текстовых редакторах и т.д. Многие из программ с графическим интерфейсом работают под управлением системы Windows.
Увеличение мощности программ. Важнейшей тенденцией развития программного обеспечения является неуклонное увеличение их мощности - программы могут обрабатывать большие количества данных, делать это быстрее, предоставляют пользователю больше выполняемых функций и т.д. Таким образом, разработчики программного обеспечения используют возможности, появляющиеся из-за увеличения мощности компьютеров. Весьма заметно и стремление к интеграции функций программного обеспечения. Например, в табличный процессор включаются функции базы данных, в издательскую систему - функции текстового редактора и т.д.
Оборотной стороной увеличения мощности программ является повышение их требований к аппаратуре. Например, программы, работающие под управлением Windows, нельзя использовать на 486, требуется компьютер не ниже класса Pentium, для сносного быстродействия при этом необходим компьютер с микропроцессором 100 Mhz и 16 Мбайта памяти, а для комфортной работы - 200 Mhz и 32 Мбайт оперативной памяти. Для многих программ необходимы оперативная память не менее 16 Мбайт, графический монитор класса не ниже VGA, хорошая графическая плата и т.д.
Коммерческие разновидности программ
В настоящее время большинство программ распространяется на коммерческой основе. Для приобретения таких программ необходимо вначале заплатить за них определенную сумму денег. Такие программы называются коммерческими.
Существуют и такие программы, которые распространяются бесплатно. Чаще всего эти программы написаны каким-нибудь опытным программистом для себя, затем переданы для общего пользования. Такие программы называются бесплатными (freeware). Иногда разработчики программы указывают, что их программа является бесплатной для индивидуальных пользователей, но для использования в организациях должна покупаться соответствующая лицензия.
Промежуточное положение между бесплатными и коммерческими программами занимают условно-бесплатные программы (shareware). Эти программы можно получить и опробовать бесплатно, но для систематического их использования необходимо уплатить разработчикам или распространителям программы определенную сумму.
Нумерация версий программ
Программы, которые нашли популярность у пользователей, как правило, совершенствуются разработчиками: в них исправляются ошибки, включаются новые возможности и т.д. Чтобы сохранить преемственность, получившимся программам не дается какое-то другое имя, а вместо этого они называются версиями исходных программ.
По установившейся традиции версии программ обозначаются числами вида 1.00, 3.5 и т.д., т.е. десятичных дробей в американской записи. Номер версии обычно указывается после названия программы, например Windows 3.0 (читается "три ноль"). При этом существенные изменения в программах отражаются увеличением цифры до точки, незначительные изменения или исправления ошибок - увеличением цифр, стоящих после точки. Например, первоначальная версия программы обозначается 1.0, версия с некоторыми улучшениями - 1.1, а после внесения существенных дополнений новая версия программы будет иметь номер 2.0.
Также существует нумерация программ по годам, например: Windows 98 - версия, выпущенная в 98 году.
Большинство фирм-разработчиков программ продают на льготных условиях (а иногда даже предоставляют бесплатно) новые версии своих программ тем, кто ранее приобрел одну из предшествующих версий. Например, программа может стоить 400 дол., а для владельцев предыдущих версий - 50 дол.