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

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

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

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

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

Введение

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

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

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

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

В книге автора [1], опубликованной в 2011 г., рассмотрены основы архитектуры программного обеспечения, основы облачных вычислений, основы платформы облачных вычислений Microsoft Windows Azure и описана ее версия 2011 г. Книга рекомендуется для изучения перед изучением данного курса.

Курс автора [2], как и книга [1], посвящен предыдущей версии Windows Azure и отражает ее состояние на 2011 год.

Книга [3] и учебное пособие [4] автора курса предназначены для изучения современных операционных систем. В частности, в курсе и книге кратко рассмотрены основные принципы и возможности Windows Azure и бесплатных облачных сервисов Windows Live.

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

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

Основные концепции архитектуры ПО и анализ места облачных вычислений в их общей схеме даны в лекции 1 курса автора [2].

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

Развитие ПО для облачных вычислений и центров обработки данных. Облака продолжают активно развиваться. За несколько лет развития облачных вычислений разработчиками были хорошо осознаны отличия в методах разработки облачных приложений от методов разработки более традиционных программ. Исследователями всего мира ведется научный анализ проблем безопасности облака, его эластичности и масштабируемости, методов эффективной реализации облака и облачных приложений. Это – основная движущая сила развития программного обеспечения в настоящий момент. Еще 5-7 лет назад можно было говорить о том, что программное обеспечение должно быть "осведомлено о Web" (Web-aware), т.е. программы должны в необходимых случаях взаимодействовать друг с другом через Web и обеспечивать удобный Web-интерфейс для пользователей. Ныне же можно говорить, что наиболее современный подход – это "осведомленность" программного обеспечения об облаке (cloud awareness), т.е. особая организация программ, обеспечивающая интеграцию нового приложения в существующее облако и его последующее использование в нем. Какая именно, будет объяснено в данном курсе.

Магазины приложений для новых ОС на основе Web-сайтов. Другой важной современной тенденцией является организация и использование магазинов приложений (application stores, или appstores) для новых операционных систем, прежде всего, для новых версий Windows (Windows Store), например, для Windows 8. Магазин приложений – это Web-сайт (портал), обеспечивающий возможность поиска, использования, публикации, распространения и продажи готовых приложений для данной платформы. Например, с помощью магазина приложений для Windows 8 разработчик (индивидуал или небольшая фирма) может получить серьезную поддержку на начальном этапе разработки приложения в виде бесплатного доступа к облаку Windows Azure и бесплатного предоставления всех необходимых программных инструментов разработки приложений для данной платформы. Далее разработчик получает в виде магазина приложений возможность рекламы и распространения своих разработок, возможность общения с коллегами и отслеживания информации обо всех новейших разработках.

Инструменты надежных и безопасных вычислений (trustworthy computing). О важности надежных и безопасных вычислений (trustworthy computing), начало которым было положено корпорацией Microsoft, автор уже неоднократно писал в предыдущем курсе [2] и многих других своих публикациях. Отметим, что, в связи с развитием облачных вычислений, вопросы надежности и безопасности ПО становятся все более и более актуальными, так как архитектура программ и способы доступа к данным все более усложняются. Многие виды защиты от атак обеспечивают сами современные платформы разработки программ, прежде всего – платформа .NET [2], методами, основанными на управляемом выполнении кода (managed execution), с полным контролем типов и полномочий безопасности при выполнении программ.

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

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

Инструменты верификации программ. Как мы уже отмечали, например, в курсе [5], для разработки современного ПО характерно усиление интереса к верификации программ, т.е. разработке их формализованных спецификаций для каждого модуля (например, пред- и постусловий для каждого метода и инвариантов для каждого класса), с последующей автоматической проверкой (либо до выполнения программы, в случаях, когда это возможно, либо при ее выполнении, в виде assertions) соответствия реализации кода его спецификации. Самый простой способ – проверка пред- и постусловий и инвариантов во время выполнения, с выдачей сообщений и генерацией исключений при нарушении их истинности. Постепенно получают распространение новые языки, сочетающие средства традиционного программирования и средства формальной спецификации, например, система Spec# [5] – реализация расширения языка C# средства формальных спецификаций в стиле контрактного проектирования (design by contract) по Б. Мейеру. Иными словами, программистов постепенно приучают к доказательному программированию, основы которого были заложены еще в 1960-х – 1970-х гг. классиками в области ИТ, прежде всего, Ч. Хоаром, который ныне является ведущим научным сотрудником фирмы Microsoft Research (Кэмбридж). Наряду с системой Spec#, можно также назвать другую разработку Microsoft Research – верификатор программ Z3. Из разработок других фирм в этой области следует упомянуть верификатор программ Coq, разработанный в INRIA,Франция.

Новые черты программных систем

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

Интеграция, использование и распространение ПО через Web. Этот современный принцип получает все большее распространение. Создаются порталы, магазины приложений, Web-сервисы, т.е. Web все больше применяется для использования и распространения ПО.

Развитие надежных и безопасных вычислений (trustworthy computing). Инициатива надежных и безопасных вычислений (TWC) была начата корпорацией более 10 лет назад, в 2002 г. За эти годы было создано много инструментов TWC, и применение принципов TWC вошло в практику разработки программ многих компьютерных фирм. Если вначале отношение к TWC было в основном скептическим, то ныне корпорация Microsoft практически доказала применимость и полезность TWC на примере разработки и архитектуры своих новых программных продуктов.

Развитие многоязыковых платформ с единым промежуточным кодом. Начало этой тенденции было положено с появлением платформы .NET. В настоящее время и другая популярная платформа – Java – развивается подобным же образом.

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

Развитие облачных вычислений. Все ведущие ИТ-компании, прежде всего – Microsoft, активно развивают свои облачные платформы. Новая версия Windows Azure, разработанная в 2012-2013 гг., описана в данном курсе. Получила развитие и облачная платформа Oracle (Oracle Java Cloud), облачные платформы компаний IBM, HP и др. Все фирмы-поставщики облаков предоставляют бесплатный пробный доступ к ним на период от месяца до года для популяризации и распространения облачных вычислений. Это значительно увеличило число пользователей облаков, разработчиков облачных приложений и число специалистов в различных областях (как в России, так и во всем мире), интересующихся облачными вычислениями и желающими применить их в своей области.

Перенос популярных видов приложений и инструментов в облака. Эта тенденция, связанная с развитием облачных вычислений, также прогрессирует. Имеются облачные аналоги многих популярных офисных приложений и инструментов, например, Microsoft Office, электронная почта и др. Разработчики осознали, что разработка и публикация облачных аналогов их программных продуктов весьма перспективны, так как могут значительно увеличить число их пользователей.

Унификация пользовательских интерфейсов для всех видов компьютеров (настольных, ноутбуков, планшетов, мобильных устройств), развитие интерфейсов типа multi-touch. В настоящий момент наблюдается буквально бум пользовательских интерфейсов типа multi-touch. Они используются для всех видов компьютерных устройств и всех видов программного обеспечения. Хотя сама эта идея далеко не новая, популярность и удобство подобных интерфейсов нельзя не признать. Например, на них основано использование новейших операционных систем Windows 8 (для настольных и портативных компьютеров) и Windows Phone 8 (для мобильных устройств).

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

Платформа Java (Oracle) существует уже почти 18 лет. За это время она превратилась из "моноязыковой" платформы, поддерживающей только программирование на языке Java, в многоязыковую платформу для разработки программ с единым бинарным промежуточным кодом (байт-кодом) в постфиксном формате и единой виртуальной машиной (JVM), поддерживающая программирование на языках Java, Ruby, Python и др. (всего таким методом реализовано более 30 "единобайткодных" языков). Для платформы Java все большее развитие получают методы JIT-компиляции, профилирования программ. В новой версии Java получили поддержку современные динамические языки с расширяемыми типами (введена виртуальная команда invokedynamic).

Платформа .NET (Microsoft), существующая с 2000 г., также активно развивается как многоязыковая платформа с единым бинарным промежуточным кодом (CIL) и единой виртуальной машиной (CLR). В ней разрабатываются новые методы JIT-компиляции, профилирования программ; в новой версии .NET, как и в Java, получили поддержку современные динамические языки и расширяемыми типами.

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

Обе платформы поддерживают разработку Web-сервисов и содержат базовые средства для реализации облачных вычислений. На основе Java-технологии реализована облачная платформа Oracle Java Cloud, на основе .NET – облачная платформа Microsoft Windows Azure.

Важнейшие современные характеристики программных продуктов

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

Следование стандартам коммуникации, представления и передачи данных. Современные сложные виды ПО, такие, как Web-сервисы, могут взаимодействовать успешно между собой только при условии строгого соблюдения стандартов. Для Web-сервисов это стандарт WSDL (Web Service Description Language), обеспечивающий возможность получения информации об интерфейсе Web-сервиса в специальной форме, в WML-формате. Используется также стандарт SOAP для пересылки в XML-формате входных параметров от клиента к Web-сервису и результатов – от Web-сервиса клиенту. При условии соблюдения этих стандартов, метод и платформа реализации каждого Web-сервиса (.NET, Java и др.) несущественны.

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

Сервисная ориентированность (SOA) – организация ПО в виде расширяемого набора Web-сервисов. Об этом подробнее ниже.

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

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

Развитие современных основных понятий архитектуры ПО

Для лучшего понимания архитектуры облачной платформы рассмотрим сначала основные концепции архитектуры современного ПО.

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

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

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

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

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

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

Аспект – совокупность рассредоточенных фрагментов кода, реализующих некоторую (сквозную) функциональность, например, проверки безопасности. Это основное понятие аспектно-ориентированного программирования [5].

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

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

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

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

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

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

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

Развитие Service-Oriented Architecture (SOA)

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

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

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

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

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

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

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

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

    Развитие Software-as-a-Service (SaaS)

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

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

    Основные характеристики SaaS:

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

    Развитие облачных вычислений (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).

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

    Вопросы

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

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

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

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

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