5장 객체 지향 프로그래밍 - ChoDragon9/posts GitHub Wiki

플러그인 아키텍처

  • 1950년대 후반에 프로그램은 장치 독립적이어야 함을 발견하게 되었다.
    • 당시에 장치에 의존적인 수많은 프로그램을 만들었고, 다른 장치에 프로그램이 필요하면 기존 프로그램에서 상당한 많은 부분을 재작성해야 하기 때문이다.
  • 입출력 장치 독립성을 지원하기 위해 만들어 졌고, 등장 이후 거의 모든 운영체제에서 구현됨

의존성 역전

  • 일반적인 상황에서 프로그램은 Top-Down으로 제어흐름이 흐른다.
    • normal-flow
  • 다형성이 끼어들면 의존성 역전 현상이 발생한다.
    • di-flow
    • HL1 모듈은 인터페이스를 통해 F()를 호출한다.
    • ML1과 I 인터페이스 사이의 소스코드 의존성이 제어흐름과 반대이다.
  • OO언어가 다형성을 안전하고 편리하게 제공한다는 사실은 소스 코드 의존성을 어디에서든 역전시킬 수 있다는 뜻이기도 하다.
  • 결국 소스 코드 의존성이 제어흐름의 방향과 일치되도록 제한되지 않는 다.

결론

소프트웨어 아키텍트 관점에서 OO란 다형성을 이용하여 전체시스템의 모든 소스 코드 의존성에 대한 절대적인 제어 권한을 획득할 수 있는 능력이다.

OO를 사용하면 아키텍트는 플러그인 아키텍처를 구성할 수 있고, 이를 통해 고수준의 정책을 포함하는 모든 저수준의 세부사항을 포함하는 모듈에 대해 독립성을 보장할 수 있다.

저수준의 세부사항은 중요도가 낮은 플러그인 모듈로 만들 수 있고, 고수준의 정책을 포함하는 모듈과는 독립적으로 개발하고 배포할 수 있다.