Кіріспе

Бағдарламалық модульдердің қиын өзара байланыстылығы. Бағдарламалық жасақтама саласында, айналма тәуелділік – бұл екі немесе одан көп модульдің бір-біріне тікелей немесе жанама түрде дұрыс жұмыс істеуі үшін қатысты болуы. Мұндай модульдер өзара рекурсивті деп те аталады.

Шолу

Дөңгелек тәуелділіктер көптеген салалық модельдерде кездесетін жағдай, онда бір саланың белгілі бір объектілері бір-біріне тәуелді болады. Дегенмен, бағдарламалық жасақтауда ірі бағдарламалық модульдер арасындағы дөңгелек тәуелділіктер олардың зиянды әсерлеріне байланысты жаман тәжірибе саналады. Бірақ, өзара рекурсивті модульдер функционалдық бағдарламалауда жиі қолданылады, онда индуктивті және рекурсивті анықтамалар көбінесе қолдауға ие.

Қиындықтар

Дөңгелек тәуелділіктер бағдарламалық жасақтамада көптеген күтілмеген салдарларға алып келуі мүмкін. Бағдарламалық құрылымдық тұрғысынан ең маңызды мәселе – өзара тәуелді модульдердің тығыз байланысы, ол жеке модульді бөлек пайдалану мүмкіндігін шектейді немесе толығымен жоққа шығарады. Дөңгелек тәуелділіктер бір модульдегі шағын өзгерістің басқа модульдерге таралып, күтілмеген жаһандық әсерлерге (бағдарламалық қателер, компиляция қателер) әкелуіне себеп болатын домино әсерін тудыруы мүмкін. Дөңгелек тәуелділіктер шексіз рекурсияға немесе басқа да күтпеген іркілістерге соқтыруы да мүмкін. Сонымен қатар, дөңгелек тәуелділіктер кейбір автоматты қоқыс жинағыштардың (сілтеме санауын қолданатындар) пайдаланылмаған объектілерді босатуына кедергі келтіріп, жад ағуына себеп болуы мүмкін.

Себептері мен шешімдері

Өте ірі бағдарламалық жүйелерді жобалау кезінде бағдарламалық жасақтама инженерлері жағдайды ұмытып, тікелей немесе жанама айналма тәуелділіктерді жасап алуы мүмкін. Бағдарламалық жасақтаманы талдап, қажетсіз айналма тәуелділіктерді анықтауға арналған құралдар бар. Айналма тәуелділіктер кері шақыру (callback) функционалдығын іске асыру барысында туындауы мүмкін. Мұндай жағдайды болдырмау үшін бақылаушы үлгісі сияқты жобалау үлгілерін қолдануға болады.