Table of Contents

Курс Проектирование программных систем (осень 2019)

Консультация перед экзаменом - ТОДО

Перейти в раздел Библиотека по методам проектирования

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

Форум по курсу (Q&A):

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

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

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

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

Темы и подробный план лекций выкладывается здесь

Семестровая контрольная работа

Проводится на семинаре 13.12.2019 и включает три части:

  1. Тест на UML, вопросы похожи на те, что в экзамене OCUP-Fundamental. (см. google.com/search?q=zertifizierung.testfragen.fundamental.pdf)
  2. Задачи на проектирование с применением UML.
  3. Вопросы по методам проектирования.

Список тем 2019 года здесь

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

Описание учебных проектов и требований к ним.

Адрес для отправки решений заданий: course [at] objectoriented.ru.

Примеры и методички

Перечень задач (предварительный)

#НазваниеОписание
1. СмартРитейл Интегрируем недоверчивых участников рынка ритейла с помощью блокчейна
2. Ok, Fridge Холодильник доставит к дивану соки и воды под настроение, дозакажет в магазине
3. ЗалейсяIS Управляем сетью авто-автозаправок, работающих без персонала
4. БезВрача Контролируем соблюдение условий медицинского страхования, и вообще соблюдения правил ЗОЖ
5. Перетачка Едем вместе на чужой машине и везем посылки. Система обеспечивает работу сервиса
6. Как?Никак! Модернизированный CallЦентр, роботы отвечают на типовые вопросы и сами ведут FAQ
7. ДоставимВсе Служба доставки формирует из товаров заказы и перемещает по маршрутам. Маршруты формируются вручную, автоматически как план, динамически. Учет веса и стоимости при планировании
8. Физтех-Такси Агрегатор такси со скидкой на поездки в МФТИ

Использование проектов инновационного практикума

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

См. также задачи прошлых лет

Формирование оценки по курсу

Проектный трек

Итоговый балл формируется следующим образом:

ИБ = 0,5 * ПР + 0,75 * КЗ,

где ПР – оценка по десятибалльной шкале за активность на семинарах, выполнение текущих домашних заданий и домашнее чтение, КЗ – оценка по десятибалльной шкале за курсовые задания (нужно сдать оба).

Практический трек

Итоговый балл рассчитывается по формуле

ИБ = 0,5 * ПР + 0,75 * КР,

где ПР – оценка по десятибалльной шкале за активность на семинарах, выполнение текущих домашних заданий и домашнее чтение, КР – оценка по десятибалльной шкале за семестровую контрольную работу.

Соответствие баллов итоговой оценке по курсу

Итоговый баллОценка за экзаменРекомендуемая оценка
От 0 до 4.0 Менее 5 от 0 до 3
от 5 до 8 от 2 до 5
от 8 до 10 от 4 до 6
От 4.1 до 6.0 Менее 5 от 1 до 5
от 5 до 7 от 3 до 7
от 7 до 10 от 5 до 8
От 6.1 до 8.0 Без сдачи от 3 до 4
Менее 4 от 2 до 6
от 4 до 6 от 5 до 7
от 6 до 10 от 6 до 9
Свыше 8.1 Без сдачи от 5 до 8
Менее 4 от 4 до 7
от 4 до 7 от 6 до 10
от 7 до 10 от 9 до 10

Получение итоговой оценки по курсу на экзамене без ответа на билет возможно в случае, если оценка за контрольную работу или задания не ниже 3 баллов.

Решение о выставлении оценки без ответа принимает преподаватель по обращению студента непосредственно на экзамене до получения билета.

Теоретический трек

Количество мест на треке ограничено - 20 человек. Преимущество тем, кто записался раньше (по дням) и тем, у кого разработка ПО не является профильным предметом.

Условия. Посещение всех кроме одной лекций и обязательная сдача экзамена. Допуск к экзамену по результатам ответа на несколько коротких вопросов по курсу.

Посещать семинары, выполнять практические задания нет необходимости.

ЭкзаменИтоговая
От 0 до 4 удовл (3-4)
От 4 до 8 хор (5-7)
От 8 до 10 отл (8+)

Инструменты моделирования

Для подготовки заданий допускается использовать

Литература

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

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

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

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

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

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

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

  1. (discussion) P. Ralph, R. Mohanani. Is Requirements Engineering Inherently Counterproductive?
  2. N. Wirth. Program Development by Stepwise Refinement. (http://www.inf.ethz.ch/personal/wirth/Articles/StepwiseRefinement.pdf)
  3. D. Parnas. On the Criteria to be used in Decomposing System into Modules (http://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf)
  4. D. Garlan, M. Shaw. An Introduction to Software Architecture (http://www.cs.cmu.edu/afs/cs/project/vit/ftp/pdf/intro_softarch.pdf)
  5. Kent Beck, Ward Cunningham. A Laboratory For Teaching Object-Oriented Thinking / OOPSLA89 (http://c2.com/doc/oopsla89/paper.html)
  6. Doug Rosenberg, Kendall Scott, The ICONIX Process, (http://www.informit.com/articles/printerfriendly.aspx?p=167902)
  7. B. Liskov. Programming with abstract data types
  8. *Friedrich Steimann, Philip Mayer. Patterns of Interface-Based Programming
  9. *Rebecca Wirfs-Brock, Object-oriented design. A responsibility-driven approach
  10. *Robert C. Sharblet, Samuel S. Cohen. The object-oriented brewery. A comparison of two object-oriented development methods
  11. *P. Krutchen. Architectural Blueprints—The “4+1” View Model of Software Architecture, (http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf)
  12. IEEE Recommended practice for architectural description of software intensive systems, (http://www.win.tue.nl/~wsinmak/Education/2II45/software-architecture-std1471-2000.pdf)
  13. *Frank DeRemer, Hans Kron. PROGRAMMING-IN-THE LARGE VERSUS PROGRAMMING-IN-THE-SMALL (google it)
  14. *The Agile Method and Other Fairy Tales (google it)
  15. *A RATIONAL DESIGN PROCESS: HOW AND WHY TO FAKE IT (google it)
  16. *Edward V. Berard. Be Careful With “Use Cases”
  17. *(beware!)Chidamber Kemerer Metrics Suite. A Measurement Theory Perspective
  18. *McCabe. A complexity measure

Паттерны

  1. Паттерны обработки ошибок, http://c2.com/cgi/wiki?ExceptionPatterns
  2. GoF. Design Patterns: elements of reusable object-oriented software
  3. Статья на c2.com про DoubleDispatch и DoubleDispatchExample,
  4. Jenifer Tidwell, Designing Interfaces
  5. Scott Ambler, Process Patterns
  6. Martin Fowler, Analysis Patterns
  7. Martin Fowler, Patterns of Enterprise Application Architecture
  8. G. Hohpe, Enterprise Integration Patterns
  9. Pattern-Oriented Software Architecture (несколько томов), http://www.cs.wustl.edu/~schmidt/POSA/
  10. Linda Rising - Patterns Almanac 2000, http://www.smallmemory.com/almanac/

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

Контактный адрес: course [at] objectoriented.ru

Хританков Антон Сергеевич, автор курса, читает лекции по курсу и ведет теоретический трек

Андрианов Андрей Иванович, ведет семинары по курсу

Межуев Игорь Юрьевич, ведет семинары по курсу

В прошлом семинары по курсу вели

Ахтямов Павел Ибрагимович

Старичков Никита Юрьевич

Штукатуров Алексей Николаевич

Сергей Зыков Викторович

Шестаков Роман

Ивахненко Андрей Александрович