# 소프트웨어 설계와 아키텍처

[원문](https://www.linkymeadow.com/w/a6c95f/)

마지막 수정: 2026-10-05 21:30 (KST)

객체의 책임과 의존성을 나누는 방법, 애플리케이션 계층과 설계 패턴을 살펴보는 자료입니다. 패턴 이름뿐 아니라 적용하려는 문제와 변경 비용을 함께 확인할 수 있습니다.

## 객체의 책임과 의존성

- [Object Oriented Programming — Dev.java](https://dev.java/learn/language/oop/)

  객체·클래스·인터페이스·상속과 Record를 이용한 모델링의 기초를 설명합니다.
- [Solid Relevance — Robert C. Martin](https://blog.cleancoder.com/uncle-bob/2020/10/18/Solid-Relevance.html)

  SOLID의 각 원칙을 변경 이유·확장·타입 호환·인터페이스·의존성 관점에서 설명합니다.
- [Inversion of Control Containers and the Dependency Injection pattern — Martin Fowler](https://martinfowler.com/articles/injection.html)

  서비스 로케이터와 의존성 주입을 비교하며 객체 구성과 사용을 분리하는 방법을 설명합니다.

## 계층과 경계

- [Presentation Domain Data Layering — Martin Fowler](https://martinfowler.com/bliki/PresentationDomainDataLayering.html)

  표현·도메인·데이터 접근의 책임과 계층 분리가 만드는 경계를 설명합니다.
- [Hexagonal Architecture — Alistair Cockburn](https://alistair.cockburn.us/hexagonal-architecture)

  포트와 어댑터를 통해 애플리케이션 내부를 외부 기술과 분리하는 아키텍처의 원문입니다.
- [Patterns of Enterprise Application Architecture — Martin Fowler](https://martinfowler.com/eaaCatalog/)

  Service Layer·Repository·Data Mapper·DTO 등 애플리케이션 패턴의 목적과 구조를 찾아볼 수 있습니다.

## 설계 패턴

- [Design Patterns for Reuse — Carnegie Mellon University](https://www.cs.cmu.edu/~charlie/courses/17-214/2020-fall/slides/20200922-design-patterns-for-reuse-2.pdf)

  전략과 템플릿 메서드 등 재사용 패턴을 비교하며 상속·위임의 선택과 설계 원칙을 다루는 강의 자료입니다.
- [Design Patterns — Carnegie Mellon University](https://www.cs.cmu.edu/~aldrich/courses/15-214-12fa/slides/10-12-design-patterns.pdf)

  싱글턴 등 생성·구조·행위 패턴의 적용 조건과 결과를 살펴볼 수 있는 강의 자료입니다.
- [Introduce Special Case — Martin Fowler](https://refactoring.com/catalog/introduceSpecialCase.html)

  특수한 경우를 별도 객체로 표현하는 리팩터링으로 널 객체 패턴과 함께 읽을 수 있습니다.

## 빌드와 모듈 구성

- [Gradle User Manual](https://docs.gradle.org/current/userguide/userguide.html)

  빌드 태스크·의존성·다중 프로젝트 구성과 테스트 실행을 연결하는 공식 문서입니다.

## 관련 문서

- [Java와 자료구조](https://www.linkymeadow.com/w/b7d14e/)
- [Spring 애플리케이션과 트랜잭션](https://www.linkymeadow.com/w/59c20a/)
- [분산 시스템과 운영](https://www.linkymeadow.com/w/913d6a/)
- [소프트웨어 테스트](https://www.linkymeadow.com/w/ac7642/)
- [백엔드 개발 학습 자료](https://www.linkymeadow.com/w/e48b27/)
