소프트웨어 상에서 구조를 패턴, 역할, 기능 등 각각 맞게 섹션 별로 분리해서 작성하는 것을 말합니다. 이때 주의 사항은 분리를 해서 작성을 했을시, 그 특성에 맞게 하나의 역할을 부여해서 작성해야 하는 것입니다. 즉, 코드를 작성할때 '관심사의 분리'란 하나의 역할 별로 분리를 해서 작성하는 것을 말합니다.
1. Single Responsiblity Principle (단일 책임 원칙) - 소프트웨어의 설계 부품(클래스, 함수 등)은 단 하나의 책임만을 가져야 한다.
2. Open-Closed Principle (개방-패쇄 원칙) - 기존의 코드를 변경하지 않고(Closed) 기능을 수정하거나 추가할 수 있도록(Open) 설계해야 한다.
3. Liskov Substitution Principle (리스코프 치환 원칙) - 자식 클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 한다.
4. Dependency Inversion Principle (의존 역전 원칙) - 의존 관계를 맺을 때, 변화하기 쉬운것 보단 변화하기 어려운 것에 의존해야 한다는 원칙이다.
5. Interface Segregation Principle (인터페이스 분리 원칙) - 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인 인터페이스보다는, 여러 개의 구체적인 인터페이스가 낫다.