from 01.01.2018 until now
Angarsk, Irkutsk region, Russian Federation
The paper analyzes the core of SWEBOK knowledge, which is recognized as a basic scientific and technical document summarizing the consolidated opinion of leading Russian and international ex-perts in the field of software engineering. The analysis of ten SWEBOK knowledge areas has been carried out, and their conditional division into basic and organizational ones has been performed. The semantic relationship between the SWEBOK subject areas and the software lifecycle processes established by the ISO/IEC 12207 standard is demonstrated. Special attention is paid to the issues of requirements management, design, construction, testing, maintenance, as well as software configura-tion and quality management. The advantages and disadvantages of the considered knowledge core are noted, including the absence of some modern programming methods in it
SWEBOK, software engineering, lifecycle, ISO/IEC 12207, software requirements, design, testing, configuration management, software quality
Согласно стандарту 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. Skripnik, K.D. Lingvisticheskiy povorot i filosofiya yazyka Dzh. Lokka: interpretacii, kommentarii, teoreticheskie istochniki / K. D. Skripnik. – Tekst : neposredstvennyy // Vestnik Udmurtskogo universiteta. Seriya: Filosofiya. Psihologiya. Pedagogika. – 2017. – T. 27, vyp. 2. – S. 139–146.
2. ISO/IEC 12207:2017. Systems and software engineering – Software life cycle processes. – Tekst : neposredstvennyy.
3. Lavrischeva, E.M. Programmnaya inzheneriya: paradigmy, tehnologii i CASE-sredstva / E. M. Lavrischeva. – Moskva : ISP RAN, 2020. – 480 s. – ISBN 978-5-12345-678-9. – Tekst : neposredstvennyy.
4. ISO/IEC 9126-1:2001. Software engineering – Product quality – Part 1: Quality model. – Tekst : neposredstvennyy.
5. Velichkovskiy, B.B. Funkcional'naya organizaciya rabochey pamyati : special'nost' 19.00.01 «Obschaya psihologiya, psihologiya lichnosti, istoriya psihologii» : avtoreferat dissertacii na soiskanie uchenoy stepeni doktora psihologicheskih nauk / Velichkovskiy Boris Borisovich ; Moskovskiy gosudarstvennyy universitet im. M. V. Lomonosova. – Moskva, 2017. – 44 s. – Tekst : neposredstvennyy.
6. Bahturina, T. A. Ot MARC 21 k modeli BIBFRAME: evolyuciya mashinochitaemyh formatov Biblioteki kongressa SShA : [prezentaciya] / T. A. Bahturina. – Tekst : elektronnyy // Teoriya i praktika katalogizacii i poiska bibliotechnyh resursov : elektronnyy zhurnal. – URL: http://www.nilc.ru/journal/ (da-ta obrascheniya: 11.03.2017).
7. Moskovskaya, A.A. Mezhdu social'nym i ekonomicheskim blagom: konflikt proektov legitimacii social'nogo predprinimatel'stva v Rossii / A. A. Moskovskaya, A. A. Berendyaev, A. Yu. Moskvina. – DOIhttps://doi.org/10.14515/monitoring.2017.6.02. – Tekst : elektronnyy // Monitoring obschestvennogo mneniya: ekonomicheskie i social'nye peremeny. – 2017. – № 6. – S. 31–35. – URL: https://wciom.ru/fileadmin/file/monitoring/2017/142/2 017_142_02_Moskovskaya.pdf (data obrascheniya: 11.03.2017).



