Розширюючись на відповідь Кіліана Фота, цей напрям шарування відповідає напрямку, в якому людина досліджує систему.
Уявіть, що ви новий розробник, якому доручено виправити помилку в шаруватій системі.
Помилки, як правило, є невідповідністю між тим, що потрібно клієнту, і тим, що він отримує. Оскільки клієнт спілкується з системою через користувальницький інтерфейс і отримує результат через інтерфейс користувача (UI буквально означає «користувальницький інтерфейс»), про помилки повідомляється і з точки зору користувальницького інтерфейсу. Отже, як розробник, у вас немає великого вибору, крім того, щоб почати дивитися на інтерфейс користувача, щоб зрозуміти, що сталося.
Ось чому необхідне з'єднання шару зверху вниз. Тепер, чому ми не маємо зв’язків, що йдуть обома способами?
Ну, у вас є три сценарії, як ця помилка могла виникнути.
Це може виникнути в самому коді інтерфейсу, і тому там бути локалізованим. Це легко, потрібно просто знайти місце і виправити це.
Це може статися в інших частинах системи внаслідок дзвінків, здійснених з інтерфейсу користувача. Що помірно складно, ви відстежуєте дерево дзвінків, знаходите місце, де виникає помилка, і виправляєте її.
І це може статися в результаті виклику INTO коду вашого інтерфейсу. Що важко, вам потрібно зловити виклик, знайти його джерело, а потім з’ясувати, де виникає помилка. Зважаючи на те, що точка, з якої ви починаєте, розташована в глибині душі в одній гілці дерева дзвінків, і вам потрібно спочатку знайти правильне дерево викликів, в коді інтерфейсу може бути кілька викликів, для вас вирішено налагодження.
Щоб максимально усунути найскладніший випадок, кругові залежності сильно перешкоджають, шари з'єднуються здебільшого способом зверху вниз. Навіть коли з'єднання потрібне іншим способом, воно, як правило, обмежене і чітко визначене. Наприклад, навіть із зворотними дзвінками, які є свого роду зворотним з'єднанням, код, який викликається у зворотному дзвінку, зазвичай надає цей зворотний виклик, в першу чергу, реалізуючи свого роду "відбір" для зворотних з'єднань і обмежуючи їх вплив на розуміння система.
Шарування - це інструмент, в першу чергу спрямований на розробників, які підтримують існуючу систему. Що ж, зв’язки між шарами також відображають це.