~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ E567BC04FD15254EF7C66463C8E82E2C__1702546740 ✰
Заголовок документа оригинал.:
✰ Code reuse - Wikipedia ✰
Заголовок документа перевод.:
✰ Повторное использование кода — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Code_reuse ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/e5/2c/e567bc04fd15254ef7c66463c8e82e2c.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/e5/2c/e567bc04fd15254ef7c66463c8e82e2c__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 12:39:58 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 14 December 2023, at 12:39 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Повторное использование кода — Википедия Jump to content

Повторное использование кода

Из Википедии, бесплатной энциклопедии

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

Повторное использование кода может быть достигнуто разными способами в зависимости от сложности выбранного языка программирования и варьируется от подходов более низкого уровня, таких как копирование кода (например, с помощью фрагментов кода ), [3] простые функции ( процедуры или подпрограммы ) или набор объектов или функций , организованных в модули (например, библиотеки ) [4] [2] : 7  или пользовательские пространства имен , а также пакеты , платформы или комплекты программного обеспечения на более высоких уровнях.

Повторное использование кода подразумевает зависимости, которые могут усложнить сопровождение кода . [ нужна цитата ] По крайней мере одно исследование показало, что повторное использование кода уменьшает технический долг . [5]

Обзор [ править ]

Повторное использование специального кода практиковалось с самых первых дней программирования . Программисты всегда повторно использовали разделы кода, шаблоны, функции и процедуры. Однако повторное использование программного обеспечения как признанная область исследований в области разработки программного обеспечения началось только в 1968 году, когда Дуглас Макилрой из Bell Laboratories предложил основать индустрию программного обеспечения на повторно используемых компонентах.

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

Повторное использование кода может подразумевать создание отдельно поддерживаемой версии повторно используемых ресурсов. Хотя код является наиболее распространенным ресурсом, выбираемым для повторного использования, другие ресурсы, созданные в ходе цикла разработки, могут предлагать возможности для повторного использования: программные компоненты, наборы тестов, проекты, документация и т. д. [7]

Библиотека программного обеспечения является хорошим примером повторного использования кода. Программисты могут решить создать внутренние абстракции, чтобы определенные части их программы можно было использовать повторно, или создать собственные библиотеки для собственного использования. Некоторые характеристики, которые делают программное обеспечение более удобным для повторного использования, — это модульность , слабая связанность , высокая связность , сокрытие информации и разделение задач .

Чтобы вновь написанный код мог использовать часть существующего кода, необходимо определить какой-то интерфейс или средство связи. Они обычно включают «вызов» или использование подпрограммы , объекта , класса или прототипа . В организациях такие методы формализованы и стандартизированы с помощью предметной инженерии , также известной как разработка линейки программных продуктов .

Общая практика использования предыдущей версии существующей программы в качестве отправной точки для следующей версии также является формой повторного использования кода.

Некоторое так называемое «повторное использование кода» предполагает простое копирование части или всего кода из существующей программы в новую. Хотя при таком подходе организации могут получить выгоду от сокращения времени вывода на рынок нового продукта, впоследствии они могут столкнуться со многими проблемами дублирования кода, вызванными программированием вырезания и вставки .

Многие исследователи работали над тем, чтобы сделать повторное использование более быстрым, простым, систематическим и неотъемлемой частью обычного процесса программирования. Таковы некоторые из основных целей изобретения объектно-ориентированного программирования , которое стало одной из наиболее распространенных форм формализованного повторного использования. Несколько более позднее изобретение — обобщенное программирование .

Другим, более новым средством является использование программных « генераторов », программ, которые могут создавать новые программы определенного типа на основе набора параметров, которые выбирают пользователи. Областями изучения таких систем являются генеративное программирование и метапрограммирование .

Виды повторного использования [ править ]

Что касается мотивации и движущих факторов, повторное использование может быть:

  • Оппортунистический – готовясь начать проект, команда понимает, что существуют существующие компоненты, которые они могут использовать повторно.
  • Запланировано — команда стратегически разрабатывает компоненты так, чтобы их можно было повторно использовать в будущих проектах.

Повторное использование можно разделить на следующие категории:

  • Внутреннее повторное использование. Команда повторно использует свои собственные компоненты. Это может быть бизнес-решение, поскольку команда может захотеть контролировать критический для проекта компонент.
  • Внешнее повторное использование. Команда может лицензировать сторонний компонент. Лицензирование стороннего компонента обычно обходится команде в 1–20 процентов от стоимости внутренней разработки. [8] Команда также должна учитывать время, необходимое для поиска, изучения и интеграции компонента.

Что касается формы или структуры повторного использования, код может быть: [9]

  • Ссылочный — клиентский код содержит ссылку на повторно используемый код, поэтому они имеют разные жизненные циклы и могут иметь разные версии.
  • Разветвленный — клиентский код содержит локальную или частную копию повторно используемого кода, поэтому они имеют один жизненный цикл и одну версию.

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

Систематический [ править ]

Систематическое повторное использование программного обеспечения — это стратегия повышения производительности и улучшения качества индустрии программного обеспечения. Несмотря на простоту концепции, успешная реализация повторного использования программного обеспечения на практике затруднена. Причиной этого выдвигается зависимость повторного использования программного обеспечения от контекста, в котором оно реализовано. Некоторые проблемные вопросы, связанные с систематическим повторным использованием программного обеспечения, которые необходимо решить: [10]

  • Четкое и четко определенное видение продукта является важной основой линейки программных продуктов (SPL).
  • эволюционная стратегия внедрения была бы более прагматичной стратегией для компании.
  • существует потребность в постоянной управленческой поддержке и лидерстве для обеспечения успеха.
  • Для поддержки разработки SPL необходима соответствующая организационная структура.
  • важно изменить образ мышления с компании, ориентированной на проекты, на компанию, ориентированную на продукт.

Примеры [ править ]

Библиотеки программного обеспечения [ править ]

Очень распространенным примером повторного использования кода является метод использования программной библиотеки . Многие общие операции, такие как преобразование информации в различные известные форматы, доступ к внешнему хранилищу, взаимодействие с внешними программами или манипулирование информацией (числа, слова, имена, местоположения, даты и т. д.) обычными способами, необходимы для многих различных программы. Авторы новых программ могут использовать код из библиотеки программного обеспечения для выполнения этих задач вместо того, чтобы «изобретать велосипед», написав полностью новый код непосредственно в программе для выполнения операции. Реализации библиотек часто имеют то преимущество, что они хорошо протестированы и охватывают необычные или загадочные случаи. К недостаткам относятся невозможность настройки деталей, которые могут повлиять на производительность или желаемый результат, а также время и стоимость приобретения, изучения и настройки библиотеки. [11]

Шаблоны проектирования [ править ]

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

Фреймворки [ править ]

Разработчики обычно повторно используют большие части программного обеспечения через сторонние приложения и платформы. Хотя фреймворки обычно зависят от предметной области и применимы только к семействам приложений. [ нужна цитата ] .

Функция высшего порядка [ править ]

В функциональном программировании функции высшего порядка могут использоваться во многих случаях, когда ранее использовались шаблоны проектирования или структуры.

Ретрокомпьютинг [ править ]

Ретрокомпьютинг подразумевает повторное использование кода просто потому, что ретро-программы запускаются на старых компьютерах или на эмуляторах их .

Компьютерная безопасность [ править ]

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

Примерами атак с повторным использованием кода являются атака с возвратом в libc , программирование, ориентированное на возврат , и программирование, ориентированное на переход. [12] [13]

Компоненты [ править ]

Компонент в объектно-ориентированном виде представляет собой набор совместных классов (или только один класс) и его интерфейсов. Интерфейсы отвечают за возможность замены компонентов. Многоразовые компоненты также можно изолировать и синхронизировать между репозиториями SCM с помощью технологий управления исходным кодом компонентов ( CSCM ). [ нужна цитата ]

Внешние компьютеры [ править ]

Вся концепция «повторного использования кода» может также охватывать инженерные приложения вне программного обеспечения. Например, параметрическое моделирование в системе автоматизированного проектирования позволяет создавать конструкции многократного использования. Результатом стандартизации является создание совместимых частей, которые затем можно повторно использовать во многих контекстах. [ нужна цитата ]

Критика [ править ]

Повторное использование кода приводит к зависимости от повторно используемого компонента. Роб Пайк высказал мнение, что «небольшое копирование лучше, чем небольшая зависимость». Когда он присоединился к Google , компания уделяла большое внимание повторному использованию кода. Google Он считает, что кодовая база по-прежнему страдает от последствий прежней политики с точки зрения скорости компиляции и удобства сопровождения. [14]

Повторно используемый код обычно требует больше усилий для написания и проектирования. Фред Брукс обсуждает значительно более высокие затраты, связанные с этими усилиями, в своих эссе «Смоляная яма» и « Нет серебряной пули ». Заблуждение заключается в том, что усилия часто тратятся без тщательного понимания механизмов, с помощью которых эти затраты будут окупаться. Оправдание часто происходит из-за неправильного проведения параллелей с деталями многократного использования в физическом производственном процессе. Неверно, потому что написание кода аналогично проектированию одного продукта, а не производству нескольких единиц.

См. также [ править ]

Ссылки [ править ]

  1. ^ Фрейкс, ВБ; Кё Кан (июль 2005 г.). «Исследование повторного использования программного обеспечения: состояние и будущее». Транзакции IEEE по разработке программного обеспечения . 31 (7): 529–536. CiteSeerX   10.1.1.75.635 . дои : 10.1109/TSE.2005.85 . S2CID   14561810 .
  2. ^ Перейти обратно: а б Редди, Мартин (2011). Разработка API для C++ . Бостон: Морган Кауфманн. ISBN  978-0-12-385004-1 . OCLC   704559821 .
  3. ^ Селаоло, Карабо; Хломани, Хломани (2016). «К кластеру онтологий алгоритмов: для повторного использования модульного кода и полиглотного программирования» . Достижения в области компьютерных наук . 5:63 – через Researchgate.
  4. ^ «4. Повторное использование кода: функции и модули — Head First Python, 2-е издание [книга]» . www.oreilly.com . Проверено 26 января 2022 г.
  5. ^ Фейтоса, Дэниел; Ампацоглу, Апостолос; Гкорцис, Антониос; Биби, Стаматия; Хацигеоргиу, Александр (сентябрь 2020 г.). «Повторное использование кода на практике: польза или вред техническому долгу» (PDF) . Журнал систем и программного обеспечения . 167 : 110618. doi : 10.1016/j.jss.2020.110618 . S2CID   219502749 .
  6. ^ Группа Ломбард Хилл. «Что такое повторное использование программного обеспечения?» . lombardhill.com . Группа Ломбард Хилл. Архивировано из оригинала 23 января 2019 года . Проверено 22 октября 2014 г.
  7. ^ Группа Ломбард Хилл. «Что такое повторное использование программного обеспечения?» . Архивировано из оригинала 23 января 2019 года . Проверено 22 октября 2014 г.
  8. ^ МакКоннелл, Стив (1996). Быстрая разработка: укрощение диких графиков работы программного обеспечения . Пирсон Образование. ISBN  978-1-55615-900-8 .
  9. ^ Перейти обратно: а б Коломбо, Ф. (2011). «Это не просто повторное использование» . SharedNow.blogspot .
  10. ^ Чампман, М.; Ван дер Мерве, Альта (2008). «Рассмотрение систематического повторного использования программного обеспечения в небольшой проектно-ориентированной компании» . Proceeding SAICSIT '08 Материалы ежегодной исследовательской конференции Южноафриканского института компьютерных наук и информационных технологов 2008 года по исследованиям в области информационных технологий в развивающихся странах: на волне технологий . дои : 10.1145/1456659.1456662 . ISBN  978-1-60558-286-3 .
  11. ^ «Повторное использование кода» . ДокФордж . Архивировано из оригинала 10 июля 2011 г. Проверено 12 июня 2024 г.
  12. ^ Перейти обратно: а б Блетч, Тайлер (2011). Атаки с повторным использованием кода: новые рубежи и средства защиты . Государственный университет Северной Каролины. ISBN  978-1-124-75297-6 .
  13. ^ Блетч, Тайлер; Цзян, Сюсянь; Фри, Винс В.; Лян, Чжэнькай (2011). «Программирование, ориентированное на переход: новый класс атак с повторным использованием кода» (PDF) . Материалы 6-го симпозиума ACM по информационной, компьютерной и коммуникационной безопасности . АКМ. стр. 30–40. дои : 10.1145/1966913.1966919 . ISBN  978-1-4503-0564-8 . Архивировано из оригинала (PDF) 7 августа 2017 г. Проверено 7 августа 2017 г.
  14. ^ Язык программирования Go (01 декабря 2015 г.), Go Proverbs - Роб Пайк - Gopherfest - 18 ноября 2015 г. , заархивировано из оригинала 22 декабря 2021 г. , получено 26 февраля 2016 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: E567BC04FD15254EF7C66463C8E82E2C__1702546740
URL1:https://en.wikipedia.org/wiki/Code_reuse
Заголовок, (Title) документа по адресу, URL1:
Code reuse - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)