Jump to content

Расширяемость

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

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

дизайн Расширяемый

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

Важность [ править ]

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

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

Классификация механизмов расширяемости [ править ]

Существует три различных формы расширяемости программного обеспечения: расширяемость «белого ящика», расширяемость «серого ящика» и расширяемость «черного ящика», которые основаны на том, какие артефакты и как они изменяются.

Белый ящик [ править ]

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

Открытая коробка [ править ]

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

Стеклянный ящик [ править ]

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

Черный ящик [ править ]

В расширяемости «черного ящика» (также называемой структурой, управляемой данными) никакие подробности о реализации системы не используются для реализации развертываний или расширений; только характеристики интерфейса предоставляются . Этот тип подхода более ограничен, чем различные подходы «белого ящика». Расширения «черного ящика» обычно достигаются с помощью приложений конфигурации системы или использования языков сценариев для конкретных приложений путем определения интерфейсов компонентов.

Серый ящик [ править ]

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

Расширяемость против повторного использования возможности

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

Безопасность [ править ]

Современные операционные системы поддерживают расширяемость посредством драйверов устройств и загружаемых модулей ядра . Многие современные приложения поддерживают расширяемость посредством плагинов , языков расширения , апплетов и т. д. Тенденция увеличения расширяемости негативно влияет на безопасность программного обеспечения. [8]

CGI является одним из основных средств, с помощью которых веб-серверы обеспечивают расширяемость. Некоторые люди рассматривают сценарии CGI как «огромную дыру в безопасности». [9]

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

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

  1. ^ Йоханссон, Никлас и Антон Лёфгрен. Проектирование для расширяемости: практическое исследование максимизации расширяемости с помощью принципов проектирования. Np: np, nd Факультет прикладных информационных технологий Гетеборгского университета, 29 мая 2009 г. Интернет. 26 апреля 2014 г. < https://gupea.ub.gu.se/bitstream/2077/20561/1/gupea_2077_20561_1.pdf >.
  2. ^ Роуз, Маргарет. «Расширяемый». Поиск САО. Np, март 2007 г. Интернет. 27 апреля 2014 г. < http://searchsoa.techtarget.com/definition/extensible. Архивировано 6 декабря 2016 г. на Wayback Machine >.
  3. ^ Келли, Аллан. «Философия расширяемого программного обеспечения». ACCU-Профессионализм в программировании (2002): Интернет. 27 апреля 2014 г. < http://accu.org/index.php/journals/391 >.
  4. ^ Зенгер, Матиас. «1.2 Характеристики механизмов расширяемости». Абстракции языка программирования для расширяемых программных компонентов. Лозанна: Швейцарский федеральный технологический институт, 2004. Н. стр. Веб. 26 апреля 2014 г. < http://zenger.org/papers/thesis.pdf >.
  5. ^ Мартин Риттер и Бо Норрегаард Йоргенсен.«Независимо расширяемые контексты».Опубликовано в «Архитектура программного обеспечения: 4-я Европейская конференция, ECSA 2010, Копенгаген, Дания, 23-26 августа 2010 г., Материалы» .2010.п. 327.
  6. ^ Зенгер, Матиас. «1.3 Классификация механизмов расширяемости». Абстракции языка программирования для расширяемых программных компонентов. Лозанна: Швейцарский федеральный технологический институт, 2004. Н. стр. Веб. 26 апреля 2014 г.
  7. ^ Зенгер, Матиас. «1.1.1 Многократное использование». Абстракции языка программирования для расширяемых программных компонентов. Лозанна: Швейцарский федеральный технологический институт, 2004. Н. стр. Веб. 26 апреля 2014 г.
  8. ^ Гэри МакГроу. «Безопасность программного обеспечения: построение безопасности» . .2006.стр. 9.
  9. ^ Лен Басс, Пол Клементс, Рик Казман. «Архитектура программного обеспечения на практике» . 2003. с. 339.

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

Словарное определение расширяемости в Викисловаре

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 543958feec8eebae4e7307f87136bbb0__1711239480
URL1:https://arc.ask3.ru/arc/aa/54/b0/543958feec8eebae4e7307f87136bbb0.html
Заголовок, (Title) документа по адресу, URL1:
Extensibility - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)