SlideShare a Scribd company logo
Углубленное программирование
на языке C++
Алексей Петров
Лекция №12. Стандарты
кодирования и основы командной
разработки ПО
• Соглашение о кодировании как нормативный акт, иные руководящие
документы.
• Комментирование и документирование кода.
• Примеры нотаций.
• Средства поддержки коллективной работы.
• Современные методологии разработки.
• Понятие «гибких» (agile) методологий.
• Методологии TDD, SCRUM.
• Обзор SWEBoK.
Соглашение о кодировании и его
роль в командной разработке ПО
Соглашение о кодировании (англ. coding standard) — непроектный
документ, который:
• регламентирует подходы к оформлению исходного кода на языке
высокого уровня или ручной верстки на языке разметки;
• (опционально) имеет статус локального правового акта организации;
• действует в рамках организации или проектного офиса (реже —
отдельного проекта или проектов).
Преимущества заключения соглашения о кодировании:
• легкость включения в проект разработки новых специалистов;
• удобство чтения и простота понимания и инспекции исходного кода;
• формирование важных в командной разработке навыков и привычек
оформления результатов труда;
• легкость трассировки изменений и ручного контроля версий.
Иные руководящие документы.
Артефакты анализа
Помимо соглашения о кодировании, участвующий в командной
разработке ПО разработчик опирается на следующие документы:
• устав (хартия) проекта;
• календарный план-график (КПГ);
• соглашения о моделировании (предметной области, БД и пр.).
Значимыми для успешной разработки проектными артефактами
являются все (почти все) выходные артефакты этапа системного
анализа и проектирования системы, в том числе:
• модели предметной области;
• макеты и прототипы фрагментов исходного кода и интерфейса;
• диаграммы классов, прецедентов, взаимодействия и т.д.;
• техническое задание на информационную
(автоматизированную) систему.
Правила организации и способы
записи исходного кода
на языке C++ (1 / 2)
Эмпирические правила организации исходного кода на языке C++ —
результат многолетнего опыта практического программирования
специалистов по всему миру (начало):
• объявления классов, как правило, хранятся в заголовочных файлах
с именами <имя класса>.{h | hpp}, исходный код реализации в
основном хранится в исходных файлах с именами <имя класса>.{c |
C | cpp};
• члены класса перечисляются в порядке назначенных им уровней
доступа: public, protected, private.
Правила организации и способы
записи исходного кода
на языке C++ (2 / 2)
Эмпирические правила организации исходного кода на языке C++ —
результат многолетнего опыта практического программирования
специалистов по всему миру (окончание):
• подставляемые функции обычно выделяются из интерфейса и со
спецификатором inline размещаются в заголовочном файле после
объявления класса (оптимальное разделение достигается
размещением определений подставляемых функций в отдельном
заголовочном файле);
• полностью заголовочный файл помещается в директивы условной
компиляции во избежание повторного включения в сборку при
вложенных директивах #include.
Ортодоксальная каноническая
форма класса (1 / 2)
Ортодоксальная каноническая форма (ОКФ) класса — одна из
важнейших идиом C++, согласно которой класс должен содержать:
• конструктор по умолчанию: T::T();
• конструктор копирования: T::T(const T&);
• операцию-функцию присваивания: T& T::operator=(const T&);
• деструктор: T::~T().
ОКФ обеспечивает:
• единый стиль оформления классов;
• помогает справиться со сложностью классов в процессе развития
программы.
Ортодоксальная каноническая
форма класса (2 / 2)
ОКФ класса следует использовать, когда:
• необходимо обеспечить поддержку присваивания для объектов
класса или передачу их по значению в параметрах функций;
• объект создает указатели на объекты, для которых применяется
подсчет ссылок;
• деструктор класса вызывает operator delete для атрибута
класса.
ОКФ класса желательно использовать для всех классов, не
ограничивающихся агрегированием данных аналогично структурам C.
Отклонения от ОКФ позволяют реализовать нестандартные аспекты
поведения класса.
Примеры нотаций
Венгерская нотация (Ч. Симони (Charles Simonyi), Microsoft, 1999) —
широко известное соглашение о префиксации идентификаторов
констант, переменных, типов, методов и т.д. в соответствии с их
функциональной нагрузкой:
m_pHead; // указатель-атрибут класса
g_nObjCount; // глобальная целочисленная переменная
CWarrior; // класс
szConnPar; // строковый (char*) локальный объект
Сложившийся на сегодняшний день стиль написания объектно-
ориентированного кода и современные IDE позволяют не указывать тип
переменной в имени, а сосредоточиться на «правильном»
форматировании блоков, расстановке разделителей, знаков
операций, левых отступов и т.д.
Комментирование
и документирование кода
Одним из показателей качества исходного кода является его
самодокументируемость (англ. self-descriptiveness). Соблюдение
принципа самодокументирования обеспечивает:
• понятность кода без обращения к проектной документации;
• соответствие исходного кода «внутренней программной
документации».
Самодокументируемости исходного кода способствуют:
• единообразие нотации;
• значимость (осмысленность) идентификаторов (противоположное
— анти-шаблон «загадочный код» (англ. cryptic code));
• наличие аннотаций для артефактов (переменных, классов, методов
и т.д.) и комментариев в местах, трудных для понимания;
• модульность решения, отсутствие монолитных артефактов
большого размера.
Средства коллективной
разработки
К числу систем и средств поддержки коллективной разработки ПО
относятся:
• системы управления версиями;
• системы отслеживания ошибок;
• системы управления проектами, планирования и контроля работ;
• средства поддержки тестовых окружений и т.д.
Этапы канонического жизненного
цикла разработки ПО (1 / 2)
Анализ и
проектирование
Формирование
требований
Программи-
рование
Внедрение
Интеграция и
тестирование
Спецификация
Дизайн
Исходный код
Продукт
Этапы канонического жизненного
цикла разработки ПО (2 / 2)
Наибольшая вовлеченность программистов в разработку ПО
приходится на этапы программирования (кодирование) и
тестирования (исправление ошибок) (см. график).
Сопровождение — это не этап ЖЦ разработки ПО, а последующий, не
ограниченный во времени процесс, участие в котором программисты
принимают наряду с консультантами, аналитиками и пр.
0%
5%
60%
30%
5%
0%
20%
40%
60%
% занятости
Экономика
и ответственность (1 / 2)
Программисты
должны получать
качественные
проектные
артефакты с
качественно
описанными
требованиями к ПО.
Сравнительная цена
ошибки (стоимость
ее исправления) на
этапе
программирования
выше, чем на этапе
проектирования и
тем более — на
этапе сбора
требований к ПО (см.
график)
Cбор
треб.
Проект.
Прогр. Тест. Внедр.
Сравнительная цена
исправления ошибки в ПО
Экономика
и ответственность (2 / 2)
Со ссылкой на кн.:
Martin, J., McClure, C.
Software Maintenance
— The Problem and Its
Solutions, Prentice Hall,
Englewood Cliffs, New
Jersey, 1983 — С. Канер
и др. (2001) приводят
следующую оценку
распределения статей
затрат на выпуск и
сопровождение ПО в
разрезе жизненных
циклов производимой
системы (см. график).
6%
5%
7%
15%
67%
Структура совокупных
затрат на выпуск и
сопровождение ПО
Cбор треб. Проект. Прогр.
Тест. Сопровожд.
Каскадная и итеративная
модели жизненного цикла ПО
Классическая каскадная, или «водопадная», модель (англ. waterfall
model) предполагает последовательное (во времени) однократное
прохождение этапов жизненного цикла разработки ПО (фаз проекта) с
жестким предварительным планированием в контексте однажды и
целиком определенных требований к ПО.
Итеративная модель предполагает разбиение жизненного цикла на
последовательность итераций («мини-проекты»), включающие все
фазы проекта в применении к меньшим фрагментам
функциональности. С завершением каждой итерации продукт
развивается инкрементально.
«Гибкие» методологии
разработки
«Гибкие» (англ. agile) методологии разработки основаны на
использовании итеративной модели жизненного цикла разработки ПО,
динамическом формировании требований и постоянном
взаимодействии внутри самоорганизующихся рабочих групп.
Отличительные черты:
• короткий цикл разработки;
• непосредственное общение (в том числе с заказчиком).
Основные идеи:
• личности и их взаимодействия важнее процессов и инструментов;
• работающий продукт важнее полной документации;
• сотрудничество с заказчиком важнее договорных обязательств;
• реакция на изменения важнее следования плану.
Методологии TDD, Scrum
Разработка через тестирование (англ. Test-Driven Development, TDD)
— методология разработки, реализующая концепцию «сначала тест» и
состоящая в последовательном расширении набора тестов,
покрывающих требуемую функциональность, и написании кода,
позволяющего пройти существовавшие и вновь введенные тесты.
Scrum — методология итеративной разработки с акцентом на контроль
процесса разработки ПО, в которой:
• каждая итерация («спринт») имеет фиксированную
продолжительность;
• требования к продукту упорядочиваются по их важности,
отражаются в документах Product Backlog и Sprint Backlog и
фиксируются на время спринта.
Руководство SWEBoK
Software Engineering Body of Knowledge (SWEBoK) – «Свод знаний в
области программной инженерии», подготовленный при участии IEEE и
призванный определить набор профессиональных знаний и
рекомендуемые практики в следующих областях (англ. knowledge area):
Требования к ПО Управление конфигурациями ПО
Проектирование ПО Управление программной инженерией
Конструирование ПО Процесс программной инженерии
Тестирование ПО Методы и инструменты программной
инженерии
Сопровождение ПО Качество ПО
Спасибо за внимание
Алексей Петров

More Related Content

PPTX
Внедрение CASE-технологий
PPTX
Сделать безопасно и сертифицировано — ЗАО «ПМ» на DevCon 2015
PDF
C++ осень 2012 лекция 7
PPTX
Составные части объектного подхода
PPTX
Software Engineering Knowledge Matrix
PPT
Java one presentation
PDF
DDD Workshop
Внедрение CASE-технологий
Сделать безопасно и сертифицировано — ЗАО «ПМ» на DevCon 2015
C++ осень 2012 лекция 7
Составные части объектного подхода
Software Engineering Knowledge Matrix
Java one presentation
DDD Workshop

What's hot (19)

PPTX
метод организации репозитория исходного кода
PPTX
МиСПИСиТ (литература по курсу)
PPT
ClubQA #2. Unit testing and TDD
PPTX
МиСПИСиТ (источники ошибок)
PDF
C++ осень 2012 лекция 1
PPTX
МиСПИСиТ (разработка программного модуля)
PDF
Benefits of unit-testing and inversion of controll
PPTX
Эффективное объектно-ориентированное проектирование и структурное качество пр...
PPTX
ООП. Рекомендуемые информационные ресурсы
PDF
Requirement modelling in software creation process
PPT
Lecture 11 1
PPT
Lecture 11 1
PPTX
МиСПИСиТ (общие принципы разработки)
PPTX
Работа с требованиями при создании программного обеспечения бортовой радиоэле...
PPTX
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...
PPT
Training Labs (www.cmcons.com)
PPTX
Опыт ДС БАРС по внедрению процессов КТ-178B
метод организации репозитория исходного кода
МиСПИСиТ (литература по курсу)
ClubQA #2. Unit testing and TDD
МиСПИСиТ (источники ошибок)
C++ осень 2012 лекция 1
МиСПИСиТ (разработка программного модуля)
Benefits of unit-testing and inversion of controll
Эффективное объектно-ориентированное проектирование и структурное качество пр...
ООП. Рекомендуемые информационные ресурсы
Requirement modelling in software creation process
Lecture 11 1
Lecture 11 1
МиСПИСиТ (общие принципы разработки)
Работа с требованиями при создании программного обеспечения бортовой радиоэле...
Аналитик и Тестировщик в одном лице – путь к качеству (Максим Цепков, SQA Day...
Training Labs (www.cmcons.com)
Опыт ДС БАРС по внедрению процессов КТ-178B
Ad

Viewers also liked (17)

PDF
Тестирование весна 2013 лекция 5
PPTX
Java весна 2013 лекция 3
PPTX
HighLoad весна 2014 лекция 6
PPTX
Тестирование весна 2014 смешанное занятие 3
PDF
Разработка веб-сервисов осень 2013 лекция 3
PPTX
АиСД осень 2012 лекция 1
PPT
Тестирование весна 2014 смешанное занятие 2
PPTX
АиСД осень 2012 лекция 11
PDF
Java осень 2014 занятие 3
PDF
Android осень 2013 лекция 1
PDF
Проектирование графических интерфейсов лекция 6 - часть 1
PDF
Бизнес весна 2014 лекция 6
PPTX
АиСД осень 2012 лекция 12
PDF
Java осень 2013 лекция 1-2
PDF
Java осень 2014 занятие 5
PPTX
Web осень 2013 лекция 4
PDF
Проектирование графических интерфейсов лекция 1
Тестирование весна 2013 лекция 5
Java весна 2013 лекция 3
HighLoad весна 2014 лекция 6
Тестирование весна 2014 смешанное занятие 3
Разработка веб-сервисов осень 2013 лекция 3
АиСД осень 2012 лекция 1
Тестирование весна 2014 смешанное занятие 2
АиСД осень 2012 лекция 11
Java осень 2014 занятие 3
Android осень 2013 лекция 1
Проектирование графических интерфейсов лекция 6 - часть 1
Бизнес весна 2014 лекция 6
АиСД осень 2012 лекция 12
Java осень 2013 лекция 1-2
Java осень 2014 занятие 5
Web осень 2013 лекция 4
Проектирование графических интерфейсов лекция 1
Ad

Similar to C++ осень 2012 лекция 12 (20)

PPTX
разработка бизнес приложений (8)
PPTX
Практические аспекты разработки ПО #3
PPTX
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
PDF
технология разработки программного обеспечения
PDF
Технология разработки программного обеспечения
PDF
PPTX
разработка бизнес приложений (6)
PPTX
Лучшие практики на практике
PDF
Лекция 1. Основы объектно-ориентированного программирования
PPTX
Agile. Эвридики
PDF
Лекция2_Модели жизненного цикла программного обеспечения.pdf
PDF
IT Project Life cycle
PPTX
Mva stf module 1 - rus
PPS
ПВПС
PDF
Семинар ФКН: современные подходы к разработке ПО - часть 1
PPS
лекция 2
PPS
лекция 2
PPTX
введение в объектно ориентированный анализ
PPT
Код как низкоуровневая документация
PPT
Sep reqm-lec1
разработка бизнес приложений (8)
Практические аспекты разработки ПО #3
Промышленная разработка ПО. Лекция 4. Особенности работы программиста. Ча…
технология разработки программного обеспечения
Технология разработки программного обеспечения
разработка бизнес приложений (6)
Лучшие практики на практике
Лекция 1. Основы объектно-ориентированного программирования
Agile. Эвридики
Лекция2_Модели жизненного цикла программного обеспечения.pdf
IT Project Life cycle
Mva stf module 1 - rus
ПВПС
Семинар ФКН: современные подходы к разработке ПО - часть 1
лекция 2
лекция 2
введение в объектно ориентированный анализ
Код как низкоуровневая документация
Sep reqm-lec1

More from Technopark (20)

PDF
Лекция 11. Вычислительная модель Pregel
PDF
Лекция 14. Hadoop в Поиске Mail.Ru
PDF
Лекция 13. YARN
PDF
Лекция 12. Spark
PDF
Лекция 10. Apache Mahout
PDF
Лекция 9. ZooKeeper
PDF
Лекция 7. Введение в Pig и Hive
PDF
Лекция 6. MapReduce в Hadoop (графы)
PDF
Лекция 5. MapReduce в Hadoop (алгоритмы)
PDF
Лекция 4. MapReduce в Hadoop (введение)
PDF
Лекция 3. Распределённая файловая система HDFS
PDF
Лекция 2. Основы Hadoop
PDF
Лекция 1. Введение в Big Data и MapReduce
PPTX
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
PPT
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
PPTX
СУБД 2013 Лекция №9 "Безопасность баз данных"
PPTX
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
PPTX
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
PPTX
СУБД 2013 Лекция №5 "Определение узких мест"
PPTX
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Лекция 11. Вычислительная модель Pregel
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 13. YARN
Лекция 12. Spark
Лекция 10. Apache Mahout
Лекция 9. ZooKeeper
Лекция 7. Введение в Pig и Hive
Лекция 6. MapReduce в Hadoop (графы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 4. MapReduce в Hadoop (введение)
Лекция 3. Распределённая файловая система HDFS
Лекция 2. Основы Hadoop
Лекция 1. Введение в Big Data и MapReduce
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...

C++ осень 2012 лекция 12

  • 2. Лекция №12. Стандарты кодирования и основы командной разработки ПО • Соглашение о кодировании как нормативный акт, иные руководящие документы. • Комментирование и документирование кода. • Примеры нотаций. • Средства поддержки коллективной работы. • Современные методологии разработки. • Понятие «гибких» (agile) методологий. • Методологии TDD, SCRUM. • Обзор SWEBoK.
  • 3. Соглашение о кодировании и его роль в командной разработке ПО Соглашение о кодировании (англ. coding standard) — непроектный документ, который: • регламентирует подходы к оформлению исходного кода на языке высокого уровня или ручной верстки на языке разметки; • (опционально) имеет статус локального правового акта организации; • действует в рамках организации или проектного офиса (реже — отдельного проекта или проектов). Преимущества заключения соглашения о кодировании: • легкость включения в проект разработки новых специалистов; • удобство чтения и простота понимания и инспекции исходного кода; • формирование важных в командной разработке навыков и привычек оформления результатов труда; • легкость трассировки изменений и ручного контроля версий.
  • 4. Иные руководящие документы. Артефакты анализа Помимо соглашения о кодировании, участвующий в командной разработке ПО разработчик опирается на следующие документы: • устав (хартия) проекта; • календарный план-график (КПГ); • соглашения о моделировании (предметной области, БД и пр.). Значимыми для успешной разработки проектными артефактами являются все (почти все) выходные артефакты этапа системного анализа и проектирования системы, в том числе: • модели предметной области; • макеты и прототипы фрагментов исходного кода и интерфейса; • диаграммы классов, прецедентов, взаимодействия и т.д.; • техническое задание на информационную (автоматизированную) систему.
  • 5. Правила организации и способы записи исходного кода на языке C++ (1 / 2) Эмпирические правила организации исходного кода на языке C++ — результат многолетнего опыта практического программирования специалистов по всему миру (начало): • объявления классов, как правило, хранятся в заголовочных файлах с именами <имя класса>.{h | hpp}, исходный код реализации в основном хранится в исходных файлах с именами <имя класса>.{c | C | cpp}; • члены класса перечисляются в порядке назначенных им уровней доступа: public, protected, private.
  • 6. Правила организации и способы записи исходного кода на языке C++ (2 / 2) Эмпирические правила организации исходного кода на языке C++ — результат многолетнего опыта практического программирования специалистов по всему миру (окончание): • подставляемые функции обычно выделяются из интерфейса и со спецификатором inline размещаются в заголовочном файле после объявления класса (оптимальное разделение достигается размещением определений подставляемых функций в отдельном заголовочном файле); • полностью заголовочный файл помещается в директивы условной компиляции во избежание повторного включения в сборку при вложенных директивах #include.
  • 7. Ортодоксальная каноническая форма класса (1 / 2) Ортодоксальная каноническая форма (ОКФ) класса — одна из важнейших идиом C++, согласно которой класс должен содержать: • конструктор по умолчанию: T::T(); • конструктор копирования: T::T(const T&); • операцию-функцию присваивания: T& T::operator=(const T&); • деструктор: T::~T(). ОКФ обеспечивает: • единый стиль оформления классов; • помогает справиться со сложностью классов в процессе развития программы.
  • 8. Ортодоксальная каноническая форма класса (2 / 2) ОКФ класса следует использовать, когда: • необходимо обеспечить поддержку присваивания для объектов класса или передачу их по значению в параметрах функций; • объект создает указатели на объекты, для которых применяется подсчет ссылок; • деструктор класса вызывает operator delete для атрибута класса. ОКФ класса желательно использовать для всех классов, не ограничивающихся агрегированием данных аналогично структурам C. Отклонения от ОКФ позволяют реализовать нестандартные аспекты поведения класса.
  • 9. Примеры нотаций Венгерская нотация (Ч. Симони (Charles Simonyi), Microsoft, 1999) — широко известное соглашение о префиксации идентификаторов констант, переменных, типов, методов и т.д. в соответствии с их функциональной нагрузкой: m_pHead; // указатель-атрибут класса g_nObjCount; // глобальная целочисленная переменная CWarrior; // класс szConnPar; // строковый (char*) локальный объект Сложившийся на сегодняшний день стиль написания объектно- ориентированного кода и современные IDE позволяют не указывать тип переменной в имени, а сосредоточиться на «правильном» форматировании блоков, расстановке разделителей, знаков операций, левых отступов и т.д.
  • 10. Комментирование и документирование кода Одним из показателей качества исходного кода является его самодокументируемость (англ. self-descriptiveness). Соблюдение принципа самодокументирования обеспечивает: • понятность кода без обращения к проектной документации; • соответствие исходного кода «внутренней программной документации». Самодокументируемости исходного кода способствуют: • единообразие нотации; • значимость (осмысленность) идентификаторов (противоположное — анти-шаблон «загадочный код» (англ. cryptic code)); • наличие аннотаций для артефактов (переменных, классов, методов и т.д.) и комментариев в местах, трудных для понимания; • модульность решения, отсутствие монолитных артефактов большого размера.
  • 11. Средства коллективной разработки К числу систем и средств поддержки коллективной разработки ПО относятся: • системы управления версиями; • системы отслеживания ошибок; • системы управления проектами, планирования и контроля работ; • средства поддержки тестовых окружений и т.д.
  • 12. Этапы канонического жизненного цикла разработки ПО (1 / 2) Анализ и проектирование Формирование требований Программи- рование Внедрение Интеграция и тестирование Спецификация Дизайн Исходный код Продукт
  • 13. Этапы канонического жизненного цикла разработки ПО (2 / 2) Наибольшая вовлеченность программистов в разработку ПО приходится на этапы программирования (кодирование) и тестирования (исправление ошибок) (см. график). Сопровождение — это не этап ЖЦ разработки ПО, а последующий, не ограниченный во времени процесс, участие в котором программисты принимают наряду с консультантами, аналитиками и пр. 0% 5% 60% 30% 5% 0% 20% 40% 60% % занятости
  • 14. Экономика и ответственность (1 / 2) Программисты должны получать качественные проектные артефакты с качественно описанными требованиями к ПО. Сравнительная цена ошибки (стоимость ее исправления) на этапе программирования выше, чем на этапе проектирования и тем более — на этапе сбора требований к ПО (см. график) Cбор треб. Проект. Прогр. Тест. Внедр. Сравнительная цена исправления ошибки в ПО
  • 15. Экономика и ответственность (2 / 2) Со ссылкой на кн.: Martin, J., McClure, C. Software Maintenance — The Problem and Its Solutions, Prentice Hall, Englewood Cliffs, New Jersey, 1983 — С. Канер и др. (2001) приводят следующую оценку распределения статей затрат на выпуск и сопровождение ПО в разрезе жизненных циклов производимой системы (см. график). 6% 5% 7% 15% 67% Структура совокупных затрат на выпуск и сопровождение ПО Cбор треб. Проект. Прогр. Тест. Сопровожд.
  • 16. Каскадная и итеративная модели жизненного цикла ПО Классическая каскадная, или «водопадная», модель (англ. waterfall model) предполагает последовательное (во времени) однократное прохождение этапов жизненного цикла разработки ПО (фаз проекта) с жестким предварительным планированием в контексте однажды и целиком определенных требований к ПО. Итеративная модель предполагает разбиение жизненного цикла на последовательность итераций («мини-проекты»), включающие все фазы проекта в применении к меньшим фрагментам функциональности. С завершением каждой итерации продукт развивается инкрементально.
  • 17. «Гибкие» методологии разработки «Гибкие» (англ. agile) методологии разработки основаны на использовании итеративной модели жизненного цикла разработки ПО, динамическом формировании требований и постоянном взаимодействии внутри самоорганизующихся рабочих групп. Отличительные черты: • короткий цикл разработки; • непосредственное общение (в том числе с заказчиком). Основные идеи: • личности и их взаимодействия важнее процессов и инструментов; • работающий продукт важнее полной документации; • сотрудничество с заказчиком важнее договорных обязательств; • реакция на изменения важнее следования плану.
  • 18. Методологии TDD, Scrum Разработка через тестирование (англ. Test-Driven Development, TDD) — методология разработки, реализующая концепцию «сначала тест» и состоящая в последовательном расширении набора тестов, покрывающих требуемую функциональность, и написании кода, позволяющего пройти существовавшие и вновь введенные тесты. Scrum — методология итеративной разработки с акцентом на контроль процесса разработки ПО, в которой: • каждая итерация («спринт») имеет фиксированную продолжительность; • требования к продукту упорядочиваются по их важности, отражаются в документах Product Backlog и Sprint Backlog и фиксируются на время спринта.
  • 19. Руководство SWEBoK Software Engineering Body of Knowledge (SWEBoK) – «Свод знаний в области программной инженерии», подготовленный при участии IEEE и призванный определить набор профессиональных знаний и рекомендуемые практики в следующих областях (англ. knowledge area): Требования к ПО Управление конфигурациями ПО Проектирование ПО Управление программной инженерией Конструирование ПО Процесс программной инженерии Тестирование ПО Методы и инструменты программной инженерии Сопровождение ПО Качество ПО