- •Тема 4. Основные методы программирования
- •Архитектура по
- •Принцип декомпозиции по.
- •Алгоритмическое (или линейное) программирование
- •Для алгоритмического описания способа решения задачи в виде конечной (по времени) последовательности действий характерны:
- •Методика нисходящего (структурного) программирования
- •Процедуры и функции
- •Функции
- •Тенденции в истории развития языков программирования.
- •Объектно-ориентированное программирование
Тема 4. Основные методы программирования
Архитектура ПО
Принцип декомпозиции ПО.
Алгоритмическое (или линейное) программирование
Методика нисходящего (структурного) программирования
Процедуры и функции
Тенденции в истории развития языков программирования.
Объектно-ориентированное программирование
Архитектура по
В зависимости от варианта размещения элементов программного обеспечения по отношению к средствам вычислительной системы возможно формирование следующих вариантов построения ПО и правил взаимодействия составляющих его компонент [9]:
автономное ПО;
ПО файл-серверной архитектуры;
ПО клиент-серверной архитектуры;
ПО многозвенной архитектуры;
ПО распределенной архитектуры.
Автономные программы функционируют, как правило, на одном, отдельном компьютере (рис. 2.1).
Рис. 2.1. Автономная персональная обработка данных
ПО файл-серверной архитектуры (рис. 2.2) формируется когда компьютеры пользователей системы объединены в сеть, при этом на каждом из них (на клиентском месте) запущены копии одной и той же программы, которые обращаются за данными к серверу — специальному компьютеру, который хранит файлы, одновременно доступные всем пользователям (как правило, это базы данных).
Рис. 2.2. Коллективная обработка данных с использованием сетевых версий ПО и файлового сервера
Особенность этой архитектуры в том, что все вычисления выполняются на клиентских местах, что требует наличия на них достаточно производительных ПК (это так называемые системы с толстым клиентом — программой, которая выполняет всю обработку получаемой от сервера информации).
ПО клиент-серверной архитектуры (рис. 2.3). Эта архитектура похожа на предыдущую, только сервер помимо простого обеспечения одновременного доступа к данным способен еще и выполнять необходимые программы по их обработке. В этом случае сервер чаще называют сервером баз данных, который берет на себя определенный объем вычислений (в файл-серверной архитектуре он реализуется полностью на клиентских местах).
Рис. 2.3. Обработка данных в архитектуре "клиент/сервер"
Благодаря этому удается повысить общую надежность системы, так как сервер работает значительно более устойчиво, чем клиентские ПК, и снять лишнюю нагрузку с клиентских мест, на которых удается использовать дешевые компьютеры. Запускаемые на них приложения реально осуществляют небольшие объемы вычислений, а иногда занимаются только отображением получаемой от сервера информации, поэтому они называются тонкими клиентами. Частный (вырожденный) случай этого варианта – терминальный режим обработки данных с помощью одной общей ЭВМ (рис. 2.4).
Характерной особенностью такой системы является полная "неинтеллектуальность" терминалов, используемых в качестве рабочих мест их работой управляет так называемый хост-компьютер. При этом имеется возможность совместного использования различных ресурсов хост-комьютера (оперативной памяти, процессорного времени и дорогих периферийных устройства (принтеров, графопостроителей и т.д.), что существенно облегчает и удешевляет эксплуатацию такой системы. Разумеется, употребляемые при этом операционные системы должны поддерживать многопользовательский многозадачный режим.
Рис. 2.4. Модель обработка данных «хост-компьютер + терминалы»
К недостатку подобной архитектуры следует отнести полную зависимость пользователя от администратора хосткомьютера. Фактически пользователь (а нередко и программист) не имел возможности настроить рабочую среду под свои потребности используемое программное обеспечение.
ПО многозвенной архитектуры. Недостаток предыдущей архитектуры в том, что резко возрастает нагрузка на сервер, а если он выходит из строя, то работа всей системы останавливается. Поэтому в некоторых случаях в систему добавляется так называемый сервер приложений, на котором выполняется вся вычислительная работа. Другой сервер баз данных обрабатывает запросы пользователей, на третьем может быть установлена специальная программа — монитор транзакций, которая оптимизирует обработку транзакций и балансирует нагрузку на серверы. В большинстве практических случаев все серверы соединены последовательно — позвенно, и выход из строя одного звена, если и не останавливает всю работу, то, по крайней мере, резко снижает производительность системы.
ПО распределенной архитектуры. Чтобы избежать недостатков рассмотренных архитектур, были придуманы специальные технологии, позволяющие создавать программу в виде набора компонентов, которые можно запускать на любых серверах, связанных в сеть (компоненты как бы распределены по сети). Основное преимущество подобного подхода в том, что при выходе из строя любого компьютера специальные программымониторы, которые следят за корректностью работы компонентов и позволяют им «переговариваться» между собой, сразу перезапуская временно пропавший компонент на другом компьютере. При этом общая надежность всей системы становится очень высокой, а вычислительная загрузка распределяется между серверами оптимальным образом. Доступ к возможностям любого компонента, предназначенного для общения с пользователем, осуществляется с произвольного клиентского места. При этом, так как все вычисления происходят на серверах, появляется возможность создавать сверхтонкие клиенты — программы, только отображающие получаемую из сети информацию и требующие минимальных компьютерных ресурсов. Благодаря атому доступ к компонентной системе возможен не только с ПК, но и с небольших мобильных устройств.
Частный случай компонентного подхода — доступ к серверным приложениям из броузеров через Интернет.
Сегодня наиболее популярны три компонентные технологии — СОRВА консорциума OMGJava Beans компании Sun и СОМ+ корпорации Microsoft. Эти технологии будут определять развитие информационной индустрии в ближайшие десятилетия.