SWEBOK
создатель Crew 11
1. Ядро знаний SWEBOK
1.1. SWEBOK (soŌware engineering body of knowledge)основной научно-техническийдокумент по программной инженерии, отображающий знания и накопленный опытспециалистов по программной инженерии.
2. Требования к ПО
2.1. Характеристика ПО, с помощью которой конечным пользователем ПО решается какая-либо задача или достигается определенная цель;характеристика или свойство ПО, определенное контрактом на его разработку или другим документом.Цель требований:определение функций, условий и ограничений, присущих ПО;спецификация данных, технического сопровождения и среды исполнения.
2.2. Виды требований:Требования к продукту и процессу условия выполнения и режим работы ПО,ограничения на среду исполнения; определение принципов взаимодействия с другими программами.Функциональные требования определяют назначение и функции системы.Нефункциональные требования определяют условия исполнения ПО, переносимости и доступа к данным.Системные требования требования к программной системе в целом.
3. Инженерия требований - процесс формулировки,документирования и поддержки требований к ПО, а также соответствующая область программной инженерии
3.1. Проектирование - Конструирование-Тестирование-Сопровождение
3.1.1. Составляющие инженерии требований
3.1.1.1. Определение - Извлечение информации из договоров;проведение собеседований;согласование с заказчиком.
3.1.1.2. Анализ - изучение потребностей и целей пользователей;требования к системе исполнения, аппаратуре иПО;устранение конфликтов между требованиями;определение приоритетов и принципов взаимодействия с окружением.
3.1.1.3. Спецификация - Формальное описание требований;спецификация требований к структуре ПО,функциям, качеству и документации;задание архитектуры и логики системы.
3.1.1.4. Проверка - Проверка однозначности, непротиворечивости, полноты и реализуемости требований.
3.1.1.5. Управление - Интеграция требований во все процессы ЖЦ;контроль реализации требований;необходимая корректировка требований.
4. Проектирование программного обеспечения.
4.1. Проектирование ПО процесс определения архитектуры ПО,набора составляющих компонентов и их интерфейсов, прочих характеристик системы и конечного состава программного продукта.Основные концепции проектирования ПО:абстрагирование(отсеивание лишней информации) и уточнение(построение иерархии выполнения);модульность(выделение автономных компонентов системы) и архитектура(общая структура системы, связывающая все компоненты);структуризация(представления взаимоотношений между данными)и инкапусляция(отделение реализации от представления).
5. ВЫВОД:
5.1. 1.Ядро SWEBOK содержит пять основных областей знаний программной инженерии(инженерия требований, проектирование, конструирование, тестирование исопровождение ПО), которые соответствуют процессам жизненного цикла ПО.2.Основные области знаний содержат в себе кактеоретические основы, так исистематизированныепрактические навыкиразработки ПО, а такжеметодыуправленияпроцессами разработки.3.Все пять основных процессов ЖЦ тесно связаны между собой; особенности ихвзаимодействия сильно зависят от выбранной модели жизненного цикла.
6. Стандарты при конструировании
6.1. Внешние стандарты
6.1.1. 1.Языки описания данных:(XML, SQL, YAML, ...) 2. Языки программирования:(Java, C++, C#, Python, ...) 3. Интерфейсные языки (IDL, UML, ...) 4. Интерфейсные ОС: ( API) 5. Стандарты взаимодействия: (COM, CORBA, ...)
6.2. Внутренние стандарты
6.3. 1.Координация групповой деятельности 2. Снижение сложности 3. Ожидание изменений 4. Структуризация для проверок.
7. Методы тестирования
7.1. 1.Белый ящик:тестированиев нутренних структур и операций ПО.Виды:тестирование API, внедрение ошибок (fault injecƟon), покрытие кода (codecoverage), мутационное тестирование (mutaƟon tesƟng), статическое тестирование(staƟc tesƟng).2.Черный ящик:тестирование функциональности, доступной конечному пользователю ПО.Виды:анализ граничных значений (boundary value analysis), таблицы принятия решений (decision table tesƟng), тестирование прецедентов (use case tesƟng),тестирование потоков данных (data flow tesƟng) и т. д.3.Серый ящик: тестирование ПО с частичным знанием о его внутренней структуре.Виды:тестирование интерфейсов компонентов системы, анализ обработки ошибок и т. п.
8. Типы тестирования и управление тестированием.
8.1. Управление тестированием,основные этапы тестирования:1.планирование процесса тестирования, составление планов, тестов, наборов данных;2.проведение тестирования компонентов повторного использования и шаблонов;3.генерация тестовых сценариев, соответствующих среде выполнения ПО;4.сбор сведений об отказах ПО и выявленных исключительных ситуациях;5.подготовка отчетов о результатах тестирования и оценка характеристик системы
9. Основные понятия тестирования
9.1. тапы возникновения сбоев в программе:1.программист совершает ошибку(error, mistake);2.ошибка приводит к дефекту(defect, fault, bug) в исходном коде;3.при определенных условиях исполнения дефект приводит к сбою программы(program failure).Тест набор входных данных и прочих условий (напр., характеристики операционной системы и оборудования), которые полностью определяют ход выполнения программы.Цель тестирования локализация и устранение дефектов, соответствующие всем сбоямп рограммы, обнаруженным с помощью тестов
10. Основные области знаний SWEBOK
10.1. Проектирование ПО - базовые концепции,ключевые вопросы,архитектура,нотации,стратегия и методы.
10.2. Инженерия требований-это определение,анализ,спецификация,проверка,управление.
10.3. Конструирование ПО -снижение сложности,ориентация на изменения,валидация,внешние стандарты.
10.4. Тестирование ПО -концепции уровни тестирования техники,метрики,управление тестированием.
10.5. Сопровождение ПО -концепции,сопровождение,ключевые вопросы,спецификация требований,процесс сопровождения.
11. Тестирование ПО
11.1. Тестирование ПО это процесс проверки готовой программы в статике(обзоры кода,инспекции и т. п.) и динамике(прогон программы на тестовых данных) с целью обеспечить ее соответствие заданным требованиям.Виды тестирования:модульное ;интеграционное ;системное ;приемка
12. Инструменты проектирования
12.1. Описание элементов ПО осуществляется с помощьюнотаций проектирования.Структурная нотацияпредставление основных аспектов элементов ПО, ихинтерфейсов и взаимосвязей.
12.2. Инструменты:ADL (architecture descripƟon language);UML (unified modeling language);ERD (enƟty – relaƟon diagrams);IDL (interface descripƟon language).
13. Конструирование ПО
13.1. Конструирование ПО создание ПО из составных элементов(блоков, операторов, функций) и его проверка методами верификации и тестирования. Техники конструирования:кодирование, верификация, модульное тестирование,тестирование интеграции, отладка.Инструменты конструирования:языки конструирования; программные методы и инструментальные системы (компиляторы, СУБД, генераторы отчетов, системы управления версиями, конфигурацией, тестированием)
14. Основы конструирования ПО
14.1. Снижение сложности:акцент на читаемости кода, а не его «красоте». Средства достижения:стандарты кодирования. Ожидание изменений:использование инструментов,позволяющих оперативно вносить изменения и дополнять код.Средства достижения:средства коммуникации (напр., системы документирования),диаграммы UML. Структуризация для проверок:построение ПО,ошибки в котором выявляются на как можно более ранних этапах.Средства достижения:обзоры кода модульное тестирование,автоматизация тестирования.
15. Методики сопровождения ПО
15.1. Понимание программ(чтение и осмысление кода ПО с целью внесения в него изменений.Реинженерия:усовершенствование ПО путем реорганизации или реструктуризации, а также настройка параметров и программных элементов для новой среды исполнения.Реверсная инженерия анализ ПО для выделения его компонент и взаимоотношений между ними.Используется для создания абстрактного представления ПО, чаще всего для перепрограммирования ПО для новой среды исполнения.Рефакторинг:реорганизация кода программы для улучшения ее структуры, не изменяющая функциональность ПО
16. Управление конструированием
16.1. Управление конструированием:управление процессом конструирования ПО, включающим в себя следующие этапы:1.создание модели конструирования, зависящей от выбранной модели жизненного цикла ПО;2.планирование конструирования определение расписания конструкторских работ и их распределения между исполнителями;3.измерение показателей выработка количественных показателей (напр., объем внового / повторно использованного кода; сложность кода; число обнаруженных /исправленных ошибок) для корректировки процесса разработки
17. Категории сопровождения
17.1. Корректировка устранение выявленных ошибок или нереализованных требований;адаптация настройка продукта к изменившимся условиям эксплуатации;предотвращение ошибок устранение скрытых дефектов, которые потенциально могут привести к сбоям;улучшение увеличение продуктивности или повышение уровня сопровождения.
18. Сопровождение ПО
18.1. Сопровождение ПО:совокупность действий по обеспечению работы ПО, внесению изменений при выявлении ошибок, адаптации к новой среде исполнения, улучшения продуктивности или других характеристик ПО.Основные вопросы сопровождения ПО:технические вопросы (напр., тестирование, анализ изменений);вопросы управления (напр., организация персонала);экономические вопросы (оценка стоимости сопровождения);измерительные вопросы (создание метрик для анализа эффективности сопровождения).