Skip to content
okoff edited this page Feb 9, 2020 · 44 revisions

Лекции

  • Лекции 1-2 Основные задачи и методы проектирования программных средств

    • Лекция 1. Роль и обязанности архитектора программных средств. Понятия аспекта в моделировании и сложности объекта проектирования. Методы оценки и измерения сложности автоматизированных систем и программных средств (IFPUG). Особенности объектно-ориентированного подхода. Объектно-ориентированный анализ (OOA), проектирование (OOD), программирование (OOP). Объектно-ориентированные языки программирования.
    • Лекция 2. История развития итеративной разработки программных средств. Методология RUP. Понятие риска в разработке программных средств. Основные фазы, строительные блоки и поддерживающие процессы в RUP. Использование в RUP объектно-ориентированного подхода, основные конструкции языка UML.
  • Лекции 3-4 Математические методы в объектно-ориентированном проектировании

    • Лекция 3. Информационные системы как системы массового обслуживания. Модели и методы статистической обработки информации. Применение объектно-ориентированного подхода в имитационном моделировании и симуляции.
    • Лекция 4. Понятия исполнительного устройства и очереди в системе массового обслуживания. Виды и программная реализация очередей. Использование очередей с приоритетами в управлении разработкой ПО (SCRUM). Организация и использование очередей в веб-приложениях (AJAX).
  • Лекции 5-6 Проектирование топологии информационных систем

    • Лекция 5. Отличия понятий связности в применении к классам и объектам. Понятие слоя в проектировании программного обеспечения. Проектирование физического размещения компонентов информационных систем. Распределенная обработка данных и параллельные алгоритмы.
    • Лекция 6. Локальные, удаленные и распределенные базы данных. Простые и распределенные транзакции. Распределенные реестры и технологии блокчейн. Понятия блокировки и конфликта транзакций.
  • Лекции 7-8 Научный подход в программировании

    • Лекция 7. Программирование как научная деятельность. Понятие эксперимента в разработке программных средств. Моделирование, прототипирование и исследовательские испытания.
    • Лекция 8. Тестирование программных средств. Понятия пользовательской истории и приемочных испытаний в гибкой разработке программных средств. Тестовые наборы данных, эмуляторы и симуляторы. Роль пользователя в проведении испытаний.
  • Лекции 9-10 Проектирование взаимодействий

    • Лекция 9. Вертикальное и горизонтальное взаимодействия. Понятие инициатора взаимодействия. Выталкивающее и втягивающее производство. Планирование запасов.
    • Лекция 10. Управление сроками. Сетевое планирование и понятие критического пути. Планирование сроков в гибкой разработке программных средств. Планирование совещаний. Личный тайм-менеджмент.
  • Лекции 11-12 Проектирование конфигурационного управления

    • Лекция 11. Управление требованиями, изменениями, инцидентами. Понятия конфигурации и конфигурационного управления. Сборки, выпуски и версии в гибкой разработке (SCRUM). Понятия инцидента, обходного пути и заплатки.
    • Лекция 12. Управление конфигурацией. Разработка, управляемая моделями (MDD). Инжениринг в разработке, управляемой функциональностью (FDD), реинжениринг и рефакторинг в разработке, управляемой тестами (TFD, TDD, BDD). Документирование программного кода.
  • Лекции 13-14 Проектирование по шаблонам (паттернам)

    • Лекция 13. Шаблоны проектирования систем. Шаблоны моделирования процессов и событий. Шаблоны решения изобретательских задач. Цифровые двойники и цифровые тени. Шаблоны в фреймворках. Функциональные и архитектурные шаблоны.
    • Лекция 14. Шаблоны проектирования программ и баз данных. Понятия обновления структуры и горячего резерва баз данных. ООП-шаблоны в проектировании архитектуры программных средств. Фреймворк "Модель-Представление-Контроллер (MVC).
  • Лекции 15-16 Проектирование интеграционных решений

    • Лекция 15. Справочники и классификаторы. Понятия классификации, классифицируемого множества и классификационного признака. Иерархическая и фасетная классификация. Системы классификации и кодирования.
    • Лекция 16. Извлечение и очистка данных. Понятия нормализации и дедупликации. Технологии ETL. Понятие и технологии обработки больших данных.
  • Лекции 17-18 Проектирование высоконагруженных и аналитических систем

    • Лекция 17. Высоконагруженные системы и системы реального времени. Понятия высокой доступности и высоконагруженного приложения. Архитектурные паттерны высоконагруженных систем. Понятия системы реального времени и интеллектуального агента. Понятия интернета вещей, индустриального интернета вещей, технологического уклада и Индустрии 4.0. Цифровое производство и робототехника.
    • Лекция 18. Аналитические и экспертные системы. Сравнительный анализ транзакционных (OLTP) и аналитических (OLAP) систем. Многомерное моделирование и модель Свод данных (Data Vault). CPM-системы и консолидация данных. Экспертные системы, системы поддержки принятия решений и машинное обучение.

Семинары

  • Семинар 1 Методология RUP, прецеденты и язык UML

  • Семинар 2 Управление разработкой ПО, методы Канбан и Скрам

  • Семинар 3 Прототипирование в разработке ПО

  • Семинар 4 Автоматизированное тестирование в разработке ПО

Лабораторные работы

Экзамен

Полноценная подготовка к экзамену является ключевым вопросом дисциплины и состоит из следующих шагов:

  1. Анализ набора экзаменационных билетов
  2. Выбор 2+ вопросов, заданные в которых темы наиболее близки к теме дипломного проекта, выбранному профессиональному направлению или другим собственным интересам (не обязательно брать в работу целиком один билет)
  3. Формирование мини-команды из 2+ человек, занимающихся теми же вопросами
  4. Командное формирование полноценного реферата по теме, заданной в вопросе

Реферат делается прямо в вики-странице билета или в виде отдельной вики-страницы (если реферат содержит информацию по нескольком билетам одновременно). При разработке реферата следует сосредоточиться на следующих показателях его качества:

  • лаконичность (реферат не должен содержать "воды", не связанной с его темой)
  • последовательность (рекомендуется начать с определения основных терминов, далее описать возможные задачи, связанные с темой вопроса, а также описать возможные способы решения этих задач и возможные проблемы)
  • обоснованность (в реферате должны быть примеры, иллюстрации и ссылки на использованные источники)

В идеальной ситуации:

  1. Текст реферата можно 1:1 включить в состав ВКР (дипломной работы)
  2. В качестве примеров использованы собственные или коллективные материалы, разработанные в ходе лабораторных работ
  3. Выбранная тема может послужить основой для проведения каких-то дополнительных исследований

Ресурсы для самостоятельного изучения

Площадки для тренировок

Software Risk Management

Rational Unfied Process

Анализ методов Agile

Каталог паттернов проектирования

Абсурд (выявление чуши)

Осмысленная Обработка Информации

Clone this wiki locally