본문 바로가기

전체 글152

클린 아키텍처 - 컴포넌트 결합 - ADP 컴포넌트 결합 ADP: 의존성 비순환 원칙 (Acyclick Dependencies Principle) SDP: 안정된 의존성 원칙(Stable Dependencies Principle) SAP: 안정된 추상화 원칙(Stable Abstractions Principle) ADP 의존성 비순환 원칙 (Acyclick Dependencies Principle) 컴포넌트 의존성 그래프에 순환(cycle)이 있어서는 안 된다. '숙취 증후군 (the morning after syndrome)' 하루 종일 일해서 무언가를 작동하게 만들어 놓고 퇴근했는데, 이튿날 출근해 보면 전혀 돌아가지 않는 상황. 보통 당신보다 더 늦게까지 일하면서 당신이 의존하고 있던 무언가를 수정했기 때문이다. 숙취 증후군은 많은 개발자가.. 2023. 2. 11.
클린 아키텍처 - 설계원칙 - ISP 설계원칙 SOLID SRP: 단일 책임 원칙 Single Responsible Principle OCP: 개방-폐쇄 원칙 Open-Closed Principle LSP: 리스코프 치환 법칙 Liskov Substitution Principle ISP: 인터페이스 분리 원칙 Interface Segregation Principle DIP: 의존성 역전 원칙 Dependency Inversion Principle ISP 인터페이스 분리 원칙 Interface Segregation Principle [그림 4-1. 인터페이스 분리 원칙] 그림 4-1에서 기술된 상황에서, 다수의 사용자가 me 클래스의 오퍼레이션을 사용한다. children: cooking, exercise wife: cooking, clean.. 2023. 2. 11.
클린 아키텍처 - 설계원칙 - OCP 설계원칙 SOLID SRP: 단일 책임 원칙 Single Responsible Principle OCP: 개방-폐쇄 원칙 Open-Closed Principle LSP: 리스코프 치환 법칙 Liskov Substitution Principle ISP: 인터페이스 분리 원칙 Interface Segregation Principle DIP: 의존성 역전 원칙 Dependency Inversion Principle OCP 개방-폐쇄 원칙 Open-Closed Principle 소프트웨어 개체(artifact)는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다. 다시 말하자면 소프트웨어 개체의 행위는 확장할 수 있어야 하지만, 이때 개체를 변경해서는 안 된다. 만약 요구사항을 살짝 확장하는 데 소프트웨어.. 2023. 2. 11.
소프트웨어 아키텍처 선택의 중요성 소프트웨어 아키텍처는 높은 추상화 단계에서의 소프트웨어 설계이다. 아키텍처 결정 중 일부는 코드 깊숙이 영향을 미치므로 아키텍처와 디자인 사이의 경계를 구분하기 어려울 수도 있다. 아키텍처가 시스템의 골격 역할을 하고, 품질 속성에 영향을 미치며, 시스템을 제한하기 때문에 소프트웨어 아키텍처 선택은 중요하다. 아키텍처는 시스템 전반에 영향을 끼친다. 시스템의 목적에 따라 올바른 아키텍처를 선택해야만 한다. 아키텍처는 기능에 직접적인 영향을 끼치지 않기 때문에 어느 정도는 아키텍처와 기능을 자유롭게 조합사여 사용할 수 있다. 하지만 필요한 기능과 품질 속성에 아키텍처가 적합하다면 시스템을 구축하기가 훨씬 쉬워진다. 반대로 아키텍처가 접합하지 않다면 요구사항을 충족하는 데 어려움이 있어 어느 선에서 타협해야.. 2023. 1. 28.