posted by 방랑군 2012. 1. 4. 13:37

본 내용은 월간 마소 2009년 05월호에 실린 내용을 정리한 것입니다.
불펌을 금지하며, 문제시 삭제하겠습니다.


캐즘(chasm)

  • 캐즘 : 활발히 활용되기전의 과도기 시점, 정체 또는 후퇴되는것처럼 느껴지는 진행 단절 현상
  • 프레임워크 학습시 캐즘
    • 프레임워크는 도메인 문제 해결을 위한 코드구조, 디자인이 포함
    • 일반적 App 개발과는 다르게 도메인 문제를 프레임워크 구조에서 해결해야함

프레임워크 구현시 주의사항

  • Hot spots와 Frozen spots를 구분할것
  • 공통적인 부분은 프레임워크 내부에서
  • 가변적인 부분은 App마다 달라지므로, 초기화 부분의 파라미터 등을통해 기능 접근을 할 수 있도록 구현
  • 가변적인 부분을 프레임워크 내에 모두 포함할 수 없다면, 가상함수의 특징인 훅 메스드 형태로 제공하여 커스트마이징 할 수 있도록 구현

라이브러리 vs 프레임워크

  • 라이브러리 : App에서 구현하기 위해 라이브러리 호출
  • 프레임워크 : 프레임워크에서 의도하는 구조로 App이 흐름

프레임워크 이해를 위한 패턴언어

  • 1) 프레임워크 선택하기
  • 2) 프레임워크를 이용한 프로젝트 레퍼런스 만들기
  • 3) 프레임워크 발전시키기
  • 4) 프레임워크 학습
  • 5) 사용 경험의 보전 방법
  • 6) 애플리케이션 도메인의 이해
  • 7) 프레임워크 아키텍처의 이해
  • 8) 프레임워크 내부 디자인의 이해
  • 9) 프레임워크 코드의 이해

1) 프레임워크 선택하기

  • 도메인 분석작업
  • 프레임워크 기능 분석작업
  • App 개발기간과 배우는 비용도 고려햐야함.
  • 화이트박스/블랙박스/그레이박스 프레임워크
    • 화이트박스 : hot spots의 커스트마이징을 위해 상속과 동적바인딩을 사용, 프레임워크 개발은 쉽지만 App 개발자가 프레임워크 내부를 잘 알아야
    • 블랙박스 : hot spots의 커스트마이징을 위해 인터페이스를 사용. App 개발자는 인터페이스를 구현하고 프레임워크에 던져줌. 프레임워크 개발시 인터페이스 미리 정해둬야함
    • 그레이박스 : 일반적인 방법. 화이트+블랙 적절히..
  • 예제) 루비 온 레일즈 : App 구현기간이 짧아야 할 경우 미리 충분히 갖춰진 프레임워크

사용자 삽입 이미지


2) 프레임워크를 이용한 프로젝트 레퍼런스 만들기

  • 프레임워크 : 도메인에 특화된 문제를 해결하는 뼈대
  • 적당한 예제단위로 레퍼런스를 구축한다면 효율성이 높음

3) 프레임워크 발전시키기

  • 프레임워크 개발자는
    • 도메인 적용되고 나타나는 문제를 해결하여 다시 프레임워크에 반영해야
    • 변경되는 HW, OS에 맞게 발전시켜야
    • 소프트웨어 전문가 겸 도메인 전문가여야 함.

4) 프레임워크 학습

  • App는 시작지점이 존재하지만, 프레임워크는 시작점이 없다.
  • 프레임워크 분석 방법
    • Top-down(하향식) : 추상화 레벨에서 분석 시작 (큰 그림 잡고 -> 목적을 파악하고 -> 구현부에서 파악)
    • Bottom-up(상향식) : 세부구현에서 분석 시작
    • 대체로 하향식이 분석이 편함 (반드시는 아님)

5) 사용 경험의 보전 방법

  • 프레임워크로 App에 적용 반복하다 보면, 사용법/주의사항/노하우 등이 쌓임. 이런것들은 보존해야함.
  • 프레임워크 사용경험을 문서화시키고, 실전코드들을 레퍼런스나 케이스로 정리할것

6) 애플리케이션 도메인의 이해

  • 프레임워크가 App에서 구현할 문제를 해결할 수 있는 범위 파악하는 것이 중요

7) 프레임워크 아키텍처의 이해

  • 프레임워크 기반 App는 프레임워크 의도에 따라 App 구조가 바뀐다. --> 프레임워크는 App에 직접적 영향 미침
  • 프레임워크 구조를 파악하면 구현체 재사용이 용이하고, 컴포넌트 관계를 이해하기 좋다 --> 빠르고 정확한 프레임워크 사용 가능
  • 프레임워크 아키텍처를 구성하는 패턴들을 도식화 --> 구조 파악에 도움이 됨
  • 문서화시 필요하면 리버스 엔지니어링 툴의 도움을 받을것

8) 프레임워크 내부 디자인의 이해

  • App이 도메인 문제를 유연하게 풀어나가기 위해서는 프레임워크 내부 디자인이 확장성 있고 유연한지에 달렸음.
  • 프레임워크가 복잡하다고 느끼는 것은 내부 디자인이 복잡해서임. 프레임워크 이해를 잘하면 사용도 잘할수 있음.
  • 내부 디자인 살펴볼때는
    • 디자인 패턴 선행학습 필요
    • 화이트박스인지 블랙박스인지 파악할것
    • Hot spots, Frozen spots 파악할것
    • 구성하는 컴포넌트 관계를 파악할것

9) 프레임워크 코드의 이해

  • 프레임워크 개발자는 경험이 많고 높은 프로그래밍 실력이 대부분
  • 프레임워크 개발자의 코드는 후배들의 본보기가 되므로 잘 짜라