Курс Проектирование программных систем (осень 2019)
Консультация перед экзаменом - ТОДО
Перейти в раздел Библиотека по методам проектирования
Курс читается студентам 4 курса Факультета инноваций и высоких технологий (ФИВТ) школы ФПМИ Московского Физико-Технического Института (МФТИ). Осенний семестр 2019-2020
Форум по курсу (Q&A):
- Зарегистрироваться на курс (Piazza) . Ввести код ppsfall2019
Описание курса
Целью данного курса является ознакомление студентов с основами проектирования и формирование представления о существующих методологиях проектирования программного обеспечения.
В процессе обучения, студенты овладевают принципами гибкого моделирования с использованием языка UML, а также основными принципами проектирования систем, такими как абстрагирование, сокрытие информации, модульность и другими. Студенты знакомятся со структурным и объектно-ориентированным подходами к проектированию.
Темы и подробный план лекций выкладывается здесь
Семестровая контрольная работа
Проводится на семинаре 13.12.2019 и включает три части:
- Тест на UML, вопросы похожи на те, что в экзамене OCUP-Fundamental. (см. google.com/search?q=zertifizierung.testfragen.fundamental.pdf)
- Задачи на проектирование с применением UML.
- Вопросы по методам проектирования.
Список тем 2019 года здесь
Учебный проект
Описание учебных проектов и требований к ним.
Адрес для отправки решений заданий: course [at] objectoriented.ru.
Примеры и методички
- Пример модели (задание 1 + задание 2), демонстрирующий основные диаграммы и связи между элементами модели Театральная касса (пример).
- Пример отчета по первому заданию с подробными пояснениями по структуре и разделам Театральная касса (пример отчета)
- Методичка по выполнению проектов с пояснениями и примерами здесь
- Критерии оценки заданий по проектам с пояснениями и рекомендациями здесь
- Методичка по SOLID здесь
Перечень задач (предварительный)
# | Название | Описание |
---|---|---|
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+) |
Инструменты моделирования
Для подготовки заданий допускается использовать
- Modelio, взять можно на сайте www.modelio.org
- ТОДО по решению семинариста
Литература
Основная литература:
- М. Фаулер. UML. Основы. Третье издание. (любой издатель)
- Ф. А. Новиков, Д. Ю. Иванов. Моделирование на UML. Теория, практика, видеокурс
- Роберт С. Мартин. Гибкая разработка программ на Java и C++: принципы, паттерны и методики. - М.:Диалектика, 2017
- Грейди Буч, Джеймс Рамбо, Айвар Джекобсон. Язык UML. Руководство пользователя 2-е Изд.
- Нотация UML 2 uml2-notation.zip
- Гамма Э., Хелм Р., Джонсон Р. Приемы объектно-ориентированного проектирования. Паттерны проектирования, любое издание.
- R. Pressman. Software Engineering: A Practitioner's Approach, 6th Ed. - McGraw Hill, 2005
- С. А. Орлов. Технологии разработки программного обеспечения. Разработка сложных программных систем. Для студентов и преподавателей высших учебных заведений. – Питер, 2004. – 527 с.
- Л. Басс, П. Клементс, Р. Кацман. Архитектура программного обеспечения на практике. 2-е изд. – Л.:Питер, 2006, 576 с.
- C. Амблер, Гибкие Технологии: Экстремальное Программирование и Унифицированный Процесс Разработки. - Питер, 2005
- Linda M. Laird and M. Carol Brennan. Software Measurement and Estimation: A Practical Approach
Дополнительная литература:
- Б. Мейер, Объектно-ориентированное конструирование программных систем. - Русская Редакция, 2005
- B. Liskov, J. Guttag. Program Development in Java: Abstraction, Specification and Object-Oriented Design. - Addison-Wesley, 2000
- Microsoft. Руководство Майкрософт по проектированию архитектуры приложений, на сайте Майкрософт
Интернет-источники:
- Введение в гибкое моделирование (www.agilemodeling.com)
- INTUIT.RU: Интернет-Университет Информационных Технологий: Программирование: Объектно-ориентированное программирование (http://www.intuit.ru/catalog/se/objectprog/)
- InformIT. Статьи по ИТ и разработке (www.informit.com)
- Спецификация UML 2.5 на сайте OMG. (http://www.omg.org/spec/UML/2.2/)
Статьи методам проектирования:
- (discussion) P. Ralph, R. Mohanani. Is Requirements Engineering Inherently Counterproductive?
- N. Wirth. Program Development by Stepwise Refinement. (http://www.inf.ethz.ch/personal/wirth/Articles/StepwiseRefinement.pdf)
- D. Parnas. On the Criteria to be used in Decomposing System into Modules (http://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf)
- D. Garlan, M. Shaw. An Introduction to Software Architecture (http://www.cs.cmu.edu/afs/cs/project/vit/ftp/pdf/intro_softarch.pdf)
- Kent Beck, Ward Cunningham. A Laboratory For Teaching Object-Oriented Thinking / OOPSLA89 (http://c2.com/doc/oopsla89/paper.html)
- Doug Rosenberg, Kendall Scott, The ICONIX Process, (http://www.informit.com/articles/printerfriendly.aspx?p=167902)
- B. Liskov. Programming with abstract data types
- *Friedrich Steimann, Philip Mayer. Patterns of Interface-Based Programming
- *Rebecca Wirfs-Brock, Object-oriented design. A responsibility-driven approach
- *Robert C. Sharblet, Samuel S. Cohen. The object-oriented brewery. A comparison of two object-oriented development methods
- *P. Krutchen. Architectural Blueprints—The “4+1” View Model of Software Architecture, (http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf)
- IEEE Recommended practice for architectural description of software intensive systems, (http://www.win.tue.nl/~wsinmak/Education/2II45/software-architecture-std1471-2000.pdf)
- M. Fowler. Who need an Achitect?, http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
- *D. Greer, Interactive Application Architecture, http://aspiringcraftsman.com/2007/08/25/interactive-application-architecture/
- *Frank DeRemer, Hans Kron. PROGRAMMING-IN-THE LARGE VERSUS PROGRAMMING-IN-THE-SMALL (google it)
- *The Agile Method and Other Fairy Tales (google it)
- *A RATIONAL DESIGN PROCESS: HOW AND WHY TO FAKE IT (google it)
- *Edward V. Berard. Be Careful With “Use Cases”
- *(beware!)Chidamber Kemerer Metrics Suite. A Measurement Theory Perspective
- *McCabe. A complexity measure
Паттерны
- Antipatterns Wiki, http://c2.com/cgi/wiki?AntiPatternsCatalog
- Паттерны обработки ошибок, http://c2.com/cgi/wiki?ExceptionPatterns
- GoF. Design Patterns: elements of reusable object-oriented software
- Статья на c2.com про DoubleDispatch и DoubleDispatchExample,
- Jenifer Tidwell, Designing Interfaces
- Scott Ambler, Process Patterns
- Martin Fowler, Analysis Patterns
- Martin Fowler, Patterns of Enterprise Application Architecture
- G. Hohpe, Enterprise Integration Patterns
- D. Greer, Interactive Application Architecture, http://aspiringcraftsman.com/2007/08/25/interactive-application-architecture/
- Pattern-Oriented Software Architecture (несколько томов), http://www.cs.wustl.edu/~schmidt/POSA/
- C++ Idioms, http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms
- Linda Rising - Patterns Almanac 2000, http://www.smallmemory.com/almanac/
Преподаватели
Контактный адрес: course [at] objectoriented.ru
Хританков Антон Сергеевич, автор курса, читает лекции по курсу и ведет теоретический трек
Андрианов Андрей Иванович, ведет семинары по курсу
Межуев Игорь Юрьевич, ведет семинары по курсу
В прошлом семинары по курсу вели
Ахтямов Павел Ибрагимович
Старичков Никита Юрьевич
Штукатуров Алексей Николаевич
Сергей Зыков Викторович
Шестаков Роман
Ивахненко Андрей Александрович