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

Курс читается студентам 3 курса Факультета Инноваций и Высоких Технологий (ФИВТ) Московского Физико-Технического Института (МФТИ). Осенний семестр 2009-2010

Описание курса

Программа курса

Целью данного курса является ознакомление студентов с основами проектирования и формирование представления о существующих методологиях проектирования программного обеспечения.

В процессе обучения, студенты овладевают принципами гибкого моделирования с использованием языка UML, а также основными принципами проектирования систем, такими как абстрагирование, сокрытие информации, модульность и другими. Студенты знакомятся со структурным и объектно-ориентированным подходами к проектированию.

Учебный проект

Проект должен быть оформлен в виде архива с именем <№ группы>-<Проект>-<Фамилия1Фамилия2Фамилия3>.zip (пример 793-ИнПлан-ИвановСидоров.zip) включающий:

  1. Файл PDF или DOC (.doc, .odt) с описанием проекта: постановка задачи, диаграммы, текст вариантов использования, обоснование, артефакты
  2. Папка с проектом реализованным в среде моделирования

Проект присылается один раз. Он может быть возвращен на доработку, если имеются ошибки в оформлении. Частично выполненные проекты по которым спрашиваются комментарии будут рассматриваться как завершенные. Вопросы можно задавать, но конкретные (а не вида "какие у нас здесь ошибки, мы исправим и пришлем?"), в том числе на семинарах.

Задание 1

Должники по заданиям (на 16 ноября 2009)

Для сдачи задания №1 необходимо решение на pps.fall2009@yandex.ru до 12.00 10.11.2009.

Задание включает:

  1. Модель анализа - диаграммы вариантов использования, диаграммы классов
  2. Описание ключевых вариантов использования в текстовом виде (4-6 штук)
  3. Артефакты разработки (допустимо фотографии с бумаги): списки потенциальных классов, карточки CRC, промежуточные варианты диаграмм

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

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

Задержка отправки заадния приводит к снижению оценки на 0.5 балла каждые 3 дня

Задание 2

Для сдачи задания №2 необходимо решение на pps.fall2009@yandex.ru до 12.00 15.12.2009. Для сдачи задания выделяется два семинара 16, 23 и лекция 23 декабря.

Суть второго задания состоит в реализации модели 1 задания на выбранной платформе. Платформа включает в себя набор классов, реализующий функции доступа к базам данных, коммуникации по сети, рисование пользовательского интерфейса и решающие другие вспомогательные задачи. Для каждого проекта классы, входящие в платформу оговариваются отдельно. Обратитесь к своему семинаристу для согласования списка классов платформы реализации.

Задание включает:

  1. Задание 1 (модель анализа, описание вариантов использования, диаграммы, обоснование)
  2. Модель реализации - диаграммы вариантов использования, диаграммы классов
  3. Интерпретация ключевых взаимодействий/конечных автоматов динамической модели (2-3 штуки)
  4. Обоснование применения шаблонов проектирования и других проектировочных решений

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

Отдельное внимание следует уделить моделированию поведения. Лучшим кандидатом для моделирования является описание реализации ключевых вариантов использования с помощью взаимодействий, схем состояний или деятельности. Одним из ключевых результатов является разработка согласованных статической и динамической моделей (то есть если при описании взаимодействия мы вызываем метод принять() у класса А, он должен быть в статической модели).

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

Перечень задач

#НазваниеСложностьОписание
1. БилетыОнлайн
Выбрано
Высокая Бронирование и продажа билетов онлайн. Просмотр программы мероприятий.

Особенности
Решение должно быть оригинальным.
2. БезопасныйПереезд
Выбрано
Средняя ПО управления шлагбаумом на переезде. Имеются датчики приближения поезда. Подумать, какие еще датчики нужны. Управлять нужно светофорами, шлагбаумом, подумать чем еще.
3. УниЛифт
Выбрано
Высокая ПО управления лифтом многоэтажного дома. Кроме стандартного управления, нужны кнопки вызова диспетчера, датчик задымления, управление дверьми и возможность использования с различными алгоритмами обхода нажатых на этажах кнопок. ПО должно работать с разными лифтами, домами и датчиками.
4. АТМ
Выбрано
Средняя Банкомат. Выдача денег по пластиковой карте, оплата услуг.

Особенности Обеспечение целостности данных. Использование транзакций
5. CallЦентр
Выбрано
Средняя Прием звонков, их классификация через голосовое меню, управление операторами. Отслеживание историй звонков от клиентов.
Варианты предметной области: техподдержка, мобильная связь, покупки по телефону.
6. НаКурорт
Выбрано
Высокая Удаленное бронирование номеров в гостиницах на курортах. Классификация по типу клиентов и составление программы пребывания в зависимости от типа (студенты, в возрасте, семья). Работа с гостиницами и турбюро.
7. ГрантЭкспресс Средняя Регистрация, обработка, рецензирование заявок на гранты через Интернет. Составление и ведение пакетов документов. Проведение экспертизы, учет экспертов и пользователей.

Особенности Реальная система доступна по адресу grant.rfbr.ru
8. РестоСам
Выбрано
Высокая Официантов - в консультанты. Самостоятельный заказ блюд из меню с телефона по вай-фай, синий зуб, вап или Интернет, заранее, до прихода в ресторан. Узнавание клиентов, составление предпочтений, подбор ресторанов по предпочтениям/доступности.
9. ИнПлан
Выбрано
Средняя Студенты могут выбирать себе курсы в университете. Для получения специализации нужно прослушать определенный набор базовых курсов и несколько дополнительных на общую сумму часов. Все курсы платные, студент может расходовать свой бюджет на разные курсы. Профессора могут ставить оценки, студенты отслеживать свою успеваемость.
10. Ресурсовед Средняя Библиотека управления процессом распределенного решения задач оптимизации методами типа Монте-Карло (поиск новых лекарств, криптография,...). Поддерживает модели вычислительной среды, заказывает/удаляет ресурсы, распределяет нагрузку.

Особенности Основное направление моих научных изысканий, поэтому кое-какие бонусы при сдаче проекта :)
11. СдайДоклад Средняя Система поддержки сбора докладов научной конференции МФТИ. Поддержка работы с авторами, представителями факультетов, секретарями секций, рецензентами, типографией и оргкомитетом. Правила для авторов приведены тут

Особенности Может это следующая версия системы? Кто знает...

Литература

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

  1. М. Фаулер. UML. Основы. Третье издание. (любой издатель)
  2. Грейди Буч, Джеймс Рамбо, Айвар Джекобсон. Язык UML. Руководство пользователя 2-е Изд.
  3. Нотация UML 2 uml2-notation.zip
  4. Гамма Э., Хелм Р., Джонсон Р. Приемы объектно-ориентированного проектирования. Паттерны проектирования, любое издание.
  5. R. Pressman. Software Engineering: A Practitioner's Approach, 6th Ed. - McGraw Hill, 2005
  6. С. А. Орлов. Технологии разработки программного обеспечения. Разработка сложных программных систем. Для студентов и преподавателей высших учебных заведений. – Питер, 2004. – 527 с.
  7. Л. Басс, П. Клементс, Р. Кацман. Архитектура программного обеспечения на практике. 2-е изд. – Л.:Питер, 2006, 576 с.
  8. C. Амблер, Гибкие Технологии: Экстремальное Программирование и Унифицированный Процесс Разработки. - Питер, 2005

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

  1. Б. Мейер, Объектно-ориентированное конструирование программных систем. - Русская Редакция, 2005
  2. B. Liskov, J. Guttag. Program Development in Java: Abstraction, Specification and Object-Oriented Design. - Addison-Wesley, 2000

Интернет-источники:

  1. Введение в гибкое моделирование (www.agilemodeling.com)
  2. INTUIT.RU: Интернет-Университет Информационных Технологий: Программирование: Объектно-ориентированное программирование (http://www.intuit.ru/catalog/se/objectprog/)
  3. InformIT. Статьи по ИТ и разработке (www.informit.com)
  4. Спецификация UML 2.2 на сайте OMG. (http://www.omg.org/spec/UML/2.2/)

Статьи методам проектирования:

  1. N. Wirth. Program Development by Stepwise Refinement. (http://www.inf.ethz.ch/personal/wirth/Articles/StepwiseRefinement.pdf)
  2. D. Parnas. On the Criteria to be used in Decomposing System into Modules (http://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf)

Преподаватели

Хританков Антон Сергеевич, аспирант кафедры УРВиИТ, автор курса. Читает лекции по курсу и ведет семинары у групп 793 и 794. Email: anton[dot]khritankov [at} acm.org

Ивахненко Андрей Александрович, аспирант кафедры МОУ ФУПМ. Ведет семинары у групп 791б и 792.

postgrad/khritankov/design.txt · Последние изменения: 2009/11/28 14:06 anton.khritankov
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0