double arrow

Раздел 1. Программы, программное обеспечение. Основные понятия и определения


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

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

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

Опр2. ПО – программы, предназначенные для многократного использования и применения разными пользователями. Свойства ПО:

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

2) Эффективность. Программное обеспечение рассчитано на многократное использование, поэтому оно пишется и отлаживается 1 раз, а выполняется многократно.

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

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

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

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

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

Классификация ПО:

1) Системное

2) Прикладное

3) Промежуточное (middleware) – совокупность программ, осуществляющих управление вторичными, т.е. конструируемыми самим ПО, ресурсами, ориентированными на решение широкого класса задач. К промежуточному ПО относятся: серверы БД, СУБД, серверы коммуникации, менеджеры транзакций и другие программные серверы.

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

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

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

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

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

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

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

Этапы подготовки программ:

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

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

Свойства программного модуля:

Функциональность – модуль должен выполнять законченную функцию.

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

Специфицируемость- входные и выходные параметры модуля должны четко формулироваться.

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

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

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

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

Трансляторы – общее название для программ, осуществляющих трансляцию. Они подразделяются на ассемблерыи компиляторы в зависимости от исходного языка программы, которую они обрабатывают. Ассемблеры работают с автокодами или языками ассемблера. Компиляторы – с языками высокого уровня.

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

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

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

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

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

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

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

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

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

1) Большую гибкость в сопровождении, т.к. позволяет менять отдельные объектные модули программы, не меняя остальных модулей

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

Вариант интерпретации подразумевает прямое исполнение исходного модуля.

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

Примеры интерпретаторов: языки процедуру shell и rexx, JVM.

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

1) Макрообработка и трансляция

2) Редактирование связей

3) Загрузка и отладка

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

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

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

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

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


Сейчас читают про: