Лекция №1
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
Основные понятия
Перечислим устоявшиеся термины.
Программа (program, routine) — упорядоченная последовательность команд (инструкций) компьютера для решения задачи.
Программное обеспечение (ПО) (software) — совокупность программ обработки данных и необходимых для их эксплуатации документов.
Задача (problem, bask) — проблема, подлежащая решению.
Приложение (application) — программная реализация на компьютере решения задачи.
Термин задача в программировании означает единицу работы вычислительной системы, требующую выделения вычислительных ресурсов (процессорного времени, памяти).
Процесс создания программ можно представить как последовательность следующих действий:
1) постановка задачи;
2) алгоритмизация решения задачи;
3) программирование.
Постановка задачи (problem definition) — это точная формулировка решения задачи на компьютере с описанием входной и выходной информации.
Алгоритм — система точно сформулированных правил, определяющая процесс преобразования допустимых исходных данных (входной информации) в желаемый результат (выходную информацию) за конечное число шагов.
Программирование (programming) — теоретическая и практическая деятельность, связанная с созданием программ.
По отношению к ПО компьютерные пользователи делятся на следующие группы:
1. Системные программисты — занимаются разработкой, эксплуатацией и сопровождением системного программного обеспечения.
2. Прикладные программисты — осуществляют разработку и отладку программ для решения различных прикладных задач.
3. Конечные пользователи — имеют элементарные навыки работы с компьютером и используемыми ими прикладными программами.
4. Администраторы сети — отвечают за работу вычислительных сетей.
5. Администраторы баз данных — обеспечивают организационную поддержку базы данных.
Сопровождение программы — поддержка работоспособности программы, переход на ее новые версии, внесение изменений, исправление ошибок и т. д.
Основные характеристики программ:
1) алгоритмическая сложность;
2) состав функций обработки информации;
3) объем файлов, используемых программой;
4) требования к операционной системе (ОС) и техническим средствам обработки, в том числе объем дисковой памяти, размер оперативной памяти для запуска программы, тип процессора, версия ОС, наличие вычислительной сети и т. д.
К показателям качества программы относятся:
1) мобильность (многоплатформенность) — независимость от технического комплекса системы обработки данных, ОС, сетевых возможностей, специфики предметной области задачи и т. д.;
2) надежность — устойчивость, точность выполнения предписанных функций обработки, возможность диагностики возникающих ошибок в работе программы;
3) эффективность — как с точки зрения требований пользователя, так и в расходе вычислительных ресурсов;
4) учет человеческого фактора — дружественный интерфейс, контекстно-зависимая подсказка, хорошая документация;
5) модифицируемость — способность к внесению изменений, например расширение функций обработки, переход на другую техническую базу обработки и т. п.;
6) коммуникативность — максимально возможная интеграция с другими программами, обеспечение обмена данными между программами.
Все программы по характеру использования и категориям пользователей можно разделить на два класса — утилитарные программы и программные продукты.
Утилитарные программы («программы для себя») предназначены для удовлетворения нужд их разработчиков. Чаще всего такие программы выполняют роль отладочных приложений, являются программами решения задач, не получающих широкого распространения.
Программные продукты (изделия) служат для удовлетворения потребностей пользователей, широкого распространения и продажи.
В настоящее время существуют и другие варианты легального распространения программных продуктов, которые появились с использованием глобальных телекоммуникаций:
• freeware — бесплатные программы, свободно распространяемые, поддерживаются самим пользователем, который правомочен вносить в них необходимые изменения;
• shareware — некоммерческие (условно-бесплатные) программы, которые могут использоваться, как правило, бесплатно.
Ряд производителей использует OEM-программы (Original Equipment Manufacturer), т. е. встроенные программы, устанавливаемые на компьютеры или поставляемые вместе с компьютерами.
Программный продукт должен быть соответствующим образом подготовлен к эксплуатации (отлажен), иметь необходимую техническую документацию, предоставлять сервис и гарантию надежной работы программы, иметь товарный знак изготовителя, а также наличие кода государственной регистрации.
Инструментарий технологии программирования
Инструментарий технологии программирования — это программные продукты, предназначенные для поддержки технологии программирования (рис. 1).

Рис. 1. Инструментарий технологии программирования
Средства для создания приложений — совокупность языков и систем программирования, инструментальные среды пользователя, а также различные программные компоненты для отладки и поддержки создаваемых программ.
Язык программирования — это формализованный язык для описания алгоритма решения задач на компьютере. Языки программирования можно условно разделить на следующие классы:
• машинные языки — это языки, воспринимаемые аппаратной частью компьютера (машинные коды);
• машинно-ориентированные языки, отражающие структуру конкретного типа компьютера (ассемблер);
• процедурно-ориентированные языки — это языки, в которых имеется возможность описания программы как совокупности процедур или подпрограмм (Си, Паскаль и др.);
• проблемно-ориентированные языки, предназначенные для решения задач определенного класса (ЛИСП, ПРОЛОГ).
Другой классификацией языков является их деление на языки, ориентированные на реализацию основ структурного программирования, основанного на модульной структуре программного продукта и типовых управляющих структурах алгоритмов обработки данных различных программных модулей, и объектно-ориентированные языки, поддерживающие понятие объектов, их свойств и методов обработки.
Системы программирования включают:
• компилятор (транслятор);
• интегрированную среду разработки программ (Не всегда);
• отладчик;
• средства оптимизации кода программ;
• набор библиотек;
• редактор связей;
• сервисные средства (утилиты) (для работы с библиотеками, текстовыми и двоичными файлами);
• справочные системы;
• систему поддержки и управления продуктами программного комплекса.
Компилятор транслирует всю программу без ее выполнения.
Трансляторы (интерпретаторы) выполняют пооперационную обработку и выполнение программы.
Отладчики (debugger) — специальные программы, предназначенные для трассировки и анализа выполнения других программ.
Трассировка — это обеспечение выполнения в пооператорном варианте.
Инструментальная среда пользователя — это специальные средства, встроенные в пакеты прикладных программ, такие, как:
• библиотека функций, процедур, объектов и методов обработки;
• макрокоманды;
• клавишные макросы;
• языковые макросы;
• конструкторы экранных форм и объектов;
• генераторы приложений;
• языки запросов высокого уровня;
• конструкторы меню и др.
Интегрированные среды разработки программ объединяют набор средств для их комплексного применения на технологических этапах создания программы.
CASE-технология (CASE — Computer-Aided System Engineering) — программный комплекс, автоматизирующий весь технологический процесс анализа, проектирования, разработки и сопровождения сложных программных систем.
Средства CASE-технологий делятся на:
• встроенные в систему реализации — все решения по проектированию и реализации привязки к выбранной СУБД;
• независимые от системы реализации — все решения по проектированию ориентированы на унификацию (определение) начальных этапов жизненного цикла программы и средств их документирования, обеспечивают большую гибкость в выборе средств реализации.
Основное достоинство CASE-технологии — это поддержка коллективной работы над проектом за счет возможности работы в локальной сети разработчиков, экспорта (импорта) любых фрагментов проекта, организованного управления проектами.
В некоторых CASE-системах поддерживается кодогенерация программ — создание каркаса программ и создание полного продукта.
Примеры программных продуктов для создания приложений: Visual C++, Delphi, Visual Basic и т. д.



