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