Министерство науки и образования Российской Федерации
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
«Московский физико-технический институт (государственный университет)» 
МФТИ (ГУ)

«Утверждаю»
Проректор по учебной работе
_______________ Д.А.Зубцов
«___»______________ 20___ г.

Рабочая УЧЕБНАЯ Программа

По дисциплине: Проектирование и архитектура программных систем
По направлению: 010900 «Прикладные математика и физика»
магистерская программа: 010974 – Телекоммуникационные сети и системы
Факультет радиотехники и кибернетики
Кафедра проблем передачи и обработки информации
Курс: 1 (магистратура) 
Семестры – осенний и весенний 	Дифференцированный зачёт: 1 семестр
						Экзамен: 2 семестр

Трудоёмкость: вариативная часть – 5 зач.ед.,
в том числе:
лекции: вариативная часть – 66 часов
самостоятельная работа: вариативная часть – 66 часов
подготовка к экзамену: вариативная часть – 1 зач.ед.

ВСЕГО АУДИТОРНЫХ часов  66

Программу составил д.т.н., профессор С.В. Назаров

Программа обсуждена на заседании кафедры 28 мая 2012 года

Заведующий кафедрой						А.П. Кулешов
академик РАН

Объем учетной нагрузки и виды отчетности

Вариативная часть, в том числе:	5 зач.ед.
	
Лекции	66 часов
	
Самостоятельные занятия	66 часов
	
Промежуточная аттестация
	дифференцированный зачет в 1-м семестре магистратуры	
Итоговая аттестация	экзамен во 2-м семестре магистратуры (1 зач.ед.)	
ВСЕГО	5 зач.ед. (132 часа + 1 зач.ед.)	

1.	Цели и задачи дисциплины

Цель дисциплины – получение теоретических знаний о принципах, технологии,  методах и средствах проектирования архитектуры программных систем, а также приобретение практических навыков в выполнении действий по различным фазам создания программных продуктов.
Задачи:
-	фундаментальная подготовка студентов в области проектирования архитектуры программных систем;
-	формирование подходов к выполнению самостоятельных исследований студентами в области проектирования архитектуры программных систем.

2.	Место дисциплины в структуре ООП магистратуры

Дисциплина «Проектирование и архитектура программных систем» включает в себя разделы, которые могут быть отнесены к вариативной части цикла М.2.
Дисциплина «Проектирование и архитектура программных систем» базируется на материалах курсов бакалавриата: базовая и вариативная часть Б.2 и Б.3 УЦ ООП.

3.	Компетенции, формированию которых способствует освоение дисциплины

Освоение дисциплины «Проектирование и архитектура программных систем» способствует формированию следующих общекультурных и общепрофессиональных интегральных компетенций магистра:
а) общекультурные (ОК):
-	способность использовать на практике углубленные фундаментальные знания, полученные в области естественных и гуманитарных наук, и обладать научным мировоззрением (ОК-1);
-	способность ставить, формализовать и решать задачи, уметь системно анализировать научные проблемы, генерировать новые идеи и создавать новое знание (ОК-2);
-	способность самостоятельно приобретать и использовать в практической деятельности знания и умения, в том числе в новых областях (ОК-3);
-	способность формулировать устно и письменно свою точку зрения, владеть навыками ведения научной и общекультурной дискуссий на русском и английском языках (ОК-4);
б) профессиональные (ПК):
-	способность применять в своей профессиональной деятельности углубленные знания, полученные в соответствии с профильной направленностью (ПК-1);
-	способность ставить задачи теоретических и (или) экспериментальных научных исследований и решать их с помощью соответствующего физико-математического аппарата, современной аппаратуры и информационных технологий (ПК-2);
-	способность самостоятельно осваивать новые дисциплины и методы исследований (ПК-3);
-	способность применять современные методы анализа, представления и передачи информации, использовать пакеты прикладных программ по профилю подготовки (ПК-4);
-	способность определять вместе с коллективом исполнителей направления собственной научной, технической или инновационной деятельности, выбирать подходы к решению конкретных исследовательских и (или) инновационных задач (ПК-7);
-	способность самостоятельно и (или) в составе исследовательской группы разрабатывать, исследовать и применять математические и физические модели для качественного и количественного описания явлений и процессов и (или) разработки новых технических средств (ПК-9).

4.	Знания, умения и навыки, формированию которых способствует освоение дисциплины

Освоение дисциплины «Проектирование и архитектура программных систем» способствует формированию комплекса знаний и навыков, благодаря которым обучающийся должен
а) знать:
-	современные архитектуры программных систем, представления и модели жизненного цикла программных систем, методы, технологии и средства разработки архитектуры сложных программных систем; 
б) уметь:
-	решать задачи, возникающие на различных фазах жизненного цикла программных систем, связанных с проектированием архитектуры программных систем;
в) владеть:
-	навыки использования современных CASE-средств, используемых на различных фазах проектирования архитектуры программных систем.

5.	Структура и содержание дисциплины

Лекции
№ п.п.	Тема	Число аудиторных часов	Число часов самостоятельной работы	
1	Введение. Проблемы создания сложных программных систем.
Программные системы (ПС) как отрасль экономики. Проблемы создания ПС.  Кризис программирования. Становление и развитие программной инженерии. Развитие технологий программирования. CASE-технологии.	6	6	
2	Архитектуры программных систем.
Понятие архитектуры программной системы. Что определяет и на что влияет архитектура. Архитектурные структуры и представления. Модульные структуры. Структуры “компонент и соединитель”. Структуры распределения. Отношения между структурами. Варианты архитектур программных систем.  Архитектура, основанная на уровнях абстракций. Архитектуры, основанные на портах. Архитектуры независимых компонентов. архитектуры, основанные на потоках данных.	12	12	
3	Жизненный цикл программных систем (ПС).
Понятие жизненного цикла ПС. Основные процессы  ЖЦ ПС.  Вспомогательные процессы ЖЦ ПС. Организационные процессы ЖЦ ПС. Взаимосвязь между процессами ЖЦ ПС.   Состав и стадии  жизненного цикла ПС. Модели  ЖЦ ПС. Каскадная модель (классический жизненный цикл). Итерационная модель ЖЦ ПС. Макетирование.  Стратегии конструирования ПС. Инкрементная модель. Спиральная модель.  Спиральная модель ЖЦ ПС “Рациональный унифицированный процесс” (RUP).	6	6	
4	Проектирование программных систем. Постановка требований к ПС.
Модель проектирования ПС как последовательная трансляция требований, предъявляемых к системе. Методология решения задач проектирования  по Г. Майерсу. Уровни требований к программным системам. Определение требований к программным системам. Определение требований к программным системам. Функциональные и нефункциональные (эксплуатационные) требования. Процесс определения целей продукта и проекта. Разработка технического задания.	14	14	
5	Проектирование программных систем. Анализ требований и разработка внешних спецификаций.
Разработка предварительного внешнего проекта. Процесс внешнего проектирования. Проектирование взаимодействия с пользователем. Подготовка внешних спецификаций. Проверка правильности внешних спецификаций. Планирование изменений спецификаций. Анализ требований и определение спецификаций при структурном подходе к проектированию. Метод функционального моделирования. Функциональные диаграммы. Диаграммы потоков данных. Диаграммы переходов состояний. Анализ требований и определение спецификаций при объектном подходе. Анализ требований и определение спецификаций при объектном подходе к проектированию.	14	14	
6	Проектирование архитектуры программных систем.
Методология проектирования. Методы проектирования компонентных и модульных архитектур программных систем. Структурное проектирование. Модульность и ее характеристики. Оценка сложности модульных иерархических структур. Слои программного продукта. Метод восходящей разработки (“снизу-вверх”). Метод нисходящей  разработки (“сверху-вниз”). Замечания по структурному проектированию. Формальное описание методики разработки модульной архитектуры программных систем. Пример проектирования структуры программной системы. Проектирование и программирование модулей. Проектирование программных систем при объектном подходе. Рефакторинг архитектуры программных систем. Паттерны системного проектирования.	14	14	
ВСЕГО	66 часов	66 часов	
ИТОГО	132 часа	
  
Виды самостоятельной работы
№ п.п.	Темы	Количество часов	
1	Изучение теоретического курса – выполняется самостоятельно каждым студентом по итогам каждой из лекций, результаты контролируются преподавателем на лекционных занятиях,  используются конспект (электронный) лекций, учебники, рекомендуемые данной программой.	33	
2	Решение задач по заданию (индивидуальному где требуется) преподавателя – решаются задачи, выданные преподавателем по итогам лекционных занятий и сдаются в конце семестра, используются конспект (электронный) лекций, учебники, рекомендуемые данной программой, а также сборники задач, включая электронные.	33	
3	Подготовка к дифференциальному зачету и экзамену	1 зач.ед.	
ВСЕГО	66 часов + 
1 зач.ед.	

6.	Образовательные технологии

№ п/п	Вид занятия	Форма проведения занятий	Цель	
1	Лекция	Изложение теоретического материала	Получение теоретических знаний по дисциплине	
2	Самостоятельная работа студента	Самостоятельная работа	Получение дополнительных знаний и подготовка к зачету и экзамену	

7.	Оценочные средства для текущего контроля успеваемости, промежуточной аттестации по итогам освоения дисциплины и учебно-методическое обеспечение самостоятельной работы студентов

Перечень контрольных вопросов для сдачи дифференцированного зачета в 1-ом семестре магистратуры
№ п.п.	Тема	
1	“Стихийное” программирование.	
2	Структурное программирование.	
3	Модульное программирование.	
4	Объектно-ориентированное программирование.	
5	Компонентное программирование.	
6	Средства автоматизации программирования.	
7	Двухуровневые и многоуровневые клиент-серверные архитектуры.	
8	Архитектуры, основанные на потоках данных.	
9	Архитектуры независимых компонентов.	
10	CORBA – архитектура.	
11	Сервис-ориентированные  архитектуры.	
12	Состав и стадии  жизненного цикла ПС.	
13	Каскадная модель (классический жизненный цикл).	
14	Итерационная модель.	
15	Инкрементная модель.	
16	Спиральная модель.	
17	Спиральная модель “Рациональный унифицированный процесс” (RUP).	
18	Модель проектной группы MSF.	

Перечень контрольных вопросов для сдачи экзамена  во 2-ом семестре магистратуры
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	Охарактеризуйте метод пошаговой детализации.	

8.	Материально-техническое обеспечение дисциплины

Необходимое оборудование для лекций  и практических занятий: доска, ноутбук и мультимедийное оборудование (проектор или плазменная панель) для успешного освоения дисциплины, студент использует следующие программные средства: - Программный продукт компании IBM Rational Software Architect версии 6.0 и 7.5; - Программный продукт компании IBM Rational RequisitePro.

Обеспечение самостоятельной работы: результат успешного освоения дисциплины во многом определяется самостоятельной работой студентов. В связи с этим можно рекомендовать регулярный просмотр сайтов зарубежных и отечественных компаний, занимающихся разработкой программных систем. Подобные ссылки даются на лекциях и практических занятиях. Следует также участвовать в конференциях и семинарах, которые регулярно проводятся в Москве ведущими компаниями-разработчиками программных продуктов. Стоит обратить внимание на следующие сайты:
1)	http://events.cnews.ru/events/
2)	http://www.ibm.com/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:// h41110.www4.hp.com/ur/institute.html 
и многие другие. Многие ведущие программные компании (IBM, MS, HP и др.) реализуют программы академической инициативы, которые позволяют студентам получать бесплатно программные  продукты, проходить курсы обучения, участвовать в семинарах и конференциях.

9.	Учебно-методическое и информационное обеспечение дисциплины

Базовый учебник

1.	Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д. Технология разработки программного обеспечения: учебное пособие / под ред. Л.Г. Гагариной. М.: ИД «ФОРУМ»: ИНФРА-М., 2008. – 654 с.
2.	Крылов Е.В., Острейковский В.А., Типикин Н.Г. Техника разработки программ: в 2 кн. Кн. 2. Технология, надежность и качество программного обеспечения. М.: Высшая шк., 2008. 
3.	Басс Л., Клементс П., Кацман Р. Архитектура программного обеспечения на практике. 2-е издание. СПб.: Питер, 2006. – 574 с. (10 экз.)

Основная литература

1.	Боэм Б.У. Инженерное проектирование программного обеспечения. Пер. с англ. М.: Радио и связь. 1985. 
2.	Брукс Ф.П. Как проектируются и создаются программные комплексы. /Очерки по системному программированию. М.: Наука, 1979.
3.	Буч Г., Рамбо Д., Якобсон И. Язык UML, Руководство пользователя. 2-е изд. Пер. с англ. Мухин Н. М.: ДМК Пресс, 2007.
4.	Вендров А.М. Проектирование программного обеспечения экономических информационных систем. Учебник для вузов. 2-е изд. М.: Финансы и статистика, 2006.                                                                                          
5.	Кватрани Т., Палистрает Д. Визуальное моделирование с помощью IBM Rational Software Architect и UML. Пер. с англ. М.: КУДИЦ-ПРЕСС, 2007. 

Дополнительная литература 

1.	Shari Lawrence Pfleeger; Joanne M. Atlee.  Software Engineering: Theory and Practice. Rand corporation Prentice Hall. 2005.
2.	Зиглер К.. Методы проектирования программных систем. Пер. с англ. М .: Мир, 1985. 
3.	Кулямин В. В.  Технологии программирования. Компонентный подход. [Электронный ресурс]. Режим доступа: http://lib.mdpu.org.ua/e-book/vstup/L/Jogolev.pdf
4.	Таненбаум Э. Современные операционные системы. 4-е изд. СПб.: Питер, 2006. 
5.	Турский В. Методология программирования. Пер. с англ. М .: Мир, 1981. 
6.	Халл Э., Джексон К., Дик Д. Разработка и управление требованиями. Практическое руководство пользователя. Telelogic, 2005.
7.	Хьюз Дж., Мичтом ДЖ. Структурный подход к программированию. Пер. с англ. М .: Мир, 1980. 
8.	Чернышов Л.Н. Среды разработки программного обеспечения: история и перспективы. [Электронный ресурс]. Режим доступа: http://nit.miem.edu.ru/sbornik/2009-/plen/008.html
9.	Эберт К. Экскурс в историю программных технологий // Открытые системы, № 10, 2008.
10.	Полис Г., Огастин Л., Мадхар Д. Разработка программных проектов: на основе Rational Unified Process (RUP). М.: ООО «Бином-Пресс», 2009.
11.	Ксензов М. Рефакторинг архитектуры программного обеспечения: выделение слоев // М.: ИСП РАН, 2004.