3 программные продукты предназначены для. Московский государственный университет печати

Основные понятия программного обеспечения

Основные понятия

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

Программа (program , routine ) - упорядоченная последовательность команд (инструкций) компьютера для решения задачи.

Программное обеспечение (sowtware ) - совокупность программ обработки данных и необходимых для их эксплуатации документов.

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

Задача (problem , task ) - проблема, подлежащая решению. Приложение (application ) - программная реализация на компьютере решения задачи.

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

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

Существует большое число разнообразных классификаций задач. С позиций специфики разработки и вида программного обеспечения будем различать два класса задач - технологические и функциональные.

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

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

Предметная (прикладная) область (application domain ) - совокупность связанных между собой функций, задач управления, с помощью которых достигается выполнение поставленных целей.

Процесс создания программ можно представить как последовательность действий, представленных на рис. 8.1.

Рис. 8.1. Схема процесса создания программ

Постановка задачи (problem definition ) - это точная формулировка решения задачи на компьютере с описанием входной и выходной информации.

Постановка задачи - обобщенный термин, который означает определенность содержательной стороны обработки данных. Постановка задачи связана с конкретизацией основ-параметров ее реализации, определением источников и структурой входной и выходной информации, востребуемой пользователем.

К основным характеристикам функциональных задач, уточняемым в процессе ее формализованной постановки, относятся:

Цель или назначение задачи, ее место и связи с другими задачами;

Условия решения задачи с использованием средств вычислительной техники;

Требоования к периодичности решения задачи;

Ограничения по срокам и точности выходной информации;

Состав и форма представления выходной информации;

Источники входной информации для решения задачи;

Пользователи задачи (кто осуществляет ее решение и пользуется результатами решение и пользуется результатами решения).

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

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

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

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

Алгоритм решения задачи имеет ряд обязательных свойств:

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

Определенность алгоритма - однозначность выполнения каждого отдельного шага преобразования информации;

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

Массовость - пригодность алгоритма для решения определенного класса задач.

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

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

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

Программирование (programming) - теоретическая и практическая деятельность, связанная с созданием программ.

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

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

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

Программирование - это развитая отрасль хозяйственной деятельности, связанная со значительными затратами материальных, трудовых и финансовых ресурсов. По данным зарубежных источников, в середине 90-х годов в мире было занято программированием до 2% трудоспособного населения. Совокупный оборот в сфере создания программных средств достигает нескольких сот миллиардов долларов в год.

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

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

Внедрение прогрессивных инструментальных средств разработки программ;

Использование специальных методов и приемов организации работ по разработке программ.

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

  • Системный программист (system / software programmer , toolsmilh ) занимается разработкой, эксплуатацией и сопровождением системного программного обеспечения, поддерживающего работоспособность компьютера и создающего среду для выполнения программ, обеспечивающих реализацию функциональных задач.
  • Прикладной программист (application programmer ) осуществляет разработку и отладку программ для решения функциональных задач.

В условиях создания больших по масштабам и функциям обработки программ появляется новая квалификация - программист-аналитик (programmer - analyst ), который анализирует и проектирует комплекс взаимосвязанных программ для реализации функций предметной области.

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

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

Основным потребителем программ служит конечный пользователь (end user ), который, как правило, относится к категории пользователей-непрограммистов. Конечный пользователь не является специалистом в области программирования, т. е. не владеет методами и технологией проектирования и создания программ, но имеет элементарные знания и навыки работы с вычислительной техникой. Такая квалификационная характеристика пользователя программного обеспечения в значительной степени влияет на спецификацию требований к создаваемым программам, интерфейсам, формам машинных документов, технологии решения задач на ЭВМ.

Возможна эксплуатация программ квалифицированными программистами или специально обученными техническими работниками- операторами ЭВМ.

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

Рис. 8.3. Схема взаимодействия специалистов, связанных с созданием и эксплуатацией программ.

ХАРАКТЕРИСТИКА ПРОГРАММНОГО ПРОДУКТА

Все программы по характеру использования и категориям пользователей можно разделить на два класса (рис.8.4) - утилитарные программы и программные продукты (изделия).

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

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

Freeware - бесплатные программы, свободно распространяемые, поддерживаются самим пользователем, который правомочен вносить в них необходимые изменения;

Shareware - некоммерческие (условно-бесплатные) программы, которые могут использоваться, как правило, бесплатно. При условии регулярного использования подобных продуктов осуществляется взнос определенной суммы.

Ряд производителей использует OEM-программы (Original Equipment Manufacturer), т.е. встроенные программы, устанавливаемые на компьютеры или поставляемые вместе с вычислительной техникой.

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

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

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

Программные продукты могут создаваться как:

Индивидуальная разработка под заказ;

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

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

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

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

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

Сопровождение программного продукта - поддержка работоспособности программного продукта, переход на его новые версии, внесение изменений, исправление обнаруженных ошибок и т.п.

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

Алгоритмическая сложность (логика алгоритмов обработки информации);

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

Полнота и системность функций обработки;

Объем файлов программ;

Требования к операционной системе и техническим средствам обработки со стороны программного средства;

Объем дисковой памяти;

Размер оперативной памяти для запуска программ;

Тип процессора;

Версия операционной системы;

Наличие вычислительной сети и др.

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

Насколько хорошо (просто, надежно, эффективно) можно использовать программный продукт;

Насколько легко эксплуатировать программный продукт;

Можно ли использовать программный продукт при изменении условия его применения и др.

Дерево характеристик качества программных продуктов представлено на рис. 8.5.

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

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

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

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

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

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

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

В условиях существования рынка программных продуктов важными характеристиками являются:

Стоимость,

Количество продаж;

Время нахождения на рынке (длительность продаж);

Известность фирмы-разработчика и программы;

Наличие программных продуктов аналогичного назначения.

Программные продукты массового распространения продаются по ценам, которые учитывают спрос и конъюнктуру рынка (наличие и цены программ-конкурентов). Большое значение имеет проводимый фирмой маркетинг, который включает:

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

Жизненный цикл программного продукта.

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

a) маркетинг рынка программных средств, спецификация требований к программному продукту;

b) проектирование структуры программного продукта;

c) программирование (создание программного кода), тестирование, автономная и комплексная отладка программ;

d) документирование программного продукта, подготовка эксплуатационной и технологической документации;

e) выход на рынок программных средств, распространение программного продукта;

f) эксплуатация программного продукта пользователями;

g) сопровождение программного продукта;

h) снятие программного продукта с продажи, отказ от сопровождения. На рис. 8.6 изображены этапы жизненного цикла и показаны их временное соответствие друг другу. Рассмотрим содержание отдельных этапов жизненного цикла.

Рис. 8.6. Этапы жизненного цикла программного продукта.

Маркетинг и спецификация программного продукта предназначены для изучения требований к создаваемому программному продукту, а именно:

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

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

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

На данном этапе необходимо выполнить формализованную постановку задачи.

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

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

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

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

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

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

На машинном уровне программного продукта, как правило, создаются:

Автоматизированная контекстно-зависимая помощь (HELP);

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

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

Требуется постоянная программа маркетинговых мероприятий и поддержки программных продуктов. Как правило, для каждого программного продукта существует своя форма кривой продаж, которая отражает спрос (рис. 8.7).

Вначале продажа программного продукта идет вверх - возрастающий участок кривой. Затем наступает стабилизация продаж программного продукта. Фирма-разработчик стремится к максимальной длительности периода стабильных продаж на высоком уровне. Далее происходит падение объема продаж, что является сигналом к изменению маркетинговой политики фирмы в отношении данного программного продукта, требуется модификация данного продукта, изменение цены или снятие с продажи.

Рис. 8.7. Кривая продаж программного продукта.

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

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

Длительность жизненного цикла для различных программных продуктов неодинакова. Для большинства современных программных продуктов длительность жизненного цикла измеряется в годах (2-3 года). Хотя достаточно часто встречаются на компьютерах и давно снятые с производства программные продукты.

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

ЗАЩИТА ПРОГРАММНЫХ ПРОДУКТОВ.

Основные понятия о защите программных продуктов.

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

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

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

Ограничение несанкционированного доступа к программам или их преднамеренное разрушение и хищение;

Исключение несанкционированного копирования (тиражирования) программ.

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

1) человека - хищение машинных носителей и документации программного обеспечения; нарушение работоспособности программного продукта и др.;

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

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

Самый простой и доступный способ защиты программных продуктов и базы данных-ограничение доступа. Контроль доступа к программному продукту и базе данных строится путем:

Парольной зашиты программ при их запуске;

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

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

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

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

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

Таким ключевым элементом могут быть:

Дискета, на которой записан не подлежащий копированию ключ;

Определенные характеристики аппаратуры компьютера;

Специальное устройство (электронный ключ), подключаемое к компьютеру и предназначенное для выдачи опознавательного кода.

Программные системы защиты от копирования программных продуктов:

Идентифицируют среду, из которой будет запускаться программа;

Устанавливают соответствие среды, из которой запущена программа, той, для которой разрешен санкционированный запуск;

Вырабатывают реакцию на запуск из несанкционированной среды;

Регистрируют санкционированное копирование;

Противодействуют изучению алгоритмов и программ работы системы.

Для идентификации запускающих дискет применяются следующие методы:

1) нанесение повреждений на поверхность дискеты ("лазерная дыра"), которая с трудом может быть воспроизведена в несанкционированной копии дискеты;

2) нестандартное форматирование запускающей дискеты.

Идентификация среды компьютера обеспечивается за счет:

1) закрепления месторасположения программ на жестком магнитном диске (так называемые неперемещаемые программы);

2) привязки к номеру BIOS (расчет и запоминание с последующей проверкой при запуске контрольной суммы системы);

3) привязки к аппаратному (электронному) ключу, вставляемому в порт ввода-вывода, и др.

На Западе наиболее популярны методы правовой защиты программных продуктов и баз данных.

Правовые методы защиты программных продуктов и баз данных.

Правовые методы зашиты программ включают:

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

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

Патентная защита устанавливает приоритет в разработке и использовании нового подхода или метода, примененного при разработке программ, удостоверяет их оригинальность.

Статус производственного секрета для программы ограничивает круг лиц, знакомых или допущенных к ее эксплуатации, а также определяет меру их ответственности за разглашение секретов. Например, используется парольный доступ к программному продукту или базе данных, вплоть до паролей на отдельные режимы (чтение, запись, корректировку и т.п.). Программы, как любой материальный объект большой стоимости, необходимо охранять от кражи и преднамеренных разрушений.

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

Лицензия - договор на передачу одним лицом (лицензиаром) другому лицу (лицензиату) права на использование имени, продукции, технологии или услуги. Лицензиар увеличивает свои доходы сбором лицензионных платежей, расширяет область распространения программного продута или базы данных; лицензиат извлекает доходы за счет их применения.

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

  • знак авторского права (обычно ©) и название разработчика, года выпуска программы, прочих ее атрибутов;
  • знак патентной защиты или производственного секрета;
  • торговые марки, соответствующие использованным в программе другим программным изделиям (обычно - ™ и название фирмы-разработчика программного продукта);
  • символ зарегистрированного права на распространение программного продукта (обычно ®).

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

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

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

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

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

Экономические отношения между лицензиаром и лицензиатом могут строиться различным образом. За право пользования программным продуктом или базой данных выплачивается единовременное вознаграждение (паушальный платеж), которое и является фактической ценой лицензии. Возможны и периодические отчисления лицензиару за право пользования в виде роялти - фиксированная ставка в определенные интервалы времени в течение действия лицензионного соглашения, как правило, процент от стоимости программных продуктов или баз данных.

Закон об охране программных продуктов и компьютерных баз данных автором признает физическое лицо, в результате творческой деятельности которого они созданы. Автору независимо от его имущественных прав принадлежат личные авторские права (см. рис. 8.8): авторство, имя, неприкосновенность (целостность) программ или баз данных.

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

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

Программные продукты и базы данных могут использоваться третьими лицами - пользователями на основании договора с правообладателем.

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

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

На заре развития компьютерной техники появилось понятие языков программирования и создаваемых с их помощью последовательностей команд, которые чуть позже стали называть приложениями. По сути, это продукты программные (именно программные). То есть заданный набор команд позволяет выполнить ту или иную задачу или обеспечить функционирование компьютерной системы в целом. Какие же они бывают?

Продукты программные: базовая классификация

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

На сегодняшний день имеется несколько типов классификации программного обеспечения, или ПО. Среди основных типов выделяют:

  • системное ПО;

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

Типы программных продуктов по использованию

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

  • проприетарное ПО с монополией правообладателя, который предоставляет только права на его установку и использование, сохраняя при этом право интеллектуальной собственности;
  • коммерческое (платное) ПО, подразумевающее покупку программного продукта и официальной лицензии;
  • условно-бесплатное ПО (shareware), которым можно пользоваться в течение определенного времени (как правило, 30 дней), после чего следует приобрести лицензию или зарегистрировать продукт;
  • бесплатное (freeware) ПО - программы и приложения, не требующие наличия лицензии или оплаты;
  • бесплатное ПО с (лицензия GNU), которое любой желающий может изменять или модифицировать по своему усмотрению.

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

Программное обеспечение Firmware

Этот тип ПО относится к системной части. Иными словами, это средства базового уровня, обеспечивающие взаимодействие между программной средой компьютера (операционной системой или установленными приложениями).

Сегодня их называют драйверами - небольшими программами, созданными для того, чтобы программная часть компьютерной системы распознавала и обеспечивала корректную работу любого «железного» компонента. Как правило, все настройки сохраняются в специальном чипе на материнской плате, имеющем собственную программную среду, называемую BIOS. И именно BIOS хранит не только базовые настройки «железа», но и диагностирует его при включении компьютерного терминала (если все конфликты или сбои не обнаружены, выдается характерный одиночный звуковой сигнал при старте компьютера через системный динамик).

Операционные системы

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

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

Средства разработки

Разработка программных продуктов любого типа, будь то ОС или любое приложение, осуществляется на основе какого-либо языка программирования, который включает в себя не только определенный набор команд, но и трансляторы, языковые интерпретаторы, компиляторы и т. д. (иногда даже дисассемблеры).

Многие языки используют ручной ввод команд, скажем, в текстовом режиме, можно найти даже целые специализированные платформы, позволяющие работать с языками вроде Delphi или Java без специальных знаний, так сказать, на интуитивном уровне. Кстати, то же самое касается и веб-разработки сайтов, когда страницы и их взаимосвязи создаются на основе встроенных возможностей, которыми обладают такие программные продукты. Примеры? Пожалуйста! Тот же редактор MS Office Word, WordPress и т. д.

Средства администрирования

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

К примеру, в стандартном наборе Windows-систем (и не только в них) тоже имеются специальные программы и приложения, позволяющие, например, проверить на ошибки жесткий диск, провести тестирование оперативной памяти и т. д. Само собой разумеется, что существуют и специализированные сторонние утилиты, имеющие в своем функционале расширенные наборы инструментов. С их использованием системное администрирование выходит на новый, более высокий уровень.

В качестве интереснейшего примера можно привести программу для поиска и исправления системных ошибок на винчестере белорусского разработчика под названием Victoria, которая имеет куда больше возможностей, чем стандартная утилита Windows. Программа вообще может «перемагничивать» жесткие диски, восстанавливая сбойные сектора, но не затрагивая информацию, хранящуюся в кластерах. И это только малая толика приложений данного направления. А если рассмотреть еще и приложения для системных администраторов, позволяющие контролировать любой локальный компьютер в сети или даже функционирование всей такой сетевой системы, то просто диву даешься, до чего дошел прогресс: здесь сегодня утилит столько, что всего и не опишешь.

Обеспечение информационной безопасности

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

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

Средства доступа к Интернету

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

Что же до обеспечения самого доступа, основными средствами являются так называемые интернет-браузеры, работающие на основе строго определенных сетевых настроек (IP-адрес компьютера, маска подсети, основной и дополнительный шлюзы, DNS-, WINS- и прокси-серверы и т. д.). Такие приложения зачастую относят к прикладным программам.

Прикладное ПО

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

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

Базовый набор ОС Windows

Теперь рассмотрим основные программные продукты, которые имеются в любой на примере Windows. Само собой разумеется, что назвать такой набор универсальным можно с большой натяжкой, ведь в других «операционках» такие наборы могут существенно отличаться. Тем не менее в связи с тем, что именно эти ОС у нас получили наибольшее распространение, обсудим именно этот пакет.

Если кто обращал внимание, после первой установки Windows в основном меню можно найти программы, отсортированные по назначению: стандартные, служебные, административные и т. д. Но вот далеко не все знают, что это только малая часть айсберга. Дело в том, что многие служебные утилиты в меню не отображаются. В большинстве своем их можно вызвать либо из командной строки, либо из меню «Выполнить».

Кроме того, в «чистой» Windows-системе напрочь отсутствует основной офисный пакет, хотя средства просмотра некоторых документов все же есть (тот же Word Pad). Таким образом, получается, что после инсталляции самой «операционки» пользователю приходится самостоятельно устанавливать еще и основной офисный пакет. Впрочем, трудностей это не вызывает.

Ну а о калькуляторах, блокнотах, файловых менеджерах, интернет-браузерах и многом другом вообще можно не говорить - они имеются в каждой системе.

Утилитарные программы

Наконец, рассмотрим продукты, программные возможности которых позволяют не только проводить диагностику или оптимизировать работу системы, но и являются дополнительным инструментом при работе с некоторыми типами данных.

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

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

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

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

Еще одним примером можно назвать обновление драйверов устройств. Здесь автоматический режим также не предусмотрен. Но сторонние утилиты вроде Driver Booster справляются с этим элементарно, причем обновляют драйвера исключительно из официальных источников (сайтов производителя оборудования).

Наконец, одними из самых востребованных являются архиваторы, ведь даже при загрузке файлов из Интернета при достаточно большом начальном объеме они упакованы в специальные архивы для уменьшения «веса». Кроме того, большие папки могут разбиваться на несколько отдельных архивов, а программы уровня WinRAR, WinZIP или 7Zip позволяют обрабатывать такие данные элементарно.

Вместо послесловия

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

Все программы по характеру использования и категориям пользователей можно разделить на два класса:

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

программные продукты («изделия») предназначены для удовлетворения потребностей пользователей, широкого распространения и продажи.

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

freeware – бесплатные программы, свободно распространяемые, поддерживаются самим пользователем, который правомочен вносить в них необходимые изменения;

shareware – некоммерческие (условно-бесплатные) программы, которые могут использоваться, как правило, бесплатно (при условии регулярного использования подобных продуктов осуществляется взнос определенной суммы).

Ряд производителей использует OEM-программы (Original Equipment Manufacturer), т.е. встроенные программы, устанавливаемые на компьютеры или поставляемые вместе с вычислительной техникой.

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

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

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

Программные продукты могут создаваться как:

– индивидуальная разработка под заказ;

– разработка для массового распространения среди пользователей.

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

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

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

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

Сопровождение программного продукта – поддержка работоспособности программного продукта, переход на его новые версии, внесение изменений, исправление обнаруженных ошибок и т.п.

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

Основные характеристики программ:

– алгоритмическая сложность (логика алгоритмов обработки информации);

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

– полнота и системность функций обработки;

– объем файлов программ;

– требования к операционной системе и техническим средствам обработки со стороны программного средства;

– объем дисковой памяти;

– размер оперативной памяти для запуска программ;

– тип процессора;

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

– наличие вычислительной сети и др.

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

– насколько хорошо (просто, надежно, эффективно) можно использовать программный продукт;

– насколько легко эксплуатировать программный продукт;

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

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

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

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

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

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

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

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

Программа (program, routine) - упорядоченная последовательность команд (инструкций) компьютера для решения задачи.

Программное обеспечение (sowtware) - совокупность программ обработки данных и необходимых для их эксплуатации документов.

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

Задача (problem, task) - проблема, подлежащая решению. Приложение (application) - программная реализация на компьютере решения задачи.

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

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

Существует большое число разнообразных классификаций задач. С позиций специфики разработки и вида программного обеспечения будем различать два класса задач - технологические и функциональные.

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

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

Все программы по характеру использования и категориям пользователей можно разделить на два класса:

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



программные продукты («изделия») предназначены для удовлетворения потребностей пользователей, широкого распространения и продажи.

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

freeware – бесплатные программы, свободно распространяемые, поддерживаются самим пользователем, который правомочен вносить в них необходимые изменения;

shareware – некоммерческие (условно-бесплатные) программы, которые могут использоваться, как правило, бесплатно (при условии регулярного использования подобных продуктов осуществляется взнос определенной суммы).

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

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

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

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



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

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

· алгоритмическая сложность (логика алгоритмов обработки информации);

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

· полнота и системность функций обработки;

· объем файлов программ;

· требования к операционной системе и техническим средствам обработки со стороны

· программного средства;

· объем дисковой памяти;

· размер оперативной памяти для запуска программ;

· тип процессора;

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

· наличие вычислительной сети и др.

Программное обеспечение (ПО) является широким понятием, которое объединяет три основных вида:

Системное программное обеспечение работоспособности компьютеров.

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

Инструментарий технологии программирования (программное обеспечение сферы производства программ).

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

Программы предназначены для машинной реализации задач. Термины «задача» и «приложение» имеют очень широкое употребление в области информатики и программного обеспечения и определяются следующим образом: задача - проблема, подлежащая решению; приложение - программная реализация на компьютере решения задачи.

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

Постановка задачи - это точная формулировка решения задачи на компьютере с описанием входной и выходной информации. Постановка задачи связана с определением основных параметров ее реализации, определением источников и структурой входной и выходной информации , заданной пользователем.

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

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

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

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

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

Программирование - это развитая отрасль хозяйственной деятельности, связанная со значительными затратами материальных, трудовых и финансовых ресурсов. По данным зарубежных источников, в начале XXI века в мире было занято программированием до 2 % трудоспособного населения. Совокупный оборот в сфере создания программных средств достигает нескольких сот миллиардов долларов в год.

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

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

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

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

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

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

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

Возможна эксплуатация программ квалифицированными программистами или специально обученными техническими работниками - операторами ЭВМ .

Все программы по характеру использования и категориям пользователей можно разделить на два класса - утилитарные программы и программные продукты (изделия).

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

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

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

    Freeware - бесплатные программы, свободно распространяемые, поддерживаются самим пользователем, который правомочен вносить в них необходимые изменения;

    Shareware - некоммерческие (условно-бесплатные) программы, которые могут использоваться, как правило, бесплатно. При условии регулярного использования подобных продуктов осуществляется взнос определенной суммы.

Ряд производителей использует OEM-программы (Original Equipment Manufacturer), т. е. встроенные программы, устанавливаемые на компьютеры или поставляемые вместе с вычислительной техникой.

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

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

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

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

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

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

Сопровождение программного продукта включает поддержку работоспособности программного продукта, переход на его новые версии, внесение изменений, исправление обнаруженных ошибок и т. п.

Основными характеристиками программ являются: 1) алгоритмическая сложность (логика алгоритмов обработки информации); 2) объем файлов программ; 3) требования к операционной системе и техническим средствам обработки программного средства; 4) объем дисковой памяти; 5) размер оперативной памяти для запуска программ; 6) тип процессора; 7) версия операционной системы и др.

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

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

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

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

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

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

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

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

    1. Маркетинг рынка программных средств, спецификация требований к программному продукту;

    2. Проектирование структуры программного продукта;

    3. Программирование (создание программного кода), тестирование, отладка программ (исправление ошибок, совершенствование кода, повышение надежности и т. д.);

    4. Документирование программного продукта, подготовка эксплуатационной и технологической документации;

    5. Выход на рынок программных средств, распространение программного продукта;

    6. Эксплуатация программного продукта пользователями;

    7. Сопровождение программного продукта;

    8. Снятие программного продукта с продажи, отказ от сопровождения.

    9. Рассмотрим содержание отдельных этапов жизненного цикла.

Маркетинг и спецификация программного продукта предназначены для изучения требований к создаваемому программному продукту, а именно: 1) определение состава и назначения функций обработки данных программного продукта; 2) установление требований пользователя к характеру взаимодействия с программным продуктом, типу пользовательского интерфейса; 3) требования к комплексу технических и программных средств для эксплуатации программного продукта и т. д.

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

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

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

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

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

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

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

Для каждого программного продукта существует своя форма кривой продаж, которая отражает спрос, однако есть и общие закономерности. Вначале продажа программного продукта идет вверх - возрастающий участок кривой. Затем наступает стабилизация продаж программного продукта. Фирма-разработчик стремится к максимальной длительности периода стабильных продаж на высоком уровне. Далее происходит падение объема продаж, что является сигналом к изменению маркетинговой политики фирмы в отношении данного программного продукта, требуется модификация данного продукта, изменение цены или снятие с продажи.

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

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

Длительность жизненного цикла для различных программных продуктов неодинакова. Для большинства современных программных продуктов длительность жизни составляет 2-3 года. Хотя достаточно часто встречаются на компьютерах и давно снятые с производства программные продукты.

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

    1. Создает операционную среду функционирования других программ;

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

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

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

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

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

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

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

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