Платформа облачных вычислений Microsoft Windows Azure

Обзор архитектуры современных программных систем

Показывать лекцию целиком

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

Презентацию к данной лекции Вы можете скачать здесь.

1.1 Введение.

Данный курс познакомит Вас с принципами современных облачных вычислений и наиболее перспективной платформой облачных вычислений Windows Azure и научит ее практически использовать. Будет дан детальный научный анализ концепции облачных вычислений в целом, оценены ее достоинства, недостатки, перспективы и проблемы развития.

1.2. Комментарии к списку литературы.

Список литературы по курсу приведен в конце данной лекции.

Вот некоторые комментарии к этому списку.

В книге [1] рассмотрен широкий круг практических вопросов, связанных с облачными вычислениями в целом: затраты на облачные вычисления, проблемы их безопасности, ограничения, поставщики облачных сервисов (Google, Microsoft, Amazon, Yahoo, IBM, EMC/VMware, Salesforce.com и др.), используемое оборудование и инфраструктура облачных вычислений, клиенты, платформы, приложения, сервисы, память, стандарты (HTTP, HTML, DHTML, XMPP, SSL, OpenIDWeb, REST, SOAP, JSON), концепции Platform as a Service (PaaS), Software as a Service (SaaS), Software plus Services (S+S), среды и инструменты разработки программ для облачных вычиcлений, понятия тонкого клиента и виртуализации.

Книга [2] посвящена в основном платформе Windows Azure. В книге проанализированы отличия локальных (on-premises) приложений от облачных и рассмотрены проблемы, возникающие при разработке облачного ПО, - безопасность, защита конфиденциальных данных, соблюдение общих правил и ограничений, резервное копирование и восстановление, каталогизация элементов облака и другие общие технические вопросы. Описаны принципы и примеры разработки облачных компонент, включая память (Storage), SQL Data Services и .NET Services. Рассмотрены также более специфические вопросы:

  • Сформулированы преимущества использования платформы Azure Services Platform для облачных вычислений
  • Показано на примерах, как использовать компоненты Windows Azure, включая Azure Table and Blob storage, .NET Services и SQL Azure
  • Описаны проблемы разработки гибридных приложений, сочетающих облачные компоненты и обычные Web-сервисы
  • Приведены конкретные работающие примеры облачных приложений, доступные для скачивания с сопроводительного Web-сайта книги.
  • Книга [3] и учебное пособие [4] автора курса предназначены для изучения современных операционных систем. В частности, в курсе и книге кратко рассмотрены основные принципы и возможности Windows Azure и бесплатных облачных сервисов Windows Live.

    Курс автора [5] – обзорно-аналитический курс по архитектурам и моделям программ и знаний. Одна из лекций курса посвящена основам облачных вычислений и Windows Azure.

    1.3. Некоторые виды современного программного обеспечения.

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

    Рассмотрим некоторые наиболее характерные виды современного программного обеспечения:

  • Клиент-серверные системы
  • Web – сервисы и Web-приложения
  • Интегрированные распределенные решения (solutions)
  • Встроенные системы
  • Системы реального времени
  • Программное обеспечение мобильных устройств
  • Программное обеспечение носимых (wearable) компьютеров
  • Программное обеспечение промежуточного уровня (middleware)
  • ПО для облачных вычислений и центров обработки данных
  • ПО для компьютерных кластеров
  • ПО для виртуализации
  • ПО для управления информацией (information management)
  • ПО для управления знаниями (knowledge management)
  • ПО для научных вычислений (scientific computing)
  • В целом для современного ПО характерна тенденция к значительному усложнению архитектуры.

    Клиент-серверные системы получили широкое распространение уже в течение десятков лет. Известны следующие основные разновидности серверов: сервер приложений, Web-сервер, сервер баз данных, сервер электронной почты, файл-сервер и другие [3].

    Интернет (Web) – приложения предназначены для исполнения в Сети. В современных условиях большинство из них разрабатывается на платформе .NET или Java, хотя некоторые программисты и фирмы до сих пор пишут Интернет-приложения на C. В современном Web-программировании также широко используются языки с динамическими типами – JavaScript, Python, Ruby, для которых характерно динамическое изменение и конструирование типов во время выполнения программы, что удобно, так как отражает динамичную природу Web-приложений и Web-сайтов.

    Интернет-приложения подразделяются на клиентские (например, браузеры) и серверные (например, Web-сервисы).

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

    Встроенные системы – это программное обеспечение специализированных микропроцессоров, управляющих работой самых различных устройств – от атомных реакторов до холодильников, кардиостимуляторов, линий электропередач и автомобилей. Характерным требованием к программному обеспечению встроенных систем является фиксированность предельно допустимого времени ответа (response time), от которого зависит работоспособность, надежность и безопасность системы и управляемого ею объекта в целом, а подчас и само существование объекта или живого организма. Типичное требование к основному циклу работы подобной системы – отсутствие прерываний, которые могут вызвать недопустимые временные задержки.

    Программное обеспечение мобильных устройств – одна из наиболее современных и широко распространенных разновидностей ПО. Его особенности: ограничения на ресурсы (прежде всего – на объем памяти), необходимость учитывать различия в архитектуре конкретных моделей мобильных устройств (дисплеев и клавиш управления). ПО мобильных устройств, как правило, разрабатывается на платформе Java, либо с использованием продуктов Microsoft, например, .NET Compact Framework.

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

    ПО промежуточного уровня (middleware) занимает промежуточное положение между клиентом и сервером. К наиболее типичным примерам middleware относится, например, ПО для поддержки протоколов отправки и приема мгновенных сообщений (instant messaging and presence).

    ПО центров обработки данных (ЦОД) - еще один современный вид программного обеспечения. В нем особо важную роль играют СУБД, например, Microsoft SQL Server.

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

    ПО для облачных вычислений (cloud computing) – это сетевые операционные системы (например, Microsoft Windows Azure) и программное обеспечение, функцией которого является обеспечение работы пользователей через "облако", т.е. через сеть, хранения данных и приложений на "облачных" серверах.

    ПО для управления знаниями играет в настоящее время все более важную роль, в связи с интеллектуализацией Web и все большей популярностью разработки интеллектуальных программных решений. Примеры: Protege, система управления знаниями, разработанная в Стэнфордском университете, обеспечивающая работу на языке определения онтологий OWL; система Knowledge.NET разработки Санкт-Петербургского университета, расширение C# средствами представления знаний и интегрированная среда для платформы .NET.

    ПО для управления информацией (information management) – офисные приложения (например, Microsoft Office, OpenOffice) и системы управления базами данных, например, Oracle, MySQL, Microsoft SQL Server.

    ПО для научных вычислений – разнообразные инструменты и пакеты программ для поддержки решения научных задач, Пример: MATHLAB.

    1.4. Характерные черты современных программных систем

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

    Наиболее важная особенность современных программных систем – Web -awareness, т.е. ориентация на использование в Интернете. Наилучшими воплощениями этого принципа являются платформы .NET и Java.

    Для современного ПО характерна универсализация представления моделей программ и данных, которая во многом вытекает из сетевой ориентации ПО. Unified Modeling Language (UML) уже 20 лет используется как де-факто стандарт для моделирования программ и процессов их разработки. Что касается представления данных, то здесь де-факто стандартом является XML, обеспечивающий единое текстовое структурированное представление данных.

    Trustworthy computing (надежные и безопасные вычисления) – подход к разработке ПО, предложенный фирмой Microsoft. Его суть в том, чтобы на всех этапах проектирования и разработки программы учитывать требования к надежности и безопасности, реализовывать их в программном продукте и применять специальные виды тестирования для их верификации.

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

    Повторная используемость (reusability) кода весьма важна для успешной разработки программ, так как позволяет существенно экономить ресурсы при разработке.

    Сервисно-ориентированная архитектура ПО отражает тенденцию к явному выделению понятия программного сервиса (преимущественно, Web-сервиса). О ней подробнее см. п. 1.8.

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

    Облачные вычисления (cloud computing) - в настоящее время один из наиболее популярных подходов к разработке и использованию ПО, реализующий метафору "облака" (cloud) – Интернет- или интранет-сети, через которую пользователям доступны ресурсы – приложения, данные, знания. Данный подход подробно рассмотрен в курсе.

    Управление знаниями (knowledge management) играет важнейшую роль в современном ПО, так как для решения многих реальных задач недостаточно чисто алгоритмических методов; требуется интеграция методов инженерии программ и инженерии знаний. Эта важная идея реализована в нашей системе управления знаниями Knowledge.NET (http://www.knowledge-net.ru).

    1.5. Современные платформы для разработки программ

    Java (Sun Microsystems, 1995; ныне - Oracle) – платформа для разработки программ на объектно-ориентированном языке Java, программы на котором компилируются в Java байт-код. Спецификации Java до сих пор имеют статус ведомственного стандарта Oracle, хотя и обсуждаются до их принятия международным сообществом Java Community Process (JCP): http://www.jcp.org .

    .NET (2000) – многоязыковая объектно-ориентированная платформа для разработки программ с общим промежуточным языком (CIL), общей инфраструктурой языков (CLI) и единым представлением данных на основе XML (стандарты ISO/ ECMA). Язык C# - наиболее удобный язык программирования для .NET, но не единственный и не обязательный для использования. .NET – открытая платформа, стандартизированная совокупностью стандартов ISO. Microsoft.NET – это лишь одна из реализаций стандартов .NET; из других наиболее известны Mono и DotGNU.

    Обе платформы – и Java, и .NET - уделяют особое внимание надежности и безопасности на основе исполнения управляемого кода и динамического контроля типов/

    Обе платформы поддерживают разработку Web-сервисов и содержат базовые средства для реализации cloud computing.

    Другие современные широко используемые платформы и языки: Ruby, Python, Scala.

    1.6. Характеристики, свойства и качества программных продуктов

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

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

    - Работоспособность, полезность: программа должна прежде всего работать и выполнять то, что от нее требуется;

    - Дружественный к пользователю интерфейс (преимущественно – Web-интерфейс): программой должно быть удобно пользоваться, причем, наиболее желательно, - с минимальной нагрузкой на пользовательскую компьютерную систему и минимальными требованиями к пользователю по ресурсам; с данной последней точки зрения как раз и удобны облачные вычисления;

    - Надежность, безопасность, защита конфиденциальных данных (соблюдение принципов Trustworthy Computing - TWC): программа должна надежно и стабильно работать и обеспечивать защиту от возможных внешних угроз и атак, как на саму программу, так и на используемые, создаваемые и обрабатываемые ею данные.

    С точки зрения разработчика наиболее важными признаются следующие качества программы:

  • Повторная используемость модулей (reusability); компонентно-ориентированное программирование (component-oriented programming): не следует программировать однотипный код (например, поиск по списку) повторно, вместо этого следует использовать на каждом этапе разработки уже готовый и проверенный код. в виде программных компонент (модулей), предпочтительнее – из стандартных (встроенных в платформу) библиотек. Кстати, это один из принципов trustworthy computing: используйте проверенный готовый код, так как дублирование похожего кода может ухудшить надежность и безопасность программы;
  • Модульность (modularity) – разработка программы в виде взаимосвязанной совокупности относительно независимых программных компонент – модулей, каждый из которых решает свою четко определенную задачу и которые могут быть представлены в виде классов и их методов, процедур и функций, макросов, аспектов, сопрограмм и др.
  • Эффективность (efficiency) – оптимальность программы, согласно тому или иному критерию (например, минимальность времени выполнения; минимальность объема используемой памяти). При оценке эффективности программы необходимо четко сформулировать критерий; всем критериям одновременно удовлетворить невозможно. Говорить об абстрактно понимаемой "эффективности вообще" не имеет смысла. Природа и поведение программ диалектичны. Например, если программа оптимальна по времени, то для этого оказывается необходимым использование дополнительной памяти (например, индексной таблицы для ускорения поиска) и т.д.
  • Переносимость (portability) – возможность переноса программы без изменения ее кода на другую платформу и ее последующего использования на другой платформе без каких-либо ее изменений. Переносимости программ могут помешать неявно используемых в них предположения о свойствах целевой платформы, например, различная разрядность чисел на различных процессорах. С этой точки зрения, наиболее предпочтительна Java-технология, предоставляющая единый высокоуровневый язык Java и единую виртуальную среду выполнения и реализованная на всех наиболее распространенных платформах (Windows / x86 / x64; Linux; MacOS и др.).
  • Познаваемость (читаемость - readability); легкость сопровождения (maintainability; sustainability) – ясность, понятность, самодокументируемость кода программы, использование единых стандартов его оформления, которые способствуют последующему изучению и изменению кода (как правило, другими программистами), с целью исправления ошибок в программе или расширения ее функциональности. К сожалению, не всегда программисты или даже фирмы-разработчики следуют этому принципу, в результате чего затраты на сопровождение оказываются недопустимо высокими.
  • Применение принципов TWC (trustworthy computing)и SDLC (Security Development Life Cycle) при проектировании и реализации. Об этом уже говорилось. Необходимо учитывать требования безопасности и надежности, начиная с самых ранних этапов цикла разработки программы и на всех этапах ее разработки, иначе серьезные проблемы безопасности возникнут при эксплуатации и сопровождении программы, что в конечном счете может вообще привести к невозможности дальнейшего использования программы.
  • 1.6. Классические элементы технологий программирования

    Любая технология программирования состоит из нескольких необходимых элементов, при отсутствии которых говорить о существовании какой-либо технологии бессмысленно. Как показывает многолетний опыт разработки программ, это следующие основные элементы:

  • Концепции (например, trustworthy computing) – совокупность понятий, поддерживающих данную технологию
  • Инструменты (например, FxCop, Spec#)
  • Схемы организации процесса разработки программ (например, CMM, CMMI, SDLC)
  • 1.7. Некоторые современные основные понятия из области архитектуры ПО

    Начнем знакомство с платформой Azure с определений основных понятий из области архитектуры программ.

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

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

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

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

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

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

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

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

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

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

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

    С точки зрения рассмотренных концепций, облачные вычисления соответствуют принципам multi-tiered и multi-tenant architecture.

    Что касается abstraction layers, для современной сложной архитектуры ПО данный термин несколько устарел, так как все модули ПО повторно используемы, и в различных системах различные ярусы (слои) могут иметь разные условные номера. Двумерная модель не в состоянии адекватно описать современное ПО

    Пример многоярусной архитектуры ПО представлен на рис. 1.1.

    (рис 1.1) Пример многоярусной архитектуры ПО

    1.8. Понятие о Service-Oriented Architecture (SOA)

    Сервисно-ориентированная архитектура (SOA) – один из наиболее современных подходов к программированию.

    Сервис – это компонента программы, непосредственно доступная пользователю.

    Пример сервиса: Получение прогноза погоды через Интернет.

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

    Сервисно-ориентированная модель должна быть расширяемой: пользователь должен иметь возможность добавить новые сервисы или изменить набор доступных сервисов.

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

    Метод реализации Web-сервисов (.NET, Java и др.) для пользователя несущественен.

    Разработчик должен иметь возможность публикации своих Web-сервисов.

    Поддержка SOA осуществляется во многих современных программных инструментах, в том числе:

  • Microsoft SharePoint - простой инструмент для создания расширяемых Web-страниц и Web-сервисов);
  • UDDI (Universal Discovery, Description and Integration) – технология для публикации и поиска Web-сервисов (Microsoft).
  • С данной точки зрения, облачные вычисления соответствуют принципам SOA.

    1.9. Понятие о Software-as-a-Service (SaaS)

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

    Термин SaaS возник в 1999 г.

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

    Характеристики SaaS:

  • Доступ к коммерческому ПО через сеть;
  • Удаленное управление ПО пользователями через центральный Web-сайт;
  • Использование модели "one-to-many" (multi-tenant application), т.е. использование одного приложения многими клиентами;
  • Централизация управления версиями и патчами (пользователи могут загружать новые версии через сеть);
  • Постоянная интеграция программных сервисов в общий гибридный набор ПО, потребляемый пользователем, как mash-ups – гибридных Web-приложений.
  • С данной точки зрения, облачные вычисления соответствуют принципам SaaS.

    1.10. Понятие об облачных вычислениях (cloud computing)

    Англоязычному термину cloud computing соответствует русский термин "облачные" вычисления.

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

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

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

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

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

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

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

    1.11. Резюме

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

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

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

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

    Microsoft – одна из ведущих компаний, поддерживающих и развивающих этот новый подход в своей облачной платформе Windows Azure, реализованной на базе платформы .NET – платформе надежного и безопасного многоязыкового программирования.

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

    Вертикальный слой, срез (в некоторых технологиях - аспект) –совокупность рассредоточенных фрагментов кода, реализующих (сквозную) функциональность, например, проверку безопасности. Авторы концепции: проф. А.Л. Фуксман (Ростовский университет, 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 может находиться и использоваться в любой компоненте архитектуры ПО.

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

    Вопросы

  • Перечислите виды современного программного обеспечения (ПО).
  • Перечислите требования к современному ПО
  • Перечислите характерные черты современного ПО
  • Какие Вы знаете современные платформы для разработки ПО?
  • Назовите наиболее важные качества программных продуктов.
  • Каковы три классических элемента любой технологии программирования.
  • Что такое клиент-серверная архитектура и ее компоненты - клиент и сервер?
  • Что такое тонкий клиент?
  • Что такое полнофункциональный клиент?
  • Что такое слой ПО?
  • Что такое уровень абстракции ПО?
  • Что такое вертикальный срез (слой) ПО?
  • Что такое ПО промежуточного уровня (middleware)?
  • Что такое ярус ПО (tier)?
  • В чем основная идея многоярусной архитектуры ПО?
  • Что такое многоклиентская (multi-tenant) архитектура ПО?
  • Что такое сервисно-ориентированная архитектура?
  • В чем суть концепции Software as a Service (SaaS)?
  • Что такое облачные вычисления?
  • Упражнения

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

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

  • Краткий обзор видов современного ПО (реферат)
  • Обзор требований к современному ПО (реферат)
  • Обзор современных платформ для разработки ПО (реферат)
  • Многоярусные архитектуры ПО (реферат)
  • Многоклиентские архитектуры ПО (реферат)
  • Обзор сервисно-ориентированных архитектур ПО (реферат)
  • Обзор концепции Software as a Service (реферат)
  • Облачные вычисления как пример многоярусной, многоклиентской и сервисно-ориентированной архитектуры (эссе).
  • Вернуться к учебному плану