Перевод SWEBOK на русский язык
Учитывая, что существует ряд неоднозначностей и фактически отсутствует консенсус по соответствующей терминологии на русском языке, далее в книге будут использоваться как оригинальные термины на английском языке, так и те их представления по-русски, которые кажутся представляются наиболее адекватными в соответствующем контексте.
К моменту начала работы над представленным переводом SWEBOK в 2004 году, каких-либо даже фрагментарных переводов SWEBOK на русский язык не существовало. В то же время, несмотря на спорность некоторых положений SWEBOK, значимость его для индустрии программного обеспечения как первой коллективной попытки систематизации накопленных знаний просто сложно переоценить. Представленный далее перевод SWEBOK - Руководство к своду знаний по программной инженерии необходимо рассматривать как авторский перевод с замечаниями и комментариями ключевых положений SWEBOK. Такой подход ни в коем случае не подменяет оригинального SWEBOK и является всего лишь авторским прочтением последнего.
Представленный перевод SWEBOK 2004 никак не заменяет первоисточника и создан
Сергеем Орликом при участии Юрия Булуя без какой-либо поддержки IEEE или других структур по собственной инициативе в полном соответствии соSWEBOK Copyright © 2004 by The Institute of Electrical and Electronics Engineers, Inc. All rights reserved.Copyright and Reprint Permissions:This document may be copied, in whole or in part, in any form or by any means, as is, or with alterations, provided that (1) alterations are clearly marked as alterations and (2) this copyright notice is included unmodified in any copy. Далее перевод соответствующих глав SWEBOK включает расширения (замечания и комментарии), помеченные цветом, отличным от цвета перевода оригинального содержания SWEBOK.
1. Программные требования
(Software Requirements по SWEBOK)
Глава базируется на IEEE Guide to the Software Engineering Body of Knowledge - SWEBOK.
Содержит перевод описания области знаний SWEBOK “Software Requirements”, с замечаниями и комментариями.
1. Основы программных требований (Software Requirements Fundamentals)
1.1 Определение требований (Definition of a Software Requirement)
1.2 Требования к продукту и процессу (Product and Process Requirements)
1.3 Функциональные и нефункциональные требования (Functional and Non-functional Requirements
1.4 Независимые свойства (Emergent Properties)
1.5 Требования с количественной оценкой (Quantifiable Requirements)
1.6 Системные требования и программные требования (System Requirements and Software Requirements)
2. Процесс работы с требованиями (Requirements Process)
2.1 Модель процесса определения требований:
2.2 Участники процессов (Process Actors)
2.3 Управление и поддержка процессов (Process Support and Management)
2.4 Качество и улучшение процессов (Process Quality and Improvement)
3. Извлечение требований (Requirements Elicitation)
3.1 Источники требований (Requirement Sources)
3.2 Техники извлечения требований (Elicitation Techniques)
4. Анализ требований (Requirements Analysis)
4.1 Классификация требований (Requirements Classification)
4.2 Концептуальное моделирование (Conceptual Modeling)
4.3 Архитектурное проектирование и распределение требований (Architectural Design and Requirements Allocation)
5. Спецификация требований (Requirements Specification)
5.1 Определение системы (System Definition Document)
5.2 Спецификация системных требований (System Requirements Specification)
5.3 Спецификация программных требований (Software Requirements Specification - SRS)
6. Проверка требований (Requirements Validation)
6.1 Обзор требований (Requirements Review)
6.2 Прототипирование (Prototyping)
6.3 Утверждение модели (Model Validation)
6.4 Приемочные тесты (Acceptance Tests)
7. Практические соображения (Practical Considerations)
7.1 Итеративная природа процесса работы с требованиями (Iterative Nature of the Requirements Process)
7.2 Управление изменениями (Change Management)
7.3 Атрибуты требований (Requirements Attributes)
7.4 Трассировка требований (Requirements Tracing)
7.5 Измерение требований (Measuring Requirements)
Программные требования – Software Requirements – свойства программного обеспечени, которые должны быть надлежащим образом представлены в нём для решения конкретных практических задач. Данная область знаний касается вопросов извлечения (сбора), анализа, специфицирования и утверждения требований.
Опыт индустрии информационных технологий однозначно показывает, что вопросы, связанные с управлением требованиями, оказывают критически-важное влияние на программные проекты, в определенной степени - на сам факт возможности успешного завершения проектов. Только систематичная работа с требованиями позволяет корректным образом обеспечить моделирование задач реального мира и формулирование необходимых приемочных тестов для того, чтобы убедиться в соответствии создаваемых программных систем критериям, заданным реальными практическими потребностями.
На практике часто применяется подход, используемый в различных методологиях разработки ПО и базирующийся на определении групп требований к продукту. Такой подход обычно включает группы (типы, категории) требований, например: системные, программные, функциональные, нефункциональные (в частности, атрибуты качества) и т.п. Классический пример (см. рисунок 1) высокоуровневого структурирования групп требований как требований к продукту описан в работах одного из классиков дисциплины управления требованиями – Карла Вигерса.
Рисунок 1. Уровни требований по Вигерсу [Вигерс, 2003, с.8, рис. 1-1]
SWEBOK охватывает не только вопросы структурирования и систематизации требований, но и различных процессов этапов и процессов работы с требованиями, а также некоторые практические соображения.
Рисунок 2. Область знаний “Программные требования” [SWEBOK, 2004, с.2-2, рис. 1]
(кликните на изображении для увеличения)
Сама же структура обсуждаемой области знаний в большой степени совместима со стандартами IEEE 12207.x, ISO/IEC, ГОСТ Р ИСО/МЭК 12207. Такая структура построена исходя из идеи выделения ключевых групп вопросов дисциплины.
Область знаний управления требованиями включает 7 секций, каждая из которых представлена в виде ключевых тем (см. рисунок 2). Кроме того, данная область знаний тесно связана со следующими областями:
- Software Design
- Software Testing
- Software Maintenance
- Software Configuration Management
- Software Engineering Management
- Software Engineering Process
- Software Quality