с 01.01.2018 по настоящее время
Ангарск, Иркутская область, Россия
В работе анализируется ядро знаний SWEBOK, которое признано базовым научно-техническим документом, обобщающим консолидированное мнение ведущих российских и международных экспертов в сфере программной инженерии. Проведен анализ десяти областей знаний SWEBOK, выполнено их условное разделение на основные и организационные. Продемонстрирована смысловая взаимосвязь между предметными областями SWEBOK и процессами жизненного цикла программных продуктов, установленными стандартом ISO/IEC 12207. Особое внимание уделено вопросам управления требованиями, проектированию, конструированию, тестированию, сопровождению, а также управлению конфигурацией и качеством программного обеспечения. Отмечаются достоинства и недостатки рассматриваемого ядра знаний, включая отсутствие в нём некоторых современных методов программирования
SWEBOK, программная инженерия, жизненный цикл, ISO/IEC 12207, требования к программному обеспечению, проектирование, тестирование, управление конфигурацией, качество программного обеспечения
Согласно стандарту ISO/IEC 12207, определяющему регламентированные процессы жизненного цикла программного обеспечения (ПО), ключевым научно-техническим документом в этой области выступает ядро знаний SWEBOK (Software Engineering Body of Knowledge) [1]. Оно отражает консолидированное мнение ведущих российских и мировых экспертов в области программной инженерии. Данный документ включает описание десяти предметных областей.
Разработчики данного ядра согласовали единый шаблон, по которому структурирована каждая предметная область. В результате такая схема предусматривает наличие в каждой области собственного понятийного аппарата, перечня методов и средств, а также инструментария для инженерного сопровождения работ. В рамках каждой области представлен определенный объем знаний, подлежащий практическому применению в соответствующих процессах жизненного цикла.
Для наглядной систематизации понятийного аппарата, принятого в областях знаний SWEBOK, предлагается условно разделить их на две категории. Первая – базовые (пять областей, непосредственно относящиеся к проектированию программных средств). Вторая – дополнительные, охватывающие организационные методы и подходы, которые описывают инженерные аспекты управления разработкой (управление конфигурацией, проектами и качеством). На рисунке 1 приведены основные области знаний.
Рисунок 1 – Основные области знаний SWEBOK
На рисунке 2 приведены организационные области знаний SWEBOK.
Рисунок 2 – Организационные области знаний SWEBOK
Данное разбиение областей на основные и вспомогательные соответствует структуре разбиения процессов стандарта ISO/IEC 12207, выполнение которых определяется знаниями, содержащимися в ядре SWEBOK. Рассмотрим кратко содержание каждой из перечисленных областей.
Требования к ПО (Software Requirements) объединяют в себе инженерию требований, а именно их поиск, аналитическую обработку, описание в спецификациях, подтверждение корректности и дальнейшее сопровождение. Источником этих требований служат интересы заказчиков, пользователей и разработчиков. В отдельные категории выделяются: функциональные и нефункциональные требования, системные, а также относящиеся к продукту и процессу. Управление требованиями подразумевает надзор за их исполнением и планирование ресурсного обеспечения на всех стадиях жизненного цикла.
Проектирование ПО (Software Design) определяет процесс создания архитектуры, компонентов и интерфейсов программной системы. Ключевыми концепциями здесь являются декомпозиция, абстракция, инкапсуляция, а также использование паттернов (типовых конструктивных элементов). Архитектура проекта представляет собой высокоуровневое представление структуры системы и спецификацию её компонентов. Для описания проектных решений применяются нотации UML, структурные и поведенческие диаграммы. Стратегии проектирования включают подходы «снизу-вверх», «сверху-вниз», объектно-ориентированное и компонентное проектирование.
Конструирование ПО (Software Construction) охватывает создание работающего ПО с привлечением методов верификации, кодирования и тестирования компонентов. Важнейшими принципами конструирования являются снижение сложности (минимизация и локализация сложности), предупреждение отклонений от стиля (лингвистический, формальный, визуальный стили), структуризация проверок и использование внешних стандартов (языков программирования, интерфейсов, инструментальных средств). Управление конструированием базируется на моделях жизненного цикла, планировании и внесении изменений.
Тестирование ПО (Software Testing) представляет собой процесс проверки готовой программы в статике (просмотры, инспекции) и в динамике (прогон тестовых данных). Выделяют уровни тестирования: модульное, интеграционное, системное, а также виды – функциональное, регрессионное, стресс-тестирование, альфа- и бета-тестирование. Техники тестирования делятся на методы «белого ящика» (на основе структуры ПО) и «черного ящика» (на основе спецификаций). Важной составляющей является управление процессом тестирования, включающее планирование, генерацию тестовых сценариев, сбор данных об отказах и подготовку отчетов.
Сопровождение ПО (Software Maintenance) – это совокупность действий по обеспечению работы ПО, внесению изменений при обнаружении ошибок, адаптации к новой среде и улучшению характеристик. Процесс сопровождения включает корректировку, адаптацию, улучшение и проверку. Ключевыми вопросами являются управленческие, измерительные и стоимостные. Особое место занимает эволюция ПО, включающая реинженерию (усовершенствование устаревшего ПО), реверсную инженерию (восстановление спецификаций по коду) и рефакторинг (реорганизацию кода без изменения поведения).
В числе приоритетных организационных направлений выделяется управление конфигурацией программного обеспечения (Software Configuration Management). Данный процесс обеспечивает комплексный подход к работе с конфигурацией на протяжении всего жизненного цикла разработки и эксплуатации. Он включает идентификацию структурных элементов системы, контроль за внесением изменений, фиксацию текущего состояния конфигурации, учёт её статуса, проведение аудитов, а также управление версиями и процессами доставки. В состав конфигурации входят технические, функциональные характеристики, проектная документация, исходный и исполняемый код, а также наборы программных компонентов, которые совместно формируют целостное представление о состоянии системы.
Управление инженерией ПО (Software Engineering Management) базируется на планировании, координации, измерении, контроле и учёте. Менеджер проекта координирует людские, финансовые и технические ресурсы. В состав этой области входят организационное управление (планирование, оценка стоимости, подбор персонала, управление рисками), управление процессом и проектом (сетевые диаграммы PERT, CPM) и инженерия измерений (выбор метрик, оценка характеристик продуктов и процессов).
Процесс инженерии ПО (Software Engineering Process) представляет собой метауровень, связанный с определением, реализацией, оценкой и совершенствованием самого процесса [2]. Для оценивания используется модель зрелости CMM (Capability Maturity Model), разработанная институтом программной инженерии SEI (США). Модель описывает пять уровней зрелости процесса: от начального до оптимизирующего. Стандарт ISO/IEC 15504 (SPICE) также регламентирует оценку и улучшение процессов.
Методы и инструменты инженерии ПО (Software Engineering Tools and Methods) включают эвристические методы (структурные, объектно-ориентированные, ориентированные на данные), формальные методы (основанные на математических спецификациях, аксиомах, предусловиях и постусловиях) и методы прототипирования. Инструменты охватывают все процессы жизненного цикла: от работы с требованиями и проектирования до тестирования, сопровождения и управления конфигурацией.
Качество ПО (Software Quality) определяется набором свойств продукта, характеризующих его способность удовлетворять потребности заказчика. Стандарт ISO/IEC 9126 выделяет шесть основных характеристик качества: функциональность, надёжность, удобство применения, эффективность, сопровождаемость и переносимость [3]. Планирование качества включает определение продукта, выбор методов оценки и установление соответствия требованиям. Деятельности по обеспечению качества включают инспекцию, верификацию (правильность реализации) и валидацию (соответствие потребностям заказчика). Измерение в анализе качества основывается на метриках продукта и данных об ошибках и отказах.
Важно отметить, что между стандартом ISO/IEC 12207 и ядром знаний SWEBOK существует тесная связь и взаимовлияние. Процессы стандарта отвечают на вопрос, какие действия и задачи жизненного цикла надо выполнить, чтобы построить конкретную программную систему.
Ядро знаний SWEBOK служит ориентиром по выбору методов, инструментов и средств для выполнения регламентированных действий [4]. Программная инженерия как дисциплина базируется на этом ядре и стандартах жизненного цикла, связывая их воедино через оценивание результатов, менеджмент качества и анализ затраченных ресурсов.
Тем не менее структура SWEBOK не лишена недостатков. Во-первых, наблюдается содержательное пересечение между отдельными областями знаний. Во-вторых, ряд важных направлений современного программирования в этом ядре знаний вообще не отражён. К числу таких пробелов можно отнести: методы доказательства правильности программ, вопросы эволюции программного обеспечения, распределённые и неоднородные вычислительные среды, проблемы взаимодействия систем, а также сервис-ориентированные, аспектно-ориентированные и агентные методы программирования. Кроме того, в SWEBOK не включены CASE-системы [5-7].
Следует также отметить, что стандарт ISO/IEC 12207 не устанавливает прямой связи с существующими методами и средствами программной инженерии. Однако это обстоятельство, напротив, создаёт определённую гибкость: позволяет выбирать подходящие процессы и сопоставлять им уже привычные для конкретного коллектива разработчиков методы (объектные, компонентные, сервисные).
Обоснованный подбор подходящих инструментов, средств и методов для каждого отдельного случая становится возможным благодаря использованию ядра SWEBOK и стандартов жизненного цикла, на которых зиждется программная инженерия.
При этом исчерпывающую информационную базу предоставляют как само руководство SWEBOK, так и множество профильных статей и монографий.
Стандарт служит руководством к построению процессов в сочетании с методами для реализации конкретного программного проекта, базируясь на стандартизованной инженерной основе. При выполнении небольших проектов всегда находится место творчеству и нестандартным подходам, которые привносят отдельные эксперты, разрабатывая уникальные продукты в сфере информационных технологий.
1. Скрипник, К.Д. Лингвистический поворот и философия языка Дж. Локка: интерпретации, комментарии, теоретические источники / К. Д. Скрипник. – Текст : непосредственный // Вестник Удмуртского университета. Серия: Философия. Психология. Педагогика. – 2017. – Т. 27, вып. 2. – С. 139–146.
2. ISO/IEC 12207:2017. Systems and software engineering – Software life cycle processes. – Текст : непосредственный.
3. Лаврищева, Е.М. Программная инженерия: парадигмы, технологии и CASE-средства / Е. М. Лаврищева. – Москва : ИСП РАН, 2020. – 480 с. – ISBN 978-5-12345-678-9. – Текст : непосредственный.
4. ISO/IEC 9126-1:2001. Software engineering – Product quality – Part 1: Quality model. – Текст : непосредственный.
5. Величковский, Б.Б. Функциональная организация рабочей памяти : специальность 19.00.01 «Общая психология, психология личности, история психологии» : автореферат диссертации на соискание ученой степени доктора психологических наук / Величковский Борис Борисович ; Московский государственный университет им. М. В. Ломоносова. – Москва, 2017. – 44 с. – Текст : непосредственный.
6. Бахтурина, Т. А. От MARC 21 к модели BIBFRAME: эволюция машиночитаемых форматов Библиотеки конгресса США : [презентация] / Т. А. Бахтурина. – Текст : электронный // Теория и практика каталогизации и поиска библиотечных ресурсов : электронный журнал. – URL: http://www.nilc.ru/journal/ (да-та обращения: 11.03.2017).
7. Московская, А.А. Между социальным и экономическим благом: конфликт проектов легитимации социального предпринимательства в России / А. А. Московская, А. А. Берендяев, А. Ю. Москвина. – DOIhttps://doi.org/10.14515/monitoring.2017.6.02. – Текст : электронный // Мониторинг общественного мнения: экономические и социальные перемены. – 2017. – № 6. – С. 31–35. – URL: https://wciom.ru/fileadmin/file/monitoring/2017/142/2 017_142_02_Moskovskaya.pdf (дата обращения: 11.03.2017).



