Санкт-Петербургский государственный университет
Опубликован: 01.07.2013 | Доступ: свободный | Студентов: 448 / 118 | Длительность: 16:00:00
Лекция 1:

Новые принципы архитектуры современных программных систем

Лекция 1: 123 || Лекция 2 >

Развитие облачных вычислений (cloud computing)

Как уже хорошо известно ныне, облако (cloud) – широко используемая метафора для изображения сервисов, предоставляемых через Web.

Облачные вычисления модель вычислений, основанная на динамически масштабируемых (scalable) виртуализованных (virtual) ресурсах - данных, приложениях, Web-сайтах, виртуальных машинах, ОС и др., - которые доступны и используются как сервисы через Интернет и реализуются с помощью мощных центров обработки данных (data centers).

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

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

Наиболее популярная "облачная" платформа – Microsoft Windows Azure (облачная ОС) и Microsoft Azure Services Platform (реализованная на основе Microsoft.NET).

В настоящее время все крупные компании (Microsoft, IBM, HP, Dell, Oracle и др.) разработали свои системы облачных вычислений. Имеется тенденция к интеграции этих корпоративных систем в единое доступное пользователю "облако" – InterCloud.

Резюме

За годы развития ПО подход к разработке программ принципиально изменился.

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

ПО распространеняется через магазины приложений и через облака.

Будущее в развитии ПО – за сетевым и распределенным программным обеспечением, основанным на Web-сервисах, многоклиентских и многоярусных архитектурах - принципах SOA, SaaS, multi-tenancy, multi-tiering.

Всем этим принципам соответствует модель облачных вычислений.

Microsoft – одна из ведущих компаний, поддерживающих и развивающих этот новый подход (.NET, Windows Azure).

Ключевые термины

Аспектсовокупность рассредоточенных фрагментов кода, реализующих (сквозную) функциональность, например, проверку безопасности. Авторы концепции: проф. А.Л. Фуксман (Ростовский университет, 1979 – технология вертикального слоения; G. Kiczales (Xerox PARC, аспектно-ориентированное программирование и система AspectJ).

Клиент (client)пользователь и (или) компьютер, использующий какие-либо программные сервисы.

Многоклиентская архитектура (multi-tenant architecture)архитектура клиент-серверного ПО, при которой один экземпляр серверного ПО, исполняемый на сервере, обслуживает несколько клиентов (tenants – букв. клиенты, арендаторы). Пример: Web-сервис.

Многоярусная архитектура (multi-tier architecture)архитектура ПО, при которой презентация результатов, обработка и управление данными реализованы как отдельные процессы. Пример: Использование middleware для взаимодействия с сервером и СУБД для взаимодействия с данными.

Облачные вычисления (cloud computing) модель вычислений, основанная на динамически масштабируемых (scalable) и виртуализованных (virtual) ресурсах - данных, приложениях, ОС и др., - которые доступны и используются как сервисы через Интернет и реализуются с помощью мощных центров обработки данных (data centers).

Полнофункциональный клиент (rich client) – клиент Web-сервиса, имеющий полнофункциональный GUI и общающийся с Web-сервисом через слой промежуточного программного интерфейса (middleware), обеспечивающий его функциональность; примеры ПО для поддержки rich clients: Microsoft Silverlight, Oracle JavaFX и т.д.

Программное обеспечение как сервис (Software as a Service - SaaS) – модель разработки программ, основанная на использовании лицензируемых программных сервисов "по требованию" клиентами, получающими (покупающими) лицензии у сервис-провайдеров.

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

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

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

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

Тонкий клиент (thin client) – клиент Web-сервиса с минимальным пользовательским интерфейсом, не имеющий состояния, сеанса, полнофункционального GUI и общающийся с Web-сервисом только через браузер и протокол HTTP посредством отправки HTTP-запросов и получения HTML-страниц.

Уровень абстракции (abstraction layer) или "горизонтальный слой" (номер N) – совокупность модулей, реализация которых использует только модули уровня N-1 (N > 0). Нулевой уровень абстракции образует аппаратура или базовые библиотеки (API). Концепция принадлежит Э. Дейкстре и сформулирована в конце 1960-х гг. в ходе разработки операционной системы THE (Технического университета Эйндховена).

Ярус (tier)слой программного обеспечения, реализующий какую-либо независимую часть его архитектуры; например: business tier – реализация бизнес-логики; Web tier – реализация взаимодействия с Web. Если используется понятие tier, следовательно, архитектура ПО настолько сложна, что двумерная модель (горизонтальный слой / вертикальный слой) ее полностью не описывает. Tier может находиться и использоваться в любой компоненте архитектуры ПО.

Краткие итоги

За годы развития ПО подход к разработке программ принципиально изменился.

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

ПО распространеняется через магазины приложений и через облака.

Будущее в развитии ПО – за сетевым и распределенным программным обеспечением, основанным на Web-сервисах, многоклиентских и многоярусных архитектурах - принципах SOA, SaaS, multi-tenancy, multi-tiering.

Всем этим принципам соответствует модель облачных вычислений.

Microsoft – одна из ведущих компаний, поддерживающих и развивающих этот новый подход (.NET, Windows Azure).

Набор для практики

Вопросы

  1. Перечислите виды современного программного обеспечения (ПО).
  2. Перечислите требования к современному ПО
  3. Перечислите характерные черты современного ПО
  4. Какие Вы знаете современные платформы для разработки ПО?
  5. Назовите наиболее важные качества программных продуктов.
  6. Что такое тонкий клиент?
  7. Что такое полнофункциональный клиент?
  8. Что такое слой ПО?
  9. Что такое уровень абстракции ПО?
  10. Что такое вертикальный срез (слой) ПО?
  11. Что такое ПО промежуточного уровня (middleware)?
  12. Что такое ярус ПО (tier)?
  13. В чем основная идея многоярусной архитектуры ПО?
  14. Что такое многоклиентская (multi-tenant) архитектура ПО?
  15. Что такое сервисно-ориентированная архитектура?
  16. В чем суть концепции Software as a Service (SaaS)?
  17. Что такое облачные вычисления?

Упражнения

Для данной вводной лекции упражнения не предусмотрены.

Темы для курсовых работ, рефератов, эссе

  1. Краткий обзор видов современного ПО (реферат)
  2. Обзор требований к современному ПО (реферат)
  3. Обзор современных платформ для разработки ПО (реферат)
  4. Многоярусные архитектуры ПО (реферат)
  5. Многоклиентские архитектуры ПО (реферат)
  6. Обзор сервисно-ориентированных архитектур ПО (реферат)
  7. Обзор концепции Software as a Service (реферат)
  8. Облачные вычисления как пример многоярусной, многоклиентской и сервисно-ориентированной архитектуры (эссе).

Литература

  1. Сафонов В.О. Платформа облачных вычислений Microsoft Windows Azure. – М.: ИНТУИТ.РУ. БИНОМ. Лаборатория знаний, 2012, 235 с.
  2. Сафонов В.О. Платформа облачных вычислений Microsoft Windows Azure. Учебный курс. http://www.intuit.ru/studies/courses/2314/614/info, декабрь 2011.
  3. Сафонов В.О. Основы современных операционных систем. Учебный курс. http://www.intuit.ru/studies/courses/641/497/info, декабрь 2010.
  4. Сафонов В.О. Основы современных операционных систем. – М.: ИНТУИТ.РУ. БИНОМ. Лаборатория знаний, 2011, 583 с.
  5. Сафонов В.О. Архитектуры и модели программ и знаний. Спецкурс для студентов 4 курса. https://www.facultyresourcecenter.com/curriculum/pfv.aspx?ID=8480&Login&=
Лекция 1: 123 || Лекция 2 >