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

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

Лекция 1: 123 || Лекция 2 >
Аннотация: Рассмотрены новейшие классы задач, решаемые современным ПО. В этом отношении лекция является продолжением, дополнением и развитием лекции 1 предыдущего курса [14]. Рассмотрены новые концепции архитектуры программного обеспечения, вопросы развития популярных платформ разработки программ, сформулированы новые требования к ПО, вытекающие из потребностей облачных вычислений и их реализации.

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

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

Введение

Данный курс познакомит Вас с развитием принципов современных облачных вычислений и развитием наиболее перспективной платформы облачных вычислений 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: 123 || Лекция 2 >
Максим Косяков
Максим Косяков
Россия, г. Москва
Алексей Просянкин
Алексей Просянкин
Украина, Киев, КПИ, 2000