SlideShare una empresa de Scribd logo
1 de 129
Framework EngineeringArchitecting, Designing, and Developing Reusable Libraries  http://www.arload.net
Framework is ..
Framework is…
Douglas C. Schmidt Says.. Frameworks define “semi-complete” application  that embody domain-specific object structures and functionality.
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 .. Active Object State NETWORKING GUI Control – Flow (IoC) MATH Reactor Event Loop App Specific Logic Invocations Callbacks ADTs Singleton Adapter DATABASE GRAPHICS Application Framework Component Architecture
Why Do You Need Framework? Productivity Avoid Duplication
Why Do You Need Framework? De Facto War
The Experts of Framework SPLASH (구 OOPSLA ) / PLoP의 창시 Gangs of Four 의일원 Martin Fowler의 직/간접적 스승 Framework 개념의 창시자 Designing Reusable Classes Reusing Object-Oriented Design Documenting Frameworks Using Patterns Patterns For Framework Evolution. Ralph Johnson
The Experts of Framework 패턴의 중흥기를 이끈 실질적 리더 –  PLoP및 PLoPD Editor 패턴으로 구축한 프레임워크 공개 TAO, ACE등 – 다양한 분야 광범위하게 사용.  실제 돌아가는 프레임워크와 패턴을 접목 POSA 2, POSA 4, POSA 5권 저자 http://www.cs.wustl.edu/~schmidt/ Douglas  C. Schmidt
The Experts of Framework Java Platform의 광범위한 부분을 설계하고 구현한가장 영향력 있는 리더 Sun에서 Google로 Chief Architect로 이직 Java에 가장 영향력 있는 둘중에 한 분. How to Design a good api and Why it Matters http://www.youtube.com/watch?v=aAb7hSCtvGw Joshua Bloch
The Experts of Framework .NET Framework의쌍두마차. Visual C++ 부터 현재 .NET까지 총지휘 Brad Abrams는 Google로 2010년 이직 KC는 아직 .NET Framework를 진두 지휘 실 세계의 Framework 설계 기법 공유  Framework Design Guidelines 1st. Framework Design Guidelines 2nd. Brad Abrams, KrysztofCwalina
Welcome to My Framework Journey!
Seed References “Framework Engineering”, TechED 2007 Europe “Framework Design Guidelines” , Addison Wesley Krzysztof Cwalina Program Manager on .NET Framework Team
5 Topics.. D O P A V
OrganizationThe most powerful design tool O
Project Management Triangle Scope Time Cost O
Organization Project Management Triangle + 1 O
Do understand how organizational structure, culture, and decision making processes impact your product.  O
Conway's law If you have 4 groups working on a compiler, you’ll get a 4-pass compiler. O
Conway's law O
Conway's Clean State Approach O
Your Company Culture Is .. Voluntary ?? O
Your Company Culture Is .. Familial ?? O
Remember Your Company Culture .. O Peremptory
Organizational InfluencesSize of Organization Simple Design Consistency Design Focus on 80/20 Rules Small Team O
Organizational InfluencesSize of Organization Powerful Design Lack Consistency Remove Requirements Large Team O
Organizational InfluencesOrganization’s Culture/Biases Customer-Focused End-2-End Scenarios O
Organizational InfluencesOrganization’s Culture/Biases Technology-Focused Long Lasting Architecture O
Decision Making Process is.. 呼兄呼弟 O
Solution ?? Give this book your boss..
Planning Ensuring we are building the right thing  P
Team Building P
Skyscrapers Peanut Butter Focus: features Results: stability, incremental improvements, not great end-to-end scenarios Focus: scenarios  Results: Excitement, breakthroughs, but beware of leaving existing customers behind  P
Peanut Butter….
New Requirements Arrive…
Skyscrapers Cross Functional Team
Cross Functional Teams and Location P
Moderation (中庸)MileStone  = Scenarios + Feature Vision statement RTM Feature complete Release Testing Planning M1 M2 Technology Preview Beta 1 Beta 2 RC1 P
ArchitectureEnsuring the long term health of the framework A
Right Way??Choose right types. A
Taxonomy of TypesLibraries , Primitives, Abstractions A
Primitives Very little policy (behavior design decisions) Stable design Commonly appear in publicly accessible APIs Almost impossible to evolve/change design;         any design changes have huge breaking change impact on other APIs Example: Int32, String A
Libraries Definition: Libraries are types that are not passed  		between components Examples EventLog, Debug.  Easy to Evolve Leave old in, add new one Beware of duplication! A
Abstractions Definition: Abstractions are interfaces or classes with unsealed members that are passed between components. Examples Stream, IComponent Hard to Evolve Unfortunately, pressure to evolve A
Primitive Oriented Design A.K.A. “Handle based design” (functional) Great evolvability, poor usability (sometimes) Low level stable primitives + high level reusable components with limited dependencies other than to the primitives E.g. Type.GetType(object) – works, but not as convenient as Object.GetType A
Component Oriented Design Rich APIs with lots of features, thus with lots of dependencies Great usability, poor evolvability Good for higher level components, not for the core of a platform A
Do Manage Dependencies.. A A
Component is .. Lego, Plug ?? A
Component is .. .. a set of types that ship and evolve as a unit. A
Types of Dependencies A
API Dependency Component A has an API dependency on component B,  	if a type in B shows in the publicly accessible API surface of a type in A.  This includes: Base types and implemented interfaces Generic parameter constraints Return types and parameters of members Applied attributes Nested types A
Implemenatin Dependency If a type in A uses a type in B in its implementation. Hard Dependencies (required to run) Soft Dependencies (optional) A
Circular Dependency Component A depends on component B  and Component B depends on component A (even indirectly). A
Solution is Layering.. A
Solution is Layering.. A
WPF XML    BCL Reflection A Dependency Management
상황을 파악하는 좋은 방법DSM (Dependency Structure Matrix)
간단한 DSM
잘 계층화된 DSM
엄격한 계층화를 유지한 시스템의 DSM
불완전한 계층구조를 가진 시스템 Circular Dependency 발생.
또 하나의 도구– Code Metrics Demo
Solution is.. Create a new package. A
circular dependency GUI Comm Analysis Protocol Modem Control Comm Error Database Message Manager A
Indirect circular dependency A X B Y A
Use Interface. A X Y <<interface>> BY B A
Heavy Dependency.. A
Solution is IoC A
Heavy Dependency. // your API public class Tracer { MessageQueue mq = new MessageQueue(…); 	public void Trace(string message){ 	 mq.Send(message); 	} }  // your customer’s program that is hard to test Tracer tracer = new Tracer(); public void ProcessOrder(Order order){ 	tracer.Trace(order.Id); 	… } A
Inversion of Control // your better API public abstract class TraceListener { 	public abstract void Trace(string message); }  public class Tracer { TraceListener listener; 	public Tracer(TraceListener listener){ 		this.listener = listener;  	} 	public void Trace(string message){ 	 		listener.Trace(message); 	} }  A
Dependency Injection // your customer’s program that is easier to test Tracer tracer = new Tracer(new FileListener()); public void ProcessOrder(Order order){ 	tracer.Trace(order.Id); 	… } A
Dependency Injection Containers // customer’s program that is even easier to test Tracer tracer = container.Resolve<Tracer>(); public void ProcessOrder(Order order){ 	tracer.Trace(order.Id); 	… } Check outDI Containers (a.k.a. IoC Containers):autofac, Castle Windsor, PicoContainer.NET, Spring.NET, StructureMap, Unity, nInject and others. http://www.nInject.org A
Packaging Principle Package Cohesion Principle REP (Release Reuse Equivalency) CCP (Common Closure Principle) CRP (Common Reuse Principle) Package Coupling Principle ADP (Acyclic Dependencies Principle) SDP (Stable Dependencies Principle) SAP (Stable Abstraction Principle) A Robert C. Martin, Principle of Package Architecture http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf
Do balance advances with compatibility. A
Types of “Compatibility”  Backward Cross-Version Forward A
Cross-Redist. A
A
Establishing Compatibility Bar Define what’s a “breaking change” This definition depends on the objective E.g. Enable portable code between Silverlight and .NET Framework E.g. Enable cross-version portability? A
Breaking Changes… Keep Backward Compatibility..
Breaking Changes… 신한 은행 ezPlus Quiz - ezPlus의 버전은??
Breaking Changes… MS 직원과의 대화  MS에서 새 API 추가와 기존 API 변경에 들이는 시간과 노력을 아시면 절대 그렇게 말하지 못할 것. 중첩된 역할을 가진 API들이 많아지게 됨. 비동기메소드 DownloadAync, InvokeAsync, DownloadTaskAsync  동일한 역할을 하는 API들이 계속 늘어남.. Java의 NewIO와 IO도 동일한 상황. 대형 밴더들은 호환성은 가상화로 대체하자는 추세임.
Breaking Changes… MS에서 유일하게  	Backward Compatibility를 무시해도 되는 경우가  있음. Quiz – 무엇일까요?
Breaking Changes… 새 술은 새 부대에.. Apple/Android는 과감히 쓸모없는 것을 버리는 전략. 새로운 기술과 경험이 들어감에 따라 API를 Refactoring하고 Cleanup해야 점점 사용해지기 쉬워져야 된다. 단편화 문제가 발생함.
Breaking Changes… MS의 눈물겨운 Backward Compatibility 이야기. http://www.yes24.com/24/goods/2690684
Breaking Changes. .NET Framework Breaking Changes. .NET Framework 4.0 (3.5 -> 4.0) http://msdn.microsoft.com/en-us/library/ee941656.aspx .NET Framework 3.5 (2.0 -> 3.5) http://msdn.microsoft.com/en-us/library/dd310284.aspx .NET Framework 2.0 (1.0 -> 2.0) http://msdn.microsoft.com/ko-kr/netframework/aa570326.aspx 기업에서 .NET 4.0으로 못 갈 정도로 큰 변화. 민감한 Active X 문제 - (SmartClient를 실행시키는 IEHost.exe 제거)
Avoid duplication and overlap. A
Team Space Show and Tell Problem Space PLoP – Capable, Productive and Satisfied Patterns for Productivity http://hillside.net/plop/plop98/final_submissions/P54.pdf A
When to Replace Existing APIs When the new technology is “10x better” Make sure you understand the impact on the ecosystem What would happen if the BCL team added a new String? What’s the migration path for code using the old API? Support Automatic Migration Tool.   (VB -> VB.NET, .NET 1.0 -> .NET 2.0) Provide Code Based Migration Manual.  COM+ -> WCF , ASP.NET Web Service -> WCF A
DesignThis is where quality happens D
Is using your framework correctly like… Running across a desert? D
You need Feedback. D
Do design APIs by      first writing code samples for the main scenarios        and then  defining the object model to support the code samples. D
Code Samples D
Read File static void Main(string[] args) { StreamReadersr = File.OpenText("MyFile.txt");             string s = sr.ReadLine();             while (s != null) {                 s = sr.ReadLine(); Console.WriteLine(s); } } D
Feedback (Read File) static void Main(string[] args) { foreach (string s in File.ReadAllLines("MyFiles.text"))    { Console.WriteLine(s); } } D
Object Model Listing D
Framework Design Studio Assembly Exploer Project -> Add -> Assembly D Download here - http://code.msdn.microsoft.com/fds
Framework Design Studio Assembly Review Comment D
Framework Design StudioCompare API Versions D
Framework Design StudioCompare API Versions Red is removed,  Green is added, Grey means inherited. D
Framework Design StudioExporting to Microsoft Word Tools -> Export to Document D
Do treat simplicity as a feature. D
KISS (Keep It Simple! Stupid!) Remove Requirements Reuse Existing Concepts or APIs. Adjust Abstraction Level  Consider framework users(experience, knowledge) Three Example D
Domeasure, measure, and measure! D
Specification Document: Qualities Performance Goals (XML Parser..) Baseline: What do is the best my API could do? Measure delta from the baseline Threat Models (Security ..) Threat: What is the worst that my component could do? Mitigate the threats Keep a balance between many other qualities      you want your framework to have (ATAM) D
 The POWER oFSameness D
 Read the manual?? When you pick up your rental car…. Push the seat all the way back Find an NPR station Find the exit D
Oh, down to lock… D
How to use a key… D
Oh, you push the PRESS button… D
Who actually needs this data? D
Why you don’t read manuals ??? You know how to drive your car All cars work basically the same way Your rental car is a car Therefore, you can drive your rental car That is… The power of sameness D
Static Analysis Tool  http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis D
DevelopmentThe bits customers get, … or not V
Branches and Integrations- Feature Crew http://www.codeplex.com/BranchingGuidance/Wiki/View.aspx?title=Feature%20Crews%3a%20How%20Microsoft%20Does%20It V
Avoid integrating unfinished features. V
Feature Complete & Quality Gates Functional Specification Developer Design Specification Test Plan Threat Model API review Architectural Review Dependency Management Static Analysis Code Coverage Testing (Unit and Integration Tests) 0 Bugs Performance  V
Do pay your debt. V
Milestone Quality Vision statement RTM Feature complete Release Testing Planning M1 M2 Technology Preview Beta 1 Beta 2 RC1 Milestone Quality V
Milestone Quality (MQ) Initiatives that are hard to do in regular milestones Large productivity and efficiency improvements Infrastructure changes For example, a new source control system  Refactoring of fragile subsystems Internal implementation documentation Bugs backlog V
Summary Dounderstand how organizational structure, culture, and decision making processes impact your product.  Avoidpeanut-butter in Scenario Based Application. Domanage your dependencies. Dobalance advances with compatibility. Avoidduplication and overlap. Do design APIs by first writing code samples for the main scenarios and then defining the object model to support the code samples. Do treat simplicity as a feature. Domeasure, measure, and measure! Avoidintegrating unfinished features. Do pay your debt.
Resources Krzysztof Cwalina, Brad Abrams Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries http://channel9.msdn.com/pdc2008/PC58/ http://www.gotdotnet.com/team/fxcop
Resources Douglas C. Schmidt (PLoP Editor, POSA 2, 4 Writter) JAWS: An Application Framework for High Performance Web System http://citeseer.ist.psu.edu/81775.html  (En) http://www.devpia.com/net2/EvaCast/Lecture/?cu=view&r=11  (Kr) Ralph Johnson (GoF , Design Patterns) Evolving Frameworks http://st-www.cs.uiuc.edu/users/droberts/evolve.html  (En) http://arload.wordpress.com/2008/09/15/evolvingframeworks/  (Kr)
Resources Robert C. Martin Principles of Package Architecture (Design Principles and Design Patterns) http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf (En)   http://www.devpia.com/net2/EvaCast/Lecture/?cu=view&r=108 (Kr) For Korean People.. Load to Architect http://www.arload.net EvaCast  (Online Free Lecture) http://www.evacast.net
최근 저서 및 곧 나올 저서..
곧 나올 저서..
Question? 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0  대한민국 라이센스에 따라 이용하실 수 있습니다.   This work is licensed under Creative Commons Korea Attribution 2.0 License.

Más contenido relacionado

La actualidad más candente

Distributed Software Development with Scrum and Social Coding
Distributed Software Development with Scrum and Social Coding Distributed Software Development with Scrum and Social Coding
Distributed Software Development with Scrum and Social Coding Intland Software GmbH
 
Presenter manual J2EE (specially for summer interns)
Presenter manual  J2EE (specially for summer interns)Presenter manual  J2EE (specially for summer interns)
Presenter manual J2EE (specially for summer interns)XPERT INFOTECH
 
Software Factory - Overview
Software Factory - OverviewSoftware Factory - Overview
Software Factory - Overviewslides_teltools
 
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated Mark O'Brien
 
CucumberSeleniumWD
CucumberSeleniumWDCucumberSeleniumWD
CucumberSeleniumWDVikas Sarin
 
Samuel Asher Rivello - PureMVC Hands On Part 1
Samuel Asher Rivello - PureMVC Hands On Part 1Samuel Asher Rivello - PureMVC Hands On Part 1
Samuel Asher Rivello - PureMVC Hands On Part 1360|Conferences
 
Acceleo Day - Orange
Acceleo Day - OrangeAcceleo Day - Orange
Acceleo Day - Orangesliard
 

La actualidad más candente (7)

Distributed Software Development with Scrum and Social Coding
Distributed Software Development with Scrum and Social Coding Distributed Software Development with Scrum and Social Coding
Distributed Software Development with Scrum and Social Coding
 
Presenter manual J2EE (specially for summer interns)
Presenter manual  J2EE (specially for summer interns)Presenter manual  J2EE (specially for summer interns)
Presenter manual J2EE (specially for summer interns)
 
Software Factory - Overview
Software Factory - OverviewSoftware Factory - Overview
Software Factory - Overview
 
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated
New CA 2E 8.7 (Synon) and CA 7.1 , Invigorated
 
CucumberSeleniumWD
CucumberSeleniumWDCucumberSeleniumWD
CucumberSeleniumWD
 
Samuel Asher Rivello - PureMVC Hands On Part 1
Samuel Asher Rivello - PureMVC Hands On Part 1Samuel Asher Rivello - PureMVC Hands On Part 1
Samuel Asher Rivello - PureMVC Hands On Part 1
 
Acceleo Day - Orange
Acceleo Day - OrangeAcceleo Day - Orange
Acceleo Day - Orange
 

Similar a Framework Engineering 2.1

Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_FinalYoungSu Son
 
Framework Engineering Revisited
Framework Engineering RevisitedFramework Engineering Revisited
Framework Engineering RevisitedYoungSu Son
 
Framework Engineering
Framework EngineeringFramework Engineering
Framework EngineeringYoungSu Son
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachBen Stopford
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary SoftwareYun Zhi Lin
 
Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...Alejandro S.
 
Evolutionary Design Solid
Evolutionary Design SolidEvolutionary Design Solid
Evolutionary Design SolidSai Venkat
 
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkCloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkRed Hat Developers
 
Agile Software Architecture
Agile Software ArchitectureAgile Software Architecture
Agile Software Architecturecesarioramos
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011YoungSu Son
 
Modern Application Development v1-0
Modern Application Development  v1-0Modern Application Development  v1-0
Modern Application Development v1-0Greg Hoelzer
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...Fwdays
 
Being Reactive with Spring
Being Reactive with SpringBeing Reactive with Spring
Being Reactive with SpringKris Galea
 
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design PatternsLublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design PatternsKarol Szmaj
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"GlobalLogic Ukraine
 
How Bankwest delivers business value through modern RESTful APIs with Java in...
How Bankwest delivers business value through modern RESTful APIs with Java in...How Bankwest delivers business value through modern RESTful APIs with Java in...
How Bankwest delivers business value through modern RESTful APIs with Java in...Rob Crowley
 
How to estimate the cost of a Maximo migration project with a high level of c...
How to estimate the cost of a Maximo migration project with a high level of c...How to estimate the cost of a Maximo migration project with a high level of c...
How to estimate the cost of a Maximo migration project with a high level of c...Mariano Zelaya Feijoo
 
Fed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpFed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpTony Bibbs
 

Similar a Framework Engineering 2.1 (20)

Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_Final
 
Framework Engineering Revisited
Framework Engineering RevisitedFramework Engineering Revisited
Framework Engineering Revisited
 
Framework Engineering
Framework EngineeringFramework Engineering
Framework Engineering
 
Architecting for Change: An Agile Approach
Architecting for Change: An Agile ApproachArchitecting for Change: An Agile Approach
Architecting for Change: An Agile Approach
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary Software
 
Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...Case Study: Practical tools and strategies for tackling legacy practices and ...
Case Study: Practical tools and strategies for tackling legacy practices and ...
 
Evolutionary Design Solid
Evolutionary Design SolidEvolutionary Design Solid
Evolutionary Design Solid
 
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech TalkCloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
Cloud-Native Modernization or Death? A false dichotomy. | DevNation Tech Talk
 
Agile Software Architecture
Agile Software ArchitectureAgile Software Architecture
Agile Software Architecture
 
Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
 
Twelve factor-app
Twelve factor-appTwelve factor-app
Twelve factor-app
 
Modern Application Development v1-0
Modern Application Development  v1-0Modern Application Development  v1-0
Modern Application Development v1-0
 
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai..."Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
"Micro-frontends: Scalable and Modular Frontend in Parimatch Tech", Kyrylo Ai...
 
Being Reactive with Spring
Being Reactive with SpringBeing Reactive with Spring
Being Reactive with Spring
 
Lublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design PatternsLublin Startup Festival - Mobile Architecture Design Patterns
Lublin Startup Festival - Mobile Architecture Design Patterns
 
Thoughtful Software Design
Thoughtful Software DesignThoughtful Software Design
Thoughtful Software Design
 
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
Java TechTalk "Spring boot made life easier with Kubernetes and Microservices"
 
How Bankwest delivers business value through modern RESTful APIs with Java in...
How Bankwest delivers business value through modern RESTful APIs with Java in...How Bankwest delivers business value through modern RESTful APIs with Java in...
How Bankwest delivers business value through modern RESTful APIs with Java in...
 
How to estimate the cost of a Maximo migration project with a high level of c...
How to estimate the cost of a Maximo migration project with a high level of c...How to estimate the cost of a Maximo migration project with a high level of c...
How to estimate the cost of a Maximo migration project with a high level of c...
 
Fed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpFed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype Dcphp
 

Más de YoungSu Son

Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴 YoungSu Son
 
Clean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningClean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningYoungSu Son
 
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화YoungSu Son
 
Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) YoungSu Son
 
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)YoungSu Son
 
Singleton 패턴 (김진영 - EVA, 소마에 10기)
Singleton 패턴 (김진영 -  EVA, 소마에 10기) Singleton 패턴 (김진영 -  EVA, 소마에 10기)
Singleton 패턴 (김진영 - EVA, 소마에 10기) YoungSu Son
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 YoungSu Son
 
생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) 생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) YoungSu Son
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) YoungSu Son
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) YoungSu Son
 
DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 YoungSu Son
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
Android 성능 지표와 Oreo 의 개선사항
Android 성능 지표와  Oreo 의 개선사항 Android 성능 지표와  Oreo 의 개선사항
Android 성능 지표와 Oreo 의 개선사항 YoungSu Son
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법YoungSu Son
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기YoungSu Son
 
SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법 YoungSu Son
 
[NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 [NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 YoungSu Son
 
Android Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + GenymotionAndroid Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + GenymotionYoungSu Son
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기) YoungSu Son
 

Más de YoungSu Son (20)

Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴
 
Clean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningClean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance Tuning
 
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
 
Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭)
 
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
 
Singleton 패턴 (김진영 - EVA, 소마에 10기)
Singleton 패턴 (김진영 -  EVA, 소마에 10기) Singleton 패턴 (김진영 -  EVA, 소마에 10기)
Singleton 패턴 (김진영 - EVA, 소마에 10기)
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
 
생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) 생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기)
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
 
DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
Android 성능 지표와 Oreo 의 개선사항
Android 성능 지표와  Oreo 의 개선사항 Android 성능 지표와  Oreo 의 개선사항
Android 성능 지표와 Oreo 의 개선사항
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
SW 아키텍처 분석방법
SW 아키텍처 분석방법 SW 아키텍처 분석방법
SW 아키텍처 분석방법
 
[NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법 [NEXT] Android Profiler 사용법
[NEXT] Android Profiler 사용법
 
Android Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + GenymotionAndroid Studio 개발 셋팅 + Genymotion
Android Studio 개발 셋팅 + Genymotion
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
 

Último

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Último (20)

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

Framework Engineering 2.1

  • 1. Framework EngineeringArchitecting, Designing, and Developing Reusable Libraries http://www.arload.net
  • 4. Douglas C. Schmidt Says.. Frameworks define “semi-complete” application that embody domain-specific object structures and functionality.
  • 5. 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
  • 6. But Framework is .. Active Object State NETWORKING GUI Control – Flow (IoC) MATH Reactor Event Loop App Specific Logic Invocations Callbacks ADTs Singleton Adapter DATABASE GRAPHICS Application Framework Component Architecture
  • 7. Why Do You Need Framework? Productivity Avoid Duplication
  • 8. Why Do You Need Framework? De Facto War
  • 9. The Experts of Framework SPLASH (구 OOPSLA ) / PLoP의 창시 Gangs of Four 의일원 Martin Fowler의 직/간접적 스승 Framework 개념의 창시자 Designing Reusable Classes Reusing Object-Oriented Design Documenting Frameworks Using Patterns Patterns For Framework Evolution. Ralph Johnson
  • 10. The Experts of Framework 패턴의 중흥기를 이끈 실질적 리더 – PLoP및 PLoPD Editor 패턴으로 구축한 프레임워크 공개 TAO, ACE등 – 다양한 분야 광범위하게 사용. 실제 돌아가는 프레임워크와 패턴을 접목 POSA 2, POSA 4, POSA 5권 저자 http://www.cs.wustl.edu/~schmidt/ Douglas C. Schmidt
  • 11. The Experts of Framework Java Platform의 광범위한 부분을 설계하고 구현한가장 영향력 있는 리더 Sun에서 Google로 Chief Architect로 이직 Java에 가장 영향력 있는 둘중에 한 분. How to Design a good api and Why it Matters http://www.youtube.com/watch?v=aAb7hSCtvGw Joshua Bloch
  • 12. The Experts of Framework .NET Framework의쌍두마차. Visual C++ 부터 현재 .NET까지 총지휘 Brad Abrams는 Google로 2010년 이직 KC는 아직 .NET Framework를 진두 지휘 실 세계의 Framework 설계 기법 공유 Framework Design Guidelines 1st. Framework Design Guidelines 2nd. Brad Abrams, KrysztofCwalina
  • 13. Welcome to My Framework Journey!
  • 14. Seed References “Framework Engineering”, TechED 2007 Europe “Framework Design Guidelines” , Addison Wesley Krzysztof Cwalina Program Manager on .NET Framework Team
  • 15. 5 Topics.. D O P A V
  • 17. Project Management Triangle Scope Time Cost O
  • 19. Do understand how organizational structure, culture, and decision making processes impact your product. O
  • 20. Conway's law If you have 4 groups working on a compiler, you’ll get a 4-pass compiler. O
  • 22. Conway's Clean State Approach O
  • 23. Your Company Culture Is .. Voluntary ?? O
  • 24. Your Company Culture Is .. Familial ?? O
  • 25. Remember Your Company Culture .. O Peremptory
  • 26. Organizational InfluencesSize of Organization Simple Design Consistency Design Focus on 80/20 Rules Small Team O
  • 27. Organizational InfluencesSize of Organization Powerful Design Lack Consistency Remove Requirements Large Team O
  • 28. Organizational InfluencesOrganization’s Culture/Biases Customer-Focused End-2-End Scenarios O
  • 29. Organizational InfluencesOrganization’s Culture/Biases Technology-Focused Long Lasting Architecture O
  • 30. Decision Making Process is.. 呼兄呼弟 O
  • 31. Solution ?? Give this book your boss..
  • 32. Planning Ensuring we are building the right thing P
  • 34. Skyscrapers Peanut Butter Focus: features Results: stability, incremental improvements, not great end-to-end scenarios Focus: scenarios Results: Excitement, breakthroughs, but beware of leaving existing customers behind P
  • 38.
  • 39. Cross Functional Teams and Location P
  • 40. Moderation (中庸)MileStone = Scenarios + Feature Vision statement RTM Feature complete Release Testing Planning M1 M2 Technology Preview Beta 1 Beta 2 RC1 P
  • 41. ArchitectureEnsuring the long term health of the framework A
  • 43. Taxonomy of TypesLibraries , Primitives, Abstractions A
  • 44. Primitives Very little policy (behavior design decisions) Stable design Commonly appear in publicly accessible APIs Almost impossible to evolve/change design; any design changes have huge breaking change impact on other APIs Example: Int32, String A
  • 45. Libraries Definition: Libraries are types that are not passed between components Examples EventLog, Debug. Easy to Evolve Leave old in, add new one Beware of duplication! A
  • 46. Abstractions Definition: Abstractions are interfaces or classes with unsealed members that are passed between components. Examples Stream, IComponent Hard to Evolve Unfortunately, pressure to evolve A
  • 47. Primitive Oriented Design A.K.A. “Handle based design” (functional) Great evolvability, poor usability (sometimes) Low level stable primitives + high level reusable components with limited dependencies other than to the primitives E.g. Type.GetType(object) – works, but not as convenient as Object.GetType A
  • 48. Component Oriented Design Rich APIs with lots of features, thus with lots of dependencies Great usability, poor evolvability Good for higher level components, not for the core of a platform A
  • 50. Component is .. Lego, Plug ?? A
  • 51. Component is .. .. a set of types that ship and evolve as a unit. A
  • 53. API Dependency Component A has an API dependency on component B, if a type in B shows in the publicly accessible API surface of a type in A. This includes: Base types and implemented interfaces Generic parameter constraints Return types and parameters of members Applied attributes Nested types A
  • 54. Implemenatin Dependency If a type in A uses a type in B in its implementation. Hard Dependencies (required to run) Soft Dependencies (optional) A
  • 55. Circular Dependency Component A depends on component B and Component B depends on component A (even indirectly). A
  • 58. WPF XML    BCL Reflection A Dependency Management
  • 59. 상황을 파악하는 좋은 방법DSM (Dependency Structure Matrix)
  • 63. 불완전한 계층구조를 가진 시스템 Circular Dependency 발생.
  • 64. 또 하나의 도구– Code Metrics Demo
  • 65. Solution is.. Create a new package. A
  • 66. circular dependency GUI Comm Analysis Protocol Modem Control Comm Error Database Message Manager A
  • 68. Use Interface. A X Y <<interface>> BY B A
  • 71. Heavy Dependency. // your API public class Tracer { MessageQueue mq = new MessageQueue(…); public void Trace(string message){ mq.Send(message); } } // your customer’s program that is hard to test Tracer tracer = new Tracer(); public void ProcessOrder(Order order){ tracer.Trace(order.Id); … } A
  • 72. Inversion of Control // your better API public abstract class TraceListener { public abstract void Trace(string message); } public class Tracer { TraceListener listener; public Tracer(TraceListener listener){ this.listener = listener; } public void Trace(string message){ listener.Trace(message); } } A
  • 73. Dependency Injection // your customer’s program that is easier to test Tracer tracer = new Tracer(new FileListener()); public void ProcessOrder(Order order){ tracer.Trace(order.Id); … } A
  • 74. Dependency Injection Containers // customer’s program that is even easier to test Tracer tracer = container.Resolve<Tracer>(); public void ProcessOrder(Order order){ tracer.Trace(order.Id); … } Check outDI Containers (a.k.a. IoC Containers):autofac, Castle Windsor, PicoContainer.NET, Spring.NET, StructureMap, Unity, nInject and others. http://www.nInject.org A
  • 75. Packaging Principle Package Cohesion Principle REP (Release Reuse Equivalency) CCP (Common Closure Principle) CRP (Common Reuse Principle) Package Coupling Principle ADP (Acyclic Dependencies Principle) SDP (Stable Dependencies Principle) SAP (Stable Abstraction Principle) A Robert C. Martin, Principle of Package Architecture http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf
  • 76. Do balance advances with compatibility. A
  • 77. Types of “Compatibility” Backward Cross-Version Forward A
  • 79. A
  • 80. Establishing Compatibility Bar Define what’s a “breaking change” This definition depends on the objective E.g. Enable portable code between Silverlight and .NET Framework E.g. Enable cross-version portability? A
  • 81. Breaking Changes… Keep Backward Compatibility..
  • 82. Breaking Changes… 신한 은행 ezPlus Quiz - ezPlus의 버전은??
  • 83. Breaking Changes… MS 직원과의 대화 MS에서 새 API 추가와 기존 API 변경에 들이는 시간과 노력을 아시면 절대 그렇게 말하지 못할 것. 중첩된 역할을 가진 API들이 많아지게 됨. 비동기메소드 DownloadAync, InvokeAsync, DownloadTaskAsync  동일한 역할을 하는 API들이 계속 늘어남.. Java의 NewIO와 IO도 동일한 상황. 대형 밴더들은 호환성은 가상화로 대체하자는 추세임.
  • 84. Breaking Changes… MS에서 유일하게 Backward Compatibility를 무시해도 되는 경우가 있음. Quiz – 무엇일까요?
  • 85. Breaking Changes… 새 술은 새 부대에.. Apple/Android는 과감히 쓸모없는 것을 버리는 전략. 새로운 기술과 경험이 들어감에 따라 API를 Refactoring하고 Cleanup해야 점점 사용해지기 쉬워져야 된다. 단편화 문제가 발생함.
  • 86. Breaking Changes… MS의 눈물겨운 Backward Compatibility 이야기. http://www.yes24.com/24/goods/2690684
  • 87. Breaking Changes. .NET Framework Breaking Changes. .NET Framework 4.0 (3.5 -> 4.0) http://msdn.microsoft.com/en-us/library/ee941656.aspx .NET Framework 3.5 (2.0 -> 3.5) http://msdn.microsoft.com/en-us/library/dd310284.aspx .NET Framework 2.0 (1.0 -> 2.0) http://msdn.microsoft.com/ko-kr/netframework/aa570326.aspx 기업에서 .NET 4.0으로 못 갈 정도로 큰 변화. 민감한 Active X 문제 - (SmartClient를 실행시키는 IEHost.exe 제거)
  • 89. Team Space Show and Tell Problem Space PLoP – Capable, Productive and Satisfied Patterns for Productivity http://hillside.net/plop/plop98/final_submissions/P54.pdf A
  • 90. When to Replace Existing APIs When the new technology is “10x better” Make sure you understand the impact on the ecosystem What would happen if the BCL team added a new String? What’s the migration path for code using the old API? Support Automatic Migration Tool. (VB -> VB.NET, .NET 1.0 -> .NET 2.0) Provide Code Based Migration Manual. COM+ -> WCF , ASP.NET Web Service -> WCF A
  • 91. DesignThis is where quality happens D
  • 92. Is using your framework correctly like… Running across a desert? D
  • 94. Do design APIs by first writing code samples for the main scenarios and then defining the object model to support the code samples. D
  • 96. Read File static void Main(string[] args) { StreamReadersr = File.OpenText("MyFile.txt"); string s = sr.ReadLine(); while (s != null) { s = sr.ReadLine(); Console.WriteLine(s); } } D
  • 97. Feedback (Read File) static void Main(string[] args) { foreach (string s in File.ReadAllLines("MyFiles.text")) { Console.WriteLine(s); } } D
  • 99. Framework Design Studio Assembly Exploer Project -> Add -> Assembly D Download here - http://code.msdn.microsoft.com/fds
  • 100. Framework Design Studio Assembly Review Comment D
  • 102. Framework Design StudioCompare API Versions Red is removed, Green is added, Grey means inherited. D
  • 103. Framework Design StudioExporting to Microsoft Word Tools -> Export to Document D
  • 104. Do treat simplicity as a feature. D
  • 105. KISS (Keep It Simple! Stupid!) Remove Requirements Reuse Existing Concepts or APIs. Adjust Abstraction Level Consider framework users(experience, knowledge) Three Example D
  • 107. Specification Document: Qualities Performance Goals (XML Parser..) Baseline: What do is the best my API could do? Measure delta from the baseline Threat Models (Security ..) Threat: What is the worst that my component could do? Mitigate the threats Keep a balance between many other qualities you want your framework to have (ATAM) D
  • 108.  The POWER oFSameness D
  • 109. Read the manual?? When you pick up your rental car…. Push the seat all the way back Find an NPR station Find the exit D
  • 110. Oh, down to lock… D
  • 111. How to use a key… D
  • 112. Oh, you push the PRESS button… D
  • 113. Who actually needs this data? D
  • 114. Why you don’t read manuals ??? You know how to drive your car All cars work basically the same way Your rental car is a car Therefore, you can drive your rental car That is… The power of sameness D
  • 115. Static Analysis Tool http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis D
  • 116. DevelopmentThe bits customers get, … or not V
  • 117. Branches and Integrations- Feature Crew http://www.codeplex.com/BranchingGuidance/Wiki/View.aspx?title=Feature%20Crews%3a%20How%20Microsoft%20Does%20It V
  • 119. Feature Complete & Quality Gates Functional Specification Developer Design Specification Test Plan Threat Model API review Architectural Review Dependency Management Static Analysis Code Coverage Testing (Unit and Integration Tests) 0 Bugs Performance V
  • 120. Do pay your debt. V
  • 121. Milestone Quality Vision statement RTM Feature complete Release Testing Planning M1 M2 Technology Preview Beta 1 Beta 2 RC1 Milestone Quality V
  • 122. Milestone Quality (MQ) Initiatives that are hard to do in regular milestones Large productivity and efficiency improvements Infrastructure changes For example, a new source control system Refactoring of fragile subsystems Internal implementation documentation Bugs backlog V
  • 123. Summary Dounderstand how organizational structure, culture, and decision making processes impact your product. Avoidpeanut-butter in Scenario Based Application. Domanage your dependencies. Dobalance advances with compatibility. Avoidduplication and overlap. Do design APIs by first writing code samples for the main scenarios and then defining the object model to support the code samples. Do treat simplicity as a feature. Domeasure, measure, and measure! Avoidintegrating unfinished features. Do pay your debt.
  • 124. Resources Krzysztof Cwalina, Brad Abrams Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries http://channel9.msdn.com/pdc2008/PC58/ http://www.gotdotnet.com/team/fxcop
  • 125. Resources Douglas C. Schmidt (PLoP Editor, POSA 2, 4 Writter) JAWS: An Application Framework for High Performance Web System http://citeseer.ist.psu.edu/81775.html (En) http://www.devpia.com/net2/EvaCast/Lecture/?cu=view&r=11 (Kr) Ralph Johnson (GoF , Design Patterns) Evolving Frameworks http://st-www.cs.uiuc.edu/users/droberts/evolve.html (En) http://arload.wordpress.com/2008/09/15/evolvingframeworks/ (Kr)
  • 126. Resources Robert C. Martin Principles of Package Architecture (Design Principles and Design Patterns) http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf (En) http://www.devpia.com/net2/EvaCast/Lecture/?cu=view&r=108 (Kr) For Korean People.. Load to Architect http://www.arload.net EvaCast (Online Free Lecture) http://www.evacast.net
  • 127. 최근 저서 및 곧 나올 저서..
  • 129. Question? 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다. This work is licensed under Creative Commons Korea Attribution 2.0 License.