Парадигма | Компоненты на основе, Распределенная децентрализованная разработка, Рынок программных компонентов |
---|---|
Разработано | Ноэль Ловиса |
Разработчик | Код Долина |
Впервые появился | 2000 ( 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 анализирует выражение и привлекает подрядчиков, пересылая контракты и платежи каждому из них. Эти подрядчики получают часть своих требований напрямую через условия своего контракта, а остаток определяется посредством сотрудничества между подрядчиками, как это разрешено условиями контракта. Каждый подрядчик компонента заключает свой контракт, возвращая фрагмент кода и данные, которые при конкатенации образуют результирующий двоичный файл проекта. [1]
Каждый привлеченный подрядчик проверяет оплату и распределяет работу по контракту, обязательно возвращая номер работы клиенту, чтобы они могли пересылать разрешения на связь для сотрудничества между подрядчиками, как подробно описано в выражении. Эти подрядчики получают часть своих требований напрямую через условия своего контракта, а остаток определяется через сотрудничество с коллегами, как разрешено условиями контракта. Получив требования проекта, каждый субподрядчик заключает субподряд на более мелкие компоненты в соответствии со своими специальными знаниями , которые делают то же самое. Каждый субподрядчик компонента возвращает фрагмент кода и данных, которые при объединении образуют единый код и фрагменты данных для получения клиентом, заключающим контракт. [1]
Конечные подрядчики в дереве контрактов проекта аналогичным образом проверяют оплату и распределяют работу по контракту, обязательно возвращая номер работы клиенту, чтобы он мог пересылать разрешения на связь для сотрудничества между подрядчиками, как указано в их специальных знаниях. Как и прежде, эти подрядчики получают часть своих требований напрямую через условия своего контракта, а остаток определяется через сотрудничество с коллегами, как разрешено условиями контракта, однако, в результате получения достаточного понимания своего контекста времени проектирования, они предоставляют свой код и фрагменты данных напрямую для получения клиентом, заключающим контракт. [1]