Ключевые моменты:
- Разделение интересов
- Сплоченность
- Инкапсуляция (связывается через интерфейс)
- подставляемость
- 1012 * Повторное использование *
Хорошим примером такой модульной системы являются стандартные автомобильные детали, такие как дисковые тормоза и автомобильная стереосистема.
Вы не хотите создавать автомобильную стереосистему с нуля, когда строите автомобили. Вы бы предпочли купить его и подключить к сети. Вы также не хотите, чтобы тормозная система влияла на автомобильную стереосистему - или, что еще хуже, автомобильная стереосистема влияет на тормозную систему.
Чтобы ответить на ваш вопрос: «Как я могу решить, что конкретный код является модульным до такой степени», мы можем сформировать вопросы для проверки модульности. Можете ли вы легко заменить ваши модули чем-то другим, не затрагивая другие части вашего приложения?
XML-парсеры могут быть еще одним примером. Получив интерфейс DOM, вам действительно все равно, какая реализация синтаксического анализатора XML используется ниже (например, Apache Xerces или JAXP).
В Java другой вопрос может быть: Доступны ли все функции через interface
s? Интерфейс в значительной степени заботится о слабой связи.
Кроме того, можете ли вы описать каждый модуль в вашей системе одним предложением? Например, автомобильная стереосистема воспроизводит музыку и радио. Дисковые тормоза безопасно замедляют автомобиль.
(Вот что я написал Что такое разработка на основе компонентов? )
Согласно Википедии, разработка на основе компонентов является псевдонимом для Разработка программного обеспечения на основе компонентов (CBSE) .
[Это] филиал программного обеспечения
инжиниринг, приоритетом которого является
разделение интересов в отношении
широких функциональных возможностей
доступны во всем данном программном обеспечении
система.
Это немного расплывчато, поэтому давайте рассмотрим более подробно.
Отдельным компонентом является программное обеспечение
пакет или модуль, который
инкапсулирует набор связанных
функции (или данные).
Все системные процессы размещены в
отдельные компоненты, так что все
данные и функции внутри каждого
компонент семантически связан
(так же, как с содержанием
классы). Из-за этого принципа
часто говорят, что компоненты
модульные и связные .
Таким образом, согласно этому определению, компонент может быть чем угодно, если он действительно хорошо выполняет одну вещь и только одну вещь.
Относительно всей системы
координация, компоненты сообщают
друг с другом через интерфейсы . [...]
Этот принцип приводит к компонентам, именуемым encapsulated .
Так что все больше и больше похоже на то, как мы думаем о хорошем API или SOA.
Предоставленные интерфейсы представлены леденцом на палочке, а необходимые интерфейсы представлены символом открытого сокета, прикрепленным к внешнему краю компонента в UML.
Еще один важный атрибут
компоненты в том, что они
заменяемый , так что компонент
может быть заменен другим (в
время разработки или выполнения), если
требования исходного компонента
(выражается через интерфейсы) встречаются
компонентом-преемником.
Повторное использование является важным
характеристика высокого качества
программный компонент. Программное обеспечение
Компонент должен быть разработан и
реализовано так, чтобы его можно было повторно использовать
во многих разных программах.
Заменимость и возможность повторного использования - вот что делает компонент компонентом.
Так в чем же разница между этим и объектно-ориентированным программированием?
Идея в объектно-ориентированном
программирование (ООП) это программное обеспечение
должно быть написано в соответствии с
ментальная модель фактического или воображаемого
объекты, которые он представляет. [...]
Компонентная разработка программного обеспечения,
напротив, не делает такого
предположения, а вместо этого говорится, что
программное обеспечение должно быть разработано путем склеивания
сборные компоненты вместе много
как в области электроники или
механика.