Программа курса ПИ (2015–2016 учебный год), весенний семестр

Лекции в весеннем семестре охватывают три темы:

NB. Лекции взяты из предыдущего года, так что их номера могут не совпадать с фактическими.

1. Дополнительные процессы разработки ПО

Название Ссылка
18 Управление изменениями и версиями ПО PDF
19 Управление построением и выпусками PDF
20 Документирование ПО PDF
21 Инженерия качества PDF
22 Управление программным проектом PDF
23 Усовершенствование процессов разработки
Темы для самостоятельной работы
  1. Сравнение систем управления версиями ПО.
  2. Системы автоматического построения для современных сред разработки (Maven, Grunt, Gradle и др.).
  3. Системы зависимостей в современных средах разработки (Python setuptools, npm, Bower и др.).
  4. Системы генерации документации в языках программирования и создание плагинов для этих систем.
  5. Прикладные инструменты автоматизации процессов инженерии качества.
  6. Особенности планирования программного проекта в гибкой методологии разработки.
  7. Автоматизация усовершенствования процессов разработки ПО.
Контрольные вопросы
  1. Обзор процессов управления конфигурацией программного обеспечения.
  2. Идентификация элементов конфигурации.
  3. Процессы управления изменениями в разработке ПО. Запросы на изменение.
  4. Основные понятия управления версиями.
  5. Централизованные и распределенные системы управления версиями.
  6. Основы распределенного управления версиями на примере системы Git.
  7. Проблематика процессов построения программной системы. Виды инструментов построения.
  8. Основные понятия построения ПО. Цели и зависимости.
  9. Программа make.
  10. Программа Apache Ant.
  11. Основные принципы непрерывной интеграции.
  12. Жизненный цикл выпусков программного обеспечения.
  13. Версии ПО; их связь с системами управления версиями. Семантическая нумерация.
  14. Роль документирования в процессах разработки программного обеспечения.
  15. Типы документации. Документация на продукты и процессы разработки.
  16. Особенности документирования в гибкой методологии разработки.
  17. Основные принципы создания документации. Форматы документации.
  18. Инструменты документирования и генерирования документации в языках программирования и средах разработки.
  19. Основы инженерии качества программного обеспечения. Оценка качества.
  20. Составные процессы управления качеством ПО.
  21. Роль стандартов в разработке программных систем. Стандарт ISO 9001.
  22. Обеспечение качества. Инспекции кода и парное программирование.
  23. Модели и характеристики качества ПО.
  24. Понятие метрик качества.
  25. Цели и проблематика управления программным проектом.
  26. Понятие рисков при разработке ПО. Категории и примеры рисков.
  27. Процессы управления рисками.
  28. Планирование проекта. Проектный план и другие планы в традиционной разработке ПО.
  29. Роль планирования в гибкой методологии разработки.
  30. Экспертные и алгоритмические методы оценки затрат на разработку.
  31. Проблематика усовершенствования процессов разработки ПО.
  32. Процесс усовершенствования разработки.
  33. Измерение и анализ процессов разработки.
  34. Внесение изменений в процессы разработки.
  35. Многоуровневые и непрерывные модели CMMI.
Литература
  1. Лаврищева Е.М. Программная инженерия. Учебник. — К.: Академпериодика. — 2008. — 319 с.
  2. Основы инженерии качества программных систем / Андон Ф.И., Коваль Г.И., Коротун Т.М. и др. — К: Академпериодика. — 2007. — 680с.
  3. Sommerville I. Software engineering, 9th ed. — Boston, Massachusetts: Addison-Wesley. — 2011. — 790 p.
  4. Tian J. Software quality engineering. — Hoboken, New Jersey: John Wiley & Sons. — 2005. — 440 p.
  5. Pressman R.S. Software engineering: a practitioner’s approach. — Basingstoke: Palgrave Macmillan. — 2005. — 880 p.
  6. Pfleeger S.L., Atlee J.M. Software engineering: theory and practice. — Upper Saddle River, New Jersey: Prentice Hall. — 2010. — 756 p.
  7. Duvall P.M., Matyas S., Glover A. Continuous integration: improving software quality and reducing risk. — Pearson Education. — 2007. — 336 p.
  8. Smart J.F. Jenkins: the definitive guide. — O’Reilly Media. — 2011. — 404 p.
  9. Sonatype Company. Maven: the definitive guide. — O’Reilly Media. — 2008. — 470 p.
  10. Chacon S. Pro Git. — Apress. — 2009. — 288 p.
  11. O’Sullivan B. Mercurial: the definitive guide. — O’Reilly Media. — 2009. — 284 p.
  12. Javadoc Tool
  13. Doxygen
  14. CMMI for development, version 1.3
  15. Grunt: the JavaScript task runner
  16. Npm

2. Интероперабельность и КПИ

Название Ссылка
24 Интерфейсы в программировании PDF
25 Интерфейсы и типы данных: общие положения PDF
26 Интерфейсы и типы данных: системы типов данных PDF
27 Интероперабельность PDF
28 Повторное использование в разработке ПО
29 Инженерия компонентов повторного использования
Темы для самостоятельной работы
  1. Инверсия управления в современных платформах разработки.
  2. Интерфейсы внешних функций в средах программирования.
  3. Агрегационные типы данных в языках программирования.
  4. Функции первого класса.
  5. Смеси (traits, mixins) как промежуточное звено между интерфейсами и наследованием.
  6. Ковариантность и контравариантность типов данных в языках программирования.
  7. Средства межпроцессного взаимодействия в операционных системах.
  8. Особенности повторного использования ПО с открытым исходным кодом.
  9. Средства инженерии КПИ в современных средах разработки.
Контрольные вопросы
  1. Использование интерфейсов в программировании. Аппаратные и программные (в широком понимании) интерфейсы.
  2. Отличия и общие черты бинарных и программных интерфейсов (ABI и API).
  3. Бинарные программные интерфейсы: характеристика и области применения.
  4. Инверсия управления.
  5. Виртуализация как способ взаимодействия разноязычных программ.
  6. Интерфейс внешних функций.
  7. Взаимосвязь между интерфейсами и типами данных.
  8. Интерфейсы типов в парадигме ООП.
  9. Стандарт ISO 11404. Классификация типов данных.
  10. Генерируемые та агрегигрованные типы данных.
  11. Иерархии типов данных в языках программирования.
  12. Функции как тип данных.
  13. Безопасность типов и безопасность памяти.
  14. Сильная и слабая типизация.
  15. Статическая и динамическая типизация.
  16. Совместимость типов. Виды типизации по совместимости: структурная, номинальная, утиная.
  17. Приведения типов данных.
  18. Виды полиморфизма.
  19. Полиморфизм подтипов. Принцип подстановки Барбары Лисков.
  20. Полиморфизм и наследование в ООП.
  21. Ковариантность, контравариантность и инвариантность типов данных.
  22. Понятие интероперабельности. Проблемы, решаемые за счет интероперабельности.
  23. Межпроцессное взаимодействие в POSIX / System V.
  24. Общая характеристика и классификация промежуточного ПО (middleware).
  25. Удаленный вызов процедур (RPC) и его реализации.
  26. Общая структура системы CORBA.
  27. Язык описания интерфейсов OMG IDL.
  28. Очереди сообщений.
  29. Понятие повторного использования в разработке ПО. Виды повторного использования.
  30. Факторы, влияющие на внедрение повторного использования. Примеры областей разработки с повторным использованием.
  31. Каркасы приложений (application frameworks). Использование каркасов для разработки веб-приложений.
  32. Технологические линии разработки ПО.
  33. Разработка для повторного использования. COTS.
  34. Основы программной инженерии с компонентами повторного использования.
  35. Характеристики КПИ и способы их достижения.
  36. Интерфейсы КПИ.
  37. Модели КПИ. Использование и развертывание компонентов.
  38. Особенности разработки компонентов для повторного использования.
  39. Композиции КПИ. Роль языков спецификации в создании и тестировании композиций.
Литература
  1. Лаврищева Е.М. Программная инженерия. Учебник. — К.: Академпериодика. — 2008. — 319 с.
  2. Sommerville I. Software engineering, 9th ed. — Boston, Massachusetts: Addison-Wesley. — 2011. — 790 p.
  3. Gamma E., Helm R., Johnson R., Vlissides J. Design patterns. — Upper Saddle River, New Jersey: Pearson Education. — 1994. — 395 p.
  4. Heineman G.T., Councill W.T. Component-based software engineering. — Boston, Massachusetts: Addison-Wesley. — 2001. — 818 p.
  5. Pressman R.S. Software engineering: a practitioner’s approach. — Basingstoke: Palgrave Macmillan. — 2005. — 880 p.
  6. Ахо А.В., Хопкрофт Дж., Ульман Дж.Д. Структуры данных и алгоритмы. — Изд. дом «Вильямс». — 2000. — 384 с.
  7. 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.
  8. Pfleeger S.L., Atlee J.M. Software engineering: theory and practice. — Upper Saddle River, New Jersey: Prentice Hall. — 2010. — 756 p.
  9. Szyperski C. Component software: beyond object-oriented programming. — Upper Saddle River, New Jersey: Pearson Education. — 2002. — 589 p.
  10. Abelson H., Sussman G.J., Sussman J. Structure and interpretation of computer programs. — Cambridge, Massachusetts: MIT Press. — 1996. — 684 p.
  11. Ho C., Harrop R., Schaefer C. Pro Spring. — Apress. — 2014. — 728 p.
  12. Aleksy M., Korthaus A., Schader M. Implementing distributed systems with Java and CORBA. — Springer. — 2005. — 346 p.
  13. Java EE at a glance
  14. Goldt S., var der Meer S., Burkett S., Welsh M. The Linux Programmer’s Guide.

3. Разработка современных программных систем

Название Ссылка
30 Хранение данных в приложениях PDF
31 Разработка распределенных приложений
32 Сервисная архитектура приложений. Веб-сервисы PDF
33 Введение в облачные вычисления PDF
34 Облачные вычисления и BigData PDF
Темы для самостоятельной работы
  1. Системы типа ActiveRecord и DataMapper в современных платформах разработки ПО.
  2. Децентрализованные сети. Internet of Things. Блокчейн.
  3. Платформы для разработки SOAP- и REST-сервисов.
  4. Асинхронный обмен данными с веб-сервисами. Веб-сокеты. Фреймворк Node.js.
  5. Анализ современных платформ IaaS, PaaS, SaaS.
  6. Знакомство с каркасами для распределенных вычислений (Hadoop, Spark).
  7. Базы данных NoSQL.
Контрольные вопросы
  1. Способы представления данных в программах. Задача хранения данных.
  2. Процесс сериализации данных. Сериализация в языках программирования.
  3. Понятие схемы данных. Верификация в соответствии со схемой.
  4. Формат XML. Инструменты для работы с XML.
  5. Формат JSON. Инструменты для работы с JSON.
  6. Объектно-реляционные отображения.
  7. Шаблоны ActiveRecord и DataMapper.
  8. Преимущества и недостатки распределенных приложений.
  9. Модели взаимодействия в распределенных системах на основе процедурных вызывов и сообщений.
  10. Модель «клиент — сервер». Тонкие и толстые клиенты.
  11. Многоуровневая клиент-серверная архитектура и ее использование в веб-приложениях.
  12. Архитектура распределенных компонентов.
  13. Одноранговая (peer-to-peer) архитектура.
  14. Сервис-ориентированная архитектура, ее преимущества и недостатки.
  15. Понятие веб-сервисов. Разработка с веб-сервисами. Интеграция сервисов.
  16. SOAP-сервисы. Язык спецификации WSDL.
  17. Основные принципы архитектури REST.
  18. Особенности реализации REST-сервисов.
  19. Интерфейсы SOAP- та REST-сервисов в средах программирования. Синхронный и асинхронный вызов методов сервисов.
  20. Основные положения облачной архитектуры.
  21. Технологии, от которых зависит облачная архитектура.
  22. Уровни облачной архитектуры.
  23. Модели развертывания облачной архитектуры. Примеры открытых облачных сервисов.
  24. Обзор понятия BigData.
  25. Шаблон распределенной обработки данных MapReduce.
  26. Облачные файловые системы.
  27. Введение в облачные базы данных. Понятие NoSQL.
  28. Применение NoSQL-баз данных в облачных вычислениях.
  29. Каркасы облачных приложений. Apache Hadoop.
Литература
  1. Лаврищева Е.М. Программная инженерия. Учебник. — К.: Академпериодика. — 2008. — 319 с.
  2. Sommerville I. Software engineering, 9th ed. — Boston, Massachusetts: Addison-Wesley. — 2011. — 790 p.
  3. Hohpe G., Woolf B. Enterprise Integration Patterns. — Boston, Massachusetts: Addison-Wesley. — 2012. — 735 p.
  4. Coulouris G.F., Dollimore J., Kindberg T. Distributed systems: concepts and design. — Upper Saddle River, New Jersey: Pearson Education. — 2011. — 927 p.
  5. Bell M. Service-oriented modeling. — Hoboken, New Jersey: John Wiley & Sons. — 2008. — 368 p.
  6. Fowler M. Patterns of enterprise application architecture. — Boston, Massachusetts: Addison-Wesley. — 2012. — 557 p.
  7. Buyya R., Broberg J., Goscinski A.M. Cloud computing: principles and paradigms. — Hoboken, New Jersey: John Wiley & Sons. — 2010. — 664 p.
  8. Krafzig D., Banke K., Slama D. Enterprise SOA: service-oriented architecture best practices. — Upper Saddle River, New Jersey: Prentice Hall. — 2005. — 382 p.
  9. Ho C., Harrop R., Schaefer C. Pro Spring. — Apress. — 2014. — 728 p.
  10. White T. Hadoop: the definitive guide, 4th ed. — O’Reilly Media. — 2015. — 756 p.
  11. CouchDB: the definitive guide. — O’Reilly Media. — 2010. — 272 p.
  12. Java EE at a glance
  13. Apache Spark — lightning-fast cluster computing
  14. Redis
  15. Heroku

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *