SlideShare una empresa de Scribd logo
1 de 65
프레임워크 문서화 잘하기 (Patterns for Effectively Documenting Frameworks) EVA 박선욱 한국예탁결제원 서강대학교 SE랩
목차 Goal What is Frameworks Why Documenting Frameworks?  What is The Good Framework Documentation? Introduce Patterns Reference
Offical Goal 객체지향 프레임워크의 효과적인 문서화. (비전문가를 위한)
Personal Goal 프레임워크가 무엇인지 정확히 알기 어떤 프레임워크든 빠르게 습득하기
What is Frameworks Douglas C. Schmidt Says.. Frameworks define “semi-complete” application that embody domain-specific object structures and functionality. + to produce custom application
Libraries is.. Application Block DATABASE ADTs MATH NETWORKING App Specific Logic OO Design Invocations GRAPHICS GUI Event Loop Singleton Strategy Selections Reactor Adapter State Active Object Design Pattern Class Library  Component  Architecture
But Framework is .. Control – Flow (IoC) Active Object State NETWORKING GUI MATH Reactor Event Loop App Specific Logic Invocations Callbacks ADTs Singleton Adapter DATABASE GRAPHICS Application Framework Component Architecture
Why Documenting Frameworks?
Frameworks help us … 설계와 코드의 재사용을 통한 생산성 향상 빠른 개발 호환성과 일관성의 향상
Software reuse 상세한 소스코드부터 추상화된 아키텍처까지 프레임워크는 중간에 위치하는 강력한 재사용 기술이다. Components (소스) + Patterns Technology (설계)
But … No Pain! No Gain! For reuse Good design and implementation And … ??
Why Documenting Frameworks? 프레임워크는 확장성과 유연성을 가져야 한다. 이 부분은 본질적으로 어렵다.
Why Documenting Frameworks? 학습곡선은 좋은 문서로 단축시킬 수 있습니다.
Framework based development Application refining applying designing andimplementing Framework Domain understanding application developer evolving understanding Documentation framework developer documenting
What is The Good Framework Documentation?
What is The Good Technical Documentation The book “Developing Quality Technical Information”
Key Issues of Framework Documentation 내용측면 Usage and Design 정보의 조화 Contents의 구조 Contents의 표현 다양한 경로 제공 관리측면 일관성과 중복 다양한 표현방법 Contents의 통합
Usage vs Design Information 좋은 제품은 내부 구조를 알지 못해도 사용할 수 있어야 한다.  대부분의 프레임워크 문서들은 내부 설계와 아키텍처 설명에 집중되어 있다.  But frameworks documentation must mix.
What is The Good Framework Documentation? Reader’s point of view : task-oriented information well organized understandable easy to retrieve Writer’s point of view :  identifying the documentation needs selecting the contents choosing the best representation organizing the contents adequately
Pattern Languages Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide
This pattern language give us  가이드 라인이 되어준다.  효과적이다.  재사용을 지원한다.
Pattern Application: A Typical Sequence
Framework Overview Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide Pattern : Framework Overview
What is the Framework Overview
Problem 프레임워크의 첫인상을 어떻게 하면 빠르고 정확하게 알려줄 수 있을까? 즉, 해당 프레임워크가 할 수 있는 것이 무엇인지 짧고도 정확하게 알려줄 수 있을까? Pattern : Framework Overview
Forces 다양한 독자들 특히, 프레임워크 선별자 완전성 정보를 충분히 제공해야 한다. 그런데, 문제는 독자 별로 ‘충분히’가 다르다. 쉬운 이해 ClarityvsCompleteness 예제는 이해를 돕는데 탁월한 수단이다.
Different audiences 애플리케이션 개발자 프레임워크 선별자 프레임워크 개발자 프레임워크 유지보수자 다른 프레임워크 개발자
Solution 프레임워크의 커버리지를 명시 고정(불가능한 영역) 유연(가능한 영역) 프레임워크의 도메인 용어를 구축 프레임워크 선별자를 주 독자로 작성 Pattern : Framework Overview
Example (JUnit) Pattern : Framework Overview
Pattern : Framework Overview Example (Spring)
Pattern : Graded Examples Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide Pattern : Graded Examples
Problem 어떻게 독자가 자신의 애플리케이션에 해당 프레임워크 적용이가능한지 알 수 있도록 도와 줄까? 문인은 붓로말하고 무인은 칼로 말한다. 하지만개발자들은 코드로 말한다. Pattern : Graded Examples
Forces Task 중심 무엇을 할 수 있고, 어떻게 하면 되나 다양한 독자들 비용(Cost)대비 효율 TDD를 한다면, 별도의 예제를 따로 만들지 않아도 된다.
Solution 예제를 단계적으로 제공 좋은 예제 집합 도메인 용어로 구성 프레임워크 기능들의 표현 다른 문서화를 완성시키는 역할 예제는 추상화된 설계보다 이해하기 쉽다 프레임워크의 유용성을 바로 알 수 있게 해준다 프레임워크의 유용성 뿐만 아니라 제한성도 보여 준다.  프레임워크의 설계가 아닌 사용법을 보여준다. Pattern : Graded Examples
Example (JUnit) Pattern : Graded Examples
Example (Spring) Pattern : Graded Examples
Pattern : Documentation Roadmap Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide
What is the Documentation Roadmap
Problem 어떻게 하면 독자가 필요로 하는 정보를 쉽게 찾을 수 있도록 도와 줄 수 있을까? Pattern : Documentation Roadmap
Forces 다양한 독자들 애플리케이션 개발자 프레임워크 선별자 프레임워크 개발자 프레임워크 유지보수인 다른 프레임워크 개발자 각기 다른 재사용 찾는 방법의 난이도 Pattern : Documentation Roadmap
Solution Task 중심 산발적 읽기도 지원 navigating top-down from a main entry point  navigating bottom-up from a small piece of information. 전체적인 조정 가능성을 향상시켜라 관련된(독자/기능/사용순서) 주제끼리 묶어라  탭과 번호, 단락 등을 이용하여 보기 좋게 하라 Pattern : Documentation Roadmap
Example (JUnit) Pattern : Documentation Roadmap
Example (Spring) Pattern : Documentation Roadmap
Pattern : Cookbook & Recipes Documentation Roadmap  Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide Pattern : Cookbook and Recipes
What is Cookbok & Recipes
Problem 어떻게 하면 독자가 빠르게 프레임워크를 사용 할 수 있게 해줄 수 있을까? Pattern : Cookbook and Recipes
Force Task 중심 사용방법과 설계정보 사이의 균형 다양한 독자들 초보자 고수 완전성 바로 적용할 수 있는 난이도 비용대비 효과
Solution Cookbook 레시피들을나선형 구조로 나열 “Framework overview” is often the first recipe 레시피의 구성 목적 절차 예제 Pattern : Cookbook and Recipes
Example (JUnit) Pattern : Cookbook and Recipes
Example Pattern : Cookbook and Recipes
Pattern : Customizable Points Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide
What is Customizable Point Hot-spot  커스터마이제이션은사전에 정의된 개선영역에 의해서 수행된다. Hook 변경되어야 하는 영역과 방법 : 따라야 하는 제약사항과 Hook의 영향 Hot spot은 하나 이상의 Hook으로 구성 Pattern : Customizable Points
Hot-spot Model White Box  Black Box Pattern : Customizable Points
Problem 독자에게 프레임워크에서 커스터마이징 가능한 부분을 알려주려면 어떻게 해야 할까?  그 부분들의커스터마이징하는 방법을 알려주려면 어떻게 해야 할까? Pattern : Customizable Points
Force Task 중심 사용법과 설계정보 사이의 균형 다양한 독자 완전성 문서에 대한 쉬운 이해
Solution 별도로 커스터마이징 가능한 부분들의 목차를 제공 기능별 부분이나 모듈별 잘 사용되지 않음 사용법은 “Cookbook & Recipes”과 중복 설계정보는 “Design internals”과 중복 Pattern : Customizable Points
Example (Junit) Pattern : Customizable Points
Pattern : Design Internals Documentation Roadmap  Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide
Problem 진보된 커스터마징을 원하는 독자에게 어떻게 프레임워크의 설계와 구현에 대해서 알려줄 수 있을까? Pattern : Design Internals
Force 다른 목적들 사용법과 설계정보 사이의 균형 설계정보 복잡성의 최소화 Pattern : Design Internals
Solution 정확하고 상세한 프레임워크의 내부 설계정보를 제공 especially hot-spots.  can help them better understand and enable more advanced customizations  아키텍처와 설계원칙 디자인 패턴을 이용 간단한 표현 풍부한 정보 제공 Pattern : Design Internals
Example (JUnit) Pattern : Design Internals
Review : Pattern Languages Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide
Reference “Patterns for Effectively Documenting Frameworks”  –Ademar Aguiar and Gabriel David “질서 있는 아키텍처 패턴이야기” 					– 김용현(마이크로소프트웨어) “Framework Engineering” 					– 손영수(www.arload.net) www.junit.org www.springsource.org www.google.com www.evacast.net
Q & A

Más contenido relacionado

La actualidad más candente

스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기Sungchul Park
 
소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법Jay Park
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드중선 곽
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDSuwon Chae
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineeringYoungSu Son
 
05. 아키텍트가 알아야할 12 97가지
05. 아키텍트가 알아야할 12 97가지05. 아키텍트가 알아야할 12 97가지
05. 아키텍트가 알아야할 12 97가지YoungSu Son
 
자바8 나머지 공개
자바8 나머지 공개자바8 나머지 공개
자바8 나머지 공개Sungchul Park
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다wonmin lee
 
TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기Wonchang Song
 
Oop design principle
Oop design principleOop design principle
Oop design principleRyan Park
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Yeon Soo Kim
 
프로그래밍 언어 기초(델파이,C++)
프로그래밍 언어 기초(델파이,C++)프로그래밍 언어 기초(델파이,C++)
프로그래밍 언어 기초(델파이,C++)Devgear
 
간단하게 알아보는 좋은 코드 서영훈
간단하게 알아보는 좋은 코드   서영훈간단하게 알아보는 좋은 코드   서영훈
간단하게 알아보는 좋은 코드 서영훈Seo YoungHoon
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1YoungSu Son
 
Clean code
Clean codeClean code
Clean codebbongcsu
 

La actualidad más candente (18)

스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기스프링보다 중요한 스프링 이야기
스프링보다 중요한 스프링 이야기
 
소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDD
 
Open source engineering
Open source engineeringOpen source engineering
Open source engineering
 
05. 아키텍트가 알아야할 12 97가지
05. 아키텍트가 알아야할 12 97가지05. 아키텍트가 알아야할 12 97가지
05. 아키텍트가 알아야할 12 97가지
 
TEST?
TEST?TEST?
TEST?
 
자바8 나머지 공개
자바8 나머지 공개자바8 나머지 공개
자바8 나머지 공개
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다
 
TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기
 
Oop design principle
Oop design principleOop design principle
Oop design principle
 
TDD with JUnit 2
TDD with JUnit 2TDD with JUnit 2
TDD with JUnit 2
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
 
miss_pattern_v2
miss_pattern_v2miss_pattern_v2
miss_pattern_v2
 
프로그래밍 언어 기초(델파이,C++)
프로그래밍 언어 기초(델파이,C++)프로그래밍 언어 기초(델파이,C++)
프로그래밍 언어 기초(델파이,C++)
 
간단하게 알아보는 좋은 코드 서영훈
간단하게 알아보는 좋은 코드   서영훈간단하게 알아보는 좋은 코드   서영훈
간단하게 알아보는 좋은 코드 서영훈
 
Open source engineering - 0.1
Open source engineering - 0.1Open source engineering - 0.1
Open source engineering - 0.1
 
Clean code
Clean codeClean code
Clean code
 

Destacado

Devrookie Study / TA20110730
Devrookie Study / TA20110730Devrookie Study / TA20110730
Devrookie Study / TA20110730Yong-nam Kim
 
진도와켄도모바일
진도와켄도모바일진도와켄도모바일
진도와켄도모바일용성 양
 
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화Jinhwa Ko
 
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발JongKwang Kim
 
카톡, CGV, 네이버 등 히트 앱 UI/UX 쪼개기(분석)
카톡, CGV, 네이버 등 히트 앱 UI/UX 쪼개기(분석)카톡, CGV, 네이버 등 히트 앱 UI/UX 쪼개기(분석)
카톡, CGV, 네이버 등 히트 앱 UI/UX 쪼개기(분석)mosaicnet
 
제 3회 DGMIT UI&UX 컨퍼런스 : UI디자이너에게 유용한 툴
 제 3회 DGMIT UI&UX 컨퍼런스 : UI디자이너에게 유용한 툴 제 3회 DGMIT UI&UX 컨퍼런스 : UI디자이너에게 유용한 툴
제 3회 DGMIT UI&UX 컨퍼런스 : UI디자이너에게 유용한 툴dgmit2009
 
[별천지 세미나] 세션1 Sencha로 끝장내는 Front-End 개발과 Architect
[별천지 세미나] 세션1 Sencha로 끝장내는 Front-End 개발과 Architect[별천지 세미나] 세션1 Sencha로 끝장내는 Front-End 개발과 Architect
[별천지 세미나] 세션1 Sencha로 끝장내는 Front-End 개발과 ArchitectJongKwang Kim
 
마인드셋(김승연 대표)_AI Startup D.PARTY_20161020
마인드셋(김승연 대표)_AI Startup D.PARTY_20161020마인드셋(김승연 대표)_AI Startup D.PARTY_20161020
마인드셋(김승연 대표)_AI Startup D.PARTY_20161020D.CAMP
 
Spring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsArawn Park
 
Introduction to jQuery Mobile
Introduction to jQuery MobileIntroduction to jQuery Mobile
Introduction to jQuery Mobileejlp12
 
­릴­게­임­하는곳ェ【 WSH77.COM 】ジ온라인 ­오­션­파­라­다­이­스­
­릴­게­임­하는곳ェ【 WSH77.COM 】ジ온라인 ­오­션­파­라­다­이­스­­릴­게­임­하는곳ェ【 WSH77.COM 】ジ온라인 ­오­션­파­라­다­이­스­
­릴­게­임­하는곳ェ【 WSH77.COM 】ジ온라인 ­오­션­파­라­다­이­스­ohsuns4561
 
룩시드랩스(채용욱대표)_AI Startup D.PARTY_20161020
룩시드랩스(채용욱대표)_AI Startup D.PARTY_20161020룩시드랩스(채용욱대표)_AI Startup D.PARTY_20161020
룩시드랩스(채용욱대표)_AI Startup D.PARTY_20161020D.CAMP
 
모바일 웹/앱 UI & UX 설계 이론(2)
모바일 웹/앱 UI & UX 설계 이론(2)모바일 웹/앱 UI & UX 설계 이론(2)
모바일 웹/앱 UI & UX 설계 이론(2)mosaicnet
 
모바일 웹/앱 UI & UX 설계 이론(1)
모바일 웹/앱 UI & UX 설계 이론(1)모바일 웹/앱 UI & UX 설계 이론(1)
모바일 웹/앱 UI & UX 설계 이론(1)mosaicnet
 
Igc2016 Technical Artist가 뭐하는 사람이에요?
Igc2016 Technical Artist가 뭐하는 사람이에요?Igc2016 Technical Artist가 뭐하는 사람이에요?
Igc2016 Technical Artist가 뭐하는 사람이에요?SangYun Yi
 
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템Jubok Kim
 
Dogmate 도그메이트_위드메이트 이하영 대표_Pet Startup D.PARTY_20160926
Dogmate 도그메이트_위드메이트 이하영 대표_Pet Startup D.PARTY_20160926Dogmate 도그메이트_위드메이트 이하영 대표_Pet Startup D.PARTY_20160926
Dogmate 도그메이트_위드메이트 이하영 대표_Pet Startup D.PARTY_20160926D.CAMP
 
Code_The_Web_150524_HTML_CSS
Code_The_Web_150524_HTML_CSSCode_The_Web_150524_HTML_CSS
Code_The_Web_150524_HTML_CSSChangwhan Yea
 
petdoc 펫닥 최승용 대표_Pet Startup D.PARTY_20160926​
petdoc 펫닥 최승용 대표_Pet Startup D.PARTY_20160926​petdoc 펫닥 최승용 대표_Pet Startup D.PARTY_20160926​
petdoc 펫닥 최승용 대표_Pet Startup D.PARTY_20160926​D.CAMP
 

Destacado (20)

Devrookie Study / TA20110730
Devrookie Study / TA20110730Devrookie Study / TA20110730
Devrookie Study / TA20110730
 
진도와켄도모바일
진도와켄도모바일진도와켄도모바일
진도와켄도모바일
 
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
 
Jquerymobile ppt
Jquerymobile pptJquerymobile ppt
Jquerymobile ppt
 
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
 
카톡, CGV, 네이버 등 히트 앱 UI/UX 쪼개기(분석)
카톡, CGV, 네이버 등 히트 앱 UI/UX 쪼개기(분석)카톡, CGV, 네이버 등 히트 앱 UI/UX 쪼개기(분석)
카톡, CGV, 네이버 등 히트 앱 UI/UX 쪼개기(분석)
 
제 3회 DGMIT UI&UX 컨퍼런스 : UI디자이너에게 유용한 툴
 제 3회 DGMIT UI&UX 컨퍼런스 : UI디자이너에게 유용한 툴 제 3회 DGMIT UI&UX 컨퍼런스 : UI디자이너에게 유용한 툴
제 3회 DGMIT UI&UX 컨퍼런스 : UI디자이너에게 유용한 툴
 
[별천지 세미나] 세션1 Sencha로 끝장내는 Front-End 개발과 Architect
[별천지 세미나] 세션1 Sencha로 끝장내는 Front-End 개발과 Architect[별천지 세미나] 세션1 Sencha로 끝장내는 Front-End 개발과 Architect
[별천지 세미나] 세션1 Sencha로 끝장내는 Front-End 개발과 Architect
 
마인드셋(김승연 대표)_AI Startup D.PARTY_20161020
마인드셋(김승연 대표)_AI Startup D.PARTY_20161020마인드셋(김승연 대표)_AI Startup D.PARTY_20161020
마인드셋(김승연 대표)_AI Startup D.PARTY_20161020
 
Spring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trendsSpring framework 3.2 > 4.0 — themes and trends
Spring framework 3.2 > 4.0 — themes and trends
 
Introduction to jQuery Mobile
Introduction to jQuery MobileIntroduction to jQuery Mobile
Introduction to jQuery Mobile
 
­릴­게­임­하는곳ェ【 WSH77.COM 】ジ온라인 ­오­션­파­라­다­이­스­
­릴­게­임­하는곳ェ【 WSH77.COM 】ジ온라인 ­오­션­파­라­다­이­스­­릴­게­임­하는곳ェ【 WSH77.COM 】ジ온라인 ­오­션­파­라­다­이­스­
­릴­게­임­하는곳ェ【 WSH77.COM 】ジ온라인 ­오­션­파­라­다­이­스­
 
룩시드랩스(채용욱대표)_AI Startup D.PARTY_20161020
룩시드랩스(채용욱대표)_AI Startup D.PARTY_20161020룩시드랩스(채용욱대표)_AI Startup D.PARTY_20161020
룩시드랩스(채용욱대표)_AI Startup D.PARTY_20161020
 
모바일 웹/앱 UI & UX 설계 이론(2)
모바일 웹/앱 UI & UX 설계 이론(2)모바일 웹/앱 UI & UX 설계 이론(2)
모바일 웹/앱 UI & UX 설계 이론(2)
 
모바일 웹/앱 UI & UX 설계 이론(1)
모바일 웹/앱 UI & UX 설계 이론(1)모바일 웹/앱 UI & UX 설계 이론(1)
모바일 웹/앱 UI & UX 설계 이론(1)
 
Igc2016 Technical Artist가 뭐하는 사람이에요?
Igc2016 Technical Artist가 뭐하는 사람이에요?Igc2016 Technical Artist가 뭐하는 사람이에요?
Igc2016 Technical Artist가 뭐하는 사람이에요?
 
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템KGC2010   김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
KGC2010 김주복, 김충효 - M2 프로젝트의 절차적 리깅 시스템
 
Dogmate 도그메이트_위드메이트 이하영 대표_Pet Startup D.PARTY_20160926
Dogmate 도그메이트_위드메이트 이하영 대표_Pet Startup D.PARTY_20160926Dogmate 도그메이트_위드메이트 이하영 대표_Pet Startup D.PARTY_20160926
Dogmate 도그메이트_위드메이트 이하영 대표_Pet Startup D.PARTY_20160926
 
Code_The_Web_150524_HTML_CSS
Code_The_Web_150524_HTML_CSSCode_The_Web_150524_HTML_CSS
Code_The_Web_150524_HTML_CSS
 
petdoc 펫닥 최승용 대표_Pet Startup D.PARTY_20160926​
petdoc 펫닥 최승용 대표_Pet Startup D.PARTY_20160926​petdoc 펫닥 최승용 대표_Pet Startup D.PARTY_20160926​
petdoc 펫닥 최승용 대표_Pet Startup D.PARTY_20160926​
 

Similar a Patterns for effectviely documenting frameworks

GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들Kivol
 
01.표준프레임워크개요
01.표준프레임워크개요01.표준프레임워크개요
01.표준프레임워크개요Hankyo
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장Seongchan Kang
 
C Language II
C Language IIC Language II
C Language IISuho Kwon
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵중선 곽
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규ChangKyu Song
 
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 almuEngine Solutions
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드Justin Park
 
SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법 YoungSu Son
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해Terry Cho
 
The Cucumber for Java
The Cucumber for JavaThe Cucumber for Java
The Cucumber for JavaJonghwa Lee
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스Hee Jae Lee
 
Wildgoose 최종데모
Wildgoose 최종데모Wildgoose 최종데모
Wildgoose 최종데모KIM HEE JAE
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개HYUN-JOO LEE
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법도형 임
 
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 uEngine Solutions
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)SangIn Choung
 
VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리Gyuwon Yi
 

Similar a Patterns for effectviely documenting frameworks (20)

ecdevday4
ecdevday4ecdevday4
ecdevday4
 
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
GraphQL in Action - REST와 이별할 때 생각해야 하는 것들
 
01.표준프레임워크개요
01.표준프레임워크개요01.표준프레임워크개요
01.표준프레임워크개요
 
스프링 스터디 1장
스프링 스터디 1장스프링 스터디 1장
스프링 스터디 1장
 
C Language II
C Language IIC Language II
C Language II
 
소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵소프트웨어 개발자 로드맵
소프트웨어 개발자 로드맵
 
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
 
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
아키텍트대회 유엔진-장진영-Sw공학표준을 기반한 alm
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드
 
SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법
 
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
소프트웨어 개발 트랜드 및 MSA (마이크로 서비스 아키텍쳐)의 이해
 
The Cucumber for Java
The Cucumber for JavaThe Cucumber for Java
The Cucumber for Java
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
[오픈소스컨설팅]Session 6. scrum과 jira 기반의 소프트웨어 개발 프로세스
 
Wildgoose 최종데모
Wildgoose 최종데모Wildgoose 최종데모
Wildgoose 최종데모
 
[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개[Uws] enterprise application architecture, msa, java9, spring 소개
[Uws] enterprise application architecture, msa, java9, spring 소개
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법
 
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함 메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리
 

Patterns for effectviely documenting frameworks

  • 1. 프레임워크 문서화 잘하기 (Patterns for Effectively Documenting Frameworks) EVA 박선욱 한국예탁결제원 서강대학교 SE랩
  • 2. 목차 Goal What is Frameworks Why Documenting Frameworks? What is The Good Framework Documentation? Introduce Patterns Reference
  • 3. Offical Goal 객체지향 프레임워크의 효과적인 문서화. (비전문가를 위한)
  • 4. Personal Goal 프레임워크가 무엇인지 정확히 알기 어떤 프레임워크든 빠르게 습득하기
  • 5. What is Frameworks Douglas C. Schmidt Says.. Frameworks define “semi-complete” application that embody domain-specific object structures and functionality. + to produce custom application
  • 6. Libraries is.. Application Block DATABASE ADTs MATH NETWORKING App Specific Logic OO Design Invocations GRAPHICS GUI Event Loop Singleton Strategy Selections Reactor Adapter State Active Object Design Pattern Class Library Component Architecture
  • 7. But Framework is .. Control – Flow (IoC) Active Object State NETWORKING GUI MATH Reactor Event Loop App Specific Logic Invocations Callbacks ADTs Singleton Adapter DATABASE GRAPHICS Application Framework Component Architecture
  • 9. Frameworks help us … 설계와 코드의 재사용을 통한 생산성 향상 빠른 개발 호환성과 일관성의 향상
  • 10. Software reuse 상세한 소스코드부터 추상화된 아키텍처까지 프레임워크는 중간에 위치하는 강력한 재사용 기술이다. Components (소스) + Patterns Technology (설계)
  • 11. But … No Pain! No Gain! For reuse Good design and implementation And … ??
  • 12. Why Documenting Frameworks? 프레임워크는 확장성과 유연성을 가져야 한다. 이 부분은 본질적으로 어렵다.
  • 13. Why Documenting Frameworks? 학습곡선은 좋은 문서로 단축시킬 수 있습니다.
  • 14. Framework based development Application refining applying designing andimplementing Framework Domain understanding application developer evolving understanding Documentation framework developer documenting
  • 15. What is The Good Framework Documentation?
  • 16. What is The Good Technical Documentation The book “Developing Quality Technical Information”
  • 17. Key Issues of Framework Documentation 내용측면 Usage and Design 정보의 조화 Contents의 구조 Contents의 표현 다양한 경로 제공 관리측면 일관성과 중복 다양한 표현방법 Contents의 통합
  • 18. Usage vs Design Information 좋은 제품은 내부 구조를 알지 못해도 사용할 수 있어야 한다. 대부분의 프레임워크 문서들은 내부 설계와 아키텍처 설명에 집중되어 있다. But frameworks documentation must mix.
  • 19. What is The Good Framework Documentation? Reader’s point of view : task-oriented information well organized understandable easy to retrieve Writer’s point of view : identifying the documentation needs selecting the contents choosing the best representation organizing the contents adequately
  • 20. Pattern Languages Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide
  • 21. This pattern language give us 가이드 라인이 되어준다. 효과적이다. 재사용을 지원한다.
  • 22. Pattern Application: A Typical Sequence
  • 23. Framework Overview Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide Pattern : Framework Overview
  • 24. What is the Framework Overview
  • 25. Problem 프레임워크의 첫인상을 어떻게 하면 빠르고 정확하게 알려줄 수 있을까? 즉, 해당 프레임워크가 할 수 있는 것이 무엇인지 짧고도 정확하게 알려줄 수 있을까? Pattern : Framework Overview
  • 26. Forces 다양한 독자들 특히, 프레임워크 선별자 완전성 정보를 충분히 제공해야 한다. 그런데, 문제는 독자 별로 ‘충분히’가 다르다. 쉬운 이해 ClarityvsCompleteness 예제는 이해를 돕는데 탁월한 수단이다.
  • 27. Different audiences 애플리케이션 개발자 프레임워크 선별자 프레임워크 개발자 프레임워크 유지보수자 다른 프레임워크 개발자
  • 28. Solution 프레임워크의 커버리지를 명시 고정(불가능한 영역) 유연(가능한 영역) 프레임워크의 도메인 용어를 구축 프레임워크 선별자를 주 독자로 작성 Pattern : Framework Overview
  • 29. Example (JUnit) Pattern : Framework Overview
  • 30. Pattern : Framework Overview Example (Spring)
  • 31. Pattern : Graded Examples Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide Pattern : Graded Examples
  • 32. Problem 어떻게 독자가 자신의 애플리케이션에 해당 프레임워크 적용이가능한지 알 수 있도록 도와 줄까? 문인은 붓로말하고 무인은 칼로 말한다. 하지만개발자들은 코드로 말한다. Pattern : Graded Examples
  • 33. Forces Task 중심 무엇을 할 수 있고, 어떻게 하면 되나 다양한 독자들 비용(Cost)대비 효율 TDD를 한다면, 별도의 예제를 따로 만들지 않아도 된다.
  • 34. Solution 예제를 단계적으로 제공 좋은 예제 집합 도메인 용어로 구성 프레임워크 기능들의 표현 다른 문서화를 완성시키는 역할 예제는 추상화된 설계보다 이해하기 쉽다 프레임워크의 유용성을 바로 알 수 있게 해준다 프레임워크의 유용성 뿐만 아니라 제한성도 보여 준다. 프레임워크의 설계가 아닌 사용법을 보여준다. Pattern : Graded Examples
  • 35. Example (JUnit) Pattern : Graded Examples
  • 36. Example (Spring) Pattern : Graded Examples
  • 37. Pattern : Documentation Roadmap Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide
  • 38. What is the Documentation Roadmap
  • 39. Problem 어떻게 하면 독자가 필요로 하는 정보를 쉽게 찾을 수 있도록 도와 줄 수 있을까? Pattern : Documentation Roadmap
  • 40. Forces 다양한 독자들 애플리케이션 개발자 프레임워크 선별자 프레임워크 개발자 프레임워크 유지보수인 다른 프레임워크 개발자 각기 다른 재사용 찾는 방법의 난이도 Pattern : Documentation Roadmap
  • 41. Solution Task 중심 산발적 읽기도 지원 navigating top-down from a main entry point navigating bottom-up from a small piece of information. 전체적인 조정 가능성을 향상시켜라 관련된(독자/기능/사용순서) 주제끼리 묶어라 탭과 번호, 단락 등을 이용하여 보기 좋게 하라 Pattern : Documentation Roadmap
  • 42. Example (JUnit) Pattern : Documentation Roadmap
  • 43. Example (Spring) Pattern : Documentation Roadmap
  • 44. Pattern : Cookbook & Recipes Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide Pattern : Cookbook and Recipes
  • 45. What is Cookbok & Recipes
  • 46. Problem 어떻게 하면 독자가 빠르게 프레임워크를 사용 할 수 있게 해줄 수 있을까? Pattern : Cookbook and Recipes
  • 47. Force Task 중심 사용방법과 설계정보 사이의 균형 다양한 독자들 초보자 고수 완전성 바로 적용할 수 있는 난이도 비용대비 효과
  • 48. Solution Cookbook 레시피들을나선형 구조로 나열 “Framework overview” is often the first recipe 레시피의 구성 목적 절차 예제 Pattern : Cookbook and Recipes
  • 49. Example (JUnit) Pattern : Cookbook and Recipes
  • 50. Example Pattern : Cookbook and Recipes
  • 51. Pattern : Customizable Points Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide
  • 52. What is Customizable Point Hot-spot 커스터마이제이션은사전에 정의된 개선영역에 의해서 수행된다. Hook 변경되어야 하는 영역과 방법 : 따라야 하는 제약사항과 Hook의 영향 Hot spot은 하나 이상의 Hook으로 구성 Pattern : Customizable Points
  • 53. Hot-spot Model White Box Black Box Pattern : Customizable Points
  • 54. Problem 독자에게 프레임워크에서 커스터마이징 가능한 부분을 알려주려면 어떻게 해야 할까? 그 부분들의커스터마이징하는 방법을 알려주려면 어떻게 해야 할까? Pattern : Customizable Points
  • 55. Force Task 중심 사용법과 설계정보 사이의 균형 다양한 독자 완전성 문서에 대한 쉬운 이해
  • 56. Solution 별도로 커스터마이징 가능한 부분들의 목차를 제공 기능별 부분이나 모듈별 잘 사용되지 않음 사용법은 “Cookbook & Recipes”과 중복 설계정보는 “Design internals”과 중복 Pattern : Customizable Points
  • 57. Example (Junit) Pattern : Customizable Points
  • 58. Pattern : Design Internals Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide
  • 59. Problem 진보된 커스터마징을 원하는 독자에게 어떻게 프레임워크의 설계와 구현에 대해서 알려줄 수 있을까? Pattern : Design Internals
  • 60. Force 다른 목적들 사용법과 설계정보 사이의 균형 설계정보 복잡성의 최소화 Pattern : Design Internals
  • 61. Solution 정확하고 상세한 프레임워크의 내부 설계정보를 제공 especially hot-spots. can help them better understand and enable more advanced customizations 아키텍처와 설계원칙 디자인 패턴을 이용 간단한 표현 풍부한 정보 제공 Pattern : Design Internals
  • 62. Example (JUnit) Pattern : Design Internals
  • 63. Review : Pattern Languages Documentation Roadmap Framework Overview first recipe where is start? how-to’s Cookbook and Recipes Error Recovery Guide errors uses Graded Examples code illustrate Customizable Point Traversable Code how it works? Design Internals index Reference Guide
  • 64. Reference “Patterns for Effectively Documenting Frameworks” –Ademar Aguiar and Gabriel David “질서 있는 아키텍처 패턴이야기” – 김용현(마이크로소프트웨어) “Framework Engineering” – 손영수(www.arload.net) www.junit.org www.springsource.org www.google.com www.evacast.net
  • 65. Q & A