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

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

       1.1. Классификация программного обеспечения

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

      Как любая информационная система АБИС - это совокупность взаимосвязанных обеспечивающих подсистем. Важной неотъемлемой частью АБИС является программное обеспечение (ПО).

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

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

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

      В зависимости от назначения программное  обеспечение делится на общее и специальное программное обеспечение (рис. 1).  

         

 
 

 

                                                                           

                                                                         

 

 

  
 

 Рис.1. Классификация программного обеспечения  АБИС

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

  1. операционные системы - вид общего программного обеспечения, предназначенный для управления процессами и ресурсами компьютера; обеспечения запуска всех остальных программ; организации интерфейса с пользователем;
  2. вспомогательные программы - вид общего программного обеспечения, предназначенный для выполнения вспомогательных (обслуживающих) операций обработки данных или обслуживания компьютеров. К вспомогательным программам относятся: антивирусные программы, программы архивирования данных, программы динамического сжатия  дисковых данных, программы обслуживания магнитных дисков, программы увеличения производительности магнитных дисков, драйверы, программы ограничения доступа, программы резервного копирования, диагностические программы и др.;
  3. инструментарий технологии программирования - вид общего программного обеспечения, обеспечивающий технологию разработки и внедрения программных средств;
  4. прикладное программное обеспечение общего назначения - вид общего программного обеспечения, предназначенный для расширения возможностей пользователей АБИС. Для полноценного функционирования библиотеки, для поддержки преимущественно информационных технологий конечных пользователей используются следующие основные виды программного обеспечения общего назначения:
    • текстовые процессоры – вид прикладных программных средств общего назначения, позволяющий создавать текстовые документы различной степени сложности – с автоматическим форматированием документов, вставкой рисованных объектов и графики, составлением оглавлений и указателей, проверкой орфографии, шрифтовым оформлением, подготовкой шаблонов документов и т.д. В качестве примеров можно назвать такие текстовые процессоры как Microsoft Word, Word Perfect, Лексикон, Sun Star  Office Writer и др.;
    • табличные процессоры - вид прикладных программных средств общего назначения, позволяющий обрабатывать большие массивы чисел. Включает средства для вычислений, средства деловой графики, встроенные функции, средства для работы с базами данных, средства анализа табличных данных. Примерами могут служить следующие табличные процессоры: Microsoft Excel, Quattro Pro, Sun Star  Office Calc и др.;
    • программы презентационной графики - вид прикладных программных средств общего назначения, предназначенный для создания изображений и показа их на экране; подготовки слайд-фильмов, видео-фильмов, мультфильмов, их редактирования  и определения порядка их следования. Наиболее известными программами презентационной графики являются: Microsoft Power Point, Autodesk 3D Studio R4, Autodesk Animator Pro, Sun Star  Office Impress и др.;
    • графические редакторы - вид прикладных программных средств общего назначения, предназначенный для создания, редактирования и отображения изображений компьютерной графики. Среди программных средств данного вида можно назвать: Corel Draw, Adobe PhotoShop, Adobe Illustrator, Microsoft Paint и др.;
    • программы проверки орфографии - вид прикладных программных средств общего назначения, предназначенный для проверки орфографии и стилевой правки текстов документов. Примерами программ проверки орфографии могут служить: Lingvo Corrector, Stylus Lingvo Office и др.;
    • программы распознавания текста - вид прикладных программных средств общего назначения, предназначенный для распознавания считанной сканером информации и преобразования ее в текстовое представление. (Fine Reader, OCR CuneiForm);
    • программы-переводчики - вид прикладных программных средств общего назначения, предназначенный для перевода текстов с русского языка на иностранный (английский, немецкий, французский и др.) и обратно (Stylus General for Windows, Promt XT и др.);
    • системы управления базами данных -  вид прикладных программных средств общего назначения, обеспечивающий организацию и хранение локальных баз данных на автономно работающих компьютерах либо централизованное хранение баз данных на файл-сервере и сетевой доступ к ним. Представителями программных средств данного вида являются: Visual FoxPro, Microsoft Access, Oracle и др.;
    • справочные правовые системы - вид прикладных программных средств общего назначения, предоставляющий пользователю АБИС возможности поиска в базах данных, содержащих нормативные документы (по хозяйственному, банковскому законодательству и т.д.). Как правило, правовые системы содержат полнотекстовые базы данных. В России лидирующее место среди программного обеспечения данного вида занимают: Консультант-Плюс, Гарант, Кодекс;
    • настольные издательские системы – вид прикладных программных средств общего назначения, предназначенный для создания издательской продукции (книг, газет, журналов, буклетов и др.) полиграфического качества. Данный вид программного обеспечения составляют: Page Maker, Microsoft Publisher, InDizine, Frame Maker, Corel Ventura и др.;
    • программные средства мультимедиа - вид прикладных программных средств общего назначения, предназначенный для создания и использования аудио- и видеоинформации с целью расширения информационного пространства пользователя АБИС. Используются в сфере библиотечного информационного обслуживания, в процессе обучения, организации досуга и т.д. (Sierra Club Collection, Outer Space Collection, Mozart и др.);
    • серверы баз данных - вид прикладных программных средств общего назначения, предназначенный для создания и использования при работе в сети интегрированных баз данных в архитектуре клиент-сервер. Сервер баз данных  всю обработку (хранение, поиск, извлечение и передачу данных клиенту) данных выполняет самостоятельно, одновременно обеспечивая данными большое число пользователей сети. Примерами могут служить Oracle, Microsoft SQL Server и др.;
    • редакторы Web-страниц - вид прикладных программных средств общего назначения, предназначенный для создания страниц HTML: Microsoft Front Page, Macromedia Free Hand и др.;
    • коммуникационные системы - вид прикладных программных средств общего назначения, предназначенный для организации взаимодействия пользователя с удаленными абонентами или информационными ресурсами вычислительной сети. Включают браузеры,  средства электронной почты. В качестве наиболее известных представителей данного вида ПО можно назвать: Microsoft  Internet Explorer, Netscape Navigator, Microsoft  Outlook, The Bat.

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

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

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

      Глава 4. Операционные системы  

       4.1. Назначение и функции  операционных систем 

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

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

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

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

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

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

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

      Основными функциями операционных систем являются:

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

        
 
 
 
 
 
 
 
 
 

      Рис. 6. Операционная система как интерфейс между пользователями аппаратурой компьютера 

      
  • загрузка в оперативную память подлежащих исполнению программ;
  • распределение памяти, а также создание виртуальной памяти;
  • запуск программы, т.е. передача ей управления, в результате чего процессор исполняет программу;
  • идентификация всех программ и данных;
  • прием и исполнение различных запросов от выполняющихся приложений. Операционные системы выполняют большое количество системных функций (сервисов), которые могут быть запрошены из выполняющейся программы. Обращение к этим сервисам осуществляется по определенным правилам, которые и составляют интерфейс прикладного программирования (Application Program Interface, API) этой операционной системы;
  • обслуживание всех операций ввода-вывода;
  • обеспечение работы систем управления файлами и/или систем управления базами данных;
  • обеспечение режима мультипрограммирования, т.е. организации параллельного выполнения двух и более программ на одном процессоре, создающей видимость их одновременного исполнения;
  • планирование и диспетчеризация задач в соответствии с заданной стратегией;
  • организация механизма обмена сообщениями и данными между выполняющимися программами;
  • для сетевых операционных систем – обеспечение взаимодействия  связанных между собой компьютеров;
  • защита одной программы от влияния другой, обеспечение сохранности данных, защита самой операционной системы от исполняющихся на компьютере приложений;
  • аутентификация и авторизация пользователей. Под аутентификацией понимается процедура проверки имени пользователя и его пароля на соответствие тем значениям, которые хранятся в его учетной записи. Термин авторизация означает, что в соответствии с учетной записью пользователя, который прошел аутентификацию,  ему назначаются определенные права (привилегии), определяющие, что он может делать на компьютере;
  • удовлетворение жестким требованиям на время ответа в режиме реального времени;
  • обеспечение работы систем программирования, с помощью которых пользователи создают свои программы;
  • предоставление услуг на случай частичного сбоя системы.

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

       4.2. Архитектура операционных  систем 

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

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

  • ядро – модули, выполняющие основные функции ОС;
  • модули, выполняющие вспомогательные функции ОС.

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

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

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

                                                                                                                             

                                                                                                                                       

                                                                                                                   

                                                                                                            

      

      

      

      

      

      

- вспомогательные модули ОС

  - пользовательские приложения 

Рис. 7. Нечеткость границы между ОС и приложениями 

      Вспомогательные модули ОС обычно подразделяются на следующие группы:

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

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

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

      ПРИМЕЧАНИЕ______________________________________________________________________________________

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

      ___________________________________________________________________________________________________________

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

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

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

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

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

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

          Приложения

          пользователей

      

        

              Запрос

                                 Ответ 
 

Пользовательский  режим

      

Привилегированный  режим                        Запрос        Ответ

        
 
 

      Рис. 8. Реализация системного вызова в микроядерной архитектуре

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

    4.3. Принципы построения  современных операционных  систем 

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

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

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

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

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

      ПРИМЕЧАНИЕ______________________________________________________________________________________

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

      ___________________________________________________________________________________________________________

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

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

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