User Tools

Site Tools


tech:dssd

Differences

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

Link to this comparison view

Next revision
Previous revision
tech:dssd [2025/09/09 10:47] – created eugeneaitech:dssd [2025/10/21 11:29] (current) eugeneai
Line 1: Line 1:
 ====== Технологии разработки программного обеспечения ====== ====== Технологии разработки программного обеспечения ======
 +
 +Вариант курса от ИГУ, кафедра ИТ: https://files.isu.ru/filearchive/edu_files/B1.V.07_Tekhnologii_razrabotki_programmnogo_obespechenija_4824.pdf
  
 **DevOps-вариант курса** **DevOps-вариант курса**
Line 5: Line 7:
 ===== Содержание дисциплины ===== ===== Содержание дисциплины =====
  
 +**Образовательная программа:** "Математическое обеспечение и администрирование информационных систем"  
 +**Курс:** 3, Бакалавриат  
 +**Акцент:** Интеграция современных практик DevOps и CI/CD
  
 +=== Тема 1. Современные тенденции разработки ИС. Введение в DevOps ===
 +  * Понятие ИС: от монолита к сервисам и микросервисной архитектуре.
 +  * Эволюция подходов к разработке: от Waterfall к Agile и DevOps.
 +  * Основные современные тенденции: Cloud-Native, Infrastructure as Code (IaC), Shift-Left.
 +  * Определение DevOps: культура, практики, инструменты. Три пути DevOps (Flow, Feedback, Learning).
 +  * Факторы, влияющие на развитие технологий (скорость, качество, стоимость, сложность) и ответ DevOps на них.
 +  * Виды требований в DevOps-контексте: функциональные, нефункциональные, сквозные (reliability, performance, scalability).
 +  * Показатели эффективности проекта (DORA Four Key Metrics): Deployment Frequency, Lead Time, MTTR, Change Failure Rate.
  
 +[[tech:dssd1|Лекция 1]].
 +
 +== Лабораторная 1 ==
 +
 +**Цель** - изучить/вспомнить процесс разработки программ с использованием тестов (test-driven development)
 +
 +**Задача** - разработать простую программу при помощи цикла "тест -> реализация теста" (как в экстремальном программировании).
 +
 +  * На каждом шаге создавать коммит гит.
 +  * Использовать Gitverse от Сбера Или Github.
 +  * Программа мб старая, тогда на новом для вас языке программирования, либо новая программа.
 +  * Можно использовать все инструенты порождения кода, документации, поиска уязвимостей и т.п.: учимся не программировать а разрабатывать проект.
 +  * Коммит делать после реализации каждого теста и реализации тестируемой функциональности. Если забыли вдруг их разделить ничего страшного.
 +  * В проекте (лабы) сделать папку doc, где на markdown пишите садержательную часть отчета 
 +     - требования к продукту, список тестов, реализованных функций, примеры и замечания какие-то. 
 +     - Добавить раздел "Заключение" в отчет.
 +
 +=== Тема 2. Жизненный цикл ПО в эпоху DevOps ===
 +  * Этапы жизненного цикла: от классического каскада к бесконечному циклу DevOps (Plan, Code, Build, Test, Release, Deploy, Operate, Monitor).
 +  * Итеративная и инкрементальная модели как основа для Agile.
 +  * Гибкие методологии (Agile, Scrum, Kanban) как культурный фундамент DevOps.
 +  * Методология CI/CD (Continuous Integration / Continuous Delivery): принципы, преимущества, инструменты.
 +  * Конвейер поставки (Pipeline) как центральная метафора и артефакт разработки.
 +
 +=== Тема 3. Планирование и управление проектами с учетом DevOps ===
 +  * Структура затрат в DevOps: инвестиции в автоматизацию (CAPEX) vs операционные расходы (OPEX).
 +  * Управление сложностью: закон Конвея, микросервисы, стандартизация.
 +  * Метрики DevOps (DORA) и их использование для управления процессом.
 +  * Модель оценки трудоемкости COCOMO II: как практики DevOps влияют на факторы масштаба.
 +  * Автоматизация проектирования: от САПР ПО к Infrastructure as Code (Terraform, Ansible) и Configuration as Code.
 +
 +=== Тема 4. Обеспечение качества и хранение данных в DevOps ===
 +  * Сдвиг качества влево (Shift-Left Testing): интеграция тестирования на ранние этапы ЖЦ.
 +  * Автоматизированное тестирование: виды (unit, integration, e2e), инструменты, место в CI/CD-конвейере.
 +  * Системы отслеживания ошибок (Jira, GitLab Issues): интеграция с инструментами разработки.
 +  * Quality Assurance vs Quality Engineering: эволюция роли.
 +  * Эффективное хранение и обработка данных в микросервисной архитектуре: API, кэширование, управление состоянием.
 +
 +=== Тема 5. Коллективная работа и контроль версий (как основа DevOps) ===
 +  * Системы контроля версий (Git): Everything as Code (код, конфиги, инфраструктура).
 +  * Модели ветвления: GitFlow vs Trunk-Based Development для CI.
 +  * Интегрированные платформы (GitLab, GitHub): управление задачами, кодом и конвейерами.
 +  * Системы совместной работы с документацией (Confluence, Wiki): живая документация.
 +  * Средства общения и интеграции (Slack, Teams): оповещения о событиях в конвейере.
 +
 +=== Тема 6. Организация труда в DevOps-культуре ===
 +  * Типизация специалистов: стирание граней между Dev, Ops и QA. Роль DevOps-инженера.
 +  * Культура взаимной ответственности (You build it, you run it).
 +  * Проблема организационных silos (изолятов) и переход к кросс-функциональным командам.
 +  * Закон Конвея в DevOps: как архитектура системы отражает структуру коммуникации автоматизированных команд.
 +  * Обзор организационных моделей (матричная, главного хирурга).
 +
 +=== Тема 7. Управление качеством и стандарты в непрерывной поставке ===
 +  * Характеристики качества ПО: надежность (Reliability), сопровождаемость (Maintainability), удобство эксплуатации (Operability).
 +  * Методики повышения качества: автоматизированное тестирование, статический анализ (SAST), непрерывный код-ревью.
 +  * Главный закон контроля качества и его применение через автоматизацию.
 +  * Стандарты: эволюция от CMM к стандартам, описывающим DevOps-практики (ISO/IEC 27001, 25010).
 +
 +=== Тема 8. Документирование и сопровождение в автоматизированном процессе ===
 +  * Документирование как живой процесс: документация рядом с кодом (в репозитории).
 +  * Автоматизация документирования: генерация API-документации (Swagger/OpenAPI).
 +  * ЕСПД в условиях Agile/DevOps.
 +  * Основные задачи сопровождения: автоматизация обновлений и исправлений (патчи через CI/CD).
 +  * Условия прекращения сопровождения: архивация проекта вместе с его конвейерами.
 +
 +=== Тема 9. Реинжиниринг и модернизация в контексте DevOps ===
 +  * Реинжиниринг как основа для внедрения DevOps: модернизация legacy-систем для автоматизации.
 +  * Стратегии модернизации: Rehost (подъем и сдвиг), Refactor, Rearchitect, Rebuild.
 +  * Инструменты для контейнеризации (Docker) и оркестрации (Kubernetes) как ключевые технологии для переноса legacy-приложений.
 +
 +=== Тема 10. Гибкие методологии и практики DevOps ===
 +  * Методология гибкой разработки (Agile) как культурная основа DevOps.
 +  * Экстремальное программирование (XP): практики (TDD, рефакторинг, CI) как техническая основа DevOps.
 +  * Обзор практик DevOps:
 +    * **Continuous Integration (CI):** автоматическая сборка и тестирование.
 +    * **Continuous Delivery (CD):** готовность к релизу в любой момент.
 +    * **Infrastructure as Code (IaC):** управление инфраструктурой через код.
 +    * **Мониторинг и обратная связь (Monitoring & Logging):** использование метрик для принятия решений.
 +    * **Безопасность (DevSecOps):** интеграция безопасности в процесс.
  
 ===== Лекция 1. Обзор дисциплины с точки зрения DevOps ===== ===== Лекция 1. Обзор дисциплины с точки зрения DevOps =====
 +
  
  
tech/dssd.1757386020.txt.gz · Last modified: by eugeneai