2012. 1. 4. 13:35
본 내용은 월간 마소 2008년 12월호에 실린 내용을 정리한 것입니다.
불펌을 금지하며, 문제시 삭제하겠습니다.
불펌을 금지하며, 문제시 삭제하겠습니다.
은닉과 캡슐화
- 은닉 ≠ 캡슐화
- 은닉
- 접근 지정자로 구현
- 접근 지정자로 멤버를 숨기고, 멤버를 제어할 수 있는 인터페이스 노출하는 것
- 객체를 인터페이스를 통해 노출시켜 동적 바인딩할 수 있게함
- 캡슐화
- class로 구현
- 멤버와 데이터를 class라는 키워드로 묶는 것
- 그냥 함수의 리턴값을 사용하게 되면 절차적 프로그램이 됨
- class로 묶으면 데이터의 흐름을 메소드와 데이터로 묶어서 결합도를 낮춰줌
상속과 구성
- 구현상속 : 부모것을 자식이 사용, 부모클래스를 잘 알고 상속받아야 함
- 인터페이스 상속 : 인터페이스만 재사용
프레임워크의 구축
- 조건
- 확장이 가능해야 함.
- 기능을 쉽게 대체시켜야 함.
- 도메인 문제에 대해 추상적이고 필수 구현이 되어 있어야 함.
- 간단하고 문서화가 잘 되어 있어야 하며 이해하기 쉬워야 함
- 프레임워크의 작은 부분 전체를 재사용할 수 있어야 함.
- 커뮤니케이션 중요
- 프레임워크 개발자에게는 App 개발자가 고객임
- 도메인 전문가나 해당 App 개발자의 조언 필요
- 하향식 디자인
- 도메인 분석 -> 추상화 -> 프레임워크 구현 -> App 구현하여 테스트
- 상향식 디자인
- App 구현 -> 계속 구현 -> 반복되거나 비슷한놈은 재사용되므로 프레임워크에 포함
- 일반적인 개발 방법임
프레임워크의 발전
- 프레임워크 = 반제품(Semi-Complete Application) : 적은 비용으로 App 만들기 위해 절반정도는 구현되어 있는 수준
- 랄프존슨의 9가지 패턴을 사용하여 발전할것
1) 세가지 애플리케이션 패턴
- 재사용 부분을 파악하는 일이 중요함 -> 미리 예측이 힘듬
- 3개 이상의 App을 만들어서 재사용 모듈 파악
- App과 프레임워크 동시 개발시
- 일정 Fix시 : 다수의 팀이 나눠서 개발 -> 프레임워크 개발팀 산출물 기다리기 힘드므로 파일럿 프로젝트로 간략하게 살펴봐라
- 인원 Fix시 : 단일팀이 개발
- 다수의 App으로 코드를 일반화 할 수록 프레임워크 기능과 품질이 좋아짐. 초기버전이라 불안정하다는 우려도 없앨수 있음 (Pilot Application Pattern)
2) 화이트박스 패턴
- 두번째 애플리케이션 개발시 시작하면 됨.
- 첫번째 애플리케이션 만든 후 초기버전 프레임워크 기능을 확장시 "상속"을 사용하라
- 상속 : 코드를 쉽게 재사용할 수 있게 해줌, 인터페이스를 사용하라. 없으면 구현클래스에서 유추하여 만들어라. 상속을 이용하여 기능 확장 구현을 반복한다.
3) 컴포넌트 라이브러리 패턴
- 도메인에 특화된 문제의 해결방법이 프레임워크에 들어가지 않아야 함.
- 재사용하지 않는 클래스는 프레임워크에 넣지않고, 애플리케이션의 구현클래스에 위치
- 프레임워크의 재사용않는 클래스를 계속 리펙토링
4) 핫 스팟 패턴
- 화이트박스 패턴으로 계속 추가하고, 컴포넌트 라이브러리 패턴으로 계속 제거 --> 기존 클래스와 추가될 클래스의 관계를 정의하면서 확장하여 중복을 막자
- 핫 스팟 : 코드 변화가 활발한 부분
- 화이트박스 패턴으로 자꾸 확장되는 놈은 데코레이션 패턴같은 놈을 사용하여 구현 가능.
5) 플러그러블 오브젝트 패턴
- 구현클래스의 소소한 변경이 많으면 --> 프레임워크 커짐 --> 복잡도 증가 --> 프레임워크 사용 어려움
- 객체 생성시 다양성 구분에 필요한 인자 사용 --> 객체가 인자에 따라 행동하게 개발
- 인자 : 상수, 심볼, 클래스 래퍼런스, 인스턴스 변수, 함수 포인터, 함수자.....
6) 파인-그레인드 패턴
- 간단한 API가 복잡한 API보다 사용하기 쉽다 --> Small Objects Pattern
- 객체는 커질수록 --> 중복기능 많아짐, 중복코드 많아짐, 도메인 문제를 다룰려고 하는 경향이 있음. --> 리팩토링 대상임
7) 블랙박스 패턴
- 애플리케이션은 요구변경에 유연해야 함 --> 클래스의 확장에는 열려있고, 수정에는 닫혀 있어야 함. --> 상속보다는 구성을 사용
8) 비주얼 빌더 패턴과 언어 도구 패턴
- 비주얼 빌더 패턴 : 프레임워크 정리한 문서, 프레임워크 사용을 도와주는 툴 제공할것
- 언어 도구 패턴 : 애플리케이션 점검 툴, 디버깅 툴 제공할 것
'PP > Framework' 카테고리의 다른 글
프레임워크 개발을 위해 고려해야 할 5가지 기본 속성 (0) | 2012.01.04 |
---|---|
프레임워크 개발의 이해와 시작 (0) | 2012.01.04 |
애플리케이션과 프레임워크 동시 개발 (0) | 2012.01.04 |
프레임워크 엔지니어링 (0) | 2012.01.04 |
C#용 Open Source 조사 (0) | 2012.01.04 |