MCP HubMCP Hub
스킬 목록으로 돌아가기

review-software-architecture

pjt222
업데이트됨 Yesterday
1 조회
17
2
17
GitHub에서 보기
디자인apidesign

정보

이 스킬은 결합도, 응집도, SOLID 원칙, API 설계, 확장성, 기술 부채를 평가하여 소프트웨어 아키텍처를 검토합니다. 시스템 전반적인 평가, 아키텍처 결정 기록(ADR) 검토, 개선 권장사항을 제공합니다. 제안된 설계를 평가하거나, 기존 시스템의 확장성 및 보안성을 검토하거나, ADR을 검토하거나, 기술 부채를 파악하는 데 활용할 수 있습니다.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/review-software-architecture

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서


name: review-software-architecture description: > Bewertet Softwarearchitektur auf Kopplung, Kohaesion, SOLID-Prinzipien, API-Design, Skalierbarkeit und technische Schulden. Umfasst systemweite Bewertung, Review von Architecture Decision Records und Verbesserungsempfehlungen. Verwenden bei der Bewertung einer vorgeschlagenen Architektur vor der Implementierung, beim Assessment eines bestehenden Systems auf Skalierbarkeit oder Sicherheit, beim Review von ADRs, bei einer Technische-Schulden-Bestandsaufnahme oder bei der Bewertung der Bereitschaft fuer einen wesentlichen Skalierungsschritt. locale: de source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16 license: MIT allowed-tools: Read Grep Glob Bash WebFetch metadata: author: Philipp Thoss version: "1.0" domain: review complexity: advanced language: multi tags: architecture, solid, coupling, cohesion, api-design, scalability, tech-debt, adr

Softwarearchitektur reviewen

Softwarearchitektur auf Systemebene hinsichtlich Qualitaetsattribute, Einhaltung von Designprinzipien und langfristiger Wartbarkeit bewerten.

Wann verwenden

  • Bewertung einer vorgeschlagenen Architektur vor Beginn der Implementierung
  • Einschaetzung eines bestehenden Systems auf Skalierbarkeit, Wartbarkeit oder Sicherheit
  • Review von Architecture Decision Records (ADRs) fuer ein Projekt
  • Durchfuehrung einer Technische-Schulden-Bestandsaufnahme
  • Bewertung, ob ein System bereit fuer einen signifikanten Skalierungs- oder Funktionserweiterungsschritt ist
  • Abgrenzung vom zeilenbasierten Code-Review (der sich auf Aenderungen auf PR-Ebene konzentriert)

Eingaben

  • Erforderlich: System-Codebasis oder Architekturdokumentation (Diagramme, ADRs, README)
  • Erforderlich: Kontext ueber Zweck, Groessenordnung und Einschraenkungen des Systems
  • Optional: Nichtfunktionale Anforderungen (Latenz-, Durchsatz-, Verfuegbarkeitsziele)
  • Optional: Teamgroesse und Kompetenzverteilung
  • Optional: Technologische Einschraenkungen oder Praeferenzen
  • Optional: Bekannte Schwachstellen oder Problembereiche

Vorgehensweise

Schritt 1: Systemkontext verstehen

Systemgrenzen und Schnittstellen erfassen:

## Systemkontext
- **Name**: [Systemname]
- **Zweck**: [Einzeilige Beschreibung]
- **Nutzer**: [Wer es nutzt und wie]
- **Groessenordnung**: [Anfragen/Sek., Datenvolumen, Nutzerzahl]
- **Alter**: [Jahre im Produktionsbetrieb, Hauptversionen]
- **Team**: [Groesse, Zusammensetzung]

## Externe Abhaengigkeiten
| Abhaengigkeit | Typ | Kritikalitaet | Anmerkungen |
|-----------|------|-------------|-------|
| PostgreSQL | Datenbank | Kritisch | Primaerer Datenspeicher |
| Redis | Cache | Hoch | Session-Speicher + Caching |
| Stripe | Externe API | Kritisch | Zahlungsabwicklung |
| S3 | Objektspeicher | Hoch | Datei-Uploads |

Erwartet: Klares Bild davon, was das System tut und wovon es abhaengt. Bei Fehler: Wenn die Architekturdokumentation fehlt, den Kontext aus Codestruktur, Konfigurationen und Deployment-Dateien ableiten.

Schritt 2: Strukturelle Qualitaet bewerten

Kopplungsbewertung

Untersuchen, wie stark Module voneinander abhaengen:

  • Abhaengigkeitsrichtung: Fliessen Abhaengigkeiten in eine Richtung (geschichtet) oder sind sie zirkulaer?
  • Schnittstellengrenzen: Sind Module ueber definierte Schnittstellen/Vertraege oder direkte Implementierungsreferenzen verbunden?
  • Geteilter Zustand: Wird veraenderlicher Zustand zwischen Modulen geteilt?
  • Datenbankkopplung: Lesen/schreiben mehrere Services direkt in dieselben Tabellen?
  • Zeitliche Kopplung: Muessen Operationen in einer bestimmten Reihenfolge stattfinden ohne explizite Orchestrierung?
# Zirkulaere Abhaengigkeiten erkennen (JavaScript/TypeScript)
npx madge --circular src/

# Importmuster erkennen (Python)
# Nach tiefen paketuebergreifenden Importen suchen
grep -r "from app\." --include="*.py" | sort | uniq -c | sort -rn | head -20

Kohaesionsbewertung

Bewerten, ob jedes Modul eine einzige, klare Verantwortung hat:

  • Modulbenennung: Beschreibt der Name genau, was das Modul tut?
  • Dateigroesse: Sind Dateien oder Klassen uebermaeßig gross (>500 Zeilen legt mehrere Verantwortlichkeiten nahe)?
  • Aenderungshaeufigkeit: Erfordern nicht zusammenhaengende Features Aenderungen am selben Modul?
  • God Objects: Gibt es Klassen/Module, von denen alles abhaengt?
KopplungsniveauBeschreibungBeispiel
Niedrig (gut)Module kommunizieren ueber SchnittstellenService A ruft die API von Service B auf
MittelModule teilen DatenstrukturenGemeinsame DTO/Modell-Bibliothek
Hoch (Bedenken)Module referenzieren Interna des anderenDirekter Datenbankzugriff ueber Module
PathologischModule veraendern den internen Zustand des anderenGlobaler veraenderlicher Zustand

Erwartet: Kopplung und Kohaesion mit spezifischen Beispielen aus der Codebasis bewertet. Bei Fehler: Wenn die Codebasis fuer ein manuelles Review zu gross ist, 3-5 Schluesselmodule und die am haeufigsten geaenderten Dateien stichprobenartig pruefen.

Schritt 3: SOLID-Prinzipien bewerten

PrinzipFrageWarnzeichen
Single ResponsibilityHat jede Klasse/jedes Modul einen einzigen Aenderungsgrund?Klassen mit >5 oeffentlichen Methoden zu unzusammenhaengenden Belangen
Open/ClosedKann Verhalten erweitert werden, ohne bestehenden Code zu aendern?Haeufige Aenderungen an Kernklassen fuer jedes neue Feature
Liskov-SubstitutionKoennen Untertypen ihre Basistypen ersetzen, ohne das Verhalten zu brechen?Typprüfungen (instanceof) ueber Consumer-Code verstreut
Interface SegregationSind Schnittstellen fokussiert und minimal?"Fette" Schnittstellen, bei denen Konsumenten ungenutzte Methoden implementieren
Dependency InversionHaengen hochwertige Module von Abstraktionen ab, nicht von Details?Direkte Instanziierung von Infrastrukturklassen in der Geschaeftslogik
## SOLID-Bewertung
| Prinzip | Status | Nachweis | Auswirkung |
|-----------|--------|----------|--------|
| SRP | Bedenken | UserService behandelt Auth, Profil, Benachrichtigungen und Abrechnung | Hoch — Aenderungen an der Abrechnung riskieren, Auth zu brechen |
| OCP | Gut | Plugin-System fuer Zahlungsanbieter | Niedrig |
| LSP | Gut | Keine Typ-Check-Anti-Patterns gefunden | Niedrig |
| ISP | Bedenken | IRepository hat 15 Methoden, die meisten Implementierungen nutzen 3-4 | Mittel |
| DIP | Bedenken | Controller instanziieren Datenbankrepositories direkt | Mittel |

Erwartet: Jedes Prinzip mit mindestens einem spezifischen Beispiel bewertet. Bei Fehler: Nicht alle Prinzipien gelten gleich fuer jeden Architekturstil. Vermerken, wenn ein Prinzip weniger relevant ist (z. B. ISP weniger wichtig in funktionalen Codebases).

Schritt 4: API-Design reviewen

Fuer Systeme, die APIs exponieren (REST, GraphQL, gRPC):

  • Konsistenz: Namenskonventionen, Fehlerformate, Paginierungsmuster einheitlich
  • Versionierung: Strategie vorhanden und angewendet (URL, Header, Content-Negotiation)
  • Fehlerbehandlung: Fehlerantworten sind strukturiert, konsistent und lecken keine internen Details
  • Authentifizierung/Autorisierung: Auf API-Ebene korrekt durchgesetzt
  • Rate Limiting: Schutz vor Missbrauch
  • Dokumentation: OpenAPI/Swagger, GraphQL-Schema oder Protobuf-Definitionen gepflegt
  • Idempotenz: Mutierende Operationen (POST/PUT) behandeln Wiederholungsversuche sicher
## API-Design-Review
| Aspekt | Status | Anmerkungen |
|--------|--------|-------|
| Namenskonsistenz | Gut | Durchgaengige RESTful-Ressourcenbenennung |
| Versionierung | Bedenken | Keine Versionierungsstrategie — Breaking Changes betreffen alle Clients |
| Fehlerformat | Gut | RFC 7807 Problem Details konsistent verwendet |
| Auth | Gut | JWT mit rollenbasierten Scopes |
| Rate Limiting | Fehlend | Kein Rate Limiting an irgendeinem Endpunkt |
| Dokumentation | Bedenken | OpenAPI-Spec vorhanden, aber 6 Monate veraltet |

Erwartet: API-Design gegen gaengige Standards reviewed mit spezifischen Befunden. Bei Fehler: Wenn keine API exponiert wird, diesen Schritt ueberspringen und sich auf interne Modulschnittstellen konzentrieren.

Schritt 5: Skalierbarkeit und Zuverlaessigkeit bewerten

  • Zustandslosigkeit: Kann die Applikation horizontal skalieren (kein lokaler Zustand)?
  • Datenbankskalierbarkeit: Sind Abfragen indiziert? Ist das Schema fuer das Datenvolumen geeignet?
  • Caching-Strategie: Wird Caching auf geeigneten Ebenen eingesetzt (Datenbank, Anwendung, CDN)?
  • Fehlerbehandlung: Was passiert, wenn eine Abhaengigkeit nicht verfuegbar ist (Circuit Breaker, Retry, Fallback)?
  • Observierbarkeit: Sind Logs, Metriken und Traces implementiert?
  • Datenkonsistenz: Ist eventuelle Konsistenz akzeptabel oder ist starke Konsistenz erforderlich?

Erwartet: Skalierbarkeit und Zuverlaessigkeit relativ zu formulierten nichtfunktionalen Anforderungen bewertet. Bei Fehler: Wenn nichtfunktionale Anforderungen undokumentiert sind, deren Definition als ersten Schritt empfehlen.

Schritt 6: Technische Schulden bewerten

## Technische-Schulden-Inventar
| Punkt | Schweregrad | Auswirkung | Geschaetzter Aufwand | Empfehlung |
|------|----------|--------|-----------------|----------------|
| Keine Datenbankmigrationen | Hoch | Schaemaenderungen sind manuell und fehleranfaellig | 1 Sprint | Alembic/Flyway einfuehren |
| Monolithische Test-Suite | Mittel | Tests dauern 45 min, Entwickler ueberspringen sie | 2 Sprints | In Unit/Integration/E2E aufteilen |
| Hartcodierte Konfigurationswerte | Mittel | Umgebungsspezifische Werte im Quellcode | 1 Sprint | In Env-Variablen/Konfigurationsdienst auslagern |
| Keine CI/CD-Pipeline | Hoch | Manuelle Deployments fehleranfaellig | 1 Sprint | GitHub Actions einrichten |

Erwartet: Technische Schulden mit Schweregrad, Auswirkung und Aufwandsschaetzungen katalogisiert. Bei Fehler: Wenn das Schuldeninventar ueberwaetigend ist, die 5 wichtigsten Punkte nach Auswirkungs-/Aufwandsverhaeltnis priorisieren.

Schritt 7: Architecture Decision Records (ADRs) reviewen

Wenn ADRs vorhanden sind, beurteilen:

  • Entscheidungen haben klaren Kontext (welches Problem geloest wurde)
  • Alternativen wurden beruecksichtigt und dokumentiert
  • Kompromisse sind explizit
  • Entscheidungen sind noch aktuell (nicht ohne Dokumentation abgeloest)
  • Neue wesentliche Entscheidungen haben ADRs

Wenn ADRs nicht vorhanden sind, deren Einfuehrung fuer Schluesselelentscheidungen empfehlen.

Schritt 8: Den Architektur-Review verfassen

## Architektur-Review-Bericht

### Zusammenfassung
[2-3 Saetze: Gesamtzustand, wesentliche Bedenken, empfohlene Massnahmen]

### Staerken
1. [Spezifische architektonische Staerke mit Nachweis]
2. ...

### Bedenken (nach Schweregrad)

#### Kritisch
1. **[Titel]**: [Beschreibung, Auswirkung, Empfehlung]

#### Wesentlich
1. **[Titel]**: [Beschreibung, Auswirkung, Empfehlung]

#### Geringfuegig
1. **[Titel]**: [Beschreibung, Empfehlung]

### Zusammenfassung technischer Schulden
[Top-5-Schulden mit priorisierten Empfehlungen]

### Empfohlene naechste Schritte
1. [Umsetzbare Empfehlung mit klarem Umfang]
2. ...

Erwartet: Review-Bericht ist umsetzbar mit priorisierten Empfehlungen. Bei Fehler: Wenn der Review zeitlich begrenzt ist, klar angeben, was abgedeckt wurde und was unbewertet bleibt.

Validierung

  • Systemkontext dokumentiert (Zweck, Groessenordnung, Abhaengigkeiten, Team)
  • Kopplung und Kohaesion mit spezifischen Codebeispielen bewertet
  • SOLID-Prinzipien wo zutreffend ausgewertet
  • API-Design reviewed (wenn zutreffend)
  • Skalierbarkeit und Zuverlaessigkeit gegen Anforderungen bewertet
  • Technische Schulden katalogisiert und priorisiert
  • ADRs reviewed oder deren Fehlen vermerkt
  • Empfehlungen sind spezifisch, priorisiert und umsetzbar

Haeufige Stolperfallen

  • Code statt Architektur reviewen: Dieser Skill befasst sich mit systemweitem Design, nicht mit zeilenweiser Code-Qualitaet. code-reviewer fuer PR-Feedback verwenden.
  • Spezifische Technologie vorschreiben: Architektur-Reviews sollten Probleme identifizieren, nicht bestimmte Tools vorschreiben, ausser es gibt einen klaren technischen Grund.
  • Teamkontext ignorieren: Die "beste" Architektur fuer ein 3-koepfiges Team unterscheidet sich von der fuer ein 30-koepfiges Team. Organisatorische Einschraenkungen beruecksichtigen.
  • Perfektionismus: Jedes System hat technische Schulden. Auf Schulden konzentrieren, die aktiv Schmerzen verursachen oder kuenftige Arbeit blockieren.
  • Skalierung annehmen: Keine verteilten Systeme fuer eine App mit 100 Nutzern empfehlen. Architektur an tatsaechliche Anforderungen anpassen.

Verwandte Skills

  • security-audit-codebase — sicherheitsfokussiertes Code- und Konfigurationsreview
  • configure-git-repository — Repository-Struktur und Konventionen
  • design-serialization-schema — Datenschema-Design und -Entwicklung
  • review-data-analysis — Review auf analytische Korrektheit (ergaenzende Perspektive)

GitHub 저장소

pjt222/agent-almanac
경로: i18n/de/skills/review-software-architecture
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

executing-plans

디자인

executing-plans 스킬은 검토 체크포인트가 포함된 통제된 배치로 실행할 완전한 구현 계획이 있을 때 사용합니다. 이 스킬은 계획을 불러와 비판적으로 검토한 후, 소규모 배치(기본값 3개 작업)로 작업을 실행하면서 각 배치 사이에 진행 상황을 아키텍트 검토를 위해 보고합니다. 이를 통해 내재된 품질 관리 체크포인트를 갖춘 체계적인 구현이 보장됩니다.

스킬 보기

requesting-code-review

디자인

이 스킬은 코드 변경 사항을 요구 사항에 따라 분석하기 위해 코드 리뷰어 하위 에이전트를 호출합니다. 작업 완료 후, 주요 기능 구현 후, 또는 메인 브랜치에 병합하기 전에 사용해야 합니다. 이 리뷰는 현재 구현체와 원래 계획을 비교하여 문제를 조기에 발견하는 데 도움이 됩니다.

스킬 보기

connect-mcp-server

디자인

이 스킬은 개발자들이 HTTP, stdio 또는 SSE 전송 방식을 통해 MCP 서버를 Claude Code에 연결하는 포괄적인 가이드를 제공합니다. GitHub, Notion 및 사용자 정의 API와 같은 외부 서비스를 통합하기 위한 설치, 구성, 인증 및 보안을 다룹니다. MCP 통합 설정, 외부 도구 구성 또는 Claude의 모델 컨텍스트 프로토콜 작업 시 활용하세요.

스킬 보기

web-cli-teleport

디자인

이 스킬은 작업 분석을 기반으로 개발자가 Claude Code 웹 인터페이스와 CLI 인터페이스 중 선택할 수 있도록 돕고, 두 환경 간 원활한 세션 텔레포트를 가능하게 합니다. 웹, CLI 또는 모바일 환경 전환 시 세션 상태와 컨텍스트를 관리하여 워크플로를 최적화합니다. 다양한 단계에서 서로 다른 도구가 필요한 복잡한 프로젝트에 사용하세요.

스킬 보기