50 лет инженерии программного обеспечения

Статья посвящается 50 годовщине образования, ключевой на сегодняшний день области информатики – инженерии программного обеспечения. В октябре 2018 года исполнилось 50 лет со дня проведения конференции, на которой профессиональное сообщество программистов и ученых ввело в обращение и обосновало терми...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
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 Ukraine
id 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