====== Курс Проектирование программных систем (осень 2019)====== Консультация перед экзаменом - **ТОДО** Перейти в раздел **[[mdd:start|Библиотека по методам проектирования]]** Курс читается студентам 4 курса Факультета инноваций и высоких технологий (ФИВТ) школы ФПМИ Московского Физико-Технического Института (МФТИ). Осенний семестр 2019-2020 Форум по курсу (Q&A): * [[https://piazza.com/pps-fall2013/fall2019/ppsfall2019 | Зарегистрироваться на курс (Piazza) ]]. Ввести код ppsfall2019 * [[https://piazza.com/pps-fall2013/fall2019/ppsfall2019/home| Ссылка на форум (Piazza)]] ===== Описание курса ===== {{::pps-program-2017.pdf| Программа курса}} Целью данного курса является ознакомление студентов с основами проектирования и формирование представления о существующих методологиях проектирования программного обеспечения. В процессе обучения, студенты овладевают принципами гибкого моделирования с использованием языка UML, а также основными принципами проектирования систем, такими как абстрагирование, сокрытие информации, модульность и другими. Студенты знакомятся со структурным и объектно-ориентированным подходами к проектированию. Темы и подробный план лекций выкладывается [[lectures2016|здесь]] ===== Семестровая контрольная работа ===== Проводится на семинаре **13.12.2019** и включает три части: - Тест на UML, вопросы похожи на те, что в экзамене OCUP-Fundamental. (см. google.com/search?q=zertifizierung.testfragen.fundamental.pdf) - Задачи на проектирование с применением UML. - Вопросы по методам проектирования. Список тем 2019 года {{::exam_topics-2019.doc|здесь}} ===== Учебный проект ===== **[[courseproject|Описание учебных проектов и требований к ним.]]** Адрес для отправки решений заданий: **course [at] objectoriented.ru**. ==== Примеры и методички ==== * Пример модели (задание 1 + задание 2), демонстрирующий основные диаграммы и связи между элементами модели {{::pps.spring2011-theater.zip| Театральная касса (пример)}}. * Пример отчета по первому заданию с подробными пояснениями по структуре и разделам {{::pps-report-analysis-20121002.doc| Театральная касса (пример отчета)}} * Методичка по выполнению проектов с пояснениями и примерами {{::uml-studreport.pdf|здесь}} * Критерии оценки заданий по проектам с пояснениями и рекомендациями {{::uml-verification-proc.pdf|здесь}} * Методичка по SOLID {{::ood-khritankov_-_20161207-fix.pdf|здесь}} * {{::bigpicture.png?linkonly| The Big Picture }} ==== Перечень задач (предварительный) ==== ^#^Название^Описание^ |1.| [[design:SmartContract|СмартРитейл]] | Интегрируем недоверчивых участников рынка ритейла с помощью блокчейна | |2.| [[design:OkFridge|Ok, Fridge]] | Холодильник доставит к дивану соки и воды под настроение, дозакажет в магазине | |3.| [[design:AutoFill|ЗалейсяIS]] | Управляем сетью авто-автозаправок, работающих без персонала | |4.| [[design:DocFree|БезВрача]] | Контролируем соблюдение условий медицинского страхования, и вообще соблюдения правил ЗОЖ | |5.| [[design:ShareCar|Перетачка]] | Едем вместе на чужой машине и везем посылки. Система обеспечивает работу сервиса | |6.| [[design:QACall|Как?Никак!]] | Модернизированный CallЦентр, роботы отвечают на типовые вопросы и сами ведут FAQ | |7.| [[design:ShipAll|ДоставимВсе]] | Служба доставки формирует из товаров заказы и перемещает по маршрутам. Маршруты формируются вручную, автоматически как план, динамически. Учет веса и стоимости при планировании | |8.| [[design:PhystechTaxi|Физтех-Такси]] | Агрегатор такси со скидкой на поездки в МФТИ | **Использование проектов инновационного практикума** По согласованию с семинаристом и ментором проекта инновационного практикума. Перечень принятых задач будет размещен на сайте ниже. См. также [[design:OldCases|задачи прошлых лет]] ===== Формирование оценки по курсу ===== ==== Проектный трек ==== **Итоговый балл** формируется следующим образом: ИБ = 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. Руководство Майкрософт по проектированию архитектуры приложений, [[http://download.microsoft.com/documents/rus/msdn/ры_приложений_полная_книга.pdf| на сайте Майкрософт]] Интернет-источники: - Введение в гибкое моделирование (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 **Хританков Антон Сергеевич**, автор курса, читает лекции по курсу и ведет теоретический трек **Андрианов Андрей Иванович**, ведет семинары по курсу **Межуев Игорь Юрьевич**, ведет семинары по курсу В прошлом семинары по курсу вели **Ахтямов Павел Ибрагимович** **Старичков Никита Юрьевич** **Штукатуров Алексей Николаевич** **Сергей Зыков Викторович** **Шестаков Роман** **Ивахненко Андрей Александрович**