Правительство Российской Федерации Государственный университет – Высшая школа экономики Факультет Бизнес Информатика Отделение Программная Инженерия Программа дисциплины “Проектирование архитектуры программных систем” для направления 080700.62 - «Бизнес-информатика» подготовки бакалавра по специализации «Программная инженерия» Автор программы профессор, д.т.н. С.В. Назаров snazarov@hse.ru Рекомендована секцией УМС по бизнес-информатике Председатель Ю.В.Таратухина ________________________________ «_____» __________________ 2009 г. Одобрена на заседании кафедры Архитектуры программных систем Зав. кафедрой С.В. Назаров _________________________________ «____»_____________________ 2009 г. Утверждена Ученым Советом факультета Бизнес-информатики Ученый секретарь В.А. Фомичев «_____» __________________ 2009 г. Москва I. Пояснительная записка Автор программы: профессор, д.т.н. С.В. Назаров Общие сведения об учебном курсе: дисциплина читается студентам программы бакалавриата, обучающихся по специализации «Программная инженерия» направления 080700.62 “Бизнес-информатика” на отделении программной инженерии факультета бизнес-информатики ГУ-ВШЭ. Она входит в блок специальных дисциплин и читается во втором и третьем модулях четвертого учебного года. Количество кредитов – 4. Продолжительность курса составляет 162 учебных часа (16 недель), в том числе: 22 часа лекционных занятий, 22 часа практических занятий, и 118 часов самостоятельной работы. Рубежный контроль – домашнее задание и зачет по окончанию третьего модуля. Требования к студентам: освоение курса предполагает предварительное знакомство студентов с содержанием учебных дисциплин: “Информатика и программирование” и “Объектноориентированный анализ и программирование”. Изучение дисциплины предполагает знание студентами основ вычислительных систем и управления разработкой программного обеспечения. Цель курса: получение теоретических знаний о принципах, технологии, методах и средствах проектирования архитектуры программных систем, а также приобретение практических навыков в выполнении действий по различным фазам создания программных продуктов. Аннотация: Дисциплина является важной составной частью теоретической подготовки бакалавра по специализации «программная инженерия» направления 080700.62 «Бизнес-информатика» и занимает существенное место в его будущей практической деятельности. Знание теории и практики проектирования архитектуры программных систем, обеспечивает возможность разработки эффективных программных систем для любых средств вычислительной техники, начиная от персонального компьютера и локальных вычислительных сетей до больших корпоративных информационных систем и сетей. Содержание курса соответствует своду знаний по программной инженерии Software Engineering Education Knowledge (SEEK) описанному в документе Software Engineering 2004 (SE 2004), определяющему руководящие принципы создания учебных планов для преподавания программной инженерии в высших учебных заведениях. Построение курса отвечает требованиям отечественных профессиональных стандартов в области информационных технологий и международного профессионального стандарта Guide to the Software Engineering Body of Knowledge (SWEBOK) ISO/IEC TR 19759 IEEE. 2 Учебные задачи курса: в результате прохождения учебного курса студенты должны: Знать современные представления и модели жизненного цикла программных систем, методы, технологии и средства разработки архитектуры сложных программных систем; Уметь решать задачи, возникающие на различных фазах жизненного цикла программных систем, связанных с проектированием архитектуры программных систем; Обладать навыками использования современных CASE-средств, используемых на различных фазах проектирования архитектуры программных систем. II. № Тематический план учебной дисциплины Всего часов по дисциплине Название темы Аудиторные часы Практические Лекции занятия Самостоятельная работа Второй модуль (16 часов) 1 2 3 Введение. Проблемы создания программных систем Жизненный цикл программных систем (ПС) Проектирование программных систем. Постановка требований к ПС 6 2 4 24 4 4 16 26 2 4 20 Третий модуль (28 час) 4 5 6 7 Проектирование программных систем. Постановка требований к ПС (продолжение) Проектирование программных систем. Анализ требований и разработка внешних спецификаций Архитектуры программных систем Проектирование архитектуры программных систем Итого: IV. 30 2 4 24 28 4 4 20 10 2 38 6 6 26 172 22 22 118 8 III. Базовый учебник (и) или ридер (ы) Книги: 3 1. Крылов Е.В. Техника разработки программ.: В 2 кн. Кн. 2 Технология, надежность и качество программного обеспечения: Учебник / Е.В. Крылов, В.А. Островский, Н.Г. Типикин. – М.: Высш. Шк., 2008 2. Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д. Технология разработки программного обеспечения: учебное пособие / под ред. Л.Г. Гагариной. – М.: ИД «Форум»: Инфра-М, 2008 3. Басс Л., Клементс П., Кацман Р. Архитектура программного обеспечения на практике. 2-е издание. – СПб.: Питер, 2006 4. Полис Г., Огастин Л., Мадхар Д. Разработка программных проектов: на основе Rational Unified Process (RUP). – М.: ООО «Бином-Пресс», 2009 5. Боггс У., Боггс М. UML и Rational Rose. «Лори», 2008 6. Кериевски Д. Рефакторинг с использованием шаблонов.: Пер. с англ. – М.: ООО «И.Д. Вильямс»,2008 7. Назаров С. В. Операционные системы специализированных вычислительных комплексов: Теория построения и системного проектирования. - М.: Машиностроение, 1989. 8. Кватрани Т., Палистрант Д. Визуальное моделирование с помощью IBM Rational Software Architect и UML. Пер. с англ. – М.: КУДИЦ-ПРЕСС. – 2007. Публикации в Интернет: V. Формы контроля Предусмотрены следующие виды контроля: - промежуточный контроль в конце 2-го модуля; - итоговый контроль: зачет в конце 3-го модуля. Оценки промежуточного и итогового контроля складывается из следующих элементов: текущий контроль осуществляется посредством ведения учета посещаемости лекций и оценки качества подготовки и работы на практических занятиях (доклады, презентации, оппонирование, критические выступления, выполнение домашнего задания); при непосещении занятий ставится оценка «0». Итоговый контроль осуществляется по результатам защиты индивидуального домашнего задания по 10-балльной шкале. Оценка промежуточного контроля в конце 2-го модуля формируется по 10-балльной шкале. При 10-балльной оценке не менее 4 баллов проставляется зачет, иначе – незачет. Перевод в пятибалльную оценку осуществляется в соответствии со следующей таблицей. Таблица соответствия оценок по десятибалльной и пятибалльной системам По десятибалльной шкале 1 – неудовлетворительно 2 – очень плохо 3 – плохо 4 – удовлетворительно 5 – весьма удовлетворительно 6 – хорошо 7 – очень хорошо По пятибалльной шкале неудовлетворительно – 2 удовлетворительно – 3 хорошо – 4 4 8 – почти отлично 9 – отлично 10 – блестяще отлично – 5 VI. Содержание программы Тема 1. Введение. Проблемы создания программных систем Программные системы (ПС) как отрасль экономики. Проблемы создания ПС. Кризис программирования. Становление и развитие программной инженерии. Развитие технологий программирования. CASE-технологии. ♦ Основная литература ♦ Дополнительная литература Тема 2. Жизненный цикл программных систем (ПС) Понятие жизненного цикла ПС. Основные процессы ЖЦ ПС. Вспомогательные процессы ЖЦ ПС. Организационные процессы ЖЦ ПС. Взаимосвязь между процессами ЖЦ ПС. Состав и стадии жизненного цикла ПС. Модели ЖЦ ПС. Каскадная модель (классический жизненный цикл). Итерационная модель ЖЦ ПС. Макетирование. Стратегии конструирования ПС. Инкрементная модель. Спиральная модель. Спиральная модель ЖЦ ПС “Рациональный унифицированный процесс” (RUP). ♦ Основная литература ♦ Дополнительная литература Тема 3. Проектирование программных систем. Постановка требований к ПС Модель проектирования ПС как последовательная трансляция требований, предъявляемых к системе. Методология решения задач проектирования по Г. Майерсу. Уровни требований к программным системам. Определение требований к программным системам. Определение требований к программным системам. Функциональные и нефункциональные (эксплуатационные) требования. Процесс определения продукта и проекта. Разработка технического задания. ♦ Основная литература ♦ Дополнительная литература Тема 4. Проектирование программных систем. Анализ требований и разработка внешних спецификаций Разработка предварительного внешнего проекта. Процесс внешнего проектирования. Проектирование взаимодействия с пользователем. Подготовка внешних спецификаций. Проверка правильности внешних спецификаций. Планирование изменений спецификаций. Анализ требований и определение спецификаций при структурном подходе к проектированию. Метод функционального моделирования. Функциональные диаграммы. Диаграммы потоков данных. Диаграммы переходов состояний. Анализ требований и определение спецификаций при объектном подходе. Анализ требований и определение спецификаций при объектном подходе к проектированию. ♦ Основная литература ♦ Дополнительная литература 5 Тема 5. Архитектуры программных систем Понятие архитектуры программной системы. Что определяет и на что влияет архитектура. Архитектурные структуры и представления. Модульные структуры. Структуры “компонент и соединитель”. Структуры распределения. Отношения между структурами. Варианты архитектур программных систем. Архитектура, основанная на уровнях абстракций. Архитектуры, основанные на портах. Архитектуры независимых компонентов. архитектуры, основанные на потоках данных. ♦ Основная литература ♦ Дополнительная литература Тема 6. Проектирование архитектуры программных систем Методология проектирования. Методы проектирования модульных архитектур программных систем. Структурное проектирование. Модульность и ее характеристики. Оценка сложности модульных иерархических структур. Слои программного продукта. Метод восходящей разработки (“снизу-вверх”). Метод нисходящей разработки (“сверхувниз”). Замечания по структурному проектированию. Формальное описание методики разработки модульной архитектуры программных систем. Пример проектирования структуры программной системы. Проектирование и программирование модулей. Проектирование программных систем при объектном подходе. Рефакторинг архитектуры программных систем. Паттерны системного проектирования. ♦ Основная литература ♦ Дополнительная литература Тематика домашних заданий Домашнее задание предполагает выполнение ряда задач, связанных с различными фазами проектирования архитектуры программной системы: постановка задачи; определение требований; анализ осуществимости; разработка технического задания; анализ требований и определение спецификаций; разработка внешнего проекта (эскизного проекта); разработка архитектуры программной системы (технического проекта). При решении задач должны быть использованы структурный и объектноориентированный подходы к проектированию архитектуры программной системы. На выбор предлагаются программные системы, например, следующего назначения: 1. Решение комбинаторно-оптимизационных задач (задача коммивояжера, поиска кратчайшего пути, поиска минимального связывающего дерева, раскраски графа). 2. Кафедра (сведения о сотрудниках, дисциплины, программы, совместительство, расписание, учебная нагрузка, публикации, НИР, конференции, сотрудничество с вузами и т.п.). Студент может предложить по согласованию с преподавателем свою тему. 6 VII. Вопросы для оценки качества освоения дисциплины 1. Дайте характеристику особенностей создания программного продукта. 2. Что такое жизненный цикл (ЖЦ) программного продукта? 3. Чем регламентируется ЖЦ программных систем (ПС) ? 4. Какие группы процессов входят в состав ЖЦ ПС и какие процессы входят в состав каждой группы? 5. Какие из процессов, по вашему мнению, наиболее часто используются в реальных проектах, какие в меньшей степени и почему? 6. Назовите модели ЖЦ ПС. 7. В чем достоинства и недостатки каскадной модели ЖЦ ПС? 8. Каковы принципиальные особенности спиральной модели? 9. Как определить метод и технологию проектирования ПС? 10. Каким требованиям должна удовлетворять технология проектирования ПС? 11. Сравните стоимость исправления ошибок на различных стадиях разработки ПС. 12. Что такое управление требованиями? 13. Назовите методы выявления требований к ПС. 14. В чем заключаются основные принципы структурного подхода? 15. Что общего и в чем различия между методом SADT и моделированием потоков данных? 16. В чем достоинства и недостатки структурного подхода? 17. В чем заключаются основные принципы объектно-ориентированного подхода? 18. В чем достоинства и недостатки объектно-ориентированного подхода? 19. Перечислите функциональные требования к ПС. 20. Перечислите эксплуатационные требования к ПС. 21. Приведите пример диаграммы переходов состояний. 22. Приведите пример структурной схемы ПС. 23. Что такое CASE-технологии и CASE-средства? 24. В чем различие. Достоинства и недостатки методов проектирования сверху-вниз и снизу-вверх? 25. Охарактеризуйте метод пошаговой детализации. ♦ Зачет (в форме защиты домашнего задания). Автор программы: ___________________Назаров С.В. 7