Similar presentations:
SWEBOK. Основные области знаний. (Лекция 1)
1.
Кафедра компьютерных систем и сетейИнженерия программного
обеспечения
Лекция 1
SWEBOK. Основные области знаний
к.т.н., ст. преподаватель Стадник Анастасия Александровна
[email protected]
097-97-222-89
19 января 2017 г.
Слайд 1 / 34
2.
Инженерия ПОЯдро знаний
▶
На сегодня ядро стабильных знаний по программной инженерии составляет
75% от тех знаний, что используются в практической программисткой
деятельности.
▶
В связи с этим мировое компьютерное сообщество пришло к необходимости
систематизации накопленных знаний и общие из них зафиксировать в виде
ядер знаний (Body of Knowledge – BOK) для разных областей информатики.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 2 / 34
3.
Инженерия ПОЯдро знаний
▶
Для создания ядра знаний ПО был создан международный комитет при
американском объединении компьютерных специалистов ACM (Association
for Computing Machinery) и институте инженеров по электронике и
электротехнике IEEE Computer Society.
▶
В комитет вошли специалисты мирового уровня в области информатики и
разработки ПО, которые внесли свой опыт и знания, а также
систематизировали накопленные разнородные знания и определили ядро
профессиональных знаний SWEBOK (Software Engineering Body Knowledge)
программной инженерии, как основы проектирования ПО.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 3 / 34
4.
Инженерия ПОЯдро знаний SWEBOK
SWEBOK (software engineering body of knowledge) - основной научно-технический
документ по программной инженерии, отображающий знания и накопленный опыт
специалистов по программной инженерии.
Ядру знаний SWEBOK соответствует стандарт ISO/IEC TR 19759:2005.
Версии:
▶
▶
2004 г. (SWEBOK V2) - десять областей знаний (5 основных и 5 областей управления);
2013 г. (SWEBOK V3) - пятнадцать областей (+ теоретические основы ПИ, экономика и
описание профессиональных навыков по ПИ).
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 4 / 34
5.
Инженерия ПОПрограммная инженерия
▶
Программная инженерия (Software Engineering) является отраслью Computer
science.
▶
Изучает вопросы построения компьютерных программ.
▶
Отражает закономерности ее развития.
▶
Обобщает опыт программирования в виде комплекса общих знаний и правил
регламентации инженерной деятельности разработчиков ПО.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 5 / 34
6.
Инженерия ПОПрограммная инженерия
▶
Инженерная дисциплина, по которой инженеры применяя теоретические
идеи, методы и средства для разработки ПО, проводят создание ПО, согласно
стандартов, регламентирующих процессы проектирования и разработки.
▶
Программная инженерия рассматривает такие аспекты ПО как управление
проектом ПО и разработка средств, методов и теорий, необходимых для
создания качественных программных систем.
▶
Эта инженерная дисциплина предоставляет всю необходимую информацию и
стандарты для выбора наиболее подходящего метода проектирования
практических задач.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 6 / 34
7.
Инженерия ПООтличие программной инженерии от
компьютерных наук
▶
В программной инженерии, инженеры – это специалисты, выполняющие
практические работы по реализации программ с применением теории,
методов и средств компьютерной науки.
▶
Компьютерная наука (computer science) охватывает теорию и методы
построения вычислительных и программных систем, тогда как программная
инженерия рассматривает вопросы практического построения ПО.
Как говорил известный специалист в области программой техники Ф.Брукс,
«ученый строит, чтобы научиться, инженер учится, чтобы строить».
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 7 / 34
8.
Инженерия ПООсновные области знаний SWEBOK
Инженерия требований
Проектирование ПО
Конструирование ПО
Определение
Анализ
Спецификция
Проверка
Управление
Базовые концепции
Ключевые вопросы
Архитектура
Нотации
Стратегия и методы
Снижение сложности
Ориентация на изменения
Валидация
Внешние стандарты
Основные области знаний SWEBOK
Тестирование ПО
Концепции
Уровни тестирования
Техники
Метрики
Управление тестированием
Сопровождение ПО
Концепции
Сопровождение
Ключевые вопросы
Спецификация требований
Процесс сопровождения
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 8 / 34
9.
Инженерия ПООбласти управления SWEBOK
Управление
конфигурацией ПО
Управление
инженерией ПО
Процесс инженерии ПО
Управление
Идентификация
Контроль
Учет статуса конфигурации
Аудит
руководство работами команды
разработчиков ПО в процессе
выполнения плана проекта,
определение критериев и
оценка процессов и продуктов
проекта
Концепция
Инфраструктура
Определение
Оценка
Количественный анализ
Области управления SWEBOK
Методы и средства
инженерии ПО
Инструменты
Методы
Качество ПО
Концепция
Определение и планирование
Деятельности и техники
гарантий качества
Изменения в анализе
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 9 / 34
10.
Инженерия ПОТребования к ПО
Определение
Требование к программному обеспечению (англ. soƒware requirement)
▶
это:
характеристика ПО, с помощью которой конечным пользователем ПО решается
какая-либо задача или достигается определенная цель;
▶
характеристика или свойство ПО, определенное контрактом на его разработку
или другим документом (стандартом, спецификацией и т. п.).
Цель требований: определение функций, условий и ограничений, присущих ПО;
спецификация данных, технического сопровождения и среды исполнения.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 10 / 34
11.
Инженерия ПОВиды требований
Требования к продукту и процессу условия выполнения и режим работы ПО,
ограничения на среду исполнения; определение принципов взаимодействия
с другими программами.
Функциональные требования определяют назначение и функции системы.
Нефункциональные требования определяют условия исполнения ПО,
переносимости и доступа к данным.
Системные требования требования к программной системе в целом.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 11 / 34
12.
Инженерия ПОИнженерия требований
Определение
Инженерия требований (англ. requirements engineering) процесс формулировки,
документирования и поддержки требований к ПО, а также соответствующая область
программной инженерии.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 12/ 34
13.
Инженерия ПОСоставляющие инженерии требований
определение
анализ
спецификация
проверка
управление
(elicitation)
(analysis)
(speci cation)
(validation)
(management)
▶
Извлечение информации из договоров;
▶
проведение собеседований;
▶
согласование с заказчиком.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 13 / 34
14.
Инженерия ПОСоставляющие инженерии требований
определение
анализ
спецификация
проверка
управление
(elicitation)
(analysis)
(speci cation)
(validation)
(management)
▶
Изучение потребностей и целей пользователей;
▶
требования к системе исполнения, аппаратуре и
ПО;
▶
устранение конфликтов между требованиями;
▶
определение приоритетов и принципов
взаимодействия с окружением.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 14 / 34
15.
Инженерия ПОСоставляющие инженерии требований
определение
анализ
спецификация
проверка
управление
(elicitation)
(analysis)
(speci cation)
(validation)
(management)
▶
Формальное описание требований;
▶
спецификация требований к структуре ПО,
функциям, качеству и документации;
▶
задание архитектуры и логики системы.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 15 / 34
16.
Инженерия ПОСоставляющие инженерии требований
определение
анализ
спецификация
проверка
управление
(elicitation)
(analysis)
(speci cation)
(validation)
(management)
Проверка однозначности, непротиворечивости, полноты
и реализуемости требований.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 16 / 34
17.
Инженерия ПОСоставляющие инженерии требований
определение
анализ
спецификация
проверка
управление
(elicitation)
(analysis)
(speci cation)
(validation)
(management)
▶
Интеграция требований во все процессы ЖЦ;
▶
контроль реализации требований;
▶
необходимая корректировка требований.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 17 / 34
18.
Инженерия ПОПроектирование программного обеспечения
Определение
Проектирование ПО (англ. soƒware design)-процесс определения архитектуры ПО,
набора составляющих компонентов и их интерфейсов, прочих характеристик системы
и конечного состава программного продукта.
Основные концепции проектирования ПО:
▶
абстрагирование (отсеивание лишней информации) и уточнение (построение
иерархии выполнения);
▶
модульность (выделение автономных компонентов системы) и архитектура
(общая структура системы, связывающая все компоненты);
▶
структуризация (представления взаимоотношений между данными)
и инкапусляция (отделение реализации от представления).
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 18 / 34
19.
Инженерия ПООпределение
Архитектура ПО
Архитектура программного проекта высокоуровневое представление структуры
системы и спецификация ее компонентов и логики их взаимодействия.
Преимущества использования архитектуры ПО:
▶
основа для анализа системы на ранних этапах ее разработки;
▶
основа для повторного использования компонентов и решений;
▶
упрощение принятия решений касательно разработки, развертывания
и поддержки ПО;
▶
упрощение диалога с заказчиком;
▶
уменьшение рисков и снижение затрат на производство ПО.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 19 / 34
20.
Инженерия ПОШаблоны (паттерны) проектирования
Определение
Шаблон проектирования (англ. design pattern) типовой конструктивный элемент
программной системы, задающий взаимодействие нескольких компонентов
системы, а также роли и сферы ответственности исполнителей. Основным языком
задания этого элемента является UML.
Виды шаблонов:
▶
порождающие (англ. creational patterns) связанные с созданием объектов.
▶
структурные (англ. structural patterns) определяющие структуру композиции
из нескольких объектов.
▶
поведенческие (англ. behavioral patterns) определяющие поведение объектов.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 20 / 34
21.
Инженерия ПОИнструменты проектирования
Описание элементов ПО осуществляется с помощью нотаций проектирования.
Структурная нотация представление основных аспектов элементов ПО, их
интерфейсов и взаимосвязей.
Инструменты:
UML-описание шаблона «Декоратор»
▶
ADL (architecture description language);
▶
UML (uni ed modeling language);
▶
ERD (entity – relation diagrams);
▶
IDL (interface description language).
Нотации включают языки описания архитектуры и
интерфейса, диаграммы классов и объектов, диаграммы
сущность-связь, компонентов, развертывания, а также
структурные диаграммы и схемы.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 21 / 34
22.
Инженерия ПОИнструменты проектирования
Описание элементов ПО осуществляется с помощью нотаций проектирования.
Поведенческая нотация определенное представление динамики работы
системы и ее элементов.
Инструменты:
▶
диаграммы потоков данных (data ow); таблицы
▶
принятия решений (decision tables); формальные
▶
языки спецификации (Z, VDM, RAISE).
Диаграмма состояний эмулятора
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 22 / 34
23.
Инженерия ПОКонструирование ПО
Определение
Конструирование ПО (англ. soƒware construction) создание ПО из составных
элементов (блоков, операторов, функций) и его проверка методами верификации и
тестирования.
Техники конструирования: кодирование, верификация, модульное тестирование
(unit testing), тестирование итеграции (integration testing), отладка (debugging).
Инструменты конструирования: языки конструирования; программные
методы и инструментальные системы (компиляторы, СУБД, генераторы
отчетов, системы управления версиями, конфигурацией, тестированием).
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 23 / 34
24.
Инженерия ПООсновы конструирования ПО
▶
Снижение сложности (англ. minimizing complexity) - акцент на читаемости кода, а
не его «красоте». Keep it simple, stupid (KISS).
Средства достижения: стандарты кодирования.
▶
Ожидание изменений (англ. anticipating change) -использование инструментов,
позволяющих оперативно вносить изменения и дополнять код.
Средства достижения: средства коммуникации (напр., системы документирования),
диаграммы UML.
▶
Структуризация для проверок (англ. constructing for veri cation) построение ПО,
ошибки в котором выявляются на как можно более ранних этапах.
Средства достижения: обзоры кода (code reviews), модульное тестирование,
автоматизация тестирования.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 24/ 34
25.
Инженерия ПОСтандарты при конструировании
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 25 / 34
26.
Инженерия ПОТестирование ПО
Определение
Тестирование ПО -это процесс проверки готовой программы в статике (обзоры
кода, инспекции и т. п.) и динамике (прогон программы на тестовых данных) с
целью обеспечить ее соответствие заданным требованиям.
Виды тестирования:
▶
модульное (unit testing);
▶
интеграционное (integration testing);
▶
системное (system testing);
▶
приемка (acceptance testing).
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 26/ 34
27.
Инженерия ПОСопровождение ПО
Определение
Сопровождение ПО (англ. soƒware maintenance) - совокупность действий по
обеспечению работы ПО, внесению изменений при выявлении ошибок, адаптации
к новой среде исполнения, улучшения продуктивности или других характеристик ПО.
Основные вопросы сопровождения ПО:
▶
технические вопросы (напр., тестирование, анализ изменений);
▶
вопросы управления (напр., организация персонала);
▶
экономические вопросы (оценка стоимости сопровождения);
▶
измерительные вопросы (создание метрик для анализа эффективности
сопровождения).
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 27 / 34
28.
Инженерия ПОУправление конфигурацией ПО
Определение
Управление конфигурацией – дисциплина идентификации компонентов системы,
определения функциональных и физических характеристик аппаратного и
программного обеспечения для проведения контроля внесения изменений и
трассирования конфигурации на протяжении ЖЦ.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 28/ 34
29.
Инженерия ПОУправление инженерией ПО
Определение
Управление инженерией ПО (менеджмент) – руководство работами команды
разработчиков ПО в процессе выполнения плана проекта, определение критериев
и оценка процессов и продуктов проекта с использованием общих методов
управления, планирования и контроля работ.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 29 / 34
30.
Инженерия ПОПроцесс инженерии ПО
Определение
Процесс инженерии ПО включает концепции, инфраструктуру, методы
определения и измерения этапов ЖЦ, поиск ошибок и внесение изменений,
также анализ и оценку качества продукта.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 30 / 34
31.
Инженерия ПОМетоды и средства инженерии ПО
▶
Методы и средства включают среду разработки, средства и методы
разработки, используемые на процессах ЖЦ.
▶
Средства обеспечивают спецификацию требований, конструирование и
сопровождение ПО.
▶
Методы обеспечивают проектирование, реализацию и выполнение ПО на
процессах, а также достижение качества процессов и продуктов.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 31 / 34
32.
Инженерия ПОКачество ПО
Определение
Качество ПО – набор характеристик продукта или сервиса, которые
характеризуют его способность удовлетворить установленным или
предполагаемым потребностям заказчика.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 32 / 34
33.
Инженерия ПОВыводы
1. Ядро SWEBOK содержит пять основных областей знаний программной инженерии
(инженерия требований, проектирование, конструирование, тестирование и
сопровождение ПО), которые соответствуют процессам жизненного цикла ПО.
2. Основные области знаний содержат в себе как теоретические основы, так и
систематизированные практические навыки разработки ПО, а также методы
управления процессами разработки.
3. Все пять основных процессов ЖЦ тесно связаны между собой; особенности их
взаимодействия сильно зависят от выбранной модели жизненного цикла.
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 33 / 34
34.
Инженерия ПОСпасибо за внимание!
Программная инженерия. Лекция №1. SWEBOK: основные области знаний.
Слайд 34/ 34