На этом шаге рассмотрим общие сведения о компонентах.
Компонент – это логическая замещаемая часть системы, которая соответствует некоторому набору интерфейсов и обеспечивает их реализацию.
Хорошие компоненты определяют четкие абстракции с хорошо определенными интерфейсами, что дает возможность легко заменять старые компоненты на совместимые с ними новые.
Интерфейсы соединяют логические модели с моделями дизайна. Так, например, вы можете специфицировать интерфейс класса в логической модели, и тот же интерфейс будет поддерживаться некоторым компонентом дизайна, реализующим его.
Интерфейсы позволяют вам реализовывать компонент с использованием более мелких компонентов путем соединения их портов.
Когда вы конструируете приложение в виде большого монолитного узла, он получается "жестким", то есть впоследствии его трудно модифицировать. К тому же вы лишены возможности свободно распоряжаться имеющимися средствами. Если даже существующая система обладает большей частью необходимой вам функциональности, она, скорее всего, включает в себя кучу деталей, которые вам совершенно не нужны, однако их сложно или вообще невозможно удалить.
Решение этой проблемы: следует строить системы из отдельных компонентов, которые гибко взаимодействуют друг с другом и при изменении требований могут удаляться и добавляться без ущерба для целого.
Интерфейс – это набор операций, которые специфицируют сервис, предоставляемый либо требуемый классом или компонентом.
Порт – специфическое "окно" в инкапсулированный компонент, принимающее сообщения для компонента и от него в соответствии с заданным интерфейсом.
Внутренняя структура – реализация компонента, представленная набором частей, соединенных друг с другом конкретным способом.
Часть – спецификация роли, составляющей часть реализации компонента. В экземпляре компонента присутствует экземпляр, соответствующий части.
Коннектор – связь коммуникации между двумя частями или портами в контексте компонента.
На следующем шаге рассмотрим компоненты и интерфейсы в UML.