Содержание Свода знаний программного инженера



Лекции по программной инженерии

Лекция 2. Области знаний в программной инженерии. Основные термины и определения в этой области


Оглавление

2.1 Настольная книга программных инженеров любого профиля. 3

2.2 Знания и требования к программным инженерам в области этики.. 9

2.2.1 Профессиональные и этические требования. 9

2.2.2 Кодекс этики IEEE-CS/ACM... 9

2.3. Программный продукт и его артефакты.. 11

2.3.1 Программный проект.. 13

2.3.2 Процесс проектирования. 13

2.3.3 Этап внедрения. 14

2.4 Методы и модели программной инженерии.. 14

 

 


 

Настольная книга программных инженеров любого профиля

История создания Свода знаний для программных инженеров

В 1958 всемирно известный статистик Джон Тьюкей (John Tukey) впервые ввел термин software– программное обеспечение.

Термин «Программная инженерия» был предложен в 1968 г. на конференции посвященной «Кризису ПО», возникшего в результате появления интегральных схем и катастрофического усложнения ПО.

 В 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. В 1995 году группа этой комиссии SC7 “Software Engineering” выпустила первую версию международного стандарта ISO/IEC 12207 “Software Lifecycle Processes”. Этот стандарт стал первым опытом создания единого общего взгляда на программную инженерию. Соответствующий национальный стандарт России – ГОСТ Р ИСО/МЭК 12207-99 [ГОСТ 12207, 1999] содержит полный аутентичный перевод текста международного стандарта ISO/IEC 12207-95 (1995 года).

С 90-х годов XX века стало присваивать разработчикам программ звание инженера, в США подобное звание появилось в 1998 году.

В конце 90-х годов прошлого века знания и опыт, которые были накоплены в индустрии программного обеспечения за предшествующие 30-35 лет, а также более чем 15-летних попыток применения различных моделей разработки, все это, наконец, оформилось в то, что принято называть дисциплиной программной инженерии – Software Engineering

В свою очередь, IEEE и ACM, начав совместные работы еще в 1993 году с кодекса этики(!!!) и профессиональной практики в данной области (ACM/IEEE-CS Code of Ethics and Professional Practice), к 2004 году сформулировали два ключевых описания того, что сегодня мы и называем основами программной инженерии – Software Engineering:

1. Guide to the Software Engineering Body of Knowledge (SWEBOK), IEEE 2004 Version- Руководство к Своду Знаний по Программной Инженерии, в дальнейшем просто “SWEBOK” [SWEBOK, 2004][1];

2. Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering– Учебный План для Преподавания Программной Инженерии в ВУЗах (данное название на русском языке представлено в вольном смысловом переводе) [SE, 2004].

Последняя версия Свода знаний была выпущена в 2013 г. (SWEBOK V3)[2]. Естественно, программный инженер любой специализации должен быть хорошо знаком со всеми областями этих знаний. В России материалы по SWEBOK можно найти по адресу: https://web.archive.org/web/20100201155827/http://swebok.sorlik.ru/ .

Важно понимать, что программная инженерия является развивающейся дисциплиной. Более того, данная дисциплина не касается вопросов конкретизации применения тех или иных языков программирования, архитектурных решений или, тем более, рекомендаций, касающихся более или менее распространенных, или развивающихся с той или иной степенью активности/заметности технологий (например, web-служб).

Руководство к своду знаний, каковым является SWEBOK, включает базовое определение и описание областей знаний (например, конфигурационное управление – configuration management) и, безусловно, является недостаточным для охвата всех вопросов, относящихся к вопросам создания программного обеспечения, но, в то же время необходимым для их понимания.

 Модель деятельности профессиональных сообществ и знаний в области программной инженерии по SWEBOK[3] представлена на рис. 3.1.

Одной из важнейших целей SWEBOK является именно определение и систематизация тех аспектов деятельности, которые составляют суть профессии инженера-программиста.

 

Рис. 2.1. Модель деятельности и знаний в области программной инженерии

Содержание Свода знаний программного инженера

           Описание областей знаний в SWEBOK построено по иерархическому принципу, как результат структурной декомпозиции. Такое иерархическое построение обычно насчитывает два-три уровня детализации, принятых для идентификации тех или иных общепризнанных аспектов программной инженерии. При этом, структура декомпозиции областей знаний детализирована только до того уровня, который необходим для понимания природы соответствующих тем и возможности нахождения источников компетенции и других справочных данных и материалов.

В принципе, считается, что как таковой “свод знаний” по программной инженерии представлен не в обсуждаемом руководстве (SWEBOK), а в первоисточниках, как указанных в нем, так и представленных за его рамками. Это означает, что конкретизация знаний требует обращения к соответствующим стандартам и рекомендациям.

SWEBOK описывает 10 областей знаний:

1. Software requirements– программные требования

2. Software design– дизайн (архитектура)

3. Software construction– конструирование программного обеспечения

4. Software testing- тестирование

5. Software maintenance– эксплуатация (поддержка) программного обеспечения

6. Software configuration management– конфигурационное управление

7. Software engineering management– управление в программной инженерии

8. Software engineering process– процессы программной инженерии

9. Software engineering tools and methods – инструменты и методы

10. Software quality– качество программного обеспечения

 

В дополнение к ним, SWEBOK также включает обзор смежных дисциплин, связь с которыми представлена как фундаментальная, важная и обоснованная для программной инженерии:

· Computer engineering

· Computer science

· Management

· Mathematics

· Project management

· Quality management

· Systems engineering

Интересно рассмотреть и проанализировать отличие программной инженерии от Computer engineering (Компьютерной инженерии) и Systems Engineering (Системной инженерии). Это необходимо сделать как домашнее задание.

SWEBOK не ассоциирован с той или иной моделью (например, жизненного цикла[4]) или методом. Хотя на первый взгляд первые пять областей знаний в SWEBOK представлены в традиционной последовательной (каскадной - waterfall) модели, это не более чем следование принятой последовательности освещения соответствующих тем. Остальные области и структура декомпозиции областей представлены в алфавитном порядке.

На рис. 2.2 (а,б) представлены области программной инженерии, непосредственно связанные с практикой проектирования ПО. На рис. 2.3 описаны области знаний по вопросам управления проектом разработки ПО и методам обеспечения успешной реализации проекта.

Рис. 2.2а. Содержание первых пяти областей знания SWEBOK (на английском языке)

Рис. 2.2б. Содержание первых пяти областей знания SWEBOK (a- на английском языке (на русском языке)

Рис.2.3. Области знаний SWEBOK, связанные с управлением проектом создания программного продукта и методам программной инженерии (а – на английском языке, б – на русском).

               

 


Дата добавления: 2020-12-22; просмотров: 187; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!