Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 18 Next »

핵심기술

POJO [1]

  • Plain Old Java Object

  • 객체지향 프로그래밍 기법과 언어가 주는 장점인 유연한 설계와 재사용성 활용하여 비즈니스의 복잡성과 변화를 상대함.
  • 객체지향 설계(OOD, Object Oriented Design) 및 객체지향 프로그래밍(OOP, Object Oriented Programming) 원칙을 참고할 것.

IoC / DI

  • 소프트웨어 공학에서는 일반적으로 높은 응집도(cohesion)와 낮은 결합도(coupling)를 지향함.
  • 와이어링(Wiring)
    • 객체는 홀로 동작하지 않고, 서로 협력하여 목적을 달성하기 위해 다른 객체를 참조하게 됨.
 이를 wiring이라고 함.
    • 사용할 클래스를 생성하기 위해 new 연산을 하게 되는데 이 때 의도치 않은 구체적 구현체에 대한 참조 발생.
  • 제어의 역전 (IoC)
    • Inversion Of Control
    • 프로그래머가 작성한 소스코드가 프레임워크의 흐름제어를 받는 소프트웨어 디자인 패턴임.
    • 프레임워크의 일반적인 속성. 콜백 프로그램만 작성하면 됨.
    • 헐리우드 법칙
  • 의존성 주입 (DI)
    • Dependency Injection
    • IoC 구현을 통해 의존관계 해결을 위한 소프트웨어 디자인 패턴임.
    • 테스트 하기 용이한 구조를 유도할 수 있음.

    • 스프링은 xml 설정이나 애노테이션을 통해 의존성 주입을 쉽게 할 수 있는 방법을 제공함.

AOP

  • Aspect Oriented Programming
  • 모듈성을 높일 목적으로 서로 다른 관심사를 분리(separation of cross-cutting concerns)하는 프로그래밍 패러다임.
  • 성격이 다른 로직(업무 로직과 업무 로직 외 공통적인 부분)이 함께 있는 경우 이를 분리해서 처리해야 복잡성을 해결할 수 있음.
  • 로깅, 보안, 트랜잭션 등이 있음.
  • 참고 : Aspect-oriented programming

PSA

  • Potable Service Abstraction
  • 개발환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근하게 해주는 기능
  • 서비스 추상화를 통해서 로우 레벨의 기술 구현 부분과 기술을 사용하는 인터페이스를 분리하고, 환경과 세부 기술에 독립적인 접근 인터페이스를 제공하면 기술적인 복잡함을 줄일 수 있음.

 


[1] ^ https://www.martinfowler.com/bliki/POJO.html

 

  • No labels