0
미워도 다시 보는      이야기.
            패턴 이야기.
손영수
arload@live.com

EvaCast 리더
http://www.evacast.net
데브피아 아키텍쳐 시삽

Blog - 아키텍트로 가는 길.
http://www.arload.net
오늘 나눌 이야기 거리들.

§ 패턴의 정의 (패턴이란?)
§ 패턴에 대한 오해와 진실


§ 패턴으로 가는 길


§ 패턴 빌드 오더
§ 패턴 + 생산성 두 마리 토끼 잡기
1. 도대체..
패턴은 무엇일까?
Pattern
  is
Father
우리는 아버지와 비슷한
생김새, 성격, 습관 등을
가지고 있다.
이미 해결한 문제와
유사한 문제들은..

유사한 방법(패턴)으로
해결 할 수 있다.
그럼 패턴은 과연..


    내가
왜        적용하려면
안될까?
2. 패턴에 대한 오해와 진실
GoF 23개의 Pattern으로
우아한 프로그램 만들기?
지구상의 패턴들..

        +
 논문 형태로 발표된
 패턴 몇 백개.
패턴은 섬이 아니다.
여러 개의
패턴이 뭉쳐서 움직인다.
                                            Common
               Strategy
                           ...
여러 개의
패턴이 뭉쳐서 움직인다.
패턴은 소프트웨어 설계
쪽만 다룬다?
솔로들을 위한 패턴?




http://www.amazon.com/Dating-Design-Patterns-Solveig-Haugland/dp/0974312002/ref=pd_bbs_sr_1?ie=UTF8&s=book...
소프트웨어 관련된
모든 행위들을 다룬다.
§ 팀을 이루어 설계 대련을 수행하는 패턴



                                  +
   œ http://portal.acm.org/citation....
패턴은 만병통치약?
§비약적인 성능 향상 ?
§생산성 증대 ?
§최적화 ?

§심지어 Silver Bullet ??
패턴의 장점은..




  유연성       확장성
3. 패턴으로 가는 길...
패턴에 대한 올바른 마음가짐
아키텍쳐의 이해 대상


                  Martin Fowler says …

The expert developers working on that project have
a shared understa...
역시 패턴도..

팀 내 의사 소통의 수단이
되기 위해선,
팀원들의 이해가 필요하다.
과유불급
패턴의 남용.

리소스 제약이 심한 시스템에
유연성 추가하기??

- Pipe & Filter
- Component Configurator
패턴의 가족관계를 찾아라!
Compound Pattern

     versus

Composite Pattern
전형적인 가족관계

                                                  Common
               Strategy
Variable                      ...
여러분을 위해

하나씩 나누어
설명드리겠습니다.
Strategy

             인공위성과
             슈퍼 컴퓨터의 정렬
             로직은 같을까요?
                 같을까요?




                   ...
Strategy
                                       void main()
             ISort                     {
                     ...
Template Method

      Application


      ODBC(JDBC) API



      ODBC (JDBC) Driver Manager



     MSSQL Driver        ...
Template Method
                                                       Class QueryTemplate
                               ...
Component Configurator
                  설정 파일 정보가 바뀌면
                  소프트웨어의
                  코드 수정없이
                ...
Component Configurator
                                Component
    Component
    Repository                  +Init()
   ...
Component Configurator
                                        void main()
                                        {
<xml ...
Reflection
Meta Level
                             further
                                                             mo...
Reflection
ModuleBuilder AssemblyModule =
CreatedAssembly.DefineDynamicModule(quot;MathModulequot;,quot;Math.dllquot;);

T...
Reflection
using System;
using System.Reflection;
...
    public class EmitDemoTest
     {   static void Main()
         {...
다시 보는 가족 관계

               Strategy
                                                  Common
Variable
                   ...
패턴 가족 이야기 2
스타에서의 Observer
        Change



             1. Observation
 Data
                       Starcraft 때문에
                  ...
패턴에 있는 Observer는
       Observer는
통보 받는 자(Notifieer)이다.
        Notifieer)이다.
Hollywood Principle



                Don’t
                Call us!!


                            Manager




   Applic...
Hollywood Principle

          Don’t Call us!

          We Call You!!!




Manager




                           Applica...
정확한 Observer

          Change                                1. Change
                   2. Change


   Data
           ...
Observer
 Subject                Observer


                        +Update ()
 +Attach (Observer o)
 +Detach (Observer o)...
패턴 가족 이야기 2
           Get Info
                                                   Change
                                ...
패턴 가족 이야기 2
           Get Info
                                                 Change
                                  ...
패턴 가족 이야기 3
무거운 의존관계.
무거운 (Heavy Dependency) 상황
 // your API
 public class Tracer {
   MessageQueue mq = new MessageQueue(…);
   public void Tra...
Inversion of Control
 // your better API
 public abstract class TraceListener {
   public abstract void Trace(string messa...
Dependency Injection

 // your customer’s program that is easier to test
 Tracer tracer = new Tracer(new FileListener());
...
Dependency Injection Container
 // customer’s program that is even easier to test
 Tracer tracer = container.Resolve<Trace...
많은
가족관계 (Compound Pattern)
사례를 알아야..

실제 설계 시 적용하기 쉽다.
패턴과 SoC
(Separation of Concerns)
SoC
           is
quot;focusing one's attention
    upon some aspect”
결국 패턴은
   복잡한 문제를

   잘 SoC 하는
경험들을 모아놓은 산물..
JAWS - 웹 서버의
복잡한 문제를 잘 SoC한 사례




          패턴을 이용한 웹 서버 만들기 (한국어 강좌)
 http://www.devpia.com/NET2/EvaCast/Lecture/?cu=vie...
하지만 현실에는..
유연성에만 초점을
맞추어 SoC 할 수 없다.

분산 객체 사례..
CORBA, Web Service..
그래서 발생 하는
Ripple Effect (파문 효과).
SoC in motion.

           Vision statement                                            RTM
                               ...
4. 패턴의
올바른 빌드 오더..
초보를 위한 패턴 빌드오더..




                                       68
          Devpia A&D EVA   4/13/2009
POSA 1 (아키텍쳐 패턴)



 œ Layer                 œ Model -View-Controller
 œ Pipe & Filter         œ Presentation -Abstraction...
POSA 2 (분산 객체를 위한 패턴)
POSA 3 (자원 관리를 위한 패턴)
                          § Resource Lifecycle
§ Resource Acquisition
                            œ ...
그 외 패턴들..




                                         72
            Devpia A&D EVA   4/13/2009
그 외 패턴들..




                                         73
            Devpia A&D EVA   4/13/2009
그 외 패턴들..




                                         74
            Devpia A&D EVA   4/13/2009
5. 패턴 + 생산성 증대.
     내 친구..


     를 소개합니다.
EA의 기능 소개..
§ UML 2.1 Full 지원
§ 모델링 정보를 다양한 DBMS와 연동하여 저장가능
§ 형식을 파괴하는 모델링 지원
  œ Use Case에서도 Class Diagram의 요소들을 사용가능
§ 다...
Code Template을
이용한 공장 만들기
                 77
1. StreoType 생성
 Setting – UML – Streotypes




                              78
2. 클래스 설계 후 StreoType 할당




                           79
3. 메소드 속성에 맞는 태깅생성
예를 들어 현재 재고를 파악하는 메소드는
Database에서 데이터를 가져오는 (Get) 타입인
  경우.




                                 80
4. 코드 생성 탬플릿 작성
       Settings – Code Generation Templates
    다양한                                       생성할 코드
   언어 선택 ...
스트레오 타입 코드 템플릿 추가




                    82
스트레오 템플릿 추가

§ Import Section
  œ DLL 이나   Namespace를 추가하는 부분


§ Operation Body
  œ 메소드 구현 부에 사용자 코드를 추가 함




          ...
간단한 예 - OperationBody
%if opTag:quot;DataAccessTypequot; ==quot;getquot; %       //데이터를 얻어오는 쿼리
IDataReader reader = null;...
Reverse
 Engineering




               85
통합 개발 환경 구축하기




                86
통합 개발 환경 구축하기




                87
개발 환경 구축
– 프로세스로 디버깅 하기




                 88
프로세스로 디버깅하기




              89
디버깅 내용을
Sequence Diagram으로 생성




                        90
디버깅 내용을
Sequence Diagram으로 생성




                        91
Unit Testing
Unit Testing과 연동됨
§ 현재 xUnit (JUnit, Nunit) 형태로 생성및 관
  리가 가능함.
§ 다른 Unit Test는 Package Script로 연동가
  능.
Visual Studio.NET
내장 UnitTest (mstest)셋팅 법
연동된 Unit Test
참고자료
§ Frank Buschmann et al, “Pattern-Oriented Software
  Architecture : A System of Patterns”, Volume 1, Wiley

§ Dougla...
참고자료
§ “Soc in motion”
   http://www.betaversion.org/~stefano/linotype/news/143/

§ FileSystemWatcher.NotifyFilter
  http:...
참고자료
  Douglas C. Schmidt (PLoP Editor, POSA 2, 4 Writter)

  JAWS: An Application Framework for High Performance Web Syst...
참고자료
         Robert C. Martin
         Principles of Package Architecture (Design Principles and Design Pattern
         ...
Question?
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0
                 대한민국 라이센스에 따라 이용하실 수 있습니다.
This work is licensed u...
misspattern
misspattern
Upcoming SlideShare
Loading in...5
×

misspattern

2,289

Published on

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,289
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
49
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "misspattern"

  1. 1. 미워도 다시 보는 이야기. 패턴 이야기.
  2. 2. 손영수 arload@live.com EvaCast 리더 http://www.evacast.net 데브피아 아키텍쳐 시삽 Blog - 아키텍트로 가는 길. http://www.arload.net
  3. 3. 오늘 나눌 이야기 거리들. § 패턴의 정의 (패턴이란?) § 패턴에 대한 오해와 진실 § 패턴으로 가는 길 § 패턴 빌드 오더 § 패턴 + 생산성 두 마리 토끼 잡기
  4. 4. 1. 도대체.. 패턴은 무엇일까?
  5. 5. Pattern is Father
  6. 6. 우리는 아버지와 비슷한 생김새, 성격, 습관 등을 가지고 있다.
  7. 7. 이미 해결한 문제와 유사한 문제들은.. 유사한 방법(패턴)으로 해결 할 수 있다.
  8. 8. 그럼 패턴은 과연.. 내가 왜 적용하려면 안될까?
  9. 9. 2. 패턴에 대한 오해와 진실
  10. 10. GoF 23개의 Pattern으로 우아한 프로그램 만들기?
  11. 11. 지구상의 패턴들.. + 논문 형태로 발표된 패턴 몇 백개.
  12. 12. 패턴은 섬이 아니다.
  13. 13. 여러 개의 패턴이 뭉쳐서 움직인다. Common Strategy Part Variable <<CREATES>> Part (Modularity) Factory Log Security <<LINKS>> Configurable Part Component Transaction Configurator
  14. 14. 여러 개의 패턴이 뭉쳐서 움직인다.
  15. 15. 패턴은 소프트웨어 설계 쪽만 다룬다?
  16. 16. 솔로들을 위한 패턴? http://www.amazon.com/Dating-Design-Patterns-Solveig-Haugland/dp/0974312002/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1239125189&sr=8-1
  17. 17. 소프트웨어 관련된 모든 행위들을 다룬다. § 팀을 이루어 설계 대련을 수행하는 패턴 + œ http://portal.acm.org/citation.cfm?id=273484 § 팀 생산성을 향상 시키는 패턴 œ http://arload.wordpress.com/2008/09/02/teamproductivity/ 그 외에도 기타 등등…. § 지리적으로 떨어져 있는 팀 협업하는 패턴 œ http://hillside.net/plop/2006/Papers/Library/patternstoenablePLoP2006_sub mission_v4.pdf http://arload.wordpress.com/2008/04/02/plopfestival/ œ http://hillside.net/plop/2004/papers/vbricout0/PLoP2004_vbricout0_0.doc § 효율적인 회의를 이끄는 패턴 œ http://hillside.net/europlop/europlop2005/workshops/
  18. 18. 패턴은 만병통치약?
  19. 19. §비약적인 성능 향상 ? §생산성 증대 ? §최적화 ? §심지어 Silver Bullet ??
  20. 20. 패턴의 장점은.. 유연성 확장성
  21. 21. 3. 패턴으로 가는 길...
  22. 22. 패턴에 대한 올바른 마음가짐
  23. 23. 아키텍쳐의 이해 대상 Martin Fowler says … The expert developers working on that project have a shared understanding of the system design. This shared understanding is called ‘architecture architecture’ architecture http://www.martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
  24. 24. 역시 패턴도.. 팀 내 의사 소통의 수단이 되기 위해선, 팀원들의 이해가 필요하다.
  25. 25. 과유불급
  26. 26. 패턴의 남용. 리소스 제약이 심한 시스템에 유연성 추가하기?? - Pipe & Filter - Component Configurator
  27. 27. 패턴의 가족관계를 찾아라!
  28. 28. Compound Pattern versus Composite Pattern
  29. 29. 전형적인 가족관계 Common Strategy Variable Part <<CREATES>> Part Factory Log Security <<LINKS>> Configurable Part Component Transaction Configurator
  30. 30. 여러분을 위해 하나씩 나누어 설명드리겠습니다.
  31. 31. Strategy 인공위성과 슈퍼 컴퓨터의 정렬 로직은 같을까요? 같을까요? Super satellite Computer
  32. 32. Strategy void main() ISort { //pSort라는 인터페이스를 선언한다 ISort iSort; +Sorting() if (GetSystemInfo() == Low) { //인공위성에서는 Bubble Sorting 사용 iSort = new CBubble(); } else { //슈퍼 컴퓨터에는 Quick Sorting 사용 Bubble Quick iSort = new CQuick(); } iSort.Sorting(); +Sorting() +Sorting() }
  33. 33. Template Method Application ODBC(JDBC) API ODBC (JDBC) Driver Manager MSSQL Driver Oracle Driver
  34. 34. Template Method Class QueryTemplate { public void doQuery() { QueryTemplate string dbCommand; dbCommand = FormatConnect(); dbCommand = FormantSelect(sql); +doQuery() } ... #FormatConnect() } #FormatSelect() void main() { //pQT라는 인터페이스를 선언한다 Inversion of Control QueryTemplate QT; Sql sql = “select * from AA”; (Hollywood Principle) if (GetDBProductInfo() = Oracle) QT = new OracleQT(); else OracleQT SqlSvrQT QT = new SqlSvrQT(); Qt->doQuery(sql); #FormatConnect() #FormatConnect() } #FormatSelect() #FormatSelect()
  35. 35. Component Configurator 설정 파일 정보가 바뀌면 소프트웨어의 코드 수정없이 속성이 변경되어라!! 변경되어라!! Text XML Based Log Component DES RSA Configuration HTTP FTP Protocol File Protocol Great Architect
  36. 36. Component Configurator Component Component Repository +Init() +Fini() +Suspend() +Resume() Component +Info() Configurator Core Core Component Component 38
  37. 37. Component Configurator void main() { <xml version =“1.0”> <Components> <!– Protocol 정보 선택 --> IMessage iMessage = new Message(); <Protocol> if (GetComponentInfo(“Protocol”) = HTTP) HTTP iMessage->Protocol = HTTP; </Protocol> else iMessage->Protocol = FTP; <!– Log 정보 선택 --> <Log> if (GetComponentInfo(“Log”) = XML) XML iMessage->Protocol = XML; </Log> else Advanced Topic iMessage->Protocol = TEXT; <!– 보안 알고리즘 선택 --> Reflection <SecuAlgorithm> ... DES </SecuAltorithm> iMessage->Send(“Hello”);} </Components> 39 Devpia A&D EVA 4/13/2009
  38. 38. Reflection Meta Level further modifies meta- meta-level components MetaObject A MetaObject B MOP modifies retrieves information uses uses uses uses Component A further Component B UserInterface base- base-level provides components access to Base Level
  39. 39. Reflection ModuleBuilder AssemblyModule = CreatedAssembly.DefineDynamicModule(quot;MathModulequot;,quot;Math.dllquot;); TypeBuilder MathType = AssemblyModule.DefineType(quot;DoMathquot;, TypeAttributes.Public | TypeAttributes.Class); System.Type [] ParamTypes = new Type[] {typeof(int),typeof(int) }; MethodBuilder SumMethod = MathType.DefineMethod(quot;Sumquot;, MethodAttributes.Public, typeof(int), ParamTypes); ParameterBuilder Param1 = SumMethod.DefineParameter(1,ParameterAttributes.In, quot;num1quot;); ParameterBuilder Param2 = SumMethod.DefineParameter(1,ParameterAttributes.In, quot;num2quot;); ... MathType.CreateType(); return CreatedAssembly;
  40. 40. Reflection using System; using System.Reflection; ... public class EmitDemoTest { static void Main() { ... System.Type MathType = EmitAssembly.GetType(quot;DoMathquot;); object[] Parameters = new object [2]; Parameters[0] = (object) (5); Parameters[1] = (object) (9); MathType,false); object EmitObj = Activator.CreateInstance (MathType,false); MathType.InvokeMember(quot;Sumquot;, object Result = MathType.InvokeMember(quot;Sumquot;, BindingFlags.InvokeMethod ,null,EmitObj,Parameters); null,EmitObj,Parameters); Console.WriteLine(quot;Sum of {0}+{1} is {2}quot;, Parameters[0],Parameters[1],Result.ToString()); Console.ReadLine(); } }
  41. 41. 다시 보는 가족 관계 Strategy Common Variable Part <<CREATES>> Part Factory Log Security <<LINKS>> Configurable Part Component Transaction Configurator
  42. 42. 패턴 가족 이야기 2
  43. 43. 스타에서의 Observer Change 1. Observation Data Starcraft 때문에 생긴 오해!! 2. Notification 45 Devpia A&D EVA 4/13/2009
  44. 44. 패턴에 있는 Observer는 Observer는 통보 받는 자(Notifieer)이다. Notifieer)이다.
  45. 45. Hollywood Principle Don’t Call us!! Manager Applicants
  46. 46. Hollywood Principle Don’t Call us! We Call You!!! Manager Applicants
  47. 47. 정확한 Observer Change 1. Change 2. Change Data Manager Client (Source) 3. Notification Observer is Notifieer Client (Type1) Client (Type2) Client (Type3)
  48. 48. Observer Subject Observer +Update () +Attach (Observer o) +Detach (Observer o) +Notify() Concrete Concrete Observer Subject
  49. 49. 패턴 가족 이야기 2 Get Info Change Load Handler Config File Notifiy Client A Overhead!! Configuration File App.config File I/O Web.config Client B
  50. 50. 패턴 가족 이야기 2 Get Info Change Load Handler Config File Notifiy Client A FileSystemWatcher .NotifyFilter Configuration File App.config Web.config A Smart Developer
  51. 51. 패턴 가족 이야기 3
  52. 52. 무거운 의존관계.
  53. 53. 무거운 (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); … }
  54. 54. Inversion of Control // your better API public abstract class TraceListener { public abstract void Trace(string message); } public class Tracer { TraceListener listener; Template Method public Tracer(TraceListener listener){ this.listener & listener; = Publisher/Subscriber } public void Trace(string message){ listener.Trace(message); } }
  55. 55. 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); … }
  56. 56. Dependency Injection Container // customer’s program that is even easier to test Tracer tracer = container.Resolve<Tracer>(); public void ProcessOrder(Order order){ tracer.Trace(order.Id); … } Check out DI Containers (a.k.a. IoC Containers): autofac, Castle Windsor, PicoContainer.NET, Spring.NET, StructureMap, Unity, nInject and others. http://www.nInject.org http://www.springframework.net/
  57. 57. 많은 가족관계 (Compound Pattern) 사례를 알아야.. 실제 설계 시 적용하기 쉽다.
  58. 58. 패턴과 SoC (Separation of Concerns)
  59. 59. SoC is quot;focusing one's attention upon some aspect”
  60. 60. 결국 패턴은 복잡한 문제를 잘 SoC 하는 경험들을 모아놓은 산물..
  61. 61. JAWS - 웹 서버의 복잡한 문제를 잘 SoC한 사례 패턴을 이용한 웹 서버 만들기 (한국어 강좌) http://www.devpia.com/NET2/EvaCast/Lecture/?cu=view&r=11
  62. 62. 하지만 현실에는.. 유연성에만 초점을 맞추어 SoC 할 수 없다. 분산 객체 사례.. CORBA, Web Service..
  63. 63. 그래서 발생 하는 Ripple Effect (파문 효과).
  64. 64. SoC in motion. Vision statement RTM Feature complete Release Testing Planning M1 M2 Technology Preview Beta 1 Beta 2 RC1 Milestone Quality
  65. 65. 4. 패턴의 올바른 빌드 오더..
  66. 66. 초보를 위한 패턴 빌드오더.. 68 Devpia A&D EVA 4/13/2009
  67. 67. POSA 1 (아키텍쳐 패턴) œ Layer œ Model -View-Controller œ Pipe & Filter œ Presentation -Abstraction - Control œ Broker œ Reflection œ Master Slave œ Client – Dispatcher œ Counted Pointer œ Forwarder-Receiver œ Blackboard
  68. 68. POSA 2 (분산 객체를 위한 패턴)
  69. 69. POSA 3 (자원 관리를 위한 패턴) § Resource Lifecycle § Resource Acquisition œ Caching œ Lookup œ Pooling œ Lazy Acquisition œ Coordinator œ Eager Acquisition œ Resource Lifecycle Manager œ Partial Acquisition § Resource Release œ Leasing œ Evictor 71 Devpia A&D EVA 4/13/2009
  70. 70. 그 외 패턴들.. 72 Devpia A&D EVA 4/13/2009
  71. 71. 그 외 패턴들.. 73 Devpia A&D EVA 4/13/2009
  72. 72. 그 외 패턴들.. 74 Devpia A&D EVA 4/13/2009
  73. 73. 5. 패턴 + 생산성 증대. 내 친구.. 를 소개합니다.
  74. 74. EA의 기능 소개.. § UML 2.1 Full 지원 § 모델링 정보를 다양한 DBMS와 연동하여 저장가능 § 형식을 파괴하는 모델링 지원 œ Use Case에서도 Class Diagram의 요소들을 사용가능 § 다양한 언어를 지원 œ C++, C#, Delphi, Java, VB, VB.NET, PHP, Python § 강력한 코드 탬플릿 생성 기능 § 강력한 역공학 기능 § 다양한 Plug-in 지원 § 테스팅 생성및 관리 (기존 Unit Testing 과 연동됨) § 가장 저렴한 가격 1 Copy당 20만원 ~ 30만원 사이 76
  75. 75. Code Template을 이용한 공장 만들기 77
  76. 76. 1. StreoType 생성 Setting – UML – Streotypes 78
  77. 77. 2. 클래스 설계 후 StreoType 할당 79
  78. 78. 3. 메소드 속성에 맞는 태깅생성 예를 들어 현재 재고를 파악하는 메소드는 Database에서 데이터를 가져오는 (Get) 타입인 경우. 80
  79. 79. 4. 코드 생성 탬플릿 작성 Settings – Code Generation Templates 다양한 생성할 코드 언어 선택 입력 생성할 코드 템 플릿 Namespace, Class, Operation 등 스트레오 타입 별 템플릿을 지 정 81
  80. 80. 스트레오 타입 코드 템플릿 추가 82
  81. 81. 스트레오 템플릿 추가 § Import Section œ DLL 이나 Namespace를 추가하는 부분 § Operation Body œ 메소드 구현 부에 사용자 코드를 추가 함 83
  82. 82. 간단한 예 - OperationBody %if opTag:quot;DataAccessTypequot; ==quot;getquot; % //데이터를 얻어오는 쿼리 IDataReader reader = null; %opReturnType% retVal = new %opReturnType%(); try { // 1. Create the Database object, using the default database service. Database db = DatabaseFactory.CreateDatabase(); log.Debug(quot;Create Database Factoryquot;); // 2. Create DB Command string sqlCommand = quot;$queryNamequot;; dbCommand = db.GetStoredProcCommand(sqlCommand); log.Debug(quot;GetStoredProcCommand(quot; + sqlCommand + quot;)quot;); …. } %elseIf opTag:quot;DataAccessTypequot; ==quot;setquot;% //데이터를 쓰는 쿼리 DbConnection connection = null; UInt32 retVal = 0; try { …….. 84 84
  83. 83. Reverse Engineering 85
  84. 84. 통합 개발 환경 구축하기 86
  85. 85. 통합 개발 환경 구축하기 87
  86. 86. 개발 환경 구축 – 프로세스로 디버깅 하기 88
  87. 87. 프로세스로 디버깅하기 89
  88. 88. 디버깅 내용을 Sequence Diagram으로 생성 90
  89. 89. 디버깅 내용을 Sequence Diagram으로 생성 91
  90. 90. Unit Testing
  91. 91. Unit Testing과 연동됨 § 현재 xUnit (JUnit, Nunit) 형태로 생성및 관 리가 가능함. § 다른 Unit Test는 Package Script로 연동가 능.
  92. 92. Visual Studio.NET 내장 UnitTest (mstest)셋팅 법
  93. 93. 연동된 Unit Test
  94. 94. 참고자료 § Frank Buschmann et al, “Pattern-Oriented Software Architecture : A System of Patterns”, Volume 1, Wiley § Douglas Schmidt et al, “Pattern-Oriented Software Architecture”, Volume 2, Wiley § Eric Gamma et al, “Design Patterns : Elements of Reusable Object Oriented Software” , Addison Wesley § Pipe & Filter Pattern, http://www.codeproject.com/cs/design/PipesAndFilters.asp § Reflection Pattern, http://www.codeproject.com/csharp/introreflection.asp
  95. 95. 참고자료 § “Soc in motion” http://www.betaversion.org/~stefano/linotype/news/143/ § FileSystemWatcher.NotifyFilter http://msdn2.microsoft.com/en- us/library/system.io.filesystemwatcher.notifyfilter(VS.80).aspx
  96. 96. 참고자료 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)
  97. 97. 참고자료 Robert C. Martin Principles of Package Architecture (Design Principles and Design Pattern s) 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
  98. 98. Question? 이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다. This work is licensed under Creative Commons Korea Attribution 2.0 License.
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×