pps

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
pps [2018/08/31 14:52] – [Перечень задач (предварительный)] userpps [2026/08/29 07:59] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +====== Курс Проектирование программных систем (осень 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|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, взять можно на сайте [[http://www.modelio.org/|www.modelio.org]]
 +  * ТОДО по решению семинариста
 +
 +===== Литература =====
 +
 +Основная литература:
 +
 +  - М. Фаулер. UML. Основы. Третье издание. (любой издатель)
 +  - Ф. А. Новиков, Д. Ю. Иванов. Моделирование на UML. Теория, практика, видеокурс
 +  - Роберт С. Мартин. Гибкая разработка программ на Java и C++: принципы, паттерны и методики. - М.:Диалектика, 2017
 +  - Грейди Буч, Джеймс Рамбо, Айвар Джекобсон. Язык UML. Руководство пользователя 2-е Изд.
 +  - Нотация UML 2 {{uml2-notation.zip|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/|http://www.intuit.ru/catalog/se/objectprog/]])
 +  - InformIT. Статьи по ИТ и разработке  (www.informit.com)
 +  - Спецификация UML 2.5 на сайте OMG. ([[http://www.omg.org/spec/UML/2.2/|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|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|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|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|http://c2.com/doc/oopsla89/paper.html]])
 +  - Doug Rosenberg, Kendall Scott, The ICONIX Process, ([[http://www.informit.com/articles/printerfriendly.aspx?p=167902|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|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|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|http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf]]
 +  - *D. Greer, Interactive Application Architecture, [[http://aspiringcraftsman.com/2007/08/25/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?AntiPatternsCatalog]]
 +  - Паттерны обработки ошибок, [[http://c2.com/cgi/wiki?ExceptionPatterns|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/|http://aspiringcraftsman.com/2007/08/25/interactive-application-architecture/]]
 +  - Pattern-Oriented Software Architecture (несколько томов), [[http://www.cs.wustl.edu/~schmidt/POSA/|http://www.cs.wustl.edu/~schmidt/POSA/]]
 +  - C++ Idioms, [[http://en.wikibooks.org/wiki/More_C++_Idioms|http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms]]
 +  - Linda Rising - Patterns Almanac 2000, [[http://www.smallmemory.com/almanac/|http://www.smallmemory.com/almanac/]]
 +
 +===== Преподаватели =====
 +
 +Контактный адрес: course [at] objectoriented.ru
 +
 +**Хританков Антон Сергеевич**, автор курса, читает лекции по курсу и ведет теоретический трек
 +
 +**Андрианов Андрей Иванович**, ведет семинары по курсу
 +
 +**Межуев Игорь Юрьевич**, ведет семинары по курсу
 +
 +В прошлом семинары по курсу вели
 +
 +**Ахтямов Павел Ибрагимович**
 +
 +**Старичков Никита Юрьевич**
 +
 +**Штукатуров Алексей Николаевич**
 +
 +**Сергей Зыков Викторович**
 +
 +**Шестаков Роман**
 +
 +**Ивахненко Андрей Александрович**