
- •Архитектуры и модели программ и знаний
- •Некоторые виды современного программного обеспечения
- •Характерные черты
- •Современные платформы для разработки программ
- •Характеристики, свойства и
- •Основные элементы технологий программирования
- •Понятие о Service-Oriented Architecture (SOA)
- •Понятие о Software-as-a- Service (SaaS)
- •Понятие о cloud computing
- •Резюме
- •Вопросы и домашнее задание к лекции 2

Архитектуры и модели программ и знаний
Лекция 2
Современные виды программ и платформы разработки ПО
Сафонов Владимир Олегович
Профессор кафедры информатики Заведующий лабораторией Java-технологии
(http://polyhimnie.math.spbu.ru/jtl)
Санкт-Петербургский государственный университет
Email: vosafonov@gmail.com
WWW: http://www.vladimirsafonov.org

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

Характерные черты
современных программных систем
Ориентация на использование в Internet и WWWУниверсальное представление программных моделей (UML) и данных (XML)
Повышенные требования к безопасности и надежности (TWC – Trustworthy Computing)
Интеграция различных языков программирования, инструментальных средств, баз данных и знаний, в единую инфраструктуру
Проектирование и разработка программных компонент многократного использования (reusable)
Тенденция к выделению понятия сервиса (Web-сервиса, Интранет-сервиса) и к поддержки сервис-ориентированной архитектурыТенденция к виртуализации ресурсов и сред
Тенденция к предоставлению пользователям Интернет- услуг в виде “облачных вычислений”
Все более широкое использование знаний (knowledge) для представления семантики информации в Web и для разработки программных решений (intelligent solutions); необходима интеграция методов инженерии программ и знаний
(C) Сафонов В.О. 2012

Современные платформы для разработки программ
Java (Sun Microsystems, 1995) – платформа для
разработки программ на объектно-ориентированном языке Java, программы на котором компилируются в
Java байт-код (до сих пор имеет статус
ведомственного стандарта Sun)
.NET (Microsoft, 2000) – многоязыковая объектно-
ориентированная платформа для разработки
программ с общим промежуточным языком (CIL),
общей инфтаструктурой языков (CLI) и единым
представлением данных на основе XML (стандарты ISO/ ECMA). Язык C# - наиболее удобный язык программирования для .NET, но не единственный и
не обязательный для использования
Обе платформы уделяют особое внимание
надежности и безопасности, на основе исполнения
управляемого кода и динамического контроля типов
Обе платформы поддерживают разработку Web-
сервисов, содержат базовые средства для реализации cloud computing
(C) Сафонов В.О. 2012

Характеристики, свойства и
качества программных продуктов
С точки зрения пользователя:
Работоспособность, полезностьДружественный к пользователю интерфейс (преимущественно –
Web-интерфейс)
Надежность, безопасность, защита
конфиденциальных данных (Trustworthy Computing - TWC)
С точки зрения разработчика:
Повторная используемость модулей; компонентно-
ориентированное программированиеМодульность
Эффективность (необходимо сформулировать ее критерии; всем
критериям одновременно удовлетворить невозможно)
ПереносимостьПознаваемость и легкость сопровождения
Применение принципов TWC и SDLC при проектировании и
реализации
(C) Сафонов В.О. 2012

Основные элементы технологий программирования
Концепции (например, trustworthy
computing)
Инструменты (например, FxCop,
Spec#)
Схемы организации процесса
разработки программ (например,
CMM, CMMI, SDLC)
(C) Сафонов В.О. 2012

Понятие о Service-Oriented Architecture (SOA)
Сервис – компонента программы, непосредственно доступная пользователюПример сервиса: Получение прогноза погоды через ИнтернетОсновной принцип: С точки зрения пользователя, программный продукт
представляет собой набор простых в использовании Web-сервисов с удобным графическим Web-интерфейсом
Сервис-ориентированная модель должна быть расширяемой (пользователь должен иметь возможность добавить новые сервисы или изменить набор доступных сервисов)
Пользователи должны иметь возможность обращаться к сервисам через сеть с самых различных по своим возможностям устройств – desktop-машин, мобильных устройств и т.д.
Метод реализации Web-сервисов (.NET, Java и др.) для пользователя не важенРазработчик должен иметь возможность публикации своих Web-сервисовПоддержка SOA:
Microsoft SharePoint (простой инструмент для создания расширяемых Web- страниц и Web-сервисов);
UDDI (Universal Discovery, Description and Integration) – технология для публикации и поиска Web-сервисов (Microsoft)
(C) Сафонов В.О. 2012

Понятие о Software-as-a- Service (SaaS)
SaaS – модель разработки программ, основанная на использовании
лицензируемых программных сервисов “по требованию” клиентами, получающими (покупающими) лицензии у сервис-провайдеровТермин SaaS возник в 1999 г.
Основная идея: использование ПО по требованию (on demand) по невысокой стоимости (вместо покупки полной лицензии на ПО для всех платформ)
Характеристики SaaS:
- Доступ к коммерческому ПО через сеть
- Удаленное управление ПО пользователями через центральный Web- сайт
- Использование модели “one-to-many” (multi-tenant application), т.е. использование одного приложения многими клиентами- Централизация управления версиями и патчами (пользователи могут загружать новые версии через сеть)
- Постоянная интеграция программных сервисов в общий гибридный набор ПО, потребляемый пользователем, как mash-ups – гибридных Web- приложений
(C) Сафонов В.О. 2012

Понятие о cloud computing
Cloud computing - ”облачные” вычисления
“Облако” (cloud) –давно используемая метафора для изображения сервисов, предоставляемых через Интернет или другую коммуникационную сеть (например, через ATM-сеть)
Облачные вычисления – модель вычислений, основанная на динамически
масштабируемых(scalable) и виртуализованных ресурсах (данных, приложениях, ОС и др.), которые доступны и используются как сервисы через Интернет и реализуются с помощью мощных центров обработки данных (data centers)
С точки зрения пользователей, существуют “облака” (общедоступные, частные и т.д.) , предоставляемые различными компаниями, для использования мощных вычислительных ресурсов, которых нет у индивидуального пользователяНедостаток: пользователь полностью зависит от “облака” и не может управлять даже резервным копированием своих данных и программ
Наиболее популярная “облачная” платформа – Microsoft Windows Azure (облачная ОС) и Microsoft Azure Services Platform (реализованная на основе Microsoft.NET)
В настоящее время все крупные компании (Microsoft, IBM, HP, Dell, Sun и др.) разрабатывают свои системы облачных вычислений; имеется тенденция к интеграции этих корпоративных систем в единое доступное пользователю “облако”
(C) Сафонов В.О. 2012

Резюме
Подход к разработке программ принципиально изменилсяВместо индивидуальных изолированных
разработок на собственном компьютере – разработка сетевых приложений и использование готовых сервисов через ИнтернетБудущее – за сетевым программным обеспечением
Microsoft – одна из ведущих компаний, поддерживающих и развивающих этот новый подход (.NET, Windows Azure)
(C) Сафонов В.О. 2012