ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS] 나만의 간단한 프레임워크 설계 방법
    CS 2023. 5. 10. 09:18

    1. 프레임워크의 정의

    Gof의 디자인 패턴으로 유명한 랄프 존슨(Ralph Johnson)은 "프레임워크란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것"이라고 정의

    ex) 게임 프레임워크 or 게임 엔진 : 렌더링 모듈, 파일 입출력 모듈, 게임 오브젝트 모듈, 사운드 모듈, 네트워크 모듈, 키 입출력 모듈, UI / 앱 모듈

     

    2. 프레임워크의 구조와 설계 파악하기

    - 프레임워크를 초보자 혼자서 만들기에는 상당히 큰 작업

    - 기존에 존재하는 여러 프레임워크를 사용해보며 전체적인 구조를 파악하는 것이 핵심

    - 여러 프레임 워크 중에 공통적인(중첩적인) 부분은 반드시 존재하며, 그 부분을 자신만의 설계 포인트로 "어떻게" 녹여낼 것인가? => 가장 중요

    - 프레임워크 구성 요소는 해당 프로그램 제작 시 필요한 부분을 반드시 기본으로 제공해야 함 ex) 게임: 캐릭터 / 사운드 / UI / 입출력 / 렌더링등...

    - 처음부터 큰 프레임워크를 만들기 보다는 작더라도 재활용 가능할 수 있는 간단한 모듈을 만드는 연습을 해보자

    => 그 모듈들이 모여서 하나의 프레임워크가 된다는 점을 명심

     

    3. 자주, 그리고 반복 사용되는 기능들을 분류하고 모으자.

     

    4. 각 모듈들을 상속을 이용해 디자인 하자.

    ex) 게임 오브젝트의 상속 구조 예시 - 필요한 모듈을 컴포넌트 식으로 불러들여와서 조금씩 변경 및 추가

     

    5. 공통으로 적용되는 것을 따로 분리하자

    ex) Utility 예시

    - Uiltity의 경우 대부분 싱글톤으로 구현 (1개 이상이 필요하지 않기 때문)

    - 로그 남기기

    - 각종 수학 및 물리 계산 함수 ex) 두 물체간의 거리 / 충돌 여부 등 인자의 타입에 관계 없이 값을 구할 수 있는 것들을 집합 시킴

     

    6. Loose coupling (느슨한 관계, 컴포넌트끼리 영향도가 거의 없는 관계)를 제공하자.

    ex) componentA를 수정해도 componentB와 전혀 무관하게

     

    7. 정리

    - 프레임워크란 재사용 가능한 여러 라이브러리와 뼈대 프로그램을 제공해 프로그램을 빠르고 손쉽게 구현할 수 있는 툴이다.

    - 프레임워크를 만들기 위해서는 각 제공되는 모듈들의 특성과 구조를 잘 파악할 수 있어야 한다.

    - 프레임워크 안의 각 기능들은 상속을 이용해서 컴포넌트화 후 제공하자.

    - 프레임워크에서 각 객체들에게 공통적으로 적용될 수 있는 것들은 Utility로 빼서 제공하자.

    - 각 모듈간은 되도록이면 loose coupling을 제공하여 확장성있게 접근할 수 있도록 하자.

    'CS' 카테고리의 다른 글

    [CS] DLL(Dynamic Link Library)  (0) 2025.01.20
    [CS] 배치 작업 처리  (0) 2023.05.12
    [CS] Unmanaged Language VS Managed Language  (0) 2023.05.08
    [CS] 공통 코드  (0) 2023.05.08
    [CS] 쓰레드에 대한 이해와 활용  (0) 2023.05.01
Designed by Tistory.