Пример двух компонентов, выраженных в UML 2.0. Компонент оформления заказа, отвечающий за выполнение заказа клиента, требует, чтобы компонент обработки карты списал средства с кредитной/дебетовой карты клиента (функциональность, которую обеспечивает последний ).
Компонентная разработка программного обеспечения ( CBSE ), также называемая компонентной разработкой ( CBD ), представляет собой стиль разработки программного обеспечения, целью которого является создание программного обеспечения из слабосвязанных модульных компонентов. Он подчеркивает разделение задач между различными частями программной системы .
Компоненты взаимодействуют друг с другом через интерфейсы . Каждый компонент предоставляет интерфейс (называемый предоставленным интерфейсом ), через который его могут использовать другие компоненты. Когда компонент использует интерфейс другого компонента, этот интерфейс называется используемым интерфейсом.
На иллюстрациях UML в этой статье предоставленные интерфейсы представлены символами леденцов, а используемые интерфейсы представлены символами открытых сокетов.
Простой пример нескольких программных компонентов, изображенный в гипотетической системе бронирования отпусков, представленной в UML 2.0.
Компоненты должны быть взаимозаменяемыми , то есть компонент должен быть заменен другим, имеющим те же интерфейсы, без нарушения остальной части системы.
Брэд Кокс из Stepstone во многом определил современную концепцию программного компонента. [2] Он назвал их программными ИС и намеревался создать инфраструктуру и рынок для этих компонентов, изобретя язык программирования Objective-C . (Он резюмирует эту точку зрения в своей книге « Объектно-ориентированное программирование – эволюционный подход», 1986 г.)
Компоненты программного обеспечения используются в двух разных контекстах и двух видах: i) использование компонентов как частей для создания одного исполняемого файла или ii) каждый исполняемый файл рассматривается как компонент в распределенной среде, где компоненты взаимодействуют друг с другом через Интернет или интранет. протоколы связи для IPC (межпроцессные коммуникации). Вышеупомянутое принадлежит к первому виду, а нижнее — к более позднему.
В начале 1990-х годов IBM пошла по этому пути, разработав свою системную объектную модель (SOM). В ответ Microsoft проложила путь к фактическому развертыванию компонентного программного обеспечения с помощью связывания и внедрения объектов (OLE) и объектной модели компонентов (COM). [3] По состоянию на 2010 год [обновлять]существует множество успешных моделей программных компонентов.
Архитектура
Компьютер, на котором работает несколько программных компонентов, часто называют сервером приложений . Такое сочетание серверов приложений и программных компонентов обычно называют распределенными вычислениями . Типичное реальное применение этого — например, в финансовых приложениях или бизнес-программах.
Модели компонентов
Модель компонента — это спецификация свойств компонента. [4]
AXCIOMA (компонентная среда для распределенных, работающих в реальном времени и встроенных систем) от Remedy IT.
COHORTE — кроссплатформенная среда выполнения для выполнения и управления устойчивыми и надежными распределенными сервис-ориентированными компонентными приложениями от isandlaTech.
^ Макилрой, Малкольм Дуглас (январь 1969 г.). «Компоненты программного обеспечения массового производства» (PDF) . Программная инженерия: отчет конференции, спонсируемой Научным комитетом НАТО, Гармиш, Германия, 7-11 октября 1968 г. Отдел по научным вопросам НАТО. п. 79.
^ Райнер Никамп. «Архитектура программных компонентов» (PDF) . Gestión de Congresos — CIMNE/Институт научных вычислений Брауншвейгского технического университета. п. 4 . Проверено 29 июля 2011 г. Современная концепция программного компонента, во многом определенная Брэдом Коксом из Stepstone, => язык программирования Objective-C.
↑ Рафаэль Гфеллер (9 декабря 2008 г.). «Обновление компонентного приложения». HSR – Hochschule für Technik Rapperswill. п. 4 . Проверено 29 июля 2011 г. 1990 год: IBM изобретает свою системную объектную модель. В 1990 году в качестве реакции Microsoft выпустила пользовательские элементы управления OLE 1.0 (OCX).[ постоянная мертвая ссылка ]
^ аб Црнкович, И.; Сентиллес, С.; Вулгаракис, А.; Чаудрон, MRV (2011). «Структура классификации моделей программных компонентов». Транзакции IEEE по разработке программного обеспечения . 37 (5): 593–615. дои :10.1109/TSE.2010.83. S2CID 15449138.
^ Лау, Кунг-Киу; Ван, Чжэн (2007). «Модели программных компонентов». Транзакции IEEE по разработке программного обеспечения . 33 (10): 709–724. дои :10.1109/TSE.2007.70726. ISSN 0098-5589.
^ MASH определяет активы как людей, имущество и информацию, а управление - как мониторинг, контроль и настройку. Представленный на конференции IEEE IoT 2013 года в Маунтин-Вью, MASH включает в себя полную интегрированную среду разработки, клиент Android и среду выполнения. "МАШ YouTube-канал"
^ Компонентно-ориентированный подход — идеальный способ справиться с разнообразием программного обеспечения в бытовой электронике. Модель Koala, используемая для встроенного программного обеспечения в телевизорах, позволяет позднее связывать повторно используемые компоненты без дополнительных затрат. [1]
^ Модель компонентов для встроенных устройств, таких как телевизоры, разработанная Philips на основе статьи ван Оммеринга Р.: Koala, модель компонентов для программного обеспечения для бытовой электроники [2]. Архивировано 9 августа 2014 г. на Wayback Machine.
^ Ларсен, Джон (2021). Хуки React в действии с приостановкой и параллельным режимом . Мэннинг. ISBN978-1720043997.
^ Арад, Космин (апрель 2013 г.). Модель программирования и протоколы для реконфигурируемых распределенных систем (PDF) . Стокгольм, Швеция: Королевский технологический институт KTH. ISBN978-91-7501-694-8. {{cite book}}: |work=игнорируется ( помощь )
^ Ареллан, Дамиан; Лау, Кунг-Киу (2017). «Экзогенные соединители для иерархической композиции услуг» (PDF) . 2017 10-я конференция IEEE по сервис-ориентированным вычислениям и приложениям (SOCA) . Канадзава: IEEE. стр. 125–132. дои : 10.1109/SOCA.2017.25. ISBN9781538613269. S2CID 31211787.
дальнейшее чтение
Брэд Дж. Кокс, Эндрю Дж. Новобельски (1991). Объектно-ориентированное программирование: эволюционный подход . 2-е изд. Аддисон-Уэсли, ISBN чтения 0-201-54834-8
Бертран Мейер (1997). Объектно-ориентированное построение программного обеспечения . 2-е изд. Прентис Холл.
Джордж Т. Хайнеман, Уильям Т. Каунсилл (2001). Компонентно-ориентированная разработка программного обеспечения: соединение частей воедино . Addison-Wesley Professional, ISBN Reading 2001 0-201-70485-4