Эмерджентное кодирование

Парадигма децентрализованной разработки программного обеспечения
Эмерджентное кодирование
Официальный логотип Emergent Coding
ПарадигмаКомпоненты на основе, Распределенная децентрализованная разработка, Рынок программных компонентов
РазработаноНоэль Ловиса
РазработчикКод Долина
Впервые появился2000 ; 25 лет назад ( 2000 )
Стабильный релиз
G29 / Будет определено
Дисциплина набора текстаNA
ОбъемNA
ОСMac OS , Linux
ЛицензияЛицензия на кодирование Emergent
Расширения имени файла.ap, .elf
Веб-сайтwww.codevalley.com

Emergent Coding — это децентрализованная парадигма разработки программного обеспечения , использующая тип программного компонента , который нельзя скопировать или использовать повторно, с целью достижения как работоспособной специализации разработчиков, так и практического рынка программных компонентов. [1] [2]

Описание

Emergent Coding — это децентрализованная парадигма разработки программного обеспечения , использующая новый тип программного компонента, который нельзя копировать или использовать повторно. [1] Этот метод гарантирует разработчикам возможность безопасно выставлять свои программные компоненты на публичную продажу, не подвергая опасности перспективы повторного бизнеса , [3] что является важной особенностью как для эффективной специализации разработчиков, так и для реализации видения рынка программных компонентов Дугласа Макилроя 1968 года . [2]

Изменение представляет собой инверсию ответственности за интеграцию, так что вместо того, чтобы получать компонент в традиционном смысле, разработчик предоставляет поставщику строительную площадку проекта, а поставщик теперь интегрирует свой компонент в проект. Инверсия переключает представление компонентов с библиотеки процедур на каталог услуг по проектированию. [1]

Обратный ход позволяет этому новому типу компонента правильно масштабироваться, поскольку строительную площадку можно легко разделить для привлечения субподрядчиков, что позволяет размещать компоненты в виде сборки более мелких, которые делают то же самое. Уменьшение масштаба позволяет небольшим компонентам взять на себя роль традиционного компилятора , устраняя его централизм из разработки программного обеспечения, в то время как увеличение масштаба приводит к компонентам, специфичным для домена, для выражения требований проекта . [1]

История

Дуглас Макилрой на конференции НАТО в 1968 году заметил: «Индустрия программного обеспечения не индустриализирована» [2] и предложил рынок компонентов программного обеспечения с компонентным «распределением по каналу связи », посредством которого «даже очень маленькие компоненты могли бы прибыльно продаваться». Макилрой представил себе каталог в стиле « Sears-Roebuck », «который [он] мог бы иметь для себя, если бы [он] покупал компоненты». Предложение Макилроя не рассматривало, как может возникнуть жизнеспособная специализация разработчиков, если мы хотим превратить наших « крофтеров » в « промышленников ». В частности, хотя разработчику легко специализироваться, для него практически невозможно построить жизнеспособный бизнес в качестве специалиста.

В конце 1994 года Ноэль Ловиса предложил отменить ответственность за интеграцию как средство защиты интеллектуальной собственности поставщика , тем самым сохраняя перспективы повторного бизнеса и создавая работоспособную основу для специализации разработчиков. Ловиса основал Code Valley Corp Pty Ltd [4] в мае 2000 года для создания и внедрения практического рынка программных компонентов на основе принципала, выпустив официальный документ в 2016 году [1] и проведя испытания централизованного рынка программных компонентов в том же году. В июне 2018 года Ловиса выступил с основным докладом на ICSE 2018 в Гетеборге , Швеция [5] [6] , который был посвящен 50-летию конференции НАТО по программной инженерии 1968 года [7] [8] [2] , в котором приняли участие Макилрой и другие лидеры отрасли. В сентябре 2023 года Макилрой пригласил Ловису представить Emergent Coding в Дартмутском колледже , штат Нью-Гемпшир. [9]

В конце 2023 года Code Valley начала испытания децентрализованного и полностью некастодиального рынка программных компонентов, включающего в себя настраиваемую интегрированную среду разработки (IDE), более 5000 программных компонентов, занимающих 4 уровня абстракции (поведение, системы, данные, байты), распределенную систему отслеживания неисправностей (DFT), одноранговую электронную систему денежных платежей и интерактивный каталог цен на компоненты, технические паспорта, спецификации контрактов и референсные проекты.

Ожидается, что реализация, созданная с помощью эмерджентного кодирования, будет публично представлена ​​в 2025 году.

Разработка программного обеспечения для экстренного кодирования

Интегрированная среда разработки (IDE) Emergent Coding

Разработка программного обеспечения на основе компонентов начинается с составления выражения, содержащего ряд контрактных утверждений для привлечения желаемых поставщиков компонентов, с помощью спецификаций контракта, опубликованных в каталоге компонентов. Поскольку все компоненты в каталоге имеют указанную цену, общая стоимость проекта может быть надежно определена из выражения до начала строительства. Когда выражение считается в порядке, а затраты приемлемыми, проект может быть построен. В процессе сборки IDE анализирует выражение и привлекает подрядчиков, пересылая контракты и платежи каждому из них. Эти подрядчики получают часть своих требований напрямую через условия своего контракта, а остаток определяется посредством сотрудничества между подрядчиками, как это разрешено условиями контракта. Каждый подрядчик компонента заключает свой контракт, возвращая фрагмент кода и данные, которые при конкатенации образуют результирующий двоичный файл проекта. [1]

Каждый привлеченный подрядчик проверяет оплату и распределяет работу по контракту, обязательно возвращая номер работы клиенту, чтобы они могли пересылать разрешения на связь для сотрудничества между подрядчиками, как подробно описано в выражении. Эти подрядчики получают часть своих требований напрямую через условия своего контракта, а остаток определяется через сотрудничество с коллегами, как разрешено условиями контракта. Получив требования проекта, каждый субподрядчик заключает субподряд на более мелкие компоненты в соответствии со своими специальными знаниями , которые делают то же самое. Каждый субподрядчик компонента возвращает фрагмент кода и данных, которые при объединении образуют единый код и фрагменты данных для получения клиентом, заключающим контракт. [1]

Конечные подрядчики в дереве контрактов проекта аналогичным образом проверяют оплату и распределяют работу по контракту, обязательно возвращая номер работы клиенту, чтобы он мог пересылать разрешения на связь для сотрудничества между подрядчиками, как указано в их специальных знаниях. Как и прежде, эти подрядчики получают часть своих требований напрямую через условия своего контракта, а остаток определяется через сотрудничество с коллегами, как разрешено условиями контракта, однако, в результате получения достаточного понимания своего контекста времени проектирования, они предоставляют свой код и фрагменты данных напрямую для получения клиентом, заключающим контракт. [1]

Смотрите также

Примечания

Ссылки

  1. ^ abcdefgh "Emergent Coding Whitepaper, доступно на веб-сайте". Code Valley . Получено 6 августа 2024 г.
  2. ^ abcd Макилрой, Дуглас (11 октября 1968 г.). "КОМПОНЕНТЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ МАССОВОГО ПРОИЗВОДСТВА". Программная инженерия, Отчет о конференции, спонсируемой Научным комитетом НАТО, Гармиш, Германия . Получено 6 августа 2024 г.
  3. ^ Витхарана, Падмал. «Риски и проблемы компонентно-ориентированной разработки программного обеспечения». ACM.org . Сообщения ACM . Получено 30 сентября 2024 г.
  4. ^ «Австралийский бизнес-регистр».
  5. ^ "Прямой эфир с ICSE: Отраслевой форум - Ноэль Ловиса" . Получено 19 сентября 2024 г.
  6. ^ "ICSE 2018". 40-я Международная конференция по программной инженерии, 27 мая–3 июня 2018 г., Гётеборг, Швеция .
  7. ^ «Программная инженерия» (PDF) .
  8. ^ «Методы разработки программного обеспечения» (PDF)
  9. ^ "Emergent coding – a radical model of software development". 15 сентября 2023 г. Получено 19 сентября 2024 г.
Взято с "https://en.wikipedia.org/w/index.php?title=Emergent_Coding&oldid=1272883334"