Курс Проектирование программных систем (осень 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.
Примеры и методички
Перечень задач (предварительный)
Формирование оценки по курсу
Проектный трек
Практический трек
Теоретический трек
Инструменты моделирования
Для подготовки заданий допускается использовать
- 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
Хританков Антон Сергеевич, автор курса, читает лекции по курсу и ведет теоретический трек
Андрианов Андрей Иванович, ведет семинары по курсу
Межуев Игорь Юрьевич, ведет семинары по курсу
В прошлом семинары по курсу вели
Ахтямов Павел Ибрагимович
Старичков Никита Юрьевич
Штукатуров Алексей Николаевич
Сергей Зыков Викторович
Шестаков Роман
Ивахненко Андрей Александрович