Осенний семестр
Список вопросов на зачете
- Цель и составляющие программной инженерии.
- Дисциплины программной инженерии.
- Области стандарта SWEBOK.
- Модели жизненного цикла ПО. Стандарт ISO/IEC 12207.
- Классификация требований к ПО. Процессы инженерии требований.
- Моделирование программных систем. Типы и назначение моделей.
- Унифицированный язык моделирования (UML) и его роль в разработке ПО.
- Виды архитектуры ПО, границы их применения.
- Классификация и назначение шаблонов проектирования. Примеры шаблонов.
- Парадигмы и методы программирования.
- Порождающее программирование. Язык описания предметных областей (DSL).
- Теоретические методы программирования.
Весенний семестр
Список вопросов для экзамена
- Эволюция ПО. Сопровождение как частный случай эволюции. Типы сопровождения: исправление дефектов, адаптация, совершенствование.
- Реинженерия и рефакторинг программ.
- Документирование ПО. Формы документации. Автоматические генераторы документации: javadoc, doxygen.
- Понятие интерфейса в программной инженерии. Двоичные и программные интерфейсы.
- Связывание компонентов приложения с помощью виртуальных машин. Примеры виртуальных машин: Java Virtual Machine, Common Language Runtime.
- Интерфейсы внешних функций. Java Native Interface.
- Теория типов данных. Типобезопасность и безопасность памяти. Классификация систем типов данных в языках программирования: статическая и динамическая типизация; номинальная, структурная и утиная типизация.
- Приведение типов данных и полиморфизм. Виды полиморфизма: специальный, параметрический и полиморфизм подтипов. Отличие между наследованием и полиморфизмом.
- Интерфейсы в языках программирования. Интерфейс как контракт. Принцип подстановки Барбары Лисков.
- Ковариантность и контравариантность параметрических конструкций в языках программирования (Java, C#).
- Фундаментальные типы данных согласно стандарту ISO 11404. Типы данных, независимые от ЯП.
- Понятие интероперабельности компонентов программных систем. Низкоуровневая и высокоуровневая интероперабельность.
- Архитектура посредников доступа к объектам (object request broker). Язык спецификации интерфейсов (IDL).
- Очереди сообщений. Архитектуры очереди: point to point и publish / subscribe.
- Централизованные и распределенные системы управления версиями. Git.
- Методы автоматизации сборки ПО. Утилиты make и ant.
- Управление выпусками ПО. Выпуски в контексте эволюции программных продуктов.
- Основные принципы непрерывной интеграции (continuous integration).
- Управление качеством программных систем. Модели качества.
- Измерение программного обеспечения. Метрики ПО и их связь с характеристиками качества.
- Управление программным проектом. Планирование разработки.
- Управление рисками при разработке ПО.
- Постоянное хранение данных (data persistence). Сериализация данных. Обзор стандартов XML и JSON.
- Объектно-реляционные отображения (ORM). Шаблоны проектирования, связанные с ORM: ActiveRecord, DataMapper.
- Сервисная архитектура приложений. Веб-сервисы на основе SOAP / WSDL.
- Понятие REST (передача репрезентативного состояния) для сервисов. Отличительные особенности веб-сервисов на основе REST.
- Понятие BigData. Базы данных NoSQL.
- Вспомогательные технологии для облачных вычислений. Классификация облачных архитектур.
Материалы
- Лаврищева Е.М., Петрухин В.А. Методы и средства программного обеспечения. — М.: Мин. образования РФ. — 2007. — 415 с.
Публикуется с разрешения авторов. - Лавріщева К.М. Програмна інженерія. — К.: Академперіодика. — 2008. — 319 с.
Публикуется с разрешения автора. - Sommerville I. Software engineering, 9th ed. — Boston, Massachusetts: Addison-Wesley. — 2011. — 790 p.
- Pfleeger S.L., Atlee J.M. Software engineering: theory and practice. — Upper Saddle River, New Jersey: Prentice Hall. — 2010. — 756 p.
- Guide to the software engineering body of knowledge, version 3.0 / ed. by Bourque P., Fairley R.E. — IEEE Computer Society. — 2014. — URL: http://swebok.org/.
- McConnell S. Code complete. — Upper Saddle River, New Jersey: Microsoft Press. — 2009. — 960 p.
- Pressman R.S. Software engineering: a practitioner’s approach. — Basingstoke: Palgrave Macmillan. — 2005. — 880 p.
- Object-oriented analysis and design with applications / Booch G., Maksimchuck R.A., Engle M.W. et al. — Upper Saddle River, New Jersey: Pearson Education. — 2007. — 720 p.
- Jacobson I., Ng P.-W. Aspect-oriented software development with use cases. — Boston, Massachusetts: Addison-Wesley. — 2005. — 418 p.
- Bell M. Service-oriented modeling. — Hoboken, New Jersey: John Wiley & Sons. — 2008. — 368 p.
- Hansen M.R., Rischel H. Functional programming using F#. — Cambridge: Cambridge University Press. — 2013. — 361 p.
- Fowler M., Beck K., Brant J., Opdyke W., Roberts D. Refactoring: improving the design of existing code. — Boston, Massachusetts: Addison-Wesley. — 2012. — 455 p.
- Hohpe G., Woolf B. Enterprise Integration Patterns. — Boston, Massachusetts: Addison-Wesley. — 2012. — 735 p.
- Fowler M. Patterns of enterprise application architecture. — Boston, Massachusetts: Addison-Wesley. — 2012. — 557 p.
- Shore J., Warden S. The art of agile development. — Sebastopol, California: O’Reilly Media. — 2008. — 409 p.
- Wiegers K., Beatty J. Software requirements. — Upper Saddle River, New Jersey: Pearson Education. — 2013. — 672 p.
- Myers G.J., Sandler C., Badgett T. The art of software testing. — Hoboken, New Jersey: John Wiley & Sons. — 2011. — 256 p.
- Tian J. Software quality engineering. — Hoboken, New Jersey: John Wiley & Sons. — 2005. — 440 p.
- Buyya R., Broberg J., Goscinski A.M. Cloud computing: principles and paradigms. — Hoboken, New Jersey: John Wiley & Sons. — 2010. — 664 p.
- Coulouris G.F., Dollimore J., Kindberg T. Distributed systems: concepts and design. — Upper Saddle River, New Jersey: Pearson Education. — 2011. — 927 p.