Правительство Российской Федерации
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
"Национальный исследовательский университет
"Высшая школа экономики"
Факультет Бизнес Информатика
Отделение программной инженерии
Программа дисциплины
“Проектирование и архитектура программных систем”
для магистерской программы 231000.68 Программная инженерия
Автор программы:
, доктор технических наук, профессор, *****@***ru
Рекомендована секцией УМС по бизнес-информатике Председатель ________________________________ «_____» __________________ 2011 г. | Одобрена на заседании кафедры архитектуры программных систем Зав. кафедрой _________________________________ «____»____________________ 2011 г. | |
Утверждена Ученым Советом НИУ ВШЭ Ученый секретарь ________________________________ «_____» __________________ 2011 г. |
Москва, 2011
Настоящая программа не может быть использована другими подразделениями
университета и другими вузами без разрешения кафедры-разработчика программы.
2 Область применения и нормативные ссылки
Настоящая программа учебной дисциплины устанавливает минимальные требования к знаниям и умениям студента и определяет содержание и виды учебных занятий и отчетности.
Программа предназначена для преподавателей, ведущих данную дисциплину, учебных ассистентов и студентов, обучающихся по магистерской программе 231000.68 Программная инженерия по специализации "Методы и теория программной инженерии".
Программа разработана в соответствии с:
· Государственным образовательным стандартом высшего профессионального образования по направлению подготовки 231000 Программная инженерия (квалификация (степень) “магистр”);
· базовым учебным планом направления 231000.68 "Программная инженерия" подготовки магистра по магистерской программе "Системная и программная инженерия" специализации "Методы и теория программной инженерии";
· рабочим учебным планом университета по направлению подготовки 231000.68 "Программная инженерия" подготовки магистра по магистерской программе "Системная и программная инженерия" специализации "Методы и теория программной инженерии" в 2011 г.
3 Цели освоения дисциплины
Целями освоения дисциплины Проектирование и архитектуры программных систем являются получение теоретических знаний о принципах, технологии, методах и средствах проектирования архитектуры программных систем, а также приобретение практических навыков в выполнении действий по различным фазам создания программных продуктов.
4 Компетенции обучающегося, формируемые в результате освоения дисциплины
В результате освоения дисциплины студент должен:
· Знать современные архитектуры программных систем, представления и модели жизненного цикла программных систем, методы, технологии и средства разработки архитектуры сложных программных систем;
· Уметь решать задачи, возникающие на различных фазах жизненного цикла программных систем, связанных с проектированием архитектуры программных систем;
· Иметь навыки использования современных CASE-средств, используемых на различных фазах проектирования архитектуры программных систем.
В результате освоения дисциплины студент осваивает следующие компетенции:
Компетенция | Код по ФГОС/ НИУ | Дескрипторы – основные признаки освоения (показатели достижения результата) | Формы и методы обучения, способствующие формированию и развитию компетенции |
Способность к самостоятельному обучению новым методам исследования | ОК-2 | Применяет новые методы, реализованные в программном продукте RSA | Практические занятия |
Способность к профессиональной эксплуатации современного оборудования | ОК-7 | Умеет использовать навыки работы с ПК, локальной сетью и Интернет | Подготовка к семинарам, самостоятельная работа |
Умение отбирать и разрабатывать методы исследования объектов профессиональной деятельности на основе общих тенденций развития программной инженерии | ПК-1 | Отбирает методы моделирования программных систем | Самостоятельная работа по выполнению домашнего задания |
Умение планировать, управлять и контролировать выполнение требований | ПК-4 | Разрабатывает требования к программным системам | Лекции. Самостоятельная работа по выполнению домашнего задания |
Способность к проектной деятельности в профессиональной сфере на основе системного подхода, умение строить и использовать модели для описания и прогнозирования различных явлений, осуществлять их качественный и количественный анализ | ПК-6 | Создает и исследует модели на различных этапах жизненного цикла программных систем | Лекции. Самостоятельная работа по выполнению домашнего задания |
Умение формировать технические задания и способность руководить разработкой программного обеспечения | ПК-7 | Разрабатывает ТЗ на создание программной системы | Лекции. Самостоятельная работа по выполнению домашнего задания |
5 Место дисциплины в структуре образовательной программы
Настоящая дисциплина относится к циклу адаптационных дисциплин и читается в первом модуле первого учебного года, код дисциплины в учебном плане М2.ДАМ.00
Количество кредитов – 3, общее количество часов – 108. Количество аудиторных часов 40, в том числе: 20 часов лекционных занятий, 20 часов практических занятий. Общее количество часов самостоятельной работы – 68.
Изучение данной дисциплины базируется на следующих дисциплинах:
· введение в программную инженерию;
· конструирование программного обеспечения;
· программирование;
· архитектура вычислительных систем;
· операционные системы.
Для освоения учебной дисциплины студенты должны владеть следующими знаниями и компетенциями:
· способность к формализации в своей предметной области с учетом ограничений используемых методов исследования (ПК-2);
· готовность к использованию методов и инструментов средств исследования объектов профессиональной деятельности (ПК-3);
· готовность обосновать принимаемые проектные решения, осуществлять постановку и выполнение экспериментов по проверке их корректности и эффективности (ПК-4);
· умение готовить презентации, оформлять научно-технические отчеты по результатам выполненной работы, публиковать результаты исследований в виде статей и докладов на НТК (ПК-5);
· способность формализовать предметную область программного проекта и разработать спецификации для компонентов программного продукта (ПК-6).
Основные положения дисциплины должны быть использованы в дальнейшем при изучении следующих дисциплин:
· методология разработки корпоративных приложений;
· системы управления бизнес-процессами;
· архитектура распределенных систем.
6 Тематический план учебной дисциплины
№ | Название раздела | Всего часов | Аудиторные часы | Самостоятельная работа | |
Лекции | Практические занятия | ||||
1 | Введение. Проблемы создания сложных программных систем. | 8 | 2 | 2 | 4 |
2 | Архитектуры программных систем | 12 | 4 | 2 | 6 |
3 | Жизненный цикл программных систем (ПС) | 10 | 2 | 2 | 6 |
4 | Проектирование программных систем. Постановка требований к ПС | 22 | 4 | 4 | 14 |
5 | Проектирование программных систем. Анализ требований и разработка внешних спецификаций | 26 | 4 | 4 | 18 |
6 | Проектирование архитектуры программных систем | 30 | 4 | 6 | 20 |
ИТОГО | 108 | 20 | 20 | 68 |
7 Формы контроля знаний студентов
Тип контроля | Форма контроля | 1 год | Параметры ** | |||
1 | 2 | 3 | 4 | |||
Текущий (неделя) | Работа на семинарах | * | Презентация, 10-15 слайдов. | |||
Домашнее задание | * | Построение UML-диаграмм. Электронная форма | ||||
Итоговый | Зачет | * | ТЗ на разработку и отчет о разработке архитектуры программной системы. Электронный и отпечатанный отчеты |
7.1 Критерии оценки знаний, навыков
На семинарах студент должен проявлять способность отбирать и разрабатывать методы исследования объектов профессиональной деятельности на основе общих тенденций развития программной инженерии с использованием современных технических и программных средств. При подготовке докладов и презентаций студент должен продемонстрировать способность к самостоятельному обучению новым методам исследования и способность к формализации в своей предметной области с учетом ограничений используемых методов исследования.
При выполнении домашнего задания студент должен показать способность к проектной деятельности в профессиональной сфере на основе системного подхода, умение строить и использовать модели для описания и прогнозирования различных явлений, осуществлять их качественный и количественный анализ. В соответствии с задачей, поставленной в домашнем задании, студент должен показать умение формировать техническое задание и способность руководить разработкой программного обеспечения.
Оценки по всем формам текущего контроля выставляются по 10-ти балльной шкале.
8 Содержание дисциплины
Раздел 1 Введение. Проблемы создания сложных программных систем.
Программные системы (ПС) как отрасль экономики. Проблемы создания ПС. Кризис программирования. Становление и развитие программной инженерии. Развитие технологий программирования. CASE-технологии.
Литература по разделу:
Основная литература
1. , , Виснадул разработки программного обеспечения: учебное пособие / под ред. . – М.: ИД «Форум»: Инфра-М, 2008
2. Крылов разработки программ: В 2 кн. Кн. 2 Технология, надежность и качество программного обеспечения: Учебник / , , . – М.: Высш. Шк., 2008
Дополнительная литература
3. Боэм проектирование программного обеспечения: Пер. с англ. – М.: Радио и связь. 1985. – 512 с.
4. Надежность программного обеспечения: Пер. с англ. – М.: Мир, 1980. – 360 с.
5. Вендров программного обеспечения экономических информационных систем. Учебник для вузов. 2-е изд. – М.: Финансы и статистика, 2006
6. Экскурс в историю программных технологий. – Открытые системы, N10, 2008.
Раздел 2. Архитектуры программных систем
Понятие архитектуры программной системы. Что определяет и на что влияет архитектура. Архитектурные структуры и представления. Модульные структуры. Структуры “компонент и соединитель”. Структуры распределения. Отношения между структурами. Варианты архитектур программных систем. Архитектура, основанная на уровнях абстракций. Архитектуры, основанные на портах. Архитектуры независимых компонентов. архитектуры, основанные на потоках данных.
Основная литература
1. Архитектура программного обеспечения на практике. 2-е издание. – СПб.: Питер, 2006
2. Надежность программного обеспечения: Пер. с англ. – М.: Мир, 1980.
Дополнительная литература
3. Назаров среды, системы и оболочки. Основы структурной и функциональной организации: Учеб. Пособие. – М.: - КУДИЦ-ПРЕСС, 2007
Раздел 3. Жизненный цикл программных систем (ПС)
Понятие жизненного цикла ПС. Основные процессы ЖЦ ПС. Вспомогательные процессы ЖЦ ПС. Организационные процессы ЖЦ ПС. Взаимосвязь между процессами ЖЦ ПС. Состав и стадии жизненного цикла ПС. Модели ЖЦ ПС. Каскадная модель (классический жизненный цикл). Итерационная модель ЖЦ ПС. Макетирование. Стратегии конструирования ПС. Инкрементная модель. Спиральная модель. Спиральная модель ЖЦ ПС “Рациональный унифицированный процесс” (RUP).
Основная литература
1. Вендров программного обеспечения экономических информационных систем. Учебник для вузов. 2-е изд. – М.: Финансы и статистика, 2006
2. , , Виснадул разработки программного обеспечения: учебное пособие / под ред. . – М.: ИД «Форум»: Инфра-М, 2008
Дополнительная литература
3. Разработка программных проектов: на основе Rational Unified Process (RUP). – М.: -Пресс», 2009
Раздел 4. Проектирование программных систем. Постановка требований к ПС
Модель проектирования ПС как последовательная трансляция требований, предъявляемых к системе. Методология решения задач проектирования по Г. Майерсу. Уровни требований к программным системам. Определение требований к программным системам. Определение требований к программным системам. Функциональные и нефункциональные (эксплуатационные) требования. Процесс определения целей продукта и проекта. Разработка технического задания.
Основная литература
1. Надежность программного обеспечения: Пер. с англ. – М.: Мир, 1980.
2. Э. Халл, К. Джексон: Разработка и управление требованиями
Дополнительная литература
3. Применение Rational Software Architect в разработке, управляемой моделями и на основе шаблонов: Часть 2. Инструментальная поддержка разработки. http://www. /developerworks/ru/library/0116_yu/#author1
4. Валидация требований. CM Consult. http://www. /articles/microsoft/vsts2010_rm/requirements_validation/#val
5. Определение требований к программному обеспечению. http://www. caseclub. ru/articles/treb. html#Вступление#Вступление
Раздел 5. Проектирование программных систем. Анализ требований и разработка внешних спецификаций
Разработка предварительного внешнего проекта. Процесс внешнего проектирования. Проектирование взаимодействия с пользователем. Подготовка внешних спецификаций. Проверка правильности внешних спецификаций. Планирование изменений спецификаций. Анализ требований и определение спецификаций при структурном подходе к проектированию. Метод функционального моделирования. Функциональные диаграммы. Диаграммы потоков данных. Диаграммы переходов состояний. Анализ требований и определение спецификаций при объектном подходе. Анализ требований и определение спецификаций при объектном подходе к проектированию.
Основная литература
1. Надежность программного обеспечения: Пер. с англ. – М.: Мир, 1980.
2. Технологии разработки программного обеспечения: Учебник/ С. Орлов. — СПб.: Питер, 2002.
3. , , Виснадул разработки программного обеспечения: учебное пособие / под ред. . – М.: ИД «Форум»: Инфра-М, 2008
Дополнительная литература
4. Методология программирования: пер. с англ. – М.: Мир, 1981.
5. Разработка и управление требованиями. Практическое руководство пользователя. Telelogic, 2005
Раздел 6. Проектирование архитектуры программных систем
Методология проектирования. Методы проектирования компонентных и модульных архитектур программных систем. Структурное проектирование. Модульность и ее характеристики. Оценка сложности модульных иерархических структур. Слои программного продукта. Метод восходящей разработки (“снизу-вверх”). Метод нисходящей разработки (“сверху-вниз”). Замечания по структурному проектированию. Формальное описание методики разработки модульной архитектуры программных систем. Пример проектирования структуры программной системы. Проектирование и программирование модулей. Проектирование программных систем при объектном подходе. Рефакторинг архитектуры программных систем. Паттерны системного проектирования.
Основная литература
1. Разработка программных проектов: на основе Rational Unified Process (RUP). – М.: -Пресс», 2009
2. Надежность программного обеспечения: Пер. с англ. – М.: Мир, 1980.
3. Технологии разработки программного обеспечения: Учебник/ С. Орлов. — СПб.: Питер, 2002.
4. , , Виснадул разработки программного обеспечения: учебное пособие / под ред. . – М.: ИД «Форум»: Инфра-М, 2008
Дополнительная литература
5. Рефакторинг архитектуры программного обеспечения: выделение слоев. Труды ИПИРАН
6. Хьюз Дж., Мичтом ДЖ. Структурный подход к программированию: Пер. с англ. – М.: Мир, 1980.
9 Образовательные технологии
При проведении лекций предполагаются встречи с представителями компании IBM, которые являются сотрудниками подразделения, занимающегося внедрением продуктов IBM Rational в российские компании-разработчики программных систем.
Основное время проведения практических занятий связано с компьютерным моделированием различных аспектов разработки программных систем.
9.1 Методические рекомендации преподавателю
Преподаватель, проводящий лекционные занятия должен отметить следующее.
Дисциплина является важной составной частью теоретической подготовки магистра по магистерской программе 231000.68 Программная инженерия по специализации "Методы и теория программной инженерии" и занимает существенное место в его будущей практической деятельности. Знание теории и практики проектирования архитектуры программных систем, обеспечивает возможность разработки эффективных программных систем для любых средств вычислительной техники, начиная от персонального компьютера и локальных вычислительных сетей до больших корпоративных информационных систем и сетей.
Содержание курса соответствует своду знаний по программной инженерии Software Engineering Education Knowledge (SEEK) описанному в документе Software Engineering 2004 (SE 2004), определяющему руководящие принципы создания учебных планов для преподавания программной инженерии в высших учебных заведениях. Построение курса отвечает требованиям отечественных профессиональных стандартов в области информационных технологий и международного профессионального стандарта Guide to the Software Engineering Body of Knowledge (SWEBOK) ISO/IEC TR 19759 IEEE.
9.2 Методические указания студентам
Студенты, изучающие дисциплину проектирование и архитектуры программных систем, должны обратить внимание на широту и глубину знаний, требуемых для успешного освоения этой дисциплины. При этом на дисциплину отводится сравнительно небольшое количество часов аудиторных занятий. Отсюда следует, что результат успешного освоения дисциплины во многом определяется самостоятельной работой студентов. В связи с этим можно рекомендовать регулярный просмотр сайтов зарубежных и отечественных компаний, занимающихся разработкой программных систем. Подобные ссылки даются на лекциях и практических занятиях. Следует также участвовать в конференциях и семинарах, которые регулярно проводятся в Москве ведущими компаниями-разработчиками программных продуктов. Стоит обратить внимание на следующие сайты:
1) http://events. cnews. ru/events/
2) http://www. /ru/events/
3) http://www. academy. it. ru/ru/about/actions/
4) http://www. techdays. ru/
5) https://msevents. microsoft. com/cui/default. aspx? culture=ru-ru
6) http:// /ur/institute. html
и многие другие. Многие ведущие программные компании (IBM, MS, HP и др.) реализуют программы академической инициативы, которые позволяют студентам получать бесплатно программные продукты, проходить курсы обучения, участвовать в семинарах и конференциях.
9.3 Тематика заданий текущего контроля
Примерные вопросы для семинарских занятий по теме 1 (Сравнительный анализ технологий программирования):
1. “Стихийное” программирование
2. Структурное программирование.
3. Модульное программирование
4. Объектно-ориентированное программирование
5. Компонентное программирование
6. Средства автоматизации программирования
Примерные вопросы для семинарских занятий по теме 2 (Архитектурные типы и структуры):
1. Двухуровневые и многоуровневые клиент-серверные архитектуры
2. Архитектуры, основанные на потоках данных
3. Архитектуры независимых компонентов
4. CORBA – архитектура
5. Сервис-ориентированные архитектуры
Примерные вопросы для семинарских занятий по теме 3 (Модели жизненного цикла программных систем):
1. Состав и стадии жизненного цикла ПС
2. Каскадная модель (классический жизненный цикл)
3. Итерационная модель
4. Инкрементная модель
5. Спиральная модель
6. Спиральная модель “Рациональный унифицированный процесс” (RUP)
7. Модель проектной группы MSF
9.4 Вопросы для оценки качества освоения дисциплины
1. Дайте характеристику особенностей создания программного продукта.
2. Перечислите особенности сложных программных систем.
3. Дайте характеристику современных методологий создания ПС.
4. Что понимается под технологией создания ПС?
5. Назовите основные этапы развития технологии проектирования ПС.
6. Какие языки программирования использовались в различных технологиях создания ПС?
7. Назовите причины неудачного завершения программных проектов.
8. Что такое архитектура ПС, как ее определить?
9. Какие виды архитектур ПС характерны для современных программных систем.
10. Какие методы и средства моделирования архитектуры ПС вы знаете? Дайте их характеристику
11. Что такое жизненный цикл (ЖЦ) программного продукта?
12. Чем регламентируется ЖЦ программных систем (ПС) ?
13. Какие группы процессов входят в состав ЖЦ ПС и какие процессы входят в состав каждой группы?
14. Какие из процессов, по вашему мнению, наиболее часто используются в реальных проектах, какие в меньшей степени и почему?
15. Назовите модели ЖЦ ПС.
16. В чем достоинства и недостатки каскадной модели ЖЦ ПС?
17. Каковы принципиальные особенности спиральной модели?
18. Как определить метод и технологию проектирования ПС?
19. Каким требованиям должна удовлетворять технология проектирования ПС?
20. Сравните стоимость исправления ошибок на различных стадиях разработки ПС.
21. Что такое управление требованиями?
22. Назовите методы выявления требований к ПС.
23. В чем заключаются основные принципы структурного подхода к определению требований?
24. Что общего и в чем различия между методом SADT и моделированием потоков данных?
25. Перечислите функциональные требования к ПС.
26. Перечислите эксплуатационные требования к ПС.
27. В чем отличия системных и функциональных требований к ПС?
28. Приведите пример диаграммы переходов состояний.
29. Приведите пример структурной схемы ПС.
30. В чем достоинства и недостатки структурного подхода к проектированию ПС?
31. В чем заключаются основные принципы объектно-ориентированного подхода к проектированию ПС?
32. Что такое CASE-технологии и CASE-средства?
33. В чем различие. Достоинства и недостатки методов проектирования сверху-вниз и снизу-вверх?
34. Охарактеризуйте метод пошаговой детализации.
9.5 Пример домашнего задания
В домашнем задании требуется разработать техническое задание на проектирование программной системы и архитектуру этой программной системы на уровне классов, используя CASE-средства.
Пример исходных данных для домашнего задания:
Система учета автомобили - владельцы - доверенности. Система должна обеспечивать следующие возможности: добавлять/удалять нового владельца и соответственно новый автомобиль для заданного владельца, осуществлять аналогичные операции с доверенностями на автомобиль, выдавать необходимую справочную информацию (например, для указанного автомобиля определять его владельца и т. д.), при этом предполагается, что у каждого автомобиля может быть только один владелец, на один и тот же автомобиль может быть зафиксировано несколько доверенностей.
10 Порядок формирования оценок по дисциплине
Преподаватель оценивает активность участия студентов в дискуссии на семинарских и практических занятиях, полноту и глубину изложения вопросов, обсуждаемых на семинарских занятиях, правильность построения моделей, разрабатываемых на практических занятиях с помощью CASE-средств. Накопленная оценка по 10-ти балльной шкале за работу на семинарских и практических занятиях определяется перед итоговым контролем - Оаудиторная.
Результирующая оценка за промежуточный контроль в форме зачета выставляется по следующей формуле, где Озачет – оценка за зачет, Одз - за домашнее задание:
Оитог = 0,2·Оаудиторная + 0,4·Одз + 0,4·Озачет
Способ округления оценки итогового контроля – в пользу студента.
11 Учебно-методическое и информационное обеспечение дисциплины
11.1 Базовый учебник
· , , Виснадул разработки программного обеспечения: учебное пособие / под ред. . – М.: ИД «ФОРУМ»: ИНФРА-М., 2008. – 654 с.
· , , Типикин разработки программ: в 2 кн. Кн. 2. Технология, надежность и качество программного обеспечения. – М.: Высшая шк., 2008.
· Архитектура программного обеспечения на практике. 2-е издание. – СПб.: Питер, 2006 – 574 с. (10 экз.)
11.2 Основная литература
· Боэм проектирование программного обеспечения: Пер. с англ. – М.: Радио и связь. 1985.
· Брукс проектируются и создаются программные комплексы. /Очерки по системному программированию. — М.: Наука, 1979
· Язык UML, Руководство пользователя. 2-е изд. : Пер. с англ. мухин Н. – М.: ДМК Пресс, 2007.
· Вендров программного обеспечения экономических информационных систем. Учебник для вузов. 2-е изд. – М.: Финансы и статистика, 2006.
· Визуальное моделирование с помощью IBM Rational Software Architect и UML. Пер. с англ. – М.: КУДИЦ-ПРЕСС. – 2007.
11.3 Дополнительная литература
· Shari Lawrence Pfleeger; Joanne M. Atlee. Software Engineering: Theory and Practice. Rand corporation Prentice Hall. 2005.
· . Методы проектирования программных систем: Пер. с англ. – М.: Мир, 1985.
· Кулямин программирования. Компонентный подход. [Электронный ресурс]. Режим доступа: http://lib. mdpu. /e-book/vstup/L/Jogolev. pdf
· Современные операционные системы. 4-е изд. – СПб.: Питер, 2006.
· Методология программирования: пер. с англ. – М.: Мир, 1981.
· Разработка и управление требованиями. Практическое руководство пользователя. Telelogic, 2005
· Хьюз Дж., Мичтом ДЖ. Структурный подход к программированию: Пер. с англ. – М.: Мир, 1980.
· Чернышов разработки программного обеспечения: история и перспективы. [Электронный ресурс]. Режим доступа: http://nit. miem. edu. ru/sbornik/2009-/plen/008.html
· Экскурс в историю программных технологий. – Открытые системы, №10, 2008.
· Разработка программных проектов: на основе Rational Unified Process (RUP). – М.: -Пресс», 2009.
· Рефакторинг архитектуры программного обеспечения: выделение слоев. Труды ИПИРАН
12 Программные средства
Для успешного освоения дисциплины, студент использует следующие программные средства:
· Программный продукт компании IBM Rational Software Architect версии 6.0 и 7.5.
· Программный продукт компании IBM Rational RequisitePro.
13 Материально-техническое обеспечение дисциплины
Для проведения лекционных, семинарских и практических занятий используется проектор. Все занятия студенты проводят на персональном рабочем месте (компьютере) с использованием локальной вычислительной сети и сетевых устройств хранения данных.
Доктор технических наук, профессор


