{"guid":"c592de07-9c88-4890-a401-4225eabebf06","title":"ArchUnit: Software-Architektur bewahren","subtitle":"Fortlaufend die Einhaltung eigener Architektur-Regeln sicherstellen","slug":"archunit-software-architektur-bewahren","link":"https://nook-luebeck.de/talks/archunit-software-architektur-bewahren/","description":"„Software-Architektur ist die Menge aller wichtigen und schwer änderbaren\nEntscheidungen“, doch wie stellen wir sicher, dass wir uns im Team an einmal\ngetroffene Entscheidungen auch halten?\n\nFrei nach dem Motto „Man kann nicht\nkeine Architektur haben“ entstehen die meisten Software-Systeme\nentsprechend einer inneren Struktur. Doch gibt es große Unterschiede, wie diese Struktur definiert,\ngepflegt und gelebt wird. Das kann von chaotisch fließend über nur in den Köpfen\nder Entwickelnden \nexistierend bis hin zu klar definiert und dokumentiert in\neiner entsprechenden \nArchitekturdokumentation reichen.\n\nDoch nur weil etwas\nim besten Fall dokumentiert ist, heißt das noch lange nicht, dass alle auch\nentsprechend handeln. Stattdessen kommt es nur allzu schnell vor, dass wir aus Unwissen\noder unter\nZeitdruck gegen die selbstdefinierten Regeln verstoßen.\n\nUm dem\nentgegenzuwirken, können wir uns nun auf unser Gewissen verlassen oder hoffen,\ndass es im\nCode-Review schon auffallen wird. ODER wir schaffen die Möglichkeit\nmit ArchUnit die\nArchitektur-Regeln explizit zu beschreiben und auch automatisch\nauf Einhaltung zu prüfen.\n\nMit ArchUnit können wir Schichten und fachliche Schnitte\ninnerhalb unserer Software und deren\nerlaubt Abhängigkeiten untereinander beschreiben\nund als Teil unserer Unit-Tests automatisch\nüberprüfen. Gleichzeitig können wir\nRegeln zur „richtigen“ Verwendung von Annotationen und\nExceptions aufstellen\nund diese gemeinsam mit unserer Applikation weiterentwickeln.\nDie Einhaltung\nder so festgelegten Architektur-Regeln kann fortlaufend geprüft werden als Teil\nder vorhandenen Testsuite.\n\nWünschenswertes Vorwissen:\n\nGrundlegendes Verständnis von\n* der Softwareentwicklung im Team\n* Paketstrukturen und Verwendungsbeziehungen zwischen Klassen\n","original_language":"deu","persons":["Johannes Thorn"],"tags":["nook22","31","2022"],"view_count":200,"promoted":false,"date":"2022-11-12T16:15:00.000+01:00","release_date":"2022-12-18T00:00:00.000+01:00","updated_at":"2025-08-28T16:00:09.540+02:00","length":2842,"duration":2842,"thumb_url":"https://static.media.ccc.de/media/events/nook/2022/31-c592de07-9c88-4890-a401-4225eabebf06.jpg","poster_url":"https://static.media.ccc.de/media/events/nook/2022/31-c592de07-9c88-4890-a401-4225eabebf06_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/nook/2022/31-c592de07-9c88-4890-a401-4225eabebf06.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/nook/2022/31-c592de07-9c88-4890-a401-4225eabebf06.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/archunit-software-architektur-bewahren","url":"https://api.media.ccc.de/public/events/c592de07-9c88-4890-a401-4225eabebf06","conference_title":"Nook 2022","conference_url":"https://api.media.ccc.de/public/conferences/nook22","related":[],"recordings":[{"size":276,"length":2842,"mime_type":"video/webm","language":"deu","filename":"nook2-31-deu-ArchUnit_Software-Architektur_bewahren_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2022-12-18T20:29:30.710+01:00","recording_url":"https://cdn.media.ccc.de/events/nook/2022/webm-hd/nook2-31-deu-ArchUnit_Software-Architektur_bewahren_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/63584","event_url":"https://api.media.ccc.de/public/events/c592de07-9c88-4890-a401-4225eabebf06","conference_url":"https://api.media.ccc.de/public/conferences/nook22"},{"size":112,"length":2842,"mime_type":"video/webm","language":"deu","filename":"nook2-31-deu-ArchUnit_Software-Architektur_bewahren_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2022-12-18T20:11:06.010+01:00","recording_url":"https://cdn.media.ccc.de/events/nook/2022/webm-sd/nook2-31-deu-ArchUnit_Software-Architektur_bewahren_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/63582","event_url":"https://api.media.ccc.de/public/events/c592de07-9c88-4890-a401-4225eabebf06","conference_url":"https://api.media.ccc.de/public/conferences/nook22"},{"size":105,"length":2842,"mime_type":"video/mp4","language":"deu","filename":"nook2-31-deu-ArchUnit_Software-Architektur_bewahren_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2022-12-18T20:00:52.973+01:00","recording_url":"https://cdn.media.ccc.de/events/nook/2022/h264-sd/nook2-31-deu-ArchUnit_Software-Architektur_bewahren_sd.mp4","url":"https://api.media.ccc.de/public/recordings/63578","event_url":"https://api.media.ccc.de/public/events/c592de07-9c88-4890-a401-4225eabebf06","conference_url":"https://api.media.ccc.de/public/conferences/nook22"},{"size":43,"length":2837,"mime_type":"audio/mpeg","language":"deu","filename":"nook2-31-deu-ArchUnit_Software-Architektur_bewahren_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2022-12-18T19:56:22.954+01:00","recording_url":"https://cdn.media.ccc.de/events/nook/2022/mp3/nook2-31-deu-ArchUnit_Software-Architektur_bewahren_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/63577","event_url":"https://api.media.ccc.de/public/events/c592de07-9c88-4890-a401-4225eabebf06","conference_url":"https://api.media.ccc.de/public/conferences/nook22"},{"size":26,"length":2837,"mime_type":"audio/opus","language":"deu","filename":"nook2-31-deu-ArchUnit_Software-Architektur_bewahren_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2022-12-18T19:55:47.286+01:00","recording_url":"https://cdn.media.ccc.de/events/nook/2022/opus/nook2-31-deu-ArchUnit_Software-Architektur_bewahren_opus.opus","url":"https://api.media.ccc.de/public/recordings/63576","event_url":"https://api.media.ccc.de/public/events/c592de07-9c88-4890-a401-4225eabebf06","conference_url":"https://api.media.ccc.de/public/conferences/nook22"},{"size":217,"length":2842,"mime_type":"video/mp4","language":"deu","filename":"nook2-31-deu-ArchUnit_Software-Architektur_bewahren_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2022-12-18T19:54:33.778+01:00","recording_url":"https://cdn.media.ccc.de/events/nook/2022/h264-hd/nook2-31-deu-ArchUnit_Software-Architektur_bewahren_hd.mp4","url":"https://api.media.ccc.de/public/recordings/63574","event_url":"https://api.media.ccc.de/public/events/c592de07-9c88-4890-a401-4225eabebf06","conference_url":"https://api.media.ccc.de/public/conferences/nook22"}]}