В света на софтуерния дизайн, свързването е като този досаден задник във вашия план, който може да изхвърли цялата система. Като доставчик на свързване видях от първа ръка как високото свързване може да превърне гладко - работещ софтуерен проект в кошмар. Така че, нека разгледаме как можем да намалим свързването в софтуерния дизайн.
Разбиране на свързването
Преди да започнем да намаляваме свързването, трябва да знаем какво е. Свързването се отнася до степента на взаимозависимост между софтуерните модули. Когато модулите са силно свързани, промяна в един модул може да има пулсационен ефект върху други модули. Това е като къща с карти; Издърпайте една карта и цялото нещо се срива.
Високото свързване прави софтуера труден за поддържане, тестване и разширяване. Например, ако работите върху голямо приложение E -Commerce Application и модулът за управление на инвентара е плътно съчетан с модула за обработка на поръчки, всяка промяна в правилата на инвентара може да наруши функционалността за обработка на поръчките.
Значението на намаляването на свързването
Намаляването на свързването има куп предимства. Първо, тя подобрява поддържането на софтуера. Когато модулите са свободно свързани, можете да направите промени в един модул, без да се притеснявате да засягате други. Това означава по -малко време, прекарано за отстраняване на грешки и повече време за добавяне на нови функции.
Той също така повишава тестичността. С ниско свързване можете да тествате всеки модул независимо, което прави процеса на тестване по -бърз и надежден. И когато става въпрос за мащабируемост, свободно свързаният софтуер може лесно да се разшири чрез добавяне на нови модули, без да се налага да пренапишете съществуващите.
Стратегии за намаляване на свързването
Използване на интерфейси
Интерфейсите са като договори в софтуерния дизайн. Те определят набор от методи, които класът трябва да приложи. Използвайки интерфейси, можете да отделите подробностите за внедряването от клиентите, които използват тези реализации.
Да речем, че изграждате игра с различни видове герои. Вместо да разполагате с основния цикъл на играта, който директно взаимодейства с конкретни класове на символи, можете да определите интерфейс за символи. След това Game Loop взаимодейства с интерфейса и различни класове на символи прилагат този интерфейс. По този начин можете да добавите нови типове символи, без да променяте кода на цикъла на играта.
Инжектиране на зависимост
Инжектирането на зависимост е техника, при която предоставяте зависимостите от клас отвън, а не да накарате класа да ги създаде. Това намалява свързването между класовете, тъй като клас няма нужда да знае как да създава своите зависимости.
Например, в уеб приложение, ако класът на потребителските услуги трябва да има достъп до база данни, вместо да създава връзка с база данни в класа на потребителските услуги, можете да инжектирате обекта за свързване на базата данни в потребителската услуга. По този начин, ако искате да промените типа на базата данни, трябва само да промените инжектирания обект, а не самия клас услуга за потребители.
Събитие - управлявана архитектура
Събитие - Задвижваната архитектура е друг чудесен начин за намаляване на свързването. В тази архитектура модулите общуват помежду си, като изпращат и получават събития. Когато се случи събитие, съответните модули се уведомяват и те могат да предприемат подходящи действия.
Например, в приложение за стрийминг на медии, когато потребител спира видео, се изпраща събитие. Други модули като модула Analytics могат да слушат това събитие и да запишат времето за пауза. Модулът за видео плейър не трябва да знае за модула за анализи и обратно. Това отделя различните части на приложението.
Слойна архитектура
Слоевата архитектура разделя софтуера на различни слоеве, като презентационния слой, слоя на бизнес логиката и слоя за достъп до данни. Всеки слой носи специфична отговорност и те комуникират помежду си чрез добре дефинирани интерфейси.
Например, в банково приложение, презентационният слой е отговорен за взаимодействието с потребителя, слойът на бизнес логиката обработва банковите операции като транзакции, а слойът за достъп до данни се занимава с базата данни. Това разделяне на опасенията намалява свързването между различни части на приложението.
Истински - Световни примери и свързани продукти
В реалния свят намаляването на свързването е от решаващо значение в много индустрии. Например, в производствената индустрия софтуерните системи се използват за контрол на различни машини. Тези машини често имат компоненти катоУстройство за задвижване на колелото,Прави /спирални предавкииБуфери на крана.
Софтуерът, който контролира тези компоненти, трябва да бъде свободно свързан, така че всякакви промени в контролната логика за един компонент да не засягат други. Например, ако искате да надстроите устройството на задвижването до по -усъвършенстван модел, софтуерът трябва да може да се адаптира, без да се налага да пренаписва цялата система за управление.
Заключение
Намаляването на свързването в дизайна на софтуера не е лесна задача, но определено си струва усилията. Използвайки техники като интерфейси, инжектиране на зависимост, архитектура, задвижвана от събития и слоеста архитектура, можете да създадете софтуер, който е по -поддържаем, тестващ и мащабируем.
Като доставчик на свързване разбирам важността на предоставянето на решения, които помагат за намаляване на свързването в различни системи. Независимо дали работите върху малко приложение за мащаб или с голяма мащабна корпоративна система, принципите на намаляване на свързването остават същите.


Ако се интересувате да научите повече за това как нашите продукти за свързване могат да ви помогнат в вашите проекти за софтуерен дизайн или ако искате да обсъдите специфични изисквания за намаляване на свързването, не се колебайте да се обърнете към дискусия за обществени поръчки. Тук сме, за да ви помогнем да изградите по -добър софтуер с по -ниско свързване.
ЛИТЕРАТУРА
- Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Модели на проектиране: Елементи на обект за многократна употреба - ориентиран софтуер. Адисън - Уесли.
- Fowler, M. (2004). Инжектиране на зависимост. Martinfowler.com.
- Мартин, RC (2009). Чист код: Наръчник за изработка на Agile Software. Prentice Hall.




