Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Safonov / AMPN_course_9.pptx
Скачиваний:
99
Добавлен:
16.04.2015
Размер:
164.43 Кб
Скачать

Архитектуры и модели программ и знаний

Лекция 9

Проектирование и реализация программ

Сафонов Владимир Олегович

Профессор кафедры информатики Заведующий лабораторией Java-технологии

(http://polyhimnie.math.spbu.ru/jtl)

Санкт-Петербургский государственный университет

Email: vosafonov@gmail.com

WWW: http://www.vladimirsafonov.org

Проектирование программ

Проектирование – этап жизненного цикла, следующий

за спецификацией

Части проекта программной системы:

Модули

Структуры и базы данныхПотоки данных, протоколыПотоки управления

Пользовательский интерфейс: GUI, базовый язык и др.

Безопасность: модули, алгоритмы и политики для

обеспечения TWC

Типичные примеры понятий уровня проектирования:

представление данных, алгоритмы, иерархия классовПроектирование + реализация: итеративный цикл

(C) Сафонов В.О. 2012

Архитектурное проектирование (начальное проектирование, структурная декомпозиция)

Основная идея: Разбиение задачи T на подзадачи T1, …, TnСтруктурирование системы как множества взаимосвязанных

подсистем

Моделирование потока управления в системе (связи между подсистемами)

Модульная декомпозиция каждой подсистемы в виде модулей

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

интерфейсы для взаимодействия с другими подсистемамиМодуль – компонента системы, предоставляющая некоторые сервисы другим модулямМодуль может использовать сервисы, предоставляемые другими

модулями, и не рассматривается как независимая компонента

Пример: компилятор состоит из лексического анализатора, синтаксичечкого анализатора, семантического анализатора, оптимизатора, генератора кода (подсистемы). Пример модуля: поддержка таблицы идентификаторовАрхитектурное проектирование должно выполняться

высококвалифицированными системными аналитиками, имеющими большой опыт в данной области

TWC: архитектурное проектирование должно обеспечивать проектирование подсистемы безопасности

(C) Сафонов В.О. 2012

Системное моделирование

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

- статическая структурированная модель – представляет подсистемы (компоненты), которые должны разрабатываться независимо

- динамическая модель процесса – представляет организацию процессов в системе

- модель интерфейсов – представляет сервисы, реализуемые каждой подсистемой, и их интерфейсы

- реляционная модель – представляет взаимосвязи между частями системы, например, поток данных между подсистемамиНаиболее известный инструмент системного моделирования

UML (Unified Modeling Language), представляющий модель системы и процесса ее разработки в виде диаграммНедостатки UML : не поддерживает TWC и безопасность;

Secure UML – расширение UML для описания безопасности (Jan Jürjens, Technical University, Munich):

http://www4.in.tum.de/~secse

(C) Сафонов В.О. 2012

Структурирование системы

Модель хранилища – центральная база данных (хранилище) + набор инструментов для ее обработки (редактор, анализатор, генератор отчетов и др.)

Клиент-серверная модель – набор клиентов и серверов в

сети. Серверы предоставляют наборы сервисов, клиенты их используют. Коммуникация выполняется по определенным протоколам (более современный вариант –

Service-Oriented Architecture, SOA)

Модель абстрактной машины – система рассматривается как набор уровней абстракции. Каждый из них

поддерживает определенные сервисы и используется как основа для реализации следующего уровняю Примеры: сетевая модель OSI имеет 8 уровней; ТИП-технология (В.О. Сафонов) – 3 уровня абстракции

(C) Сафонов В.О. 2012

Модели управления в системе

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

Модель передачи сообщений: Набор подсистем, взаимодействующих с помощью сообщений

через общий обработчик событий и сообщений.

Пример: Система поддержки мгновенных сообщений (instance messaging and presence)

Модель, управляемая прерываниями. Пример:

любая ОС

(C) Сафонов В.О. 2012

Стратегии проектирования

Проектирование сверху вниз

структурное программирование; пошаговая детализация; метод М. Джексона проектирования структуры программы по структуре обрабатываемых данных; шаблоны проектирования (VS.NET, Java Beanbox/BDK и т.д.). Цель – быстрое прототипированиеПроектирование снизу вверх – уровни

абстракции (Э. Дейкстра, 1968); CDL/2 – язык для разработки компиляторов (K.A. Koster); Цель – разработка открытой модульной среды для некоторой проблемной области, библиотек, многократно используемых компонент и т.д.

Расширение ядра: программа = ядро +

набор расширяющих функций; А.Л.

Фуксман. вертикального

Технология(C) Саф нов В.О. 2012

Проектирование снизу вверх: уровни абстракции

Уровень абстракции (N) – набор

определений модулей, реализация которых зависит только от модулей уровня (N-1)“Перескакивание” через один или более

уровней не допускается. В частности, не допускается явное обращение к элементам конкретного представления данныхАвтор концепции – Э. Дейкстра (1968)Весь процесс разработки и развития ПО

следует этой схемеПроблема: “геометрические” аналоги не

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

(C) Сафонов В.О. 2012

Проектирование интерфейсов: ТИП-технология (В.О. Сафонов; патенты России и США)

Может рассматриваться как дополнение концепции уровней абстракции

Дейкстры наборами (шаблонами) рекомендуемых уровней абстракции с определенной семантикой

Уровни абстракции:

- конкретное представление данных - уровень представления – набор операций в терминах конкретного

представления (например: выделить память для элемента списка) - уровень определения – набор операций, определяющий

промежуточные понятия (например: следующий элемент списка; информационная часть элемента списка)

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

итератор элементов списка)Вертикальные слои:

- интерфейс генерации / удаления -интерфейс доступа - интерфейс модификации - интерфейс вывода

Успешно использовалась для реализации компиляторов, экспертных

систем и СУБДРаботающий прототип ТИП-комплекса (инструмента поддержки ТИП-

технологии) был разработан для МВК “Эльбрус”ТИП-технология использована для модернизации промышленного

компилятора SPARCompiler Pascal фирмы Sun Microsystems (1995)Литература: Сафонов В.О. Языки и методы программирования в системе

Эльбрус. – М.: Наука, 1989

(C) Сафонов В.О. 2012

Проектирование интерфейсов: Парадигма MVC (Model-View-Controller)

Используется для проектирования и реализации GUI

Поддержана многими API для разработки GUI, например, Swing (часть Java-технологии и JDK)Модель – абстрактное представление данных (например, в виде совокупности таблицц)

Вид – визуализация данных способом, наиболее удобным для пользователя

Контроллер – GUI для управления данными (ввода и модификации)

Простой пример: кнопка (Swing: JButton)

(C) Сафонов В.О. 2012

Соседние файлы в папке Safonov