Опубликован: 20.12.2011 | Уровень: специалист | Доступ: платный | ВУЗ: Санкт-Петербургский государственный университет
Лекция 2:

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

< Лекция 1 || Лекция 2: 123 || Лекция 3 >
Аннотация: В данной вводной лекции рассмотрены классы задач, решаемых современным программным обеспечением; характеристики и свойства современного ПО и требования к нему; некоторые основные концепции из области архитектуры программных систем.. Акцентируется внимание на разнообразии и значительном усложнении ПО. Даются определения основных терминов, связанных с видами архитектур программного обеспечения. Формулируются требования к современному программному обеспечению: масштабируемость, стандартизация технологий, безопасность, ориентация на использование Web и др. Делается вывод о необходимости принципиально новых технологий разработки и использования программного обеспечения, к которым и относятся облачные вычисления.
Ключевые слова: ПО, Windows, анализ, список, затраты, IBM, EMC, COM, инфраструктура, память, HTTP, HTML, DHTML, XMPP, SSL, SOAP, JSON, platform, AS, service, paas, software, premise, безопасность, резервное копирование, компонент, storage, SQL, Data, net, live, место, knowledge management, scientific computing, сервер, Web, Java, Интернет, динамический тип, python, ruby, конструирование, время выполнения, программное обеспечение, response time, надежность, compact, мониторинг, класс, middleware, instant messaging, AND, СУБД, server, virtual, PC, cloud computing, сетевые операционные системы, сеть, интеллектуализация, OWL, knowledge, офисные приложения, Oracle, предметной области, aware, модель программы, unified modeling language, UML, XML, представление данных, trustworthy, Computing, cloud, инженерия знаний, Java байт-код, JCP, CLI, язык программирования, ISO, программа, интерфейс, целевая платформа, опыт, SDLC, пользователь, компьютер, Состояние сеанса, GUI, браузер, Microsoft Silverlight, JavaFX, уровень абстракции, API, xerox parc, аспектно-ориентированное программирование, tier, архитектура, управление данными, SOA, программный продукт, поддержка, UDDI, метафора, модель вычислений, architecture, качество программного продукта

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

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

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 || Лекция 2: 123 || Лекция 3 >
Andreas Kistner
Andreas Kistner
Германия, Limburgerhof
Alexander Vizelka
Alexander Vizelka
Россия