Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Н.Е.Сапожников_Информационные системы в экономике_УЧЕБНОЕ ПОСОБИЕ.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

Глава 6 Современное программное обеспечение информационных систем

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

Объектно-ориентированное программирование

Объектно-ориентированное программирование (ООП)— логически следующая за структурным ступень развития. ООП начинает бурно развиваться с конца восьмидесятых годов. Начало девяностых отмечено повсеместным внедре­нием новых объектно-ориентированных языков програм­мирования. К их числу в первую очередь относится C++ [15] и объектно-ориентированный Pascal. Развитие ООП приве­ло к такому существенному изменению стиля программи­рования, что даже новые операционные системы стали разрабатываться под влиянием этих концепций. Так, в системах Windows 9x/NT многие сущности ориентирова­ны на ООП. Например, одним из назначений реестра Windows является регистрация в ОС классов, входящих в состав программных комплексов.

Классы (в некоторых версиях Pascal они названы объек­тами) — основные элементы ООП, расширяющие понятие типов данных и объединяющие (инкапсулирующие) в еди­ное целое данные (в ООП они называются поля) и про­граммный код (в ООП — методы), обрабатывающий их. Здесь структура данных объединена в единое целое с ос­новными методами, осуществляющими доступ к ним и их обработку. После разработки класса программист, использующий его, не нуждается в знании о структуре данных внутри класса. Если изменить структуру данных и при этом соответственно изменить внутренние алгоритмы об­работки этих данных, то программист, использующий класс во внешних модулях, не заметит изменения структуры. Если в традиционном структурном программировании из­менение структуры данных приведет к необходимости пе­реработать практически все модули, использующие эту структуру, то в ООП переработка затронет только методы класса. Таким образом, ООП является расширением кон­цепции структурного программирования.

Базируется ООП на следующих основных принципах:

  • инкапсуляция (описана выше),

  • наследование,

  • полиморфизм (многообразность),

  • в последнее время к основным понятиям относят скрытие данных

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

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

Программирование, управляемое событиями

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

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

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

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

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

Визуальное программирование интерфейса

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

Однако разработка удобного интерфейса с пользовате­лем — т.е. системы окон, кнопок, меню, горячих клавиш и т.д. — являлась одной из наиболее трудоемких задач при программировании. Программирование «вручную» интерфейса и сервиса занимало до 90% объема текста программы. Т.е., объем смысловой части программы, объем того, ради чего она и разрабатывалась, становился гораз­до меньшим, чем объем вспомогательной, сервисной час­ти. Соответственно и дорогостоящие ресурсы труда про­граммистов использовались в основном для выполнения достаточно рутинной работы.

Одним из подходов снижения трудоемкости при разра­ботке стандартных интерфейсов был связан со стандарти­зацией и развитием специальных функций API (Application Program Interface — стандартные библиотеки процедур и функций, входящие в состав операционной системы, кото­рые программист может использовать в своем приложении).

Вторым, революционным шагом, явилось появление визуального программирования, появившегося в Visual Basic и значительно развитого в системах Delphi и C++ Builder. Этот шаг позволил серьезно развить так называе­мую CASE - технологию (Computer Aided Software Engineering - автоматизированное проектирование программного обеспечения).

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

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

Благодаря визуальному объектно-ориентированному программированию, управляемому событиями, создана RAD — технология (Rapid Application Development - быст­рая разработка приложений). Благодаря этой технологии, программисты имеют гораздо больший резерв времени для программирования сути задачи, для оптимизации своего приложения, для вариантной разработки программных проектов.

Взаимодействие программ в информационных системах

Сказанное выше относилось к технологиям разработки отдельных программ. Но в настоящее время программы, как правило, должны являться частью некоторой инфор­мационной системы (ИС), т.е. функционировать не сами по себе, а во взаимодействие с большим количеством дру­гих программ. Также программы должны уметь «исполь­зовать» другие программы и системы, разработанные сто­ронними организациями. Например, ваша программа мо­жет подготовить некоторый отчетный документ в формате Microsoft Word, и этот документ будет доступен на всех компьютерах, на которых установлен Word (но на кото­рых может не быть вашей программы). Аналогично, мож­но из прикладной программы создать итоговые чертежи в формате распространенных графических систем (напри­мер, в формате AutoCAD или Corel Draw). В этом случае один из основных вопросов — организация взаимного об­щения программ друг с другом и с источником данных. В качестве последнего в ИС выступают базы данных (БД), вместе с системой управления базами данных (СУБД). Программы, работающие в составе ИС, получают инфор­мацию из БД, к которым имеют доступ и другие програм­мы. В этом случае естественным образом создается воз­можность взаимосвязи приложений через данные. Например, одна программа записывает результаты своей рабо­ты, а другая использует их как начальные данные для своей работы. Этот простейший уровень взаимосвязи тре­бует одного — унификацию данных и форматов их хране­ния. Для целей унифицированного доступа к данным ис­пользуются специальные языки, например SQL (Structured Query Language — язык структурированных запросов).

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

Однако часто требуется обмен информацией между про­граммами, выполняющимися одновременно (параллельно). Желательно, чтобы этот обмен не зависел от языка про­граммирования, на котором написаны разные программы, а в сетевых системах не зависел и от операционных сис­тем, установленных на разных компьютерах. Яркий при­мер подобной организации взаимосвязи — Интернет, в гло­бальную сеть соединены компьютеры с различными опе­рационными системами (Windows, Unix, Solaris, сотовые телефоны и др.).

Простейшими средствами параллельного общения вна­чале были файлы совместного доступа, или разделяемые файлы (файлы, к которым могут иметь одновременный доступ несколько программ), которые появились еще на заре Windows. Также ранним средством является буфер обмена ClipBoard, доступный практически всем приложе­ниям Windows, в котором можно временно хранить для передачи другим программам информацию различного фор­мата — текстовую, графическую и т.п. Несколько позже для межпрограммного взаимодействия использовалась тех­нология DDE — динамический обмен данными. Сегодня актуальность DDE ниже из-за появления новых техноло­гий, а использование БД, буфера обмена и разделяемых файлов как простейшего варианта межпрограммного вза­имодействия остается актуальным.

Позднее появилась технология связывания и внедрения объектов OLE1 (Object Linking and Embedding). Благода­ря OLE1 появилась возможность создавать составные до­кументы (например, в документ Word вставлять таблицу Exel, при ее редактировании из Word используются воз­можности Exel). На смену ей пришла технология OLE2, позволяющая различным программам предоставлять друг другу свои функции (сервис). Программа, предоставляю­щая свои функции, называется сервером, а программа, их использующая — клиентом. В этой технологии одна про­грамма может не просто вызвать другую, но использовать ее отдельные функции.

Следующим шагом на пути совершенствования межпро­граммного обмена явилась технология компонентной мо­дели объектов (СОМ — Component Object Model). Эта тех­нология заключается в стандартизированном описании служб программы, к которым она дает доступ другим про­граммам. В технологии СОМ неважно, на каких языках написаны программы и где они выполняются: в одном по­токе, в разных потоках, на разных компьютерах. Расши­рение этих возможностей дает технология DCOM — рас­пределенная модификация СОМ. Отметим, что СОМ под­разумевает взаимосвязь на уровне специальных объектов, структура которых во многом схожа с рассмотренными ранее объектами внутри одной программы.

Необходимо сказать о еще одной стремительно развива­ющейся технологии — Интернет. В Интернете располага­ются и базы данных, и серверы, с которыми общаются приложения пользователя.

Базы данных и системы управления базами данных

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

Классификацию современных СУБД можно выполнить по различным признакам.

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

По размещению отдельных частей БД различают ло­кальные и сетевые СУБД.

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

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

В файл-серверных СУБД данные размещаются на од­ном достаточно мощном компьютере, постоянно подклю­ченном к сети. Такой компьютер называется файл-серве­ром. Достоинством такой СУБД является относительная простота ее создания, обслуживания и настройки. Заме­тим, что между локальной и файл-серверной СУБД прак­тически нет различий, т.к. все фрагменты программного обеспечения СУБД (за исключением данных) находятся на всех компьютерах сети. Отличие между ними состоит в том, что программы обращаются к данным через сеть. Для многих вариантов архитектуры сети на уровне при­кладного программного обеспечения это различие «скры­то» от программиста. Из этого вытекает основной недо­статок файл-серверных СУБД. Он связан со значительной нагрузкой на сеть, т.к. любое обращение к данным, их корректировка вызывает пересылку значительных объе­мов информации по сети. Например, если пользователю требуется выбрать несколько фамилий из списка персона­ла по определенному признаку, то на его компьютер вна­чале пересылается весь список, и затем поиск производит­ся на пользовательском компьютере. При увеличении чис­ла пользователей СУБД пропускной способности сети ста­новится недостаточно для объемов пересылаемой инфор­мации, что приводит к существенному замедлению скорос­ти работы, а иногда и к системным сбоям.

В клиент-серверных БД нагрузка на сеть существенно снижена. Клиентская программа работает с данными че­рез специализированное программное обеспечение (посред­ника) – сервер базы данных. Сервер размещается на ма­шине с данными. Клиентская программа посылает серве­ру запрос, сервер принимает его, отыскивает в данных нужные записи и передает их клиенту. Поэтому через сеть передаются только сравнительно короткие запросы и только ограниченное количество найденных записей, а не вся таб­лица. Запрос к серверу формируется на специализирован­ном языке структурированных запросов — SQL. Поэтому часто серверы БД называют SQL-серверами. Серверные программы являются достаточно сложными, производят­ся различными фирмами. Наиболее известными являются серверы:

  • Microsoft SQL Server компании Microsoft,

  • Sybase SQL Server компании Sybase,

  • Oracle компании Oracle,

  • DB2 компании IBM,

  • InterBase компании Inprise.

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

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

Контрольные вопросы и задачи

6.1. Что Вы знаете об объектно-ориентированном программировании?

6.2. Какие основные принципы ООП?

6.3. Что дает механизм наследования в ООП?

6.4. Что такое полиморфизм в ООП?

6.5. Что такое скрытие данных в ООП?

6.6. Возможности программирования, управляемого событиями?

6.7. Поясните основные возможности визуального программирования.

6.8. Что Вы знаете о принципах взаимодействия программ в информационных системах?

6.9. Что понимается под БД и СУБД? В чем их различие?

6.10. Классификация СУБД по назначению и по размещению.