
- •Список рисунков
- •Список таблиц
- •Предисловие
- •Лекция 1. Проблемы разработки сложных программных систем
- •Программы «большие» и «маленькие»
- •Принципы работы со сложными системами
- •Литература к Лекции 1
- •Лекция 2. Жизненный цикл и процессы разработки ПО
- •Понятие жизненного цикла ПО
- •Стандарты жизненного цикла
- •Группа стандартов ISO
- •Группа стандартов IEEE
- •Группа стандартов CMM, разработанных SEI
- •Модели жизненного цикла
- •Литература к Лекции 2
- •«Тяжелые» и «легкие» процессы разработки
- •Унифицированный процесс Rational
- •Экстремальное программирование
- •Литература к Лекции 3
- •Лекция 4. Анализ предметной области и требования к ПО
- •Анализ предметной области
- •Выделение и анализ требований
- •Варианты использования
- •Литература к Лекции 4
- •Лекция 5. Качество ПО и методы его контроля
- •Качество программного обеспечения
- •Методы контроля качества
- •Тестирование
- •Проверка на моделях
- •Ошибки в программах
- •Литература к Лекции 5
- •Лекция 6. Архитектура программного обеспечения
- •Анализ области решений
- •Архитектура программного обеспечения
- •Разработка и оценка архитектуры на основе сценариев
- •UML. Виды диаграмм UML
- •Статические диаграммы
- •Динамические диаграммы
- •Литература к Лекции 6
- •Лекция 7. Образцы проектирования
- •Образцы человеческой деятельности
- •Образцы анализа
- •Архитектурные стили
- •Каналы и фильтры
- •Многоуровневая система
- •Литература к Лекции 7
- •Лекция 8. Образцы проектирования (продолжение)
- •Данные–представление–обработка
- •Образцы проектирования
- •Подписчик
- •Идиомы
- •Шаблонный метод
- •Образцы организации и образцы процессов
- •Инспекция программ по Фагану
- •Литература к Лекции 8
- •Удобство использования программного обеспечения
- •Психологические и физиологические факторы
- •Человеку свойственно ошибаться
- •Скоростные показатели деятельности человека
- •Внимание человека
- •Понятность
- •Память человека
- •Разные категории пользователей
- •Методы разработки удобного программного обеспечения
- •Контроль удобства программного обеспечения
- •Литература к Лекции 9
- •Лекция 10. Основные конструкции языков Java и C#
- •Платформы Java и .NET
- •Лексика
- •Целочисленные типы
- •Типы чисел с плавающей точкой
- •Инструкции и выражения
- •Выражения
- •Наследование
- •Шаблонные типы и операции
- •Дополнительные элементы описания операций
- •Описание метаданных
- •Средства создания многопоточных программ
- •Библиотеки
- •Основные понятия компонентных технологий
- •Общие принципы построения распределенных систем
- •Синхронное и асинхронное взаимодействие
- •Транзакции
- •Литература к Лекции 12
- •Лекция 13. Компонентные технологии разработки Web-приложений
- •Web-приложения
- •Расширяемый язык разметки XML
- •Платформа Java 2 Enterprise Edition
- •Связь
- •Именование
- •Процессы и синхронизация
- •Целостность
- •Отказоустойчивость
- •Защита
- •Работа с XML
- •Платформа .NET
- •Связь
- •Именование
- •Процессы и синхронизация
- •Целостность
- •Отказоустойчивость
- •Защита
- •Работа с XML
- •Литература к Лекции 13
- •Общая архитектура Web-приложений
- •Уровень бизнес-логики и модели данных в J2EE
- •Компоненты данных и сеансовые компоненты
- •Компоненты, управляемые сообщениями
- •Дескрипторы развертывания компонентов EJB
- •Уровень модели данных в .NET
- •Протокол HTTP
- •Уровень пользовательского интерфейса в J2EE
- •Сервлеты
- •Серверные страницы Java
- •Уровень пользовательского интерфейса в .NET
- •Литература к Лекции 14
- •Лекция 15. Развитие компонентных технологий
- •Развитие технологий J2EE
- •Jakarta Struts
- •Java Server Faces
- •Управление данными приложения. Hibernate
- •Java Data Objects
- •Enterprise Java Beans 3.0
- •Среда Spring
- •Ajax
- •Web-службы
- •Описание интерфейса Web-служб
- •Связь
- •Именование
- •Процессы
- •Синхронизация и целостность
- •Отказоустойчивость
- •Защита
- •Литература к Лекции 15
- •Лекция 16. Управление разработкой ПО
- •Задачи управления проектами
- •Окружение проекта
- •Структура организации-исполнителя проекта
- •Организационная культура
- •Заинтересованные в проекте лица
- •Виды деятельности, входящие в управление проектом
- •Управление содержанием проекта и качеством
- •Метрики ПО
- •Управление ресурсами
- •Специфика управления персоналом
- •Управление рисками
- •Управление коммуникациями и информационным обеспечением
- •Литература к Лекции 16
состоянии, система должна находиться одновременно в каждом из его параллельных подсостояний.
Помимо показанных на диаграмме состояний изображаемая подсистема может иметь глобальные (в ее рамках) переменные, хранящие какие-то данные. Значения этих переменных являются общими частями всех изображаемых состояний.
На Рис. 38 примерами переменных являются список видимых пользователем товаров, items, и набор уже отобранных товаров с количеством для каждого, корзина, basket.
Переходы могут происходить между состояниями одного уровня, но могут также вести из некоторого состояния в подсостояние соседнего или, наоборот, из подсостояния в некоторое состояние, находящее на том же уровне, что и объемлющее состояние.
На переходе между состояниями указываются следующие данные:
oСобытие, приводящее к выполнению этого перехода. Обычно событие — это вызов некоторой операции в одном из объектов или приход некоторого сообщения, хотя могут указываться и абстрактные события.
Например, из состояния Categories на Рис. 38 можно выйти, выполнив команду браузера «Назад». Она соответствует событию back, инициирующему переход в состояние Start page. Другой переход из состояния Categories происходит при выборе категории товаров пользователем. Соответствующее событие имеет параметр — выбранную категорию. Оно изображено как choose(category).
oУсловие выполнения (охранное условие, guardian). Это условие, зависящее от параметров события и текущих значений глобальных переменных, выполнение которого необходимо для выполнения перехода. При наступлении нужного события переход выполняется, только если его условие тоже выполнено.
Условие перехода показывается в его метке в квадратных скобках.
На Рис. 38 примером условного перехода является переход из состояния Basket в состояние Payment Method. Он выполняется, только если пользователь выполняет команду «Оплатить» (событие buy) и при этом в его корзине есть хотя бы один товар.
oДействие, выполняемое в дополнение к переходу между состояниями. Обычно это вызовы каких-то операций и изменения значения глобальных переменных. Действие показывается в метке перехода после слеша (символа ‘/’). При этом изменения значений переменных перечисляются в начале, затем, после знака ‘^’, указывается вызов операции.
Например, на Рис. 38 при выборе пользователем категории товаров происходит переход из состояния Categories в Items list. При этом список товаров, видимый пользователю, инициализируется списком товаров выбранной категории.
Диаграммы состояний используются часто, хотя требуется довольно много усилий, чтобы разработать их с достаточной степенью детальности.
Литература к Лекции 6
[1]Л. Басс, П. Клементс, Р. Кацман. Архитектура программного обеспечения на практике. СПб.: Питер, 2006.
[2]IEEE Std 1016-1998 Recommended Practice for Software Design Descriptions.
[3]IEEE 1471-2000 Recommended Practice for Architectural Description of Software-Intensive Systems.
[4]R. Kazman et al. SAAM: A Method for Analyzing the Properties of Software Architectures. Proceedings of the 16-th International Conference on Software Engineering, 1994.
[5]Г. Буч, Дж. Рамбо, А. Джекобсон. Язык UML. Руководство пользователя. М.: ДМК, 2000.
[6]Дж. Рамбо, А. Якобсон, Г. Буч. UML: Специальный справочник. СПб.: Питер, 2002.
[7]М. Фаулер, К. Скотт. UML в кратком изложении. М.: Мир, 1999.
[8]И. Соммервилл. Инженерия программного обеспечения. М.: Вильямс, 2002.
[9]Э. Дж. Брауде. Технология разработки программного обеспечения. СПб.: Питер, 2004.
90