1 of 18

Software Engineering

Лекция 01: О разработке и разработчиках ПО

Тимофей Брыксин

timofey.bryksin@gmail.com

2 of 18

Программа и программный продукт

3 of 18

Программирование VS Промышленные проекты

  • учебные задачи
  • 4fun
  • исследования
  • работа в команде
  • за деньги заказчика
  • сроки, результат, качество

Анализ и проектирование

Разработка требований

Сопровождение

Организация процесса

Управление проектом

Документирование

Планирование

Управление требованиями

Контроль качества

Выпуск продукта

4 of 18

Программная инженерия

  • особая область знаний/научная дисциплина
    • накопление опыта
    • фиксация лучших методов и практик
  • конференция NATO Software Engineering, 1968
  • кризис программного обеспечения
    • стоимость проектов превышает бюджет
    • превышаются сроки выполнения проектов
    • ПО слишком неэффективно
    • ПО имеет слишком низкое качество
    • ПО не отвечает необходимым требованиям
    • неуправляемые проекты, трудности с поддержкой кода
    • ...

5 of 18

Standish Group 2015 Chaos Report

6 of 18

7 of 18

Отличия от других областей производства

  • Очень высокая сложность систем
  • Меньше накоплено опыта
    • Более непредсказуем результат
    • Хуже поддается планированию
    • Больше творчество, чем ремесло
  • Подверженность постоянным изменениям

8 of 18

Программные проекты крайне социализированы

  • разрабатываются людьми
    • общение внутри команды
  • разрабатываются для людей
    • общение за пределами команды
  • успех определяется �социальными факторами
    • технологии вторичны?

9 of 18

Проектная команда

10 of 18

Профессиональные стандарты

  • Стандарт АПКИТ 2009
  • Стандарт АПКИТ 2013

11 of 18

Востребованные компетенции

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

12 of 18

Level 1: стажёр, младший разработчик

  • Участие в анализе требований и создании сценариев использования продукта
  • Участие в разработке различных типов требований к программному продукту
  • Разработка кода программного продукта на основе готовых спецификаций на уровне модулей
  • Отладка и тестирование кода на уровне модулей
  • Участие в интеграции программных компонент в единое целое
  • Анализ и оптимизация кода c использованием инструментальных средств для повышения качества изделий и производительности разработки
  • Разработка тестовых наборов и тестовых процедур
  • Разработка и ведение проектной и технической документации по порученным задачам
  • Участие в ревьюировании технических документов
  • Участие в измерении характеристик программного проекта

13 of 18

Level 2: программист/разработчик

  • Сбор и анализ требований, создание сценариев использования продукта
  • Разработка различных типов требований к программному продукту
  • Восстановление требований по коду в процессе реинжиниринга
  • Разработка детальной технической спецификации на основе высокоуровневых спецификаций по полученным требованиям
  • Формализация и контроль корректности требований и/или спецификаций, сформулированных на неформальном языке
  • Разработка кода программного продукта на основе готовых спецификаций
  • Отладка кода на уровне модулей, межмодульных взаимодействий и взаимодействий с окружением
  • Разработка и отладка распределенных и многопоточных приложений
  • Интеграция программных компонент

14 of 18

Level 2: программист/разработчик (2)

  • Анализ и оптимизация кода c использованием инструментальных средств для повышения качества продуктов и производительности разработки
  • Планирование тестирования и разработка тестовых наборов и процедур
  • Разработка и адаптация к проекту средств автоматизации тестирования
  • Разработка и ведение проектной и технической документации по порученным задачам
  • Ревьюирование технических документов
  • Измерение характеристик программного проекта
  • Анализ эффективности инструментальных средств для проекта
  • Инспекция программного обеспечения
  • Обучение и консультирование персонала

15 of 18

Level 3: старший разработчик

  • Разработка концепции реализации требований и критериев ее успешности
  • Разработка технической спецификации по полученным требованиям
  • Формализация и контроль корректности требований и спецификаций, сформулированных на неформальном языке
  • Планирование выполнения и процесса измерения проекта
  • Разработка и ведение проектной и технической документации
  • Сдача документации и программного обеспечения заказчику
  • Управление выполнением проекта
  • Руководство проектной группой
  • Взаимодействие с заказчиками
  • Участие в совершенствовании процесса разработки в рабочих группах и технических советах
  • Участие в выработке корпоративных и проектных стандартов разработки

16 of 18

Level 4: ведущий программист

  • Контроль разработки различных типов требований к программному продукту
  • Контроль разработки технической спецификации по полученным требованиям
  • Контроль разработки кода программного продукта на основе готовых спецификаций
  • Контроль интеграции программных компонент
  • Контроль разработки и ведения проектной и технической документации
  • Анализ результатов выполнения проекта на основе метрик

17 of 18

План курса

  • Жизненный цикл ПО, модели ЖЦ. Основные методологии и модели разработки.
  • Требования: сбор, анализ, документирование, работа с изменениями. Планирование и управление рисками.
  • Управление проектами: зачем нужен менеджер проекта, процессы и инструментальные средства (баг/таск-трекер, CI/CD).
  • Парадигмы программирования, их применимость.
  • Проектирование пользовательских интерфейсов
  • Разработка: что такое хороший код.
  • Пользовательские интерфейсы: проектирование, анализ, тестирование.
  • Команда. Групповая разработка, управление версиями.
  • Противодействие ошибкам. Отладка: виды, подходы. Защитное программирование
  • Тестирование и QA
  • Выпуск, сопровождение и поддержка: жизнь после релиза и product management
  • Качество ПО: характеристики, метрики, стандарты

18 of 18

Software Engineering Book of Knowledge

  • Software Requirements
  • Software Design
  • Software Construction
  • Software Testing
  • Software Maintenance
  • Software Configuration Management
  • Software Engineering Management
  • Software Engineering Process
  • Software Engineering Models and Methods
  • Software Quality
  • Software Engineering Professional Practice
  • Software Engineering Economics