SlideShare a Scribd company logo
프레임워크 문서화 잘하기 (Patterns for Effectively Documenting Frameworks)EVA 박선욱한국예탁결제원서강대학교 SE랩
목차GoalWhat is FrameworksWhy Documenting Frameworks? What is The Good Framework Documentation?Introduce PatternsReference
Offical Goal객체지향 프레임워크의 효과적인 문서화. (비전문가를 위한)
Personal Goal프레임워크가 무엇인지 정확히 알기어떤 프레임워크든 빠르게 습득하기
What is FrameworksDouglas C. Schmidt Says..Frameworks define “semi-complete” applicationthat embody domain-specific object structures and functionality.+to produce custom application
Libraries is..Application BlockDATABASEADTsMATHNETWORKINGApp SpecificLogicOO DesignInvocationsGRAPHICSGUIEventLoopSingletonStrategySelectionsReactorAdapterStateActive ObjectDesign PatternClass Library Component  Architecture
But Framework is ..Control – Flow (IoC)Active ObjectStateNETWORKINGGUIMATHReactorEventLoopApp SpecificLogicInvocationsCallbacksADTsSingletonAdapterDATABASEGRAPHICSApplication FrameworkComponent Architecture
Why Documenting Frameworks?
Frameworks help us …설계와 코드의 재사용을 통한생산성 향상빠른 개발호환성과 일관성의 향상
Software reuse상세한 소스코드부터 추상화된 아키텍처까지프레임워크는 중간에 위치하는 강력한 재사용 기술이다.Components (소스) + Patterns Technology (설계)
But …No Pain! No Gain!For reuseGood design and implementationAnd … ??
Why Documenting Frameworks?프레임워크는 확장성과 유연성을 가져야 한다.이 부분은 본질적으로 어렵다.
Why Documenting Frameworks?학습곡선은 좋은 문서로 단축시킬 수 있습니다.
Framework based developmentApplicationrefiningapplyingdesigning andimplementingFrameworkDomainunderstandingapplication developerevolvingunderstandingDocumentationframework developerdocumenting
What is The Good Framework Documentation?
What is The Good Technical DocumentationThe 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 informationwell organizedunderstandableeasy to retrieveWriter’s point of view : identifying the documentation needsselecting the contentschoosing the best representationorganizing the contents adequately
Pattern LanguagesDocumentation RoadmapFramework Overviewfirst recipewhere is start?how-to’sCookbook and RecipesError Recovery GuideerrorsusesGraded ExamplescodeillustrateCustomizable PointTraversable Codehow it works?Design InternalsindexReference Guide
This pattern language give us 가이드 라인이 되어준다. 효과적이다. 재사용을 지원한다.
Pattern Application: A Typical Sequence
Framework OverviewDocumentation RoadmapFramework Overviewfirst recipewhere is start?how-to’sCookbook and RecipesError Recovery GuideerrorsusesGraded ExamplescodeillustrateCustomizable PointTraversable Codehow it works?Design InternalsindexReference GuidePattern : 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 OverviewExample (Spring)
Pattern : Graded ExamplesDocumentation RoadmapFramework Overviewfirst recipewhere is start?how-to’sCookbook and RecipesError Recovery GuideerrorsusesGraded ExamplescodeillustrateCustomizable PointTraversable Codehow it works?Design InternalsindexReference GuidePattern : Graded Examples
Problem어떻게 독자가 자신의 애플리케이션에 해당 프레임워크 적용이가능한지 알 수 있도록 도와 줄까?문인은 붓로말하고 무인은 칼로 말한다. 하지만개발자들은 코드로 말한다.Pattern : Graded Examples
ForcesTask 중심무엇을 할 수 있고, 어떻게 하면 되나다양한 독자들비용(Cost)대비 효율TDD를 한다면, 별도의 예제를 따로 만들지 않아도 된다.
Solution예제를 단계적으로 제공좋은 예제 집합도메인 용어로 구성프레임워크 기능들의 표현다른 문서화를 완성시키는 역할예제는추상화된 설계보다 이해하기 쉽다프레임워크의 유용성을 바로 알 수 있게 해준다프레임워크의 유용성 뿐만 아니라 제한성도 보여 준다. 프레임워크의 설계가 아닌 사용법을 보여준다.Pattern : Graded Examples
Example (JUnit)Pattern : Graded Examples
Example (Spring)Pattern : Graded Examples
Pattern : Documentation RoadmapDocumentation RoadmapFramework Overviewfirst recipewhere is start?how-to’sCookbook and RecipesError Recovery GuideerrorsusesGraded ExamplescodeillustrateCustomizable PointTraversable Codehow it works?Design InternalsindexReference Guide
What is the Documentation Roadmap
Problem어떻게 하면 독자가 필요로 하는 정보를 쉽게 찾을 수 있도록 도와 줄 수 있을까?Pattern : Documentation Roadmap
Forces다양한 독자들애플리케이션 개발자프레임워크 선별자프레임워크 개발자프레임워크 유지보수인다른 프레임워크 개발자각기 다른 재사용찾는 방법의 난이도Pattern : Documentation Roadmap
SolutionTask 중심산발적 읽기도 지원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 & RecipesDocumentation Roadmap Framework Overviewfirst recipewhere is start?how-to’sCookbook and RecipesError Recovery GuideerrorsusesGraded ExamplescodeillustrateCustomizable PointTraversable Codehow it works?Design InternalsindexReference GuidePattern : Cookbook and Recipes
What is Cookbok & Recipes
Problem어떻게 하면 독자가 빠르게 프레임워크를 사용 할 수 있게 해줄 수 있을까?Pattern : Cookbook and Recipes
ForceTask 중심사용방법과 설계정보 사이의 균형다양한 독자들초보자고수완전성바로 적용할 수 있는 난이도비용대비 효과
SolutionCookbook레시피들을나선형 구조로 나열“Framework overview” is often the first recipe레시피의 구성목적절차예제Pattern : Cookbook and Recipes
Example (JUnit)Pattern : Cookbook and Recipes
ExamplePattern : Cookbook and Recipes
Pattern : Customizable PointsDocumentation RoadmapFramework Overviewfirst recipewhere is start?how-to’sCookbook and RecipesError Recovery GuideerrorsusesGraded ExamplescodeillustrateCustomizable PointTraversable Codehow it works?Design InternalsindexReference Guide
What is Customizable PointHot-spot 커스터마이제이션은사전에 정의된 개선영역에 의해서 수행된다.Hook변경되어야 하는 영역과 방법 : 따라야 하는 제약사항과 Hook의 영향Hot spot은 하나 이상의 Hook으로 구성Pattern : Customizable Points
Hot-spot ModelWhite Box Black BoxPattern : Customizable Points
Problem독자에게 프레임워크에서 커스터마이징 가능한 부분을 알려주려면 어떻게 해야 할까? 그 부분들의커스터마이징하는 방법을 알려주려면 어떻게 해야 할까?Pattern : Customizable Points
ForceTask 중심사용법과 설계정보 사이의 균형다양한 독자완전성문서에 대한 쉬운 이해
Solution별도로 커스터마이징 가능한 부분들의 목차를 제공기능별부분이나 모듈별잘 사용되지 않음사용법은 “Cookbook & Recipes”과 중복설계정보는 “Design internals”과 중복Pattern : Customizable Points
Example (Junit)Pattern : Customizable Points
Pattern : Design InternalsDocumentation Roadmap Framework Overviewfirst recipewhere is start?how-to’sCookbook and RecipesError Recovery GuideerrorsusesGraded ExamplescodeillustrateCustomizable PointTraversable Codehow it works?Design InternalsindexReference 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 LanguagesDocumentation RoadmapFramework Overviewfirst recipewhere is start?how-to’sCookbook and RecipesError Recovery GuideerrorsusesGraded ExamplescodeillustrateCustomizable PointTraversable Codehow it works?Design InternalsindexReference Guide
Reference“Patterns for Effectively Documenting Frameworks”  –Ademar Aguiar and Gabriel David“질서 있는 아키텍처 패턴이야기” 					– 김용현(마이크로소프트웨어)“Framework Engineering” 					– 손영수(www.arload.net)www.junit.orgwww.springsource.orgwww.google.comwww.evacast.net
Q & A

More Related Content

PPTX
Open Source Engineering V2
PDF
Java the good parts
ODP
팀장 잔소리
PDF
TDD&Refactoring Day 01: Refactoring
PDF
스프링 코어 강의 1부 - 봄 맞이 준비 운동
PDF
Java null survival guide
PDF
The Introduction to Refactoring
PDF
Work With Engineer
Open Source Engineering V2
Java the good parts
팀장 잔소리
TDD&Refactoring Day 01: Refactoring
스프링 코어 강의 1부 - 봄 맞이 준비 운동
Java null survival guide
The Introduction to Refactoring
Work With Engineer

What's hot (18)

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

Viewers also liked (20)

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

Similar to Patterns for effectviely documenting frameworks (20)

PPTX
Domain Driven Design
PPT
PDF
프로그래밍 방식의 변천 과정
PDF
Ddd ch12-13
PPTX
아키텍트가 알아야 할 12/97가지
PPT
Uml 세미나
PPTX
소프트웨어 개발과 Agile skill set
PPTX
토종 개발자가 바라본 실리콘밸리 개발 트랜드
PPTX
분석과 설계
PPTX
Design patterns
PDF
도메인 주도 설계 - 16 대규모 구조
PDF
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
PDF
Event Storming(이벤트 스토밍)
PPTX
좋은 개발자 되기
PDF
클린아키텍처와 DDD - day1
ODP
전달교육(분석설계모델링)
PDF
훌륭한 개발자로 성장하기
PPTX
4. 대용량 아키텍쳐 설계 패턴
PPTX
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
PDF
M5 6 1
Domain Driven Design
프로그래밍 방식의 변천 과정
Ddd ch12-13
아키텍트가 알아야 할 12/97가지
Uml 세미나
소프트웨어 개발과 Agile skill set
토종 개발자가 바라본 실리콘밸리 개발 트랜드
분석과 설계
Design patterns
도메인 주도 설계 - 16 대규모 구조
D2 캠퍼스 세미나 - 학생 개발자에서 신입 개발자로 한단계 업그레이드 하기
Event Storming(이벤트 스토밍)
좋은 개발자 되기
클린아키텍처와 DDD - day1
전달교육(분석설계모델링)
훌륭한 개발자로 성장하기
4. 대용량 아키텍쳐 설계 패턴
메타웍스3 워크숍 - 개념소개 및 예제, 그리고 간단한 API문서포함
M5 6 1

Patterns for effectviely documenting frameworks