본문 바로가기
Rev's/기록하기

Framework's Day 후기..

by RevFactory 2008. 11. 30.

시 간 Session 강 좌 제 목
10:00 ~ 10:50 50분 Session 1  Evolving Framework (김용현)
11:00 ~ 12:30 90분 Session 2  Framework Engineering (손영수)
12:30 ~ 13:20 50분 점심시간
13:30 ~ 14:20 50분 Session 3  Application과 Framework 동시 구축하기 (고상원)
14:30 ~ 15:20 50분 Session 4  ASP.NET MVC Framework (장현희)
15:30 ~ 16:20 50분 Session 5  Data Entity Framework (한용희)
16:30 ~ 17:20 50분 Session 6  Spring.NET과 iBatis.NET (권효중)


한국소프트웨어진흥원 교육장에서 Framework에 관한 세미나 참가
Framework에 대한 대강적인 이해만 하고 있었는데 많은 도움이 되었다.

■ Session 요약


[ Session 1 ]

1. FrameWork
 - 랄프존슨( 에릭감마, 리차드 헬름, 랄프 존슨, 존 블리사이드 - Gof:Gang of Four)
   "FrameWork란 추상클래스들의 집합과 상호 협조하는 클래스들의 인스턴스 동작 방법으로 이루어진 재사용이 가능한 디자인"

 - 특징
  컴포넌트와 아키텍쳐의 재사용
  확장성
  객체로 문제를 분석하고 해결
 
 -  이점
  코드의 단일화, 단순화
  Application 릴리즈 일정 단축
  Application 안정성 향상

 - Application을 개발하면서 리펙토링을 통하여 공통코드를 얻고 관리하는데
    더이상 리펙토링할 여지가 없다면 프레임워크가 완성된 단계

2. 객체지향 5원칙 
 - 의존 관계 역전 원칙 (The Dependency Inversion Principle) (자세하게)
 - 인터페이스 분리 원칙 (The Interface Segregation Principle) (자세하게)
   클라이언트는 자신이 사용하지 않는 메소드에 의존 관계를 맺으면 안된다.
 - 리스코프 치환 원칙 (The Liskov Substitution Principle) (자세하게)
    서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 한다.
 - 단일 책임 원칙 (The Single Responsibility Principle) (자세하게)
    시스템의 모든 객체는 하나의 책임만을 가지며, 객체가 제공하는 모든 서비스는 그 하나의 책임을 수행하는데 집중되어야 한다.
 - 개방 폐쇄 원칙 (The Open-Closed Principle) (자세하게)
    소프트웨어 구성 요소(컴포넌트, 클래스, 모듈, 함수)는 확장에 대해서는 개방되어야 하지만 변경에 대해서는 폐쇄되어야 한다.

3. FrameWork를 발전시키는 9가지 패턴
 - Three Examples
 - White Box FrameWork
 - Component Library
 - Hot Spots
 - Pluggable Objects
 - Fine-grained Objects
 - Black-box Framework
 - Visual Builder
 - Language Tools



[ Session 2 ]

 꽤 긴 발표내용이었는데 대략적인 흐름은 다음과 같습니다.
1. 조직구조, 문화, 의사결정프로세스가 당신의 결과물에 어떻게 영향을 미치는지 이해하라.
2. 시나리오 기반 애플리케이션에 땅콩버터 바르기식은 피하라.
3. 컴포넌트들간의 의존성을 관리하라.
4. 호환성은 유지하면서 나아질 수 있도록 조절하라.
5. 중복과 겹침은 피하라.
6. 먼저 메인 시나리오를 위한 코드 샘플들을 작성하고 피드백을 받으면서 모델을 정의하는 식으로 API들을 디자인 하라.
7. 한가지 특징을 심플하게 다루어라.
8. 따지고 따지고 또 따져봐라.
9. 완성되지 않은 피쳐들을 통합하지 말아라.
10. 빚을 갚아라. (버젼관리 및 지속적인 개발)



 [ Session 3 ]

 프레임워크 개발에 있어서 유용한 패턴들을 설명하였습니다.
자료가 부족한 관계로 대략적으로 패턴만 나열을 하자면 다음과 같습니다.
1. Framelets for Multiple use (Framelets : Mini Framework로 이해하면 될듯)
2. Budget Factor 2.5
3. Two Pilot Applications
4. Small Functions
5. User Involvement
6. Tests Based on Pilot Applications
7. Double Change Request



[ Session 4 ]

 ASP.NET MVC FrameWork에 대한 내용
 - Model : 애플리케이션이 수행해야 하는 비즈니스 로직을 담당하는 매우 중요한 컴포넌트
 - View : 모델을 통해 수행된 비즈니스 로직의 결과를 보여주기 위한 역할을 담당하며 애플리케이션의 UI를 구성하는 컴포넌트
 - Controller : 모델과 뷰의 중간에서 이들을 제어하기 위한 컴포넌트

1. 패턴
 - Page Controller
   HTTP 요청을 처리하는 컨트롤러가 페이지마다 개별적으로 존재한다
   웹 폼 모델에 적용, 빠르고 간편하게 개발 가능하며 재사용성을 높인다. 기반 프레임워크에 대한 의존도를 높인다는 단점

 - Front Controller
   모든 HTTP 요청을 처리하는 하나의 컨트롤러로 구현한다. 인바운드 HTTP 요청에 따라 해당 요청을 처리하기 위한 적절한
   커맨드 컴포넌트를 생성하는 일종의 핸들러와 핸들러에 의해 요청을 처리하도록 선택되는 커맨드 컴포넌트 등 두가지로 구성됨

2. ASP.NET MVC FrameWork 특징
 - URL은 페이지를 가리키는 것이 아니라 애플리케이션에 특정 동작을 요구하는 요청으로의 역할을 한다
 - 포스트백 개념이 사라졌다
 - 페이지가 뷰와 컨트롤러의 역할을 담당했었는데 뷰를 위한 템플릿으로서의 역할을 수행한다

3. URL 라우팅 엔진
 - ASP.NET MVC 에서 가장 두드러지는 기능
 - URL 라우팅은 웹 애플리케이션이 HTTP 요청을 받았을 때 해당 URL을 분석하여 적절한 컨트롤러를 선택하고 해당 컨트롤러가
   제공하는 적합한 액션 메서드를 호출하기 위해 제공된다.

(참고자료 - 마소기고 ASP.NET MVC와 춤을)



 [ Session 5 ]

ADO.NET Entity FrameWork 에 관한 내용

1. 개발자와 데이터베이스 관리자의 입장 차이
  - 개발자 : 오브젝트 / 객체 / 명령어 ( Member.Select() )
  - DB관리자 : 데이터 / 테이블 / 평문 ( SELECT  FROM WHERE )

2. Linq (Language Integrated Queries) to Entities
 - 엔터프라이즈급에서 사용
 - 다양한 DB에서 사용가능 : 오라클, DB2, MS SQL Server
 - 유연한 맵핑

3. Mapping 에 대한 내용과 데모 시연
 - 하나의 클래스와 다수의 테이블/뷰 맵핑
 - Splitting
 - 상속  : TPH(Table per Hierarchy) , TPT(Table per Type)
 - M:N 관계




 [ Session 6 ]

 오픈소스로 제공되는 iBATIS.NET 와 Spring.NET 에 대한 내용

1. iBATIS.NET
 - ORM이 아닌 Data Mapper
 - 장점 : 배우기 쉽고, 쿼리문만 따로 관리하거나 WHERE 조건의 다이나믹한 추가 제거 가능, 쿼리문의 재사용 등
 - 제공 : http://ibatis.apache.org/

2. Spring.NET
 - 닷넷 환경에서 사용 가능한 Inversion Of Control 기반의 어플리케이션 프레임워크
 - 객체의 생성과 소멸작업이 Ioc 컨테이너에 의해 관리됨
 - 인터페이스 기반 프로그래밍에 적합

 - 제공 : http://www.springframework.net/

'Rev's > 기록하기' 카테고리의 다른 글

사랑의 적  (0) 2008.12.01
NHN DeView 2008을 다녀와서...  (1) 2008.11.23
훈스 닷넷 스터디 벙개  (2) 2008.11.23