본문 바로가기

전체 글4

디자인 패턴 Design Pattern Design Patterns 1. 디자인 패턴이란? 특정 디자인 문제나 상황을 해결하는 데에 효과적인 검증된 설계 템플릿이다. 즉 특정 문제를 해결하기 위한 전략이나 방식을 설명하고 이 패턴들을 수많은 프로젝트와 애플리케이션에서의 경험을 바탕으로 정제되어 왔으며, 따라서 이전에 발생했던 문제들에 대한 효율적인 해결책을 빠르게 찾아 적용할 수 있다. 2. GoF 패턴은 어떤 용도로 사용될까? GoF Pattern Catalogue - Creational (생성 패턴) : 객체가 생성되는 방식을 중심으로 설계되어, 객체 생성 과정의 유연성 및 독립성을 증가 시킨다. - Structural (구조 패턴) : 클래스나 객체의 구성에 관한 패턴으로 서로 다른 인터페이스나 클래스를 조합하는 방법에 중점을 둔다. -.. 2023. 9. 18.
Architecture Driver 아키텍처 드라이버 아키텍처 드라이버 1. 아키텍처 드라이버란 무엇인가? 소프트웨어 집약적인 시스템의 아키텍처를 설계하기 위해 아키텍트는 시스템의 기본 구조에 영향을 미칠 가능성이 가장 높은 핵심 요구 사항을 필요로 한다. 이러한 주요 요구사항들은 시스템의 구조를 결정한다. 이를 "아키텍처 드라이버"라고 한다. 즉 Key가 되는 요구사항들이다. 아키텍처 드라이버는 시스템의 모든 요구사항은 아니지만, 아키텍트가 초기 Design Decisions을 내릴 때 가장 영향력있는 요구사항을 파악하고 포착하려는 초기 시도이다. 가능하면 최대한 빠르게 아키텍처 드라이버를 밝히는 것이 중요하다. 왜냐하면 초기 아키택쳐 결정은 시스템의 전체 lifetime에 영향을 끼치기 때문이다. 아키텍처 드라이버는 아래와 같이 구성된다. - 기능 요구.. 2023. 9. 17.
Tactics 과 Pattern Component 1. Component 란? 잘 정의된 시스템의 기능적인 부분. 특정 Responsibility를 가지고 있고, 잘 정의된 인터페이스를 통해 다른 요소들과 연결할 수 있게 한다. 재사용 가능한 소프트웨어 모듈이고 독립성과 재사용성을 강조한다. 즉 독립적으로 교체할 수 있다. 2. Class와 Component의 차이 Class는 객체지향 프로그래밍에서 데이터와 데이터를 처리하는 메소드를 포함하는 청사진, 템플릿이다. 실제 객채를 생성하기 위한 것으로 클래스는 구현 타이밍의 유닛, 컴포넌트는 디자인 타임의 유닛이라고 볼 수 있다. 즉 컴포넌트는 하나 이상의 클래스에 의해 구현된다. 3. Component와 Package의 차이 Package는 서로 관련이 있고 함께 변경될 수 있는 요소(.. 2023. 9. 17.
Cohesion/Coupling과 SOLID Cohesion 1. Cohesion이란? 모듈 내 요소들의 기능적 관련성의 강도이다. Cohesion(응집력)은 보편적인 개념으로 함수 응집력, 클래스 응집력, 패키지 응집력, 컴포넌트 응집력을 포함한다. 응집력이 낮은 클래스는 수정이 필요할 가능성이 높고, 유지보수가 어려울 수 있다. Cohesion을 향상하는 방법 - 리팩토링 . 메소드를 메소드 오브젝트로 변경 / 클래스로 추출 / 서브클래스로 추출 . Presentation으로부터 도메인 분리 . type code(Attribute)를 서브클래스로 변경 / 상태나 전략으로 변경 2. 함수, 클래스, 패키지, 그리고 컴포지션에서 Cohesion은 어떻게 측정할까? Cohesion을 측정하는 방법(Cohesion metrics for Classes).. 2023. 9. 17.