Главная страница
Навигация по странице:

  • Программная инженерия как дисциплина

  • SWEBOK: Руководство к своду знаний по программной инженерии

  • Структура и содержание SWEBOK

  • Перевод SWEBOK на русский язык

  • Представленный перевод SWEBOK 2004 никак не заменяет первоисточника и создан Сергеем Орликом при участии Юрия Булуя без какой-либо поддержки

  • Основы Программной Инженерии (по swebok) Введение Программная инженерия как дисциплина swebok руководство


    Скачать 3.21 Mb.
    НазваниеОсновы Программной Инженерии (по swebok) Введение Программная инженерия как дисциплина swebok руководство
    Анкорswebok
    Дата14.10.2022
    Размер3.21 Mb.
    Формат файлаpdf
    Имя файлаswebok_2004_ru.pdf
    ТипРуководство
    #733732
    страница1 из 30
      1   2   3   4   5   6   7   8   9   ...   30

    Основы Программной
    Инженерии (по SWEBOK)
    Сергей Орлик
    SWEBOK Сopyright © 2004 by The Institute of
    Electrical and Electronics Engineers, Inc. All rights reserved.

    Основы Программной Инженерии (по
    SWEBOK)
    1.
    Введение
    1.
    Программная инженерия как дисциплина
    2.
    SWEBOK: Руководство к своду знаний по программной инженерии
    3.
    Структура и содержание SWEBOK
    4.
    Перевод SWEBOK на русский язык
    2.
    Программные требования
    1.
    Основы программных требований (Software
    Requirements Fundamentals)
    2.
    Процесс работы с требованиями
    (Requirements Process)
    3.
    Извлечение требований (Requirements
    Elicitation)
    4.
    Анализ требований (Requirements Analysis)
    5.
    Спецификация требований (Requirements
    Specification)
    6.
    Проверка требований (Requirements
    Validation)
    7.
    Практические соображения (Practical
    Considerations)
    3.
    Проектирование программного обеспечения
    1.
    Основы проектирования (Software Design
    Fundamentals)
    2.
    Ключевые вопросы проектирования (Key
    Issues in Software Design)
    3.
    Структура и архитектура программного обеспечения (Software Structure and

    Architecture)
    4.
    Анализ качества и оценка программного дизайна (Software Design Quality Analysis and Evaluation)
    5.
    Нотации проектирования (Software Design
    Notations)
    6.
    Стратегии и методы проектирования программного обеспечения (Software Design
    Startegies and Methods)
    4.
    Конструирование программного обеспечения
    1.
    Основы конструирования (Software
    Construction Fundamentals)
    2.
    Управление конструированием (Managing
    Construction)
    3.
    Практические соображения (Practical
    Considerations)
    5.
    Тестирование программного обеспечения
    1.
    Основы тестирования (Software Testing
    Fundamentals)
    2.
    Уровни тестирования (Test Levels)
    3.
    Техники тестирования (Test Techniques)
    4.
    Измерение результатов тестирования (Test- related measures)
    5.
    Процесс тестирования (Test Process)
    6.
    Сопровождение программного обеспечения
    1.
    Основы сопровождения программного обеспечения (Software Maintenance
    Fundamentals)
    2.
    Ключевые вопросы сопровождения программного обеспечения (Key Issues in

    Software Maintenance)
    3.
    Процесс сопровождения (Maintenance
    Process)
    4.
    Техники сопровождения (Techniques for
    Maintenance)
    7.
    Конфигурационное управление
    1.
    Управление SCM-процессом (Management of SCM Process)
    2.
    Идентификация программных конфигураций
    (Software Configuration Identification)
    3.
    Контроль программных конфигураций
    (Software Configuration Control)
    4.
    Учет статусов конфигураций (Software
    Configuration Status Accounting)
    5.
    Аудит конфигураций (Software Configuration
    Auditing)
    6.
    Управление выпуском и поставкой (Software
    Release Management and Delivery)
    8.
    Управление программной инженерией
    1.
    Инициирование и определение содержания
    (Initiation and Scope Definition)
    2.
    Планирование программного проекта
    (Software Project Planning)
    3.
    Выполнение программного проекта
    (Software Project Enactment)
    4.
    Обзор и оценка (Review and Evaluation)
    5.
    Закрытие (Closure)
    6.
    Измерения в программной инженерии
    (Software Engineering Measurement)
    9.
    Процесс программной инженерии

    1.
    Реализация и изменение процесса (Process
    Implementation and Change)
    2.
    Определение процесса (Process Definition)
    3.
    Оценка процесса (Process Assessment)
    4.
    Измерения в отношении процессов и продуктов (Process and Product
    10.
    Инструменты и методы программной инженерии
    1.
    Инструменты программной инженерии
    (Software Engineering Tools)
    2.
    Методы программной инженерии (Software
    Engineering Methods)
    11.
    Качество программного обеспечения
    1.
    Основы качества программного обеспечения (Software Quality Fundamentals)
    2.
    Процессы управления качеством программного обеспечения (Software Quality
    Processes)
    3.
    Практические соображения (Practical
    Considerations)
    12.
    Модели жизненного цикла программного обеспечения
    1.
    Стандарт 12207: Процессы жизненного цикла программного обеспечения
    2.
    Модели жизненного цикла
    13.
    Дополнительная библиография

    Введение
    В конце 90-х годов прошлого века знания и опыт,
    которые были накоплены в индустрии программного обеспечения за предшествующие 30-35 лет, а также более чем 15-летних попыток применения различных моделей разработки, все это, наконец, оформилось в то,
    что принято называть дисциплиной программной инженерии – Software Engineering. В какой-то мере,
    такое формирование дисциплины на основе широко распространенного практического опыта напоминает те процессы, которые происходили в управлении проектами. Возникали и развивались профессиональные ассоциации, специализированные институты, комитеты по стандартизации и другие образования, которые, в конце концов, пришли к общему мнению о необходимости сведения профессиональных знаний по соответствующим областям и стандартизации соответствующих программ обучения.
    Программная инженерия как дисциплина
    В 1958 всемирно известный статистик Джон Тьюкей
    (John Tukey) впервые ввел термин software
    программное обеспечение. В 1972 году IEEE* выпустил первый номер Transactions on Software Engineering
    Труды по Программной Инженерии. Первый целостный взгляд на эту область профессиональной деятельности появился 1979 году, когда Компьютерное Общество IEEE
    подготовило стандарт IEEE Std 730 по качеству программного обеспечения. После 7 лет напряженной работы, в 1986 году IEEE выпустило IEEE Std 1002
    “Taxonomy of Software Engineering Standards”.

    Наконец, в 1990 году началось планирование всеобъемлющих международных стандартов, в основу которых легли концепции и взгляды стандарта IEEE Std
    1074 и результатов работы образованной в 1987 году совместной комиссии ISO/IEC JTC 1 2
    . В 1995 году группа этой комиссии SC7 “Software Engineering” выпустила первую версию международного стандарта ISO/IEC
    12207 “Software Lifecycle Processes”. Этот стандарт стал первым опытом создания единого общего взгляда на программную инженерию. Соответствующий национальный стандарт России – ГОСТ Р ИСО/МЭК
    12207-99 [ГОСТ 12207, 1999] содержит полный аутентичный перевод текста международного стандарта
    ISO/IEC 12207-95 (1995 года).
    В свою очередь, IEEE и ACM
    3
    , начав совместные работы еще в 1993 году с кодекса этики и профессиональной практики в данной области (ACM/IEEE-CS Code of Ethics and Professional Practice), к 2004 году сформулировали два ключевых описания того, что сегодня мы и называем основами программной инженерии – Software
    Engineering: - Guide to the Software Engineering Body of
    Knowledge (SWEBOK), IEEE 2004 Version - Руководство к
    Своду Знаний по Программной Инженерии, в дальнейшем просто “SWEBOK” [SWEBOK, 2004]; -
    Software Engineering 2004. Curriculum Guidelines for
    Undergraduate Degree Programs in Software Engineering
    Учебный План для Преподавания Программной
    Инженерии в ВУЗах
    1
    (данное название на русском языке представлено в вольном смысловом переводе) [SE,
    2004].

    1 IEEE - Computer Society of the Institute for Electrical and Electronic Engineers, IEEE Computer Society –
    IEEE-CS (Компьютерное Общество) или просто
    IEEE. https://www.ieee.org
    2 ISO – International Organization for Standardization.
    https://www.iso.ch ; IEC – International Electrotechnical
    Commission; JTC 1 – Joint Technical Committee 1,
    Information technology
    3 ACM – Association of Computer Machinery
    Оба стандарта стали результатом консенсуса ведущих представителей индустрии и признанных авторитетов в области программной инженерии - по аналогии с тем,
    как был создан PMI PMBOK. Так мы пришли к сегодняшнему состоянию Software Engineering как дисциплины.
    SWEBOK: Руководство к своду знаний по
    программной инженерии
    C 1993 года IEEE и ACM координируют свои работы в рамках специального совместного комитета - Software
    Engineering Coordinating Committee (SWECC - http://www.computer.org/tab/swecc). Проект SWEBOK был инициирован этим комитетом в 1998 году. Оцененный предположительный объем содержания SWEBOK и другие факторы привели к тому, что было рекомендовано проводить работы по реализации проекта не только силами добровольцев из рядов экспертов индустрии и представителей крупнейших потребителей и производителей программного обеспечения, но и на основе принципа “полной занятости”. Базовый комплекс работ, в соответствии со специальным контрактом, был передан в Software

    Engineering Management Research Laboratory
    Университета Квебек в Монреале (Universite du Quebec a
    Montreal). Среди компаний, поддержавших этот уникальный проект были Boeing, MITRE, Raytheon, SAP.
    В результате проекта, оcуществленного при финансовой поддержке этих и других компаний и организаций, а также с учетом его значимости для индустрии, SWEBOK
    Advisory Committee (SWAC) принял решение сделать
    SWEBOK 2004 trial edition общедоступной. В
    перспективе, в зависимости от финансирования, SWAC
    считал необходимым законченную версию SWEBOK
    (изначально планировалось, что она будет готова в 2008
    году) сделать также свободно доступной на Web-сайте проекта – http://www.swebok.org. Сегодняшняя
    “публичность” (общедоступность) результатов проекта стала возможна, в первую очередь, именно благодаря поддержке SWEBOK Industrial Advisory Board (IAB) –
    структуры, объединяющей представителей компаний,
    поддержавших проект.
    Проект SWEBOK планировался в виде трех фаз:
    Strawman (“соломенный человек”), Stoneman (“каменный человек”) и Ironman (“железный человек”). К 2004 году была выпущена версия Руководства по Своду Знаний 3- ей фазы - Ironman, то есть максимально приближенная к окончательному варианту и одобренная IEEE в феврале
    2005 года к публикации в качестве Trial-версии.
    Основная цель текущей “пробной” версии SWEBOK –
    улучшить представление, целостность и полезность материала руководства на основе сбора и анализа откликов на данную версию с тем, чтобы выпустить финальную редакцию документа в 2008 году. Однако версии 2008 не появилось, хотя ряд дополнений на
    начало 2010 года и находится уже в виде драфтов, что не исключает расширения SWEBOK в ближайшей перспективе и, в то же время, не принижает значимости уже выпущенной версии 2004.
    По ряду обоснованных причин, “SWEBOK является достаточно консервативным” [SWEBOK, 2004, с.B-2].
    После 6 лет непосредственных работ над документом,
    SWEBOK включал “лишь” 10 областей знаний
    (knowledge areas, KA). При этом, что справедливо и для
    PMBOK, добавление новых областей знаний в SWEBOK
    достаточно прозрачно. Все, что для этого необходимо,
    зрелость (или, по крайней мере, явный и быстрый процесс достижения зрелости) и общепринятость соответствующей области знаний, если это не приведет к серьезному усложнению SWEBOK. (Концепция
    “общепринятости” - generally accepted – определена в
    IEEE Std 1490-1998, Adoption of PMI Standard — A Guide to the Project Management Body of Knowledge)
    Важно понимать, что программная инженерия является развивающейся дисциплиной. Более того, данная дисциплина не касается вопросов конкретизации применения тех или иных языков программирования,
    архитектурных решений или, тем более, рекомендаций,
    касающихся более или менее распространенных или развивающихся с той или иной степенью активности/
    заметности технологий (например, web-служб).
    Руководство к своду знаний, каковым является
    SWEBOK, включает базовое определение и описание областей знаний (например, конфигурационное управление – configuration management) и, безусловно,
    является недостаточным для охвата всех вопросов,
    относящихся к вопросам создания программного обеспечения, но, в то же время необходимым для их понимания.
    Необходимо отметить, что одной из важнейших целей
    SWEBOK является именно определение и систематизация тех аспектов деятельности, которые составляют суть профессии инженера-программиста.
    Структура и содержание SWEBOK
    Описание областей знаний в SWEBOK построено по иерархическому принципу, как результат структурной декомпозиции. Такое иерархическое построение обычно насчитывает два-три уровня детализации, принятых для идентификации тех или иных общепризнанных аспектов программной инженерии. При этом, структура декомпозиции областей знаний детализирована только до того уровня, который необходим для понимания природы соответствующих тем и возможности нахождения источников компетенции и других справочных данных и материалов. В принципе,
    считается, что как таковой “свод знаний” по программной инженерии представлен не в обсуждаемом руководстве
    (SWEBOK), а в первоисточниках (как указанных в нем,
    так и представленных за его рамками) [SWEBOK, 2004,
    с.1-2].
    SWEBOK описывает 10 областей знаний:
    Software requirements – программные требования
    Software design – дизайн (архитектура)
    Software construction – конструирование программного обеспечения

    Software testing - тестирование
    Software maintenance – эксплуатация (поддержка)
    программного обеспечения
    Software configuration management –
    конфигурационное управление
    Software engineering management – управление в программной инженерии
    Software engineering process – процессы программной инженерии
    Software engineering tools and methods –
    инструменты и методы
    Software quality – качество программного обеспечения
    В дополнение к ним, SWEBOK также включает обзор смежных дисциплин, связь с которыми представлена как фундаментальная, важная и обоснованная для программной инженерии:
    Computer engineering
    Computer science
    Management
    Mathematics
    Project management
    Quality management
    Systems engineering
    Стоит отметить, что принятые разграничения между областями знаний, их компонентами (subareas) и другими элементами достаточно произвольны. При этом,
    в отличие от PMBOK, области знаний SWEBOK не включают “входы” и “выходы”. В определенной степени такая декомпозиция связаны с тем, что SWEBOK не ассоциирован с той или иной моделью (например,
    жизненного цикла) или методом. Хотя на первый взгляд первые пять областей знаний в SWEBOK представлены в традиционной последовательной (каскадной - waterfall)
    модели, это не более чем следование принятой последовательности освещения соответствующих тем.
    Остальные области и структура декомпозиции областей представлены в алфавитном порядке.
    Для каждой области знаний SWEBOK описывает ключевые акронимы, представляет область в виде
    “подобластей” (subareas) или как их часто называют в самом SWEBOK – “секций” и дает декомпозицию каждой секции в форме списка тем (topics) с их описанием.
    Рисунок 1-а. Первые пять областей знаний
    SWEBOK на английском языке

    Рисунок 1-б. Первые пять областей знаний
    SWEBOK на русском языке

    Рисунок 2-а. Вторые пять областей знаний
    SWEBOK на английском языке

    Рисунок 2-б. Вторые пять областей знаний
    SWEBOK на русском языке

    Рисунок 3-а. Области знаний связанных дисциплин на английском языке

    Рисунок 3-б. Области знаний связанных дисциплин на русском языке
    Перевод 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.

    Программные требования
    Глава базируется на IEEE Guide To The Software
    Engineering Body Of Knowledge - SWEBOK.
    Содержит перевод описания области знаний swebok
    “software 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
      1   2   3   4   5   6   7   8   9   ...   30


    написать администратору сайта