В качестве сквозного примера будет рассмотрена задача о
разработке программного обеспечения банковской сети (рисунок 1.3). В состав этой
сети входит центральный компьютер, принадлежащий объединению банков
(консорциуму), компьютеры банков, к которым непосредственно (минуя центральный
компьютер) присоединены кассовые терминалы, обслуживаемые кассирами, и сеть
терминалов для клиентов банка (банкоматов).
Рис. 1.3. Схема банковской сети
Клиенты банков имеют пластиковые банковские карточки (один
клиент может иметь несколько карточек); карточка содержит код карточки, код
банка, код клиента и другую информацию, обеспечивающую доступ к счету (счетам)
клиента в этом банке. Клиент может вставить свою карточку в ATM (банкомат) и,
при условии, что код карточки и код банка верны, начать банковскую проводку.
Данные с карточки поступают в центральный компьютер, который распределяет их по
компьютерам банков в соответствии с кодами банков до начала проводки; после
окончания проводки ее результаты поступают снова в центральный компьютер,
который распределяет их по ATM. Являясь распределителем данных между
компьютерами банков и ATM, центральный компьютер должен регулировать
коллективный доступ со стороны клиентов и банков, организуя и поддерживая
соответствующие очереди.
Проводка состоит в согласованном изменении данных на счетах
клиента и отчетной документации банка, хранящихся в базе данных банка, в
соответствии с данными проводки. Проводка включает в себя и проверку права
клиента на доступ к его счетам на момент проводки (проверка безопасности), и
проверку соответствия суммы, затребованной клиентом, текущему состоянию его
счета. Если проверки прошли успешно, клиент получает из ATM затребованную им
сумму денег и квитанцию, в противном случае он получает только квитанцию. Во
время осуществления проводки могут произойти сбои в работе аппаратуры, либо
клиент может раздумать получать деньги и отменить уже начавшуюся проводку. В
этом случае все счета и отчетные документы должны быть восстановлены в том
состоянии, в котором они были до начала проводки (откат). Для реализации отката
используется служба ведения записей об изменениях, вносимых в базу данных банка
при выполнении проводки. Все действия, связанные с выполнением проводки (в том
числе протоколирование и обеспечение безопасности проводки), производятся
программным обеспечением системы управления банковской сетью, процесс разработки
которого и составляет содержание сквозного примера.
Компьютер банка поддерживает счета клиентов, т.е. хранит их в
своей базе данных и выполняет проводки над этими счетами по запросам с ATM
(удаленная проводка) или с кассовых терминалов (проводка кассира, данные о
которой вводятся кассиром).
Несмотря на внешнюю простоту, эта задача достаточно сложна,
чтобы на ее примере можно было продемонстрировать основные особенности
объектно-ориентированного подхода к разработке программных систем: в этой задаче
есть и необходимость распределения по сети компьютеров (банкомат, который мы в
дальнейшем будем для краткости называть ATM, тоже можно рассматривать как
специализированный компьютер - см. рисунок 1.4), и асинхронные процессы, и
необходимость синхронизации таких процессов для организации параллельного
обслуживания нескольких клиентов, и работа с базами данных (информация о
клиентах хранится в базах данных банков), в частности, обслуживание транзакций
(транзакциями являются банковские проводки).
Рис. 1.4. Схема банкомата (ATM)
Наряду с описанным примером будет рассмотрено достаточно
большое число других примеров, предназначенных для демонстрации особенностей, не
охватываемых этим основным примером.
|