전체 글291 abstraction(추상화) # 정의 > wekipedia 정의 추상화(abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. > 해석 추상화란 `구체적인 것에서 핵심을 찾아내는 것`라고 정의할 수 있다 `구체적인 것`과 `핵심`은 무엇일까? `구체적인 것`이라는 것은 상대적인 것이며 상황에 따라 다르다. `A문서를 a4 용지에 좌우 여백은 10으로 하고 상하 여백은 20으로 해서 출력하라` 라는 문장이 있다고 하자. 위 문장에서 핵심은 무엇일까? "A문서를 출력하라" 가 위 문장에서 어떻게 하는지는 숨기고 핵심만 뽑아낸 것이다. 무언가 핵심적인 것만 추려낸 느낌이다. "A문서를 출력하라"에서 더 핵심을 뽑아내기란 어려워 보인다. `A문서를 a4 용지에 좌우 여백은 10.. 2022. 4. 17. separation of concerns(관심사 분리) # 정의 관심사의 분리는 어플리케이션을 구분되는 영역으로 나누며 각 영역은 분리된 관심사를 가진다. 이것의 목적은 잘 조직화된 시스템을 만드는 것이며 이를 통해 변경에 적합한 어플리케이션이 된다. 관심사 분리는 소프트웨어 아키텍쳐 디자인 원칙이다. # 어떻게 관심사의 분리를 할 수 있는가 소프트웨어 아키텍쳐에서 관심사의 분리는 경계(boundaries)를 만드는 것을 통해 만들어진다. 여기서 경계는 논리적이거나 물리적인 어떤 것이든 가능하다. 함수, 객체, 컴포넌트 서비스등 어떤 방식이든 분리가 되면 된다. 적용되는 범위도 어디든 가능하며 프로젝트, 솔루션, 폴더 구조, 어플리케이션 레이어 등 다 가능하다. 대표적인 예로는 백앤드 서비스에서 데이터 저장의 관심사를 repository 라는 레이어로 나누는.. 2022. 4. 17. single responsibility principle(단일 책임 원칙) # 객체 지향 프로그래밍에서 정의 > wikipedia 정의 객체 지향 프로그래밍에서 단일 책임 원칙이란 모든 클래스는 하나의 책임(변경하려는 이유)만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함을 일컫는다. 클래스가 제공하는 모든 기능은 이 책임과 주의 깊게 부합해야 한다. 단일 책임 원칙은 로버트 마틴의 객체 지향 설계 원칙이란 문서의 같은 이름을 가진 단락에서 소개되었다. 로버트 마틴은 책임을 변경하려는 이유로 정의하고, 어떤 클래스나 모듈은 변경하려는 단 하나 이유만을 가져야 한다고 결론 짓는다. 예를 들어서 보고서를 편집하고 출력하는 모듈을 생각해 보자. 이 모듈은 두 가지 이유로 변경될 수 있다. 첫 번째로 보고서의 내용 때문에 변경될 수 있다. 두 번째로 보고서의 형식 때문에 변경될 수.. 2022. 4. 17. ports-and-adapter architecture 프로그램의 아키텍쳐 중 ports-and-adapter architecture 을 알아보자. "포트와 어댑터 아키텍처"라는 용어는 알리스테어 콕번이 만든 용어이다. 어플리케이션과 어댑터 사이에 경계를 두고 육각형 모양의 선이 있어서 hexagonal 아키텍쳐라 불린다. 육각형에는 큰 의미는 없다. 육각형 안에는 도메인 엔티티와 유스케이스가 있다. 육각형에서 외부로 향하는 의존성이 없기 때문에 "클린 아키텍쳐" 에서 제시하는 의존성 규칙이 그대로 적용된다는 점이 있다. 즉, 모든 의존성은 코어를 향한다. 육각형 바깥에는어플리케이션과 상호작용하는 다양한 어댑터들이 존재한다. 웹 브라우저나 데이터베이스 등과 상호작용하는 어댑터들이 여기에 위치한다. 어플리케이션 코어(육각형 내부)와 어댑터 간의 통신이 가능하도.. 2022. 4. 10. 이전 1 ··· 8 9 10 11 12 13 14 ··· 73 다음