50 лет инженерии программного обеспечения
Статья посвящается 50 годовщине образования, ключевой на сегодняшний день области информатики – инженерии программного обеспечения. В октябре 2018 года исполнилось 50 лет со дня проведения конференции, на которой профессиональное сообщество программистов и ученых ввело в обращение и обосновало терми...
Gespeichert in:
Datum: | 2018 |
---|---|
1. Verfasser: | |
Format: | Artikel |
Sprache: | Russian |
Veröffentlicht: |
Інститут програмних систем НАН України
2018
|
Schriftenreihe: | Проблеми програмування |
Schlagworte: | |
Online Zugang: | http://dspace.nbuv.gov.ua/handle/123456789/150906 |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Назва журналу: | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
Zitieren: | 50 лет инженерии программного обеспечения / Н.А. Сидоров // Проблеми програмування. — 2018. — № 4. — С. 30-44. — Бібліогр.: 75 назв. — рос. |
Institution
Digital Library of Periodicals of National Academy of Sciences of Ukraineid |
irk-123456789-150906 |
---|---|
record_format |
dspace |
spelling |
irk-123456789-1509062019-04-19T01:25:11Z 50 лет инженерии программного обеспечения Сидоров, Н.А. Методи та засоби програмної інженерії Статья посвящается 50 годовщине образования, ключевой на сегодняшний день области информатики – инженерии программного обеспечения. В октябре 2018 года исполнилось 50 лет со дня проведения конференции, на которой профессиональное сообщество программистов и ученых ввело в обращение и обосновало термин software engineering. Статья построена на сорока пятилетнем опыте автора в инженерии программного обеспечения и цель статьи двоякая. С одной стороны, отметить важную дату для главной отрасли страны – индустрии программного обеспечения, а с другой, дать полную картину, насколько позволит размер статьи, состояния дел в инженерии программного обеспечения, помянув тех, кто внес системообразующий научный вклад в развитие отрасли. Стаття присвячується 50 річниці утворення, ключовий області інформатики - інженерії програмного забезпечення. У жовтні 2018 року минуло 50 років з дня проведення конференції, на якій професійне співтовариство вчених, обґрунтувавши увело в обіг термін software engineering (інженерія програмного забезпечення). Зараз, це велика, ефективна і результативна частина інформатики. Стаття побудована на сорока п'ятирічному досвіді автора в інженерії програмного забезпечення та аналізі відповідної літератури. Мети у статті дві. По перше, відзначити важливу дату для головної галузі нашої країни - індустрії програмного забезпечення, а по друге, надати досить повну картину стану справ в інженерії програмного забезпечення, згадуючи тих, хто вклав системоутворюючий внесок в розвиток галузі. The article is dedicated to the 50th anniversary of the key area of informatics today - software engineering. In October 2018, it was 50 years since the conference, at which the professional community of programmers and scientists put into circulation and justified the term software engineering. The article is based on the forty-five-year experience of the author in software engineering and the purposes of the article are two. In the first, to mark an important date for the main branch of the country - the software industry, and on the second, to give a complete picture of the state of affairs in software engineering, recalling those who made a system-making scientific contribution to the development of the industry. 2018 Article 50 лет инженерии программного обеспечения / Н.А. Сидоров // Проблеми програмування. — 2018. — № 4. — С. 30-44. — Бібліогр.: 75 назв. — рос. 1727-4907 DOI: https://doi.org/10.15407/pp2018.04.030 http://dspace.nbuv.gov.ua/handle/123456789/150906 502:004.45 (075.8) ru Проблеми програмування Інститут програмних систем НАН України |
institution |
Digital Library of Periodicals of National Academy of Sciences of Ukraine |
collection |
DSpace DC |
language |
Russian |
topic |
Методи та засоби програмної інженерії Методи та засоби програмної інженерії |
spellingShingle |
Методи та засоби програмної інженерії Методи та засоби програмної інженерії Сидоров, Н.А. 50 лет инженерии программного обеспечения Проблеми програмування |
description |
Статья посвящается 50 годовщине образования, ключевой на сегодняшний день области информатики – инженерии программного обеспечения. В октябре 2018 года исполнилось 50 лет со дня проведения конференции, на которой профессиональное сообщество программистов и ученых ввело в обращение и обосновало термин software engineering. Статья построена на сорока пятилетнем опыте автора в инженерии программного обеспечения и цель статьи двоякая. С одной стороны, отметить важную дату для главной отрасли страны – индустрии программного обеспечения, а с другой, дать полную картину, насколько позволит размер статьи, состояния дел в инженерии программного обеспечения, помянув тех, кто внес системообразующий научный вклад в развитие отрасли. |
format |
Article |
author |
Сидоров, Н.А. |
author_facet |
Сидоров, Н.А. |
author_sort |
Сидоров, Н.А. |
title |
50 лет инженерии программного обеспечения |
title_short |
50 лет инженерии программного обеспечения |
title_full |
50 лет инженерии программного обеспечения |
title_fullStr |
50 лет инженерии программного обеспечения |
title_full_unstemmed |
50 лет инженерии программного обеспечения |
title_sort |
50 лет инженерии программного обеспечения |
publisher |
Інститут програмних систем НАН України |
publishDate |
2018 |
topic_facet |
Методи та засоби програмної інженерії |
url |
http://dspace.nbuv.gov.ua/handle/123456789/150906 |
citation_txt |
50 лет инженерии программного обеспечения / Н.А. Сидоров // Проблеми програмування. — 2018. — № 4. — С. 30-44. — Бібліогр.: 75 назв. — рос. |
series |
Проблеми програмування |
work_keys_str_mv |
AT sidorovna 50letinženeriiprogrammnogoobespečeniâ |
first_indexed |
2025-07-13T00:52:36Z |
last_indexed |
2025-07-13T00:52:36Z |
_version_ |
1837490991476506624 |
fulltext |
Методи та засоби програмної інженерії
© Н.А. Сидоров, 2018
30 ISSN 1727-4907. Проблеми програмування. 2018. № 4
УДК 502:004.45 (075.8) https://doi.org/10.15407/pp2018.04.030
Н.А. Сидоров
50 ЛЕТ ИНЖЕНЕРИИ
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Статья посвящается 50-ой годовщине образования, ключевой на сегодняшний день области инфор-
матики – инженерии программного обеспечения. В октябре 2018 года исполнилось 50 лет со дня
проведения конференции, на которой профессиональное сообщество программистов и ученых ввело
в обращение и обосновало термин software engineering. Статья основана на сорока пятилетнем опыте
автора в инженерии программного обеспечения и цель статьи двоякая. С одной стороны, отметить
важную дату для главной отрасли страны – индустрии программного обеспечения, а с другой – сде-
лать обзор состояния дел в инженерии программного обеспечения, отметив тех, кто внес системооб-
разующий научный вклад в развитие отрасли. Статья состоит из трех разделов. В первом, излагаются
истоки и условия, которые привели к появлению инженерии программного обеспечения. Во втором,
приводятся системообразующие результаты и указываются авторы этих результатов. При этом, рас-
сматриваются такие разделы инженерии программного обеспечения как программирование, в аспек-
те структурного операторного базиса современных языков программирования; модуляризация как
основа для повторного и многократного использования программного обеспечения; моделирование
жизненного цикла, важность которого состоит в том, что оно не только привело к управлению жиз-
ненным циклом, но открывая новые процессы, определило новые продукты и ресурсы необходимые
для реализации этих процессов и позволило перейти к «программированию в большом», что потре-
бовало создания новых методов, инструментов и профессий; эмпирическая инженерия программного
обеспечения, на сегодня, это раздел инженерии программного обеспечения, представленный боль-
шим количеством и разнообразием метрик, инструментами и методами проведения измерений и ана-
лиза результатов; культура программного обеспечения, которая утверждает, что создавать каче-
ственное и надежное программное обеспечение могут только коллективы, обладающие определенной
культурой и зрелостью; экономика программного обеспечения и модели для оценки стоимости про-
граммного обеспечения; зеленые информационные технологии и программное обеспечение, экоси-
стемы. В третьем разделе, рассматривается постановка образования в инженерии программного
обеспечения.
Ключевые слова: программирование, программное обеспечение, инженерия программного обеспече-
ния, обучение.
Введение
Статья посвящается 50-ой годов-
щине образования, ключевой на сего-
дняшний день области информатики – ин-
женерии программного обеспечения. В
октябре 2018 года исполнилось 50 лет со
дня проведения конференции, на которой
профессиональное сообщество ученых
ввело в обращение и обосновало термин
software engineering [1], названный
А.П. Ершовым в русском варианте – тех-
нология программирования [2].
Значительно позднее этот термин
стали использовать как программная ин-
женерия, в Украине – с 2006 и до 2016 го-
да, а в России используется до настоящего
времени. В 2016 году в Украине, учитывая
подготовку новых стандартов обучения,
удалось привести термин в соответствие с
английским. Теперь, это инженерия про-
граммного обеспечения. Процесс оказался
длительным и болезненным, по двум при-
чинам. Во-первых, из-за упрощенного
взгляда на создание и сопровождение про-
грамм как программирование, которое и
сегодня существует в промышленности,
вследствие того, что распространено офф-
шорное производство, содержание которо-
го сводится к кодированию. Во-вторых, из-
за отсутствия значительной массы специа-
листов как в промышленности, так и в
высшей школе, которые бы хорошо пони-
мали предмет. Например, в 2006 году ко-
гда решался вопрос о содержании учебно-
го плана, создаваемого бакалаврата Про-
граммная инженерия, то пришлось пре-
одолевать значительное сопротивление
сторонников компьютерных наук. Однако,
несмотря на то, что правильный план был
принят [3], в большинстве университетов
до сегодняшнего дня читается то, что
http://dx.doi.org/10.7124/bc.000027
Методи та засоби програмної інженерії
31
«может читаться», а не то, что нужно чи-
тать по плану. Главная причина этого –
катастрофическая нехватка специалистов
по дисциплинам инженерии программного
обеспечения, которые так и остаются но-
выми для большинства преподавателей.
Поэтому у статьи две цели. Одна,
отметить важную дату для главной отрас-
ли страны – индустрии программного
обеспечения. С другой – дать полную кар-
тину состояния дел инженерии программ-
ного обеспечения, помянув выдающихся
личностей, кто внес системообразующий
вклад в развитие отрасли. Учитывая дан-
ное нужно отметить, что автор, во-первых,
излагает собственный, хотя, по возможно-
сти и аргументированный взгляд на роль
тех или иных личностей в истории инже-
нерии программного обеспечения. Во-
вторых, руководствовался только значени-
ем результатов этих личностей для разви-
тия отрасли, принципиальным влиянием
результатов на ход развития инженерии
программного обеспечения.
Материал изложен в такой последо-
вательности. Вначале рассматривается
прошлое отрасли, затем называются вы-
дающиеся личности и их результаты, и,
наконец автор рассматривает проблемы
образования и в Украине в инженерии
программного обеспечения.
Материал статьи докладывался на
конференции УкрПрог2018, но не был
опубликован.
Начало инженерии
программного обеспечения
Вследствие основания Ч. Бэбби-
джем, функционирования своей машины
на принципе программного управления
появилась необходимость писать про-
граммы, появился процесс – программи-
рование и первые программисты (А. Лав-
лейс). Впоследствии, с появлением элек-
тронных вычислительных машин (1947,
Великобритания – М. Уилкс; 1950, СССР
– С. Лебедев) и их широким распростра-
нением, этот процесс стал массовым, а,
принимая во внимание его сложность и
стоимость писателей и исполнителей про-
грамм еще и дорогим. Б. Боэм вспоминает
[4], что, когда он в 1955 году пришел пи-
сать программы в General Dynamics, пре-
обладало мнение, что инженер програм-
мист подобен инженеру по «железу». Все,
кто работал в General Dynamics был либо
инженер по «железу», либо математик.
Поэтому, прежде чем выполнять свой код
на компьютере все пользовались «желез-
ным» принципом – много раз отмерь,
один раз отрежь. Кроме этого, Б. Боэм
вспоминает, что в первый день начальник,
показывая ему компьютер, который зани-
мал огромную комнату, напоминал, что за
этот компьютер General Dynamics платит
600 долларов в час и еще Боэму 2 долла-
ра, и что он хочет, чтобы Б. Боэм дей-
ствовал адекватно, чаще практикуя отлад-
ку за столом, парную отладку и ручное
исполнение программы. Такой взгляд, как
оказалось позже, не был плодотворным,
однако благодаря этому взгляду возникли
такие организации как Association on
Computing Machinery и IEEE Computer
Society. Надо отметить, что такая же ситу-
ация складывалась и в Советском союзе
после ввода в эксплуатацию МЭСМ и
БЭСМ [5].
К 1960 году пришло понимание, что
программное обеспечение принципиально
отличается от «железа». Во-первых, про-
граммное обеспечение легко модифициро-
валось и копировалось. Во-вторых, про-
граммное обеспечение не изнашивалось, а
его сопровождение отличалось от сопро-
вождения «железа». Программное обеспе-
чение было невидимо, не имело веса, но
при этом было очень дорогим. Разработка
его была практически неуправляемой и
требовала огромного количества специфи-
каций (в 50 раз больше чем для «железа»
[6]). В-третьих, с распространением машин
в программировании появилась кадровая
проблема – нехватка программистов, кото-
рую решали путем тренинга гуманитариев,
филологов, социологов и специалистов из
подобных отраслей. Этим людям было
комфортно в «code-and-fix» модели жиз-
ненного цикла, что вело к производству
«спагетти» кода и развитию «hacker» куль-
туры, воспитывающей программистов
«ковбоев». Однако, не все в 60-х годах
поддавались влиянию «code-and-fix» моде-
ли. Отличной от этой и характерной, для
Методи та засоби програмної інженерії
32
того времени, с
точки зрения ин-
женерии програм-
много обеспече-
ния была позиция
менеджмента про-
изводства опера-
ционной системы
OS-360 (F.P. Bro-
oks [7]). Но, в це-
лом, ситуация
характеризовалась
следующим обра-
зом:
- в основном ручная работа
(software crafting), поэтому дорого и нена-
дежно;
- преобладание модели «сode-
and-fix», поэтому запутанный код;
- “heroic debugging”, поэтому
много дефектов;
- большие проекты, но «слабые»
планирование и управление, поэтому сры-
вы поставок;
- милитаризация, требование ро-
ста, разнообразия и сопровождения;
- нехватка умений и кадров.
Это был кризис. Для выхода из
кризиса стали искать пути – «серебряную
пулю» [8]. Эти по-
иски привели к не-
обходимости обсу-
ждения накопивши-
хся проблем и ор-
ганизации конфе-
ренции. Председа-
телем конференции
был выбран про-
фессор F.L. Bauer.
Подготовка к кон-
ференции была начата весной 1968 года, а
в октябре конференция состоялась [1].
Был введен термин Software engineering –
приложение систематического, дисципли-
нированного, измеримого подхода к раз-
работке, функционированию и сопровож-
дению программного обеспечения, а так-
же исследованию этого подхода; прило-
жение дисциплины инженерии к про-
граммному обеспечению (ISO/IEC/IEEE
24765-2010). Термин был выбран специ-
ально «провокационный». Дискуссии бы-
ли посвящены всем аспектам программ-
ного обеспечения, включая связь про-
граммного и аппаратного обеспечения
компьютера, проектирование и производ-
ство программного обеспечения, сопро-
вождение и обслуживание программного
обеспечения, специфицирование и управ-
ление большими проектами, образование
и подготовка инженеров по программному
обеспечению, экономика [1].
По результатам конференции были
изданы известные материалы, подготов-
ленные B. Randell и P. Naur [1]. В материа-
лах рассматривалось содержание термина
инженерия программного обеспечения
(software engineering). Конференция обес-
печила понимание следующего:
- состояние теории и практики
индустрии программного обеспечения как
основы для определения и разработки
улучшений;
- необходимость в новых методах
и практиках для создания и сопровождения
программных продуктов;
- необходимость в специальной
подготовке кадров.
Таким образом были начаты работы
в новой области науки и техники – инже-
нерии программного обеспечения. На се-
годня, это большая, эффективная и ре-
зультативная часть информатики. Напри-
мер, только в Украине работает около 200
компаний с численностью сотрудников от
80 до 800+, Software outsourcing export со-
ставлял $ 2.5 млрд. (2015), а в 2017 году
отрасль выросла на 27 %, Freelancers зара-
батывали $ 60 млн. (2014); сейчас работает
126990 специалистов, а к 2020 году будут
требоваться 200 000 [9 – 11].
Методи та засоби програмної інженерії
33
А.П. Ершов, являясь членом ТК 2
IFIP, ввел в Советском союзе термин тех-
нология программирования. В Украине
основные работы по программному обес-
печению были сосредоточены в Институте
кибернетики АН УССР, а руководил ими
В.М. Глушков. Кроме В.М. Глушкова клю-
чевыми учеными в технологии програм-
мирования были А.П. Ершов, который
ввел три инженерных подхода к созданию
программного обеспечения – конкретизи-
рующее, синтезирующее и сборочное про-
граммирование [12]; И.В. Вельбицкий со-
здавал теоретические и практические ос-
новы для индустриального производства
программного обеспечения (Стандартизо-
ванные Элементы Языка, Р – технология
программирования [13–15]); В.В. Липаев
исследовал надежность и качество про-
граммного обеспечения, внедрял ста-
ндартизацию [16, 17]. В 1979 году, в Киеве
состоялась I Всесоюзная конференция
«Технология программирования», которую
готовил И.В. Вельбицкий, а в 1985 году уже
в Калинине (Тверь) состоялась Всесоюзная
научно-техническая конференция «Про-
граммные средства как продукция про-
изводственно-технического назначения».
Выдающиеся личности и
результаты
Программирование. Поскольку
основной процесс в инженерии программ-
ного обеспечения – это программирование,
то первые результаты были получены в
данной области. Конечно, это структурное
программирование [18, 19], разработка
которого E.W. Dijkstra на основе известной
структурной теоре-
мы [20] C. Bohm и
G. Jacopini, позво-
лило аргументиро-
вано отказаться от
использования опе-
ратора go to и обес-
печило реальный
путь к созданию
понятных программ.
Модуляризация. В первом опыте
появилось понимание того, что програм-
мы, также как изделия других отраслей,
должны строиться из готовых блоков. По-
этому следующие результаты были полу-
чены в области
модуляризации
программ, то
есть представ-
ления программ
из частей, мо-
дулей. Первым
получил ре-
зультаты в этой
области M.V. Wilkes для первой эле-
ктронной вычислительной машины, ра-
ботающей на принципах J. von Neumann,
которую в 1947
году он постро-
ил, была написа-
на операционная
система, обеспе-
чивающая обра-
ботку подпро-
грамм [21]. По-
нятие подпро-
Методи та засоби програмної інженерії
34
граммы, хотя и использовалось только для
уменьшения рутинной работы в процессе
программирования, стало первым сред-
ством модульного представления про-
грамм.
Следующим шагом в этом направ-
лении было введение K. Samelson, в 1959
году для языка Algol понятия блока [22].
Блок, кроме указания границ модуля обес-
печил регулирование области действия и
времени существования объектов (пере-
менных), описанных в нем. Позднее блок и
подпрограмма составили основу блок-
ориентированных языков. Однако оста-
вался открытым вопрос, относящийся к
определению границ и размеров модуля.
Для ответа на этот вопрос L.L. Constantine
в 1968 году ввел понятия связывания
(cohesion) частей, составляющих модуль и
соединения (coupling) для указания соеди-
нения между модулями [23]. В 1972 году
D.L. Parnas ввел конкретные критерии мо-
дуляризации и предложил устройство мо-
дуля на основе понятия сокрытия ин-
формации [24]. Модуль должен был состо-
ять из двух частей. Одна часть – definition,
должна содержать описание ресурсов, ко-
торые предоставляет модуль, а вторая
часть – implementation, содержит реализа-
цию этих ресурсов. Таким образом,
D.L. Parnas реализовал сокрытие инфор-
мации, обеспечив закрытость реализации
модуля и его независимость. Это открыва-
ло возможность реализации компонентов
многократного использования. В 1980 году
N. Wirth реализовал язык программирова-
ния Modula, а позже Modula-2, в которых
использовалось понятие модуля, пред-
ложенное D.L. Par-
nas [24]. В 1984
году по проекту
J. Ichbiah был со-
здан язык програм-
мирования Ada, в
котором такое же
понятие реализова-
но в форме пакета
[25]. В 1967 году O.-J. Dahl и K. Nygaard
использовали блок и сокрытие информа-
ции при разработке языка Simula 67, в ко-
тором были заложены основы объектно-
ориентированных языков [26]. Эти основы
получили развитие благодаря работам
C.A.R. Hoare 1969 года по концепциям
наследования, позднего связывания и ра-
ботам N. Wirth по ссылкам [26, 27]. Завер-
шены эти работы в области объектно-
ориентированных языков были в 1970 году
в «чистом» объектно-ориентированном
языке SmallTalk A. Kay [28]. Таким обра-
зом, в основном были завершены работы в
области модуляризации, как для компози-
ционных, так и классификационных язы-
ков и создана основа для повторного и
многократного использования программ-
Методи та засоби програмної інженерії
35
ного обеспечения. В настоящее время эти
работы развиваются в направлении иссле-
дования и создания программного обеспе-
чения как системы систем (systems of
systems), используя связь системного ана-
лиза и инженерии программного обеспече-
ния, и развивая системную инженерию
программного обеспечения (system
software engineering) [29].
Жизненный цикл. Системообра-
зующие для инженерии программного
обеспечения результаты были получены в
управлении процессами создания и сопро-
вождения программного обеспечения – это
результаты по моделированию жизненного
цикла. Важность их состоит в том, что они
не только привели к управлению жизнен-
ным циклом, но открывая новые процессы,
определяли новые продукты и ресурсы
необходимые для реализации этих процес-
сов. Это привело к уходу от «программи-
рования в малом» и переходу к «програм-
мированию в большом», что потребовало
создания новых методов, инструментов и
профессий. Поэтому жизненный цикл иг-
рает в инженерии программного обеспече-
ния системообразующую роль. Фундамен-
тальные результаты были получены
W.W. Royce, который в 1970 году предло-
жил, а в 1978 году уточнил каскадную мо-
дель жизненного цикла [30]. Таким обра-
зом, один процесс в модели «Code-end-fix»
представлялся шестью процессами в моде-
ли W.W. Royce «Waterfall». И, хотя, как
оказалось позднее, каскадная модель не
имела практического значения, она, также
как в свое время язык программирования
Algol 58, стала фундаментальной основой
для всех моделей жизненного цикла, кото-
рые появились позже нее. Другой моде-
лью, которая уточняла каскадную модель в
практическом аспекте – спиральная, была
предложена в 1988 году B.W. Boehm [31].
Сейчас известно более тридцати моделей
жизненного цикла, которые так или иначе
основываются на этих двух моделях [32].
Важную роль
в контексте жизнен-
ного цикла сыграли
работы M. Lehman,
который указал на
три типа программ:
S- (specification), P-
(problem) и E-
(environment). Он
показал, что сопро-
вождение про-
граммного обеспе-
чения следует рассматривать как эволю-
цию, ввел математическую модель и зако-
ны эволюции [33]. Таким образом, открыв
взгляд на сопровождение программного
обеспечения как на разработку и создал
основу для повторного использования про-
граммного обеспечения (software reusing).
В 1980 году J.M. Neighbors защитил дис-
сертацию по повторному использованию, а
в 1984 году под его редакцией вышел те-
матический номер журнала IEEE
Transactions on Software engineering, кото-
рый был посвящен повторному использо-
ванию программного обеспечения [34, 35].
B.W. Boehm в статье посвященной путям
повышения эффективности разработки
программного обеспечения, назвал по-
вторное использование наиболее перспек-
тивным направлением [36]. В этой связи,
получили развитие три связанные области,
образующие в целом утилизацию про-
граммного обеспечения, это повторное
использование (reuse), восстановление
(recovery, reability) и переработка (rework)
наследуемого (legacy software) программ-
ного обеспечения [37]. Первые результаты
Методи та засоби програмної інженерії
36
в этом направлении получили T. Biggerstaff
и R. Prietto-Diaz. Работы по утилизации
программного обеспечения требовали не
только анализа наследуемого программно-
го обеспечения в контексте процессов его
разработки, но более широкого анализа
предметной области и построения нового
программного обеспечения на основе
наследуемого. Это привело к появлению
реверсивной инженерии программного
обеспечения (reverse engineering), домен-
ного анализа (domain analysis) и реинже-
нерии (reengineering) [38–42]. Таким обра-
зом, в контексте инженерии программного
обеспечения, кроме прямой инженерии
(forward engineering), направленной на со-
здание программных продуктов начали
исследоваться и применяться еще две
инженерии – обратная (backward engi-
neering) или реверсивная инженерия,
направленная на восстановление инфор-
мации о наследуемом программном обес-
печении, и реинженерия, направленная на
переработку наследуемого программного
обеспечения [43].
Эмпирическая инженерия про-
граммного обеспечения. Очевидно, так
как создание и сопровождение програм-
много обеспечения – это инженерная дея-
тельность, то она не могла быть эффектив-
ной без количественной оценки свойств и
характеристик составляющих жизненного
цикла – процессов, продуктов и ресурсов.
В основе этой оценки в инженерных от-
раслях лежит измерение. Поэтому, указан-
ные инженерии в 2005 году благодаря ра-
ботам B.W. Boehm и V.R. Basili были до-
полнены еще одной – эмпирической инже-
нерией программного обеспечения (soft-
ware empirical engineering) [44]. Сегодня,
это большой раздел инженерии программ-
ного обеспечения, представленный значи-
тельным количеством и разнообразием
метрик, инструментами и методами прове-
дения измерений и анализа результатов
[45, 46].
Культура программного обеспе-
чения. Как рано выяснилось – создание и
сопровождение программного обеспечения,
это коллектив-
ная деятель-
ность, а сейчас
еще и глобаль-
но распреде-
ленная. По-
этому, созда-
вать качествен-
ное и надеж-
ное программ-
ное обеспече-
ние могли
только коллективы, при этом, обладающие
определенной культурой и зрелостью. В
2001 году L.L. Constantine ввел понятие
культуры программного обеспечения
(software culture), рассматривая командную
разработку и парадигмы культуры [47]. В
1989 году W.S. Humphrey разработал мо-
дель для оценки зрелости процессов раз-
работки программного обеспечения
Capability Maturity Model (CMM), которая
позволила оценивать в том числе и культу-
ру программного обеспечения [48, 49]. В
2005 году в Software engineering institute
была разработана интегрированная версия
моделей CMM – Capability Maturity Model
Integration (CMMI) [49]. В 1999 году ACM
и IEEE Computer Society был разработан
кодекс этики и профессиональной практи-
ки инженера по программному обеспече-
Методи та засоби програмної інженерії
37
нию (Software Engineering Code of Ethics
and Professional Practice) [51, 52].
Экономика программного обес-
печения. Проблемы экономики программ-
ного обеспечения ставились уже на первой
конференции в 1968 году. В 1970 году,
первые результаты в этом направлении бы-
ли получены B.W. Boehm [53, 54]. В 1981
году B.W. Boehm создал модель для оценки
стоимости программного обеспечения
COnstructive COst MOdel (COCOMO), а в
2000 году, усовершенствовав ее создал мо-
дель COCOMO II [55], которая широко
применяется до настоящего времени.
Решение проблем экономичной разработки
и сопровождения программного обеспече-
ния привело в 2003 году к разработке бе-
режливых технологий (lean software
development), основанных на концепции
повторного использования и бережливого
подхода, используемого с 1962 года фир-
мой Toyota для производства своей авто-
мобильной продукции [56]. Использование
этого подхода в инженерии программного
обеспечения было описано M. Poppendieck
и T. Poppendieck [57].
Зеленые информационные техно-
логии и программное обеспечение, эко-
системы. В 1992 году в Рио-де-Жанейро
состоялась всемирная конференция, по-
священная концепции устойчивого разви-
тия [58]. На этой конференции был принят
подход к развитию мира, суть которого
формулировалась так «живем сейчас, но
помним о тех, кто будет жить в будущем».
Реализация подхода предусматривалась в
трех аспектах – экономическом, экологи-
ческом и социальном. Особенно актуаль-
ным был признан экологический аспект.
Учитывая данное, во многих индустриях
начали появляться зеленые технологии и
системы (green technologies and systems). В
контексте концепции устойчивого разви-
тия программное обеспечение является его
активом, вследствие того, что оно продукт
производственной деятельности человека.
Современная производственная деятель-
ность все чаще вступает в противоречие с
процессами, поддерживающими устойчи-
вый круговорот в биосфере. В. Вернадский
указывал на необходимость решения зада-
чи перехода от стихийных взаимодействий
человека и биосферы к сознательным, ко-
торые превращают биосферу в ноосферу и
обеспечивают устойчивое развитие. Сей-
час, эта задача вновь актуальна в контексте
программы совместных действий в инте-
ресах устойчивого развития, а программ-
ное обеспечение играет важную роль в ее
решении. Поэтому, не удивительно, что
такие работы начали появляться в инфор-
матике и в частности, в инженерии про-
граммного обеспечения [59]. Учеными
S. Murugesan и S. Naumann в 2008 году
были выполнены работы по зеленым ин-
формационным технологиям, устойчивой
информатике и устойчивой инженерии
программного обеспечения (sustainable
software engineering) [60]. Применение
экологических исследований в индустрии
программного обеспечения показывает,
что их распространение идет на основе
трех принципов и в трех основных направ-
лениях. Общими экологическими принци-
пами, которыми следует руководствовать-
ся в стремлении достичь экологических
результатов предлагаются следующие [61,
62]: эко-эффективность (eco-efficiency);
эко-справедливость (eco-equity); эко-
результативность (eco-effectives). Основ-
Методи та засоби програмної інженерії
38
ные направле-
ния, это эколо-
гическое произ-
водство и ис-
пользование
программного
обеспечения;
ресурсосберега-
ющее и безот-
ходное произ-
водство про-
граммного обес-
печения; экосистемы программного обес-
печения и программное обеспечение как
экосистема В 2013 году M. Lungu выпол-
нил первые работы по экосистемам про-
граммного обеспечения, а в августе 2013
года состоялся первый рабочий семинар по
этой теме, посвященный архитектуре эко-
систем программного обеспечения [63, 64].
M. Lehman в работах по эволюции про-
граммного обеспечения показал, что оно
характеризуется следующим:
- изменением (развитием) –
непременное свойство программного
обеспечения, обусловленное наличием
обратных связей и связанное с законами
эволюции программ;
- наличием метасистемы, которая
включает субъекты и продукты деятельно-
сти, процессы и организацию, содержит
большое количество обратных связей, ста-
билизирующих внутренних механизмов,
влияющих на процессы планирования,
управления и повышения их эффективно-
сти; эффективное планирование и обслу-
живание программы требует понимания ее
места в метасистеме, а также взаимодей-
ствий как между элементами, так и внутри
них. При этом, программы, о которых идет
речь, по классификации M. Lehman явля-
ются Е – программами, а метасистема, –
это их внешняя среда – реальный мир. На
таком взгляде на программное обеспече-
ние и строится понимание экосистем. В
этом аспекте рассматривается два типа
взаимодействий – внешние и внутренние.
Внешние взаимодействия обусловлены
наличием других экосистем. Например,
очень часто программное обеспечение ис-
пользуется в составе или рядом с другим
программным обеспечением, о существо-
вании которого разработчик не мог знать.
При этом эволюция такого программного
обеспечения зависит от эволюции других
приложений, а интерес представляют зада-
чи создания моделей таких экосистем и
моделей их эволюции. Внутренние взаи-
модействия обусловлены наличием в
программном обеспечении клонов про-
грамм, программ-агентов, «обществ»
программ [65], а также производителями,
потребителями, различными регламенти-
рующими организациями, которые в свою
очередь могут рассматриваться как экоси-
стемы. Возникают задачи исследования
устройства такого программного обеспе-
чения, принципов взаимодействия членов
«обществ» программ и «обществ» между
собой.
Образование в инженерии
программного обеспечения
Первый образовательный стандарт
SWEBOK (Software Engineering Body of
Knowledge) по инженерии программного
обеспечения был создан в 2000 году. На
сегодня действует версия 2015 года [69].
Руководство для создания планов и про-
грамм Curriculum Guidelines for
Undergraduate Degree Programs in Software
Engineering для подготовки бакалавров
было разработано в 2001 году. Сейчас дей-
ствует версия 2015 года [70]. Магистерские
программы каждый университет создает
свои.
В Украине до 2006 года специали-
сты в области инженерии программного
обеспечения готовились в рамках бака-
лаврата Компьютерные науки. В 2000 году
в Национальном авиационном университе-
те была открыта первая в Украине кафедра
Инженерии программного обеспечения и
совместно с Ассоциацией Информацион-
ные технологии Украины, в которую вхо-
дили предприятия индустрии программно-
го обеспечения, началась подготовка к от-
крытию бакалаврата по инженерии про-
граммного обеспечения [71–75]. В 2006
году такой бакалаврат был открыт, а осе-
нью сделан первый набор студентов.
Методи та засоби програмної інженерії
39
Учебный план был разработан на основе
паттерна N2S-1c из Curriculum Guidelines
for Undergraduate Degree Programs in Soft-
ware Engineering 2004 года. Сейчас боль-
шинство классических и политехнических
университетов Украины готовят бакалав-
ров по специальности 121 Инженерия про-
граммного обеспечения, а на базе специ-
альности 01.05.03 Математическое и про-
граммное обеспечение вычислительных
машин, комплексов и сетей создана докто-
рантура специальности Инженерия про-
граммного обеспечения.
Выводы
Сейчас инженерия программного
обеспечения, это одна из наибольших и
прибыльных индустрий. Специальность
инженера по программному обеспечению
высоко востребована во всем мире среди
абитуриентов, но умелых кадров по-
прежнему не хватает [10].
Вместе с тем наблюдается усиление
интеграции Software engineering и System
engineering, а также глобализации Soft-
ware-Intensive-Systems of Systems и интеро-
перабельности компонентов (возможность
взаимодействия программных и аппарат-
ных изделий разных поставщиков). В свя-
зи с этим повышается роль COTS, повтор-
ного использования и наследуемого про-
граммного обеспечения; бережливой ин-
женерии программного обеспечения; эко-
систем программного обеспечения (эколо-
гии программного обеспечения); эмпири-
ческих и математических основ инженерии
программного обеспечения.
Литература
1. Report on a conference sponsored by the
NATO science committee, Garmisch, Germa-
ny, 7th to 11th October 1968, Editors: Peter
Naur and Brian Randell.
2. Ершов А.П. Технология разработки систем
программирования [Текст]. Системное и
теоретическое программирование. Ново-
сибирск. ВЦ СО АН СССР. 1972.
С. 136–184.
3. Бондаренко М., Сидоров М., Морозова Т.,
Мендзебровський І. Модель випускника
бакалаврату «Програмна інженерія», Вища
школа. 2009. № 4. C. 50–61.
4. Boehm B. 2006, A View of 20
th
and 21
st
Cen-
tury Software engineering [Text]. ICSE’06.
May 20–28. China. 2006. P. 12–29.
5. Ершов А.П., Шура-Бура. Пути развития
программирования в СССР [Текст]. Ки-
бернетика. 6. 1976. С. 141–155.
6. Royce W. Managing the development of large
software systems: Concepts and techniquies
[Text]. Proc. Of WESCON. Aug. 1970.
7. Brooks F.P. The Mythical Man-Month: Es-
says on Software Engineering. [Text]. 1st ed.
Addison–Wesley. 1975. P. 200.
8. Brooks F.P. No silver bullet: Essence and
accidents of software engineering. [Text].
IEEE Computer. 20(4):10-19, April. 1987.
9. It Ukraine from a to z,
http://www.uadn.net/files/ua_hightech.pdf
10. Розвиток української it-індустрії,
Аналітичний звіт, It Ukraine, 2018.
11. https://dou.ua/lenta/articles/jobs-and-trends-
2017/?from=doufp.
12. Ершов А.П. Научные основы доказатель-
ного программирования [Текст]. Вестн. АН
СССР. 1984. № 10. С. 9–19.
13. Глушков В.М., Вельбицкий И.В. Техноло-
гия программирования и проблемы ее ав-
томатизации. [Текст]. УСИМ. Kиев. № 6.
1976. С. 75–93.
14. Вельбицкий И.В. Технология программи-
рования. [Текст]. Техника. Киев. Украина.
1984. 279 с.
15. International standart ISO/IEC 8631. Infor-
mation technology-Program constructs and
convention for their Representation – Second
edition 1989.08.01 Geneve 20, Switzerland:
ISO/IEC Copyright Office, P. 7. 1989.
16. Липаев В.В. Надежность программного
обеспечения АСУ. [Текст]. М.: Энергоиз-
дат, 1981.
17. Липаев В.В. Качество программного обес-
печения. [Текст]. М.: Финансы и статисти-
ка, 1983.
18. Дал У., Дейкстра Э., Хоор К. Структурное
программирование = Structured Program-
ming. 1-е изд. М.: Мир, 1975. 247 с.
http://www.uadn.net/files/ua_hightech.pdf
https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%B0%D1%80,_%D0%A7%D0%B0%D1%80%D0%BB%D1%8C%D0%B7_%D0%AD%D0%BD%D1%82%D0%BE%D0%BD%D0%B8_%D0%A0%D0%B8%D1%87%D0%B0%D1%80%D0%B4
Методи та засоби програмної інженерії
40
19. Dijkstra E.W. Go To Statement Considered
Harmful. Communications of the ACM.
Vol. 11. N 3, March 1968. P. 147–148.
20. Bohm Corrado; Giuseppe Jacopini (May
1966). "Flow Diagrams, Turing Machines and
Languages with Only Two Formation
Rules". Communications of the ACM. 9 (5):
366–371. doi:10.1145/355592.365646
21. Wilkes, Maurice (1951). "The EDSAC Com-
puter". Proceedings of the Review of Elec-
tronic Digital Computers: 79.
doi:10.1109/AFIPS.1951.13
22. Бауэр Ф., Гооз Г. Информатика. М.: Мир,
1976. 484 с.
23. Segmentation and Design Strategies for Mod-
ular Programming." In T. O. Barnett and L. L.
Constantine (eds.), Modular Programming:
Proceedings of a National Symposium.
Cambridge, Mass.: Information & Systems
Press, 1968.
24. Parnas D.L. (December 1972). "On the Crite-
ria To Be Used in Decomposing Systems into
Modules". Communications of the ACM.
15 (12): 1053–58.
doi:10.1145/361598.361623
25. Wirth N. Programming in Modula-2. Spring-
er-Verlag, Heidelberg, New York, 1982.
26. Jean Ichbiah (October 1984). «Ada: Past,
Present, Future – An Interview with Jean
Ichbiah, the Principal Designer of Ada».
Communications of the ACM. 27 (10).
P. 990–997. doi:10.1145/358274.358278
27. Dahl O.-J., Myhrhaug B., Nygaard K. SIMU-
LA67, Common base language/-Oslo. 1968.
96 p.
28. Hoare C. A. R. An axiomatic basis for com-
puter programming, Comm. Of ACM,
12(1969). P. 576–580.
29. Wirth N., Weber H. EULER: A generalization
of ALGOL, and its formal definition, Comm/
of ACM. 1966. 9. P. 13–25.
30. Goldberg A., Robson D. SmallTalk 80 The
language and its implementation, Addison-
Wesley, New-York, 1983.
31. Maier M.W. Architecting principels for sys-
tems-of-systems, Systems engineering, 1,
4(1998). P. 267–284.
32. Royce W.W. Managing the development of
large software systems Proceedings of IEEE
WESCON, 1970. 26. P. 328–388.
33. Boehm B.W. Spiral Model of software De-
velopment and Enhancement. Computer.
1988. May. P. 61–73.
34. Sydorov M.O. Software engineering: lecture
curs. K.:NAU, 2007. 140 p.
35. Lehman M.M. "Programs, life cycles, and
laws of software evolution", Proceedings of
the IEEE, September 1980. P. 1060–1076.
36. Neighbors J.M. Software construction using
components, Ph.D. Thesis, Dept. of Infor-
mation and Computer Science, University of
California, Irvin, 1981.
37. Neighbors J.M. “the draco approach to con-
structings of t ware from reusable compo-
nents, ”IEEE transactions on software engi-
neering. September 1984. Vol. 10, N 5.
P. 564–574.
38. Boehm B.W. Improving Software Productivi-
ty. Computer. 1987. Vol. 20, N 9. P. 43–57.
39. Prieto-Diaz R. and Freeman P. “Classifying
Software for Reusability,” IEEE Software.
P. 6–16. January 1987.
40. Biggerstaff T.J. “An Assessment and Analy-
sis of Software Reuse,” In Advances in
Computers 34, M. Yovits, Ed., Academic
Press, New York, NY. 1992. P. 1–57.
41. Biggerstaff T.J. and Richter C. “Reusability
Framework, Assessment, and Direc-
tions,” IEEE Software 4, 1987. 2. P. 41–49.
42. Biggerstaff T.J. Design recovery for mainte-
nance and reuse, Computer, july, 1989.
P. 36–49.
43. Chikofsky E.J., CrossII J.H. Reverse engi-
neering and design recovery: a taxonomy,
IEEE Software, January, 1990. P. 13–17.
44. Chikofsky E.J Foreword, Comm. Of ACM.
Vol. 37, N 5. 1994. P. 24.
45. Software evolution and feedback, Theory
and practice, edited by N. H. Madhavji,
Wiley. 2006. 570 p.
46. Fenton N., Pfleeger S., Glass R., Science and
substance: A challenge to software engi-
neers, IEEE Software, 1994. 11(4). P. 86–95.
47. Basili, Editorial, Empirical software engi-
neering journal, 1996 1(2).
48. Soloway E., Ehrlich K., Empirical studies of
programming knowledge, IEEE Transactions
on software engineering. 1984. Vol. 10, N 5.
P. 595–607.
49. L.L. Constantine The Peopleware Papers:
Notes on the Human Side of Software. NJ:
Prentice Hall. 2001.
50. Humphrey W.S. Characterizing the Software
Process: A Maturity Framework (CMU/SEI-
87-TR-11, ADA182895). Pittsburgh, Pa.:
Software Engineering Institute, Carnegie
Mellon University, 1987.
51. Humphrey, Watts S. Managing the Software
Process. Reading, MA: Addison-Wesley,
1989.
https://en.wikipedia.org/wiki/Communications_of_the_ACM
https://en.wikipedia.org/wiki/Digital_object_identifier
https://doi.org/10.1145%2F355592.365646
https://en.wikipedia.org/wiki/Digital_object_identifier
https://doi.org/10.1109%2FAFIPS.1951.13
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.132.7232
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.132.7232
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.132.7232
https://en.wikipedia.org/wiki/Communications_of_the_ACM
https://en.wikipedia.org/wiki/Digital_object_identifier
https://doi.org/10.1145%2F361598.361623
http://doi.acm.org/10.1145/358274.358278
http://doi.acm.org/10.1145/358274.358278
http://doi.acm.org/10.1145/358274.358278
https://ru.wikipedia.org/wiki/Communications_of_the_ACM
https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80_%D1%86%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0
https://dx.doi.org/10.1145%2F358274.358278
https://en.wikipedia.org/wiki/Proceedings_of_the_IEEE
https://en.wikipedia.org/wiki/Proceedings_of_the_IEEE
Методи та засоби програмної інженерії
41
52. Software Engineering Institute. CMMI A-
Specification, Version 1.3, July 15, 1998.
53. Software engineering code of ethics and pro-
fessional practice (Version 5.2) as recom-
mended by the IEEE-CS/ACM Joint Task
Force on Software Engineering Ethics and
Professional Practices https://www.ics.uci.
edu/~redmiles/ics131-FQ03/week08ethics/
IEEE-ACM-Ethics
54. Gotterbarn D., Miller K., Rogerson S.,
SOFTWARE ENGINEERING CODE OF
ETHICS, Comm. Of ACM. 1997. Vol. 4,
N 11. P. 110–118.
55. Barry Boehm Software Engineering Econom-
ics IEEE Transactions on Software Engineer-
ing. 1984. Vol. SE-10 (1). P. 4–21
56. Barry Boehm. Software Engineering Econom-
ics. Prentice-Hall 1981.
57. Barry Boehm, Chris Abts, A. Winsor Brown,
Sunita Chulani, Bradford K. Clark, Ellis Hor-
owitz, Ray Madachy, Donald J. Reifer, and
Bert Steece. Software Cost Estimation with
COCOMO II (with CD-ROM). Englewood
Cliffs, NJ:Prentice-Hall. 2000.
58. Shingo S. Study of Toyota production sys-
tem, Productivity press, 1981.
59. Poppendieck, Mary. Implementing lean soft-
ware development : from concept to cash.
Mary Poppendieck, Tom Poppendieck. 2007.
60. Orsato R.J. Sustainability strategies, Business
press. 2009. 243 p.
61. Chen A.J.W., Boudrean M.-C., Watson R.T.
Information systems and ecological sustaina-
bility. Journal Of Systems and Information
Technology. 2008. Vol. 10. N 3. P. 186–201.
62. Dyllick I., Hockerts K. Beyond the business
case for corporate sustainability. – Busenes
strategy and the Environment. Vol. 11.
P. 130–141.
63. Chen W., Watson R.T. Information systems
and ecological sustainability. Journal of sys-
tems and Information technology. 2008.
Vol. 140. N 3. P. 186–201.
64. Harnessing Green IT: Principles and Practic-
es, (with GR Gangadharan; Eds), Wiley and
IEEE Computer Society Press. 2012.
65. Любимский Э.З. На пути к построению
общества программ. Программирование.
2009. № 1. С. 4–10.
66. Stefan Naumann, Sustainability Informatics –
A new Subfield of Applied Informatics?
Environmental Informatics and Industrial
Ecology, Shaker Verlag, Aachen 2008.
67. Mircea Lungu, Towards reverse engineering
software ecosystems 2008 IEEE International
Conference on Software Maintenance.
68. Lungu M. Reverse Engineering Software
Ecosystems.PhD thesis, University of Lugano,
October 2009.
69. SWEBOK Guide V3.0б 2014, IEEE Society.
70. https://www.acm.org/binaries/content/assets/e
ducation/se2014.pdf
71. Сидоров М.О. Кафедра інженерії про-
грамного забезпечення. Компьютер-Клас!
2001. № 8. С. 17–19.
72. Сидоров Н.А. Инженерия программного
обеспечения – дисциплина или бака-
лаврат? Матеріали міжнародної науково-
практичної конференції «Розробка систем
програмного забезпечення: виклики часу
та роль інформаційному суспільстві». Київ,
27-28 січня 2005 р.
73. Сидоров Н.А. Инженерия ПО -дисциплина
или бакалаврат? Корпоративные системы.
2005. № 2. С. 22–27.
74. Сидоров Н.А. Инженерия программного
обеспечения – учебная дисциплина или
подготовка бакалавра? Управляющие си-
стемы и машины. 2006. № 2. С. 25–34.
75. Сидоров Н.А., Медзебровский И.Б. Подго-
товка в Украине инженеров по программ-
ному обеспечению. Управление качеством
инженерного образования и инновацион-
ные образовательные технологии: Сборник
докладов Международной научно-ме-
тодической конференции. Москва, 28–30
октября 2008. М.: МГТУ им. Н.Э. Баумана,
2008. Ч. 1. С. 14–18.
References
1. Report on a conference sponsored by the
NATO science committee, Garmisch, Germa-
ny, 7th to 11th October 1968, Editors: Peter
Naur and Brian Randell.
2. Ershov A.P. The programming systems de-
veloping technology, System and theoretical
programming. 1972. P. 136–184.
3. Bondarenko M., Sydorov M., Morozova T.,
Mendzebrovskiy I. Model of a graduate of
Bachelor’s degree “Software engineering”,
Higher education. 2009. N 4. P. 50–61.
4. Boehm B., 2006, A View of 20
th
and 21
st
Cen-
tury Software engineering [Text]. ICSE’06.
May 20–28. China. 2006. P. 12–29.
https://en.wikipedia.org/wiki/Barry_Boehm
https://en.wikipedia.org/w/index.php?title=Software_Cost_Estimation_with_COCOMO_II_(book)&action=edit&redlink=1
https://en.wikipedia.org/w/index.php?title=Software_Cost_Estimation_with_COCOMO_II_(book)&action=edit&redlink=1
http://www.wiley.com/WileyCDA/WileyTitle/productCd-1119970059.html
http://www.wiley.com/WileyCDA/WileyTitle/productCd-1119970059.html
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1119970059.html
https://ieeexplore.ieee.org/search/searchresult.jsp?searchWithin=%22First%20Name%22:%22Mircea%22&searchWithin=%22Last%20Name%22:%22Lungu%22&newsearch=true
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=4653773
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=4653773
https://www.acm.org/binaries/content/assets/education/se2014.pdf
https://www.acm.org/binaries/content/assets/education/se2014.pdf
Методи та засоби програмної інженерії
42
5. Ershov A.P. The ways of programming de-
veloping in USSR, Cebernetic. 6. 1976.
P. 141–155.
6. Royce W. Managing the development of large
software systems: Concepts and techniquies
[Text]. Proc. Of WESCON. Aug. 1970.
7. Brooks F.P. The Mythical Man-Month: Es-
says on Software Engineering. [Text]. 1st ed.
Addison–Wesley. 1975. P. 200.
8. Brooks F.P. No silver bullet: Essence and
accidents of software engineering. [Text].
IEEE Computer. 20(4):10-19, April. 1987.
9. It Ukraine from a to z,
http://www.uadn.net/files/ua_hightech.pdf
10. The developing of Ukrainian it-industry, Ana-
lytical report. 2018.
11. https://dou.ua/lenta/articles/jobs-and-trends-
2017/?from=doufp.
12. Ershov A.P. Science foundations of evidence
programming, AS USSR proceeding. 1984.
N 10. P. 9–19.
13. Glushkov V., Velbytsky I, Programming
technology and its problems implementation,
USIM. N 6. 1976. P. 75–93.
14. Velbytsky I. Programming technology, Tech-
nic. 1984. 279 p.
15. International standart ISO/IEC 8631. Infor-
mation technology-Program constructs and
convention for their Representation – Second
edition 1989.08.01 Geneve 20, Switzerland:
ISO/IEC Copyright Office, P. 7. 1989.
16. Lipaev V.V. ASM Software reliability. 1981.
17. Lipaev V.V. Software quality, Finances and
statistic, 1983.
18. Dijkstra E.W. Structured Programming. 1975.
247 p.
19. Dijkstra E.W. Go To Statement Considered
Harmful. Communications of the ACM.
Vol. 11. N 3, March 1968. P. 147–148.
20. Bohm, Corrado; Giuseppe Jacopini (May
1966). "Flow Diagrams, Turing Machines and
Languages with Only Two Formation
Rules". Communications of the ACM. 9 (5):
366–371. doi:10.1145/355592.365646.
21. Wilkes, Maurice (1951). "The EDSAC Com-
puter". Proceedings of the Review of Elec-
tronic Digital Computers: 79.
doi:10.1109/AFIPS.1951.13
22. Bauer F., Gooz G. Informatics. Mir, M.: 1976.
484 p.
23. Segmentation and Design Strategies for Mod-
ular Programming." In T. O. Barnett and L. L.
Constantine (eds.), Modular Programming:
Proceedings of a National Symposium.
Cambridge, Mass.: Information & Systems
Press, 1968.
24. Parnas D.L. (December 1972). "On the Crite-
ria To Be Used in Decomposing Systems into
Modules". Communications of the ACM.
15 (12): 1053–58. doi:10.1145/361598.361623.
25. Wirth N. Programming in Modula-2. Spring-
er-Verlag, Heidelberg, New York, 1982.
26. Jean Ichbiah (October 1984). «Ada: Past,
Present, Future – An Interview with Jean
Ichbiah, the Principal Designer of
Ada». Communications of the ACM. 27 (10).
P. 990–997. doi:10.1145/358274.358278.
27. Dahl O.-J., Myhrhaug B., Nygaard K. SIMU-
LA67, Common base language/-Oslo. 1968.
96 p.
28. Hoare C.A.R. An axiomatic basis for comput-
er programming, Comm. Of ACM, 12(1969).
P. 576–580.
29. Wirth N., Weber H. EULER: A generalization
of ALGOL, and its formal definition, Comm/
of ACM. 9. 1966. P. 13–25.
30. Goldberg A., Robson D. SmallTalk 80 The
language and its implementation, Addison-
Wesley, New-York, 1983.
31. Maier M.W. Architecting principels for sys-
tems-of-systems, Systems engineering, 1,
4(1998). P. 267–284.
32. Royce W.W. Managing the development of
large software systems Proceedings of IEEE
WESCON, 1970. 26. P. 328–388.
33. Boehm B.W. Spiral Model of software De-
velopment and Enhancement. Computer.
1988. May. P. 61–73.
34. Sydorov M.O. Software engineering: lecture
curs. K.:NAU, 2007. 140 p.
35. Lehman M.M. "Programs, life cycles, and
laws of software evolution", Proceedings of
the IEEE, September 1980.
P. 1060–1076.
36. Neighbors J.M. Software construction using
components, Ph.D. Thesis, Dept. of Infor-
mation and Computer Science, University of
California, Irvin, 1981.
37. Neighbors J.M. “the draco approach to con-
structings of t ware from reusable compo-
nents, ”IEEE transactions on software engi-
neering. September 1984. Vol. 10, N 5.
P. 564–574.
38. Boehm B.W. Improving Software Productivi-
ty. Computer. 1987. Vol. 20, N 9.
P. 43–57.
39. Prieto-Diaz R. and Freeman P. “Classifying
Software for Reusability,” IEEE Software.
P. 6–16. January 1987.
http://www.uadn.net/files/ua_hightech.pdf
https://en.wikipedia.org/wiki/Communications_of_the_ACM
https://en.wikipedia.org/wiki/Digital_object_identifier
https://doi.org/10.1145%2F355592.365646
https://en.wikipedia.org/wiki/Digital_object_identifier
https://doi.org/10.1109%2FAFIPS.1951.13
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.132.7232
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.132.7232
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.132.7232
https://en.wikipedia.org/wiki/Communications_of_the_ACM
https://en.wikipedia.org/wiki/Digital_object_identifier
https://doi.org/10.1145%2F361598.361623
http://doi.acm.org/10.1145/358274.358278
http://doi.acm.org/10.1145/358274.358278
http://doi.acm.org/10.1145/358274.358278
http://doi.acm.org/10.1145/358274.358278
https://ru.wikipedia.org/wiki/Communications_of_the_ACM
https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80_%D1%86%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0
https://dx.doi.org/10.1145%2F358274.358278
https://en.wikipedia.org/wiki/Proceedings_of_the_IEEE
https://en.wikipedia.org/wiki/Proceedings_of_the_IEEE
Методи та засоби програмної інженерії
43
40. Biggerstaff T.J. “An Assessment and Analysis
of Software Reuse,” In Advances in Comput-
ers 34, M. Yovits, Ed., Academic Press, New
York, NY. 1992. P. 1–57.
41. Biggerstaff T.J. and Richter C. “Reusability
Framework, Assessment, and Direc-
tions,” IEEE Software 4, 1987. 2. P. 41–49.
42. Biggerstaff T.J. Design recovery for mainte-
nance and reuse, Computer, july, 1989.
P. 36–49.
43. Chikofsky E.J., CrossII J.H. Reverse engi-
neering and design recovery: a taxonomy,
IEEE Software, January, 1990. P. 13–17.
44. Chikofsky E.J Foreword, Comm. Of ACM.
Vol. 37. N 5. 1994. P. 24.
45. Software evolution and feedback, Theory and
practice, edited by N. H. Madhavji, Wiley.
2006. 570 p.
46. Fenton N., Pfleeger S., Glass R., Science and
substance: A challenge to software engineers,
IEEE Software, 1994. 11(4). P. 86–95.
47. Basili, Editorial, Empirical software engineer-
ing journal, 1996 1(2).
48. Soloway E., Ehrlich K., Empirical studies of
programming knowledge, IEEE Transactions
on software engineering. 1984. Vol. 10. N 5.
P. 595–607.
49. L.L. Constantine The Peopleware Papers:
Notes on the Human Side of Software. NJ:
Prentice Hall., 2001.
50. Humphrey W.S. Characterizing the Software
Process: A Maturity Framework (CMU/SEI-
87-TR-11, ADA182895). Pittsburgh, Pa.:
Software Engineering Institute, Carnegie
Mellon University, 1987.
51. Humphrey, Watts S. Managing the Software
Process. Reading, MA: Addison-Wesley,
1989.
52. Software Engineering Institute. CMMI A-
Specification, Version 1.3, July 15, 1998.
53. Software engineering code of ethics and pro-
fessional practice (Version 5.2) as recom-
mended by the IEEE-CS/ACM Joint Task
Force on Software Engineering Ethics and
Professional Practices
https://www.ics.uci.edu/~redmiles/ics131-
FQ03/week08ethics/IEEE-ACM-Ethics
54. Gotterbarn D., Miller K., Rogerson S.
SOFTWARE ENGINEERING CODE OF
ETHICS, Comm. Of ACM. 1997. Vol. 4,
N 11. P. 110–118.
55. Barry Boehm Software Engineering Econom-
ics IEEE Transactions on Software Engineer-
ing. 1984. Vol. SE-10 (1). P. 4–21
56. Barry Boehm. Software Engineering Econom-
ics. Prentice-Hall 1981.
57. Barry Boehm, Chris Abts, A. Winsor Brown,
Sunita Chulani, Bradford K. Clark, Ellis Hor-
owitz, Ray Madachy, Donald J. Reifer, and
Bert Steece. Software Cost Estimation with
COCOMO II (with CD-ROM). Englewood
Cliffs, NJ:Prentice-Hall. 2000.
58. Shingo S. Study of Toyota production sys-
tem, Productivity press, 1981.
59. Poppendieck, Mary. Implementing lean soft-
ware development : from concept to cash.
Mary Poppendieck, Tom Poppendieck. 2007.
60. Orsato R.J. Sustainability strategies, Business
press. 2009. 243 p.
61. Chen A.J.W., Boudrean M.-C., Watson R.T.
Information systems and ecological sustaina-
bility. Journal Of Systems and Information
Technology. 2008. Vol. 10. N 3. P. 186–201.
62. Dyllick I., Hockerts K. Beyond the business
case for corporate sustainability. – Busenes
strategy and the Environment. Vol. 11.
P. 130–141.
63. Chen W., Watson R.T. Information systems
and ecological sustainability. Journal of
systems and Information technology. 2008.
Vol. 140. N 3. P. 186–201.
64. Harnessing Green IT: Principles and Practic-
es, (with GR Gangadharan; Eds), Wiley and
IEEE Computer Society Press. 2012.
65. Lyubimsky E.Z. Towards a society building
programs. Programming. N 1. 2009. P. 4–10.
66. Stefan Naumann, Sustainability Informatics –
A new Subfield of Applied Informatics? Envi-
ronmental Informatics and Industrial Ecology,
Shaker Verlag, Aachen 2008.
67. Mircea Lungu, Towards reverse engineering
software ecosystems 2008 IEEE International
Conference on Software Maintenance.
68. Lungu M. Reverse Engineering Software
Ecosystems.PhD thesis, University of Lugano,
October 2009.
69. SWEBOK Guide V3.0б 2014, IEEE Society.
70. https://www.acm.org/binaries/content/assets/e
ducation/se2014.pdf
71. Sydorov M. Software engineering department,
Computer-Class. 2001. N 8. P. 17–19.
72. Sydorov M. Is the software engineering sub-
ject or postgraduate, Proceeding of Confer-
ence “Software systems developing – the role
in information society. January 27–28, 2005.
73. Sydorov M. Is the software engineering sub-
ject or postgraduate, Corporate Systems. N 2,
2005. P. 22–27.
74. Sydorov M. Is the software engineering edu-
cation subject or postgraduate, USIM. 2006.
N 2. P. 25–34.
https://www.ics.uci.edu/~redmiles/ics131-FQ03/week08ethics/IEEE-ACM-Ethics
https://www.ics.uci.edu/~redmiles/ics131-FQ03/week08ethics/IEEE-ACM-Ethics
https://en.wikipedia.org/wiki/Barry_Boehm
https://en.wikipedia.org/w/index.php?title=Software_Cost_Estimation_with_COCOMO_II_(book)&action=edit&redlink=1
https://en.wikipedia.org/w/index.php?title=Software_Cost_Estimation_with_COCOMO_II_(book)&action=edit&redlink=1
http://www.wiley.com/WileyCDA/WileyTitle/productCd-1119970059.html
http://www.wiley.com/WileyCDA/WileyTitle/productCd-1119970059.html
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1119970059.html
https://ieeexplore.ieee.org/search/searchresult.jsp?searchWithin=%22First%20Name%22:%22Mircea%22&searchWithin=%22Last%20Name%22:%22Lungu%22&newsearch=true
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=4653773
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=4653773
https://www.acm.org/binaries/content/assets/education/se2014.pdf
https://www.acm.org/binaries/content/assets/education/se2014.pdf
Методи та засоби програмної інженерії
44
75. Sydorov M., Menzebrovsky I. Software engi-
neer education in Ukraine, Proceeding of
Conference “Management of Quality of
engineering education and education innova-
tion technologies”. 2008. Part 1. P. 14–18.
Получено 31.10.2018
Об авторе:
Сидоров Николай Александрович,
доктор технических наук,
профессор.
Количество научных публикаций в
украинских изданиях – 118.
Количество научных публикаций в
зарубежных изданиях – 12.
http://orcid.org/0000-0003-0800-1668.
Место работы автора:
Межрегиональная академия
управления персоналом,
03039, Киев,
ул. Фрометовская, 2.
Моб. тел.: 067 7980361.
Тел.: 044 2343600.
E-mail: NykSydorov@gmail.com
|