Inclusion Polymorphism 과 UML 클래스다이어그램구조에의거한디자인패턴해석 이랑혁, 이현우, 고석하 rang2guru@gmail.com, westminstor@naver.com, shkoh@cbnu.ac.kr 충북대학교경영정보학과 충북청주시흥덕구개신동 12 번지충북대학교학연산공동기술연구원 843 호 Tel:043-272-4034 55
Keyword : Design patterns, Inclusion Polymorphism, UML Class diagram, Classification - Abstract 디자인패턴은새롭게만들어지는것이아니라기존의검증된지식, 관용법, 원칙들을체계화한것이다. 다시말하면디자인패턴은특정한문제를해결하기위한, 검증된설계방법에이름을붙인것이다. 그러므로적절한디자인패턴사용은 1) 개발자들간의원활한의사소통에도움을주며, 2) 하급자가고급기술을쉽게익힐수있도록할수있다. 3) 또한사용된디자인이나아키텍처를재사용할수있도록하고, 4) 만들어진시스템의유지보수를보다쉽게할수있는등의장점을얻을수있다. 반면에필요하지않은곳에까지디자인패턴을사용하게되면소프트웨어를복잡하고, 유지보수도어렵게만들수있다. 디자인패턴의분류는수많은패턴을비슷한속성을지닌그룹들로조직화하는것이다. 이는개발자가특정문제에맞는디자인패턴을쉽게선택할수있도록도와줄뿐만아니라, 디자인패턴의주요특성을빠르게이해하고간파할수있게한다. 그래서 Beck이디자인패턴을소개한이후 GoF, Buschmann, Grand, Antoy 등은디자인패턴을단순히열거를통해소개하지않고, 각자의기준에따라체계적으로분류하여패턴을설명하고있다. 본연구는객체지향설계의근본개념인 Polymorphism (Inclusion Polymorphism) 과 객체지향소프트웨어설계원칙 그리고이근본원칙들이 UML 클래스다이어그램에나타나는구조적특징에의거해디자인패턴해석을수행하였다. 본연구의목적은 1) 객체지향의근본원칙으로표현되는패턴과 2) 설계자의전문적인 Art를포함하고있는패턴으로분류하는데있다. 56
목차 1. 연구목적 2. 연구범위 3. 관련연구 1. 다형성 (Polymorphism) 의분류 2. 객체지향소프트웨어설계원칙 3. UML Classdiagram 4. 디자인패턴분류 4. 객체지향근본원칙을이용한디자인패턴해석 5. 결론 57
연구목적 본연구는소프트웨어설계시적용되는 객체지향의근본개념 이 UML클래스다이어그램 으로표현된 일반적형태 에의거해기존의디자인패턴을해석한다. 이를통해디자인패턴을 1) 단순히객체지향근본개념을설명하는패턴 2) 전문가적 Art가존재하는패턴 으로그룹화한다. 58
연구범위 객체지향설계의기본원칙 Inclusion Polymorphism (Cardelli1985) 객체지향소프트웨어설계원칙 (Martin2004) UML Class-Diagram 적용 (OMG2005) 해석대상 GoF 디자인패턴 (GoF1995) GRASP 디자인패턴 (Larman1998) 59
관련연구 다형성 (Polymorphism) 의분류 Universal Polymorphism [Cardelli et 1985] Inclusion Polymorphism Parametric Polymorphism Bounded Polymorphism F-Bounded Polymorphism [Canning 1989] Ad-hoc Polymorphism [Cardelli et 1985] Overloading Coercion 60
관련연구 객체지향소프트웨어설계원칙 객체지향소프트웨어설계원칙 (Martin 2004) SRP (Single Responsibility Principle) OCP (The Open-Closed Principle) LSP (Liskov Substitution Principle) DIP (Dependency Inversion Principle) ISP (Interface Segregation Principle) RDP (Repetitiveness Dependency Principle) 61
관련연구 UML Class Diagram 시스템의객체의타입과그들간의존재하는다양한정적관계에대해서기술한다.(Fowler2003) 속성 (attribute) 오퍼레이션 (operation) 연관 (association) 일반화 (Generalization) 의존 (dependency) 62
관련연구 디자인패턴분류 GoF : Design patterns are classified by their scope and purpose Buschmann : Design patterns are classified by their purpose(problem categories) and granularity(pattern categries). Zimmer : GoF patterns are Classified by their relationship. Zimmer defines three categories of relationships: Pattern X uses pattern Y in its solution Pattern X is similar to pattern Y. Pattern X can be combined with pattern Y 63
객체지향기본개념을이용한디자인패턴해석 객체지향설계의기본개념 Inclusion Polymorphism UML Class diagram 객체지향설계원칙 객체지향의기본개념이적용된일반적설계모양 64
객체지향기본개념을이용한디자인패턴해석 객체지향설계의기본개념만으로표현가능한디자인패턴예시 Strategy 패턴은 Inclusion polymorphism 의전형적인형태이다. 65
객체지향기본개념을이용한디자인패턴해석 설계전문가의 Art 가적용되어있는패턴예시 Interpreter 패턴은객체지향설계원칙과 Art 가필요한패턴이다. 66
결론 객체지향의근본개념에포함되는다형성 (Inclusion Polymorphism) 과객체지향설계원칙그리고이근본개념에의해표현된 UML 클래스다이어그램에의거해디자인패턴을분류한결과 1) 근본개념이설계에단순이적용된형태와 2) 객체지향설계의근본원칙에전문가적 Art가적용된패턴으로그룹화할수있었다. 67
참고문헌 [Buschmann1996] Frank Buschmann, R. Meunier, H. Rohnert, P. Sommerland, M. Stal, Pattern- Oriented Software Architecture: A System of Patterns, Addison-Wesley, 1996. [Cardeli1985] Luca Cardelli, Peter Wegner, "On Understanding Types, Data Abstraction, and Polymorphism", Computing Survey, Vol17 n.4, pp471-522, December 1985. [Canning1989] Peter Canning, William Cook, Walter Hill, Walter Olthoff, "F-Bounded Polymorphism for Object-Oriented Programming",ACM, 1989. [Fowler2004]Martin Fowler, UML Distilled Third Edition : A Brief Guide To The Standard Object Modeling Language, Addison-Wesley, 2004. [GoF1995] Erich Camma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns : Elements of Reusable Object-Oriented Software.,Addison Wesley, 1995. [Larman1998] Craig Larman, Appying UML And Patterns, Prentice Hall PTR, 1998. [Liskov1987] Babara Liskov, "Data Abstraction and Hierachy", OOPLSA '87 Addendum to the Proceedings, 1987. [Liskov2000] Babara Liskov, John Gutag, "Program Development In Java : Abstraction, Specification, and Object-Oriented Design", Canada: Addison-Wesley, 2000. [Martin2004] Robert C. Martin, 이용원, 정지호, 김정민역, 소프트웨어개발의지혜 : 원칙, 디자인패턴, 실천방법, 야스미디어,2004. [Zimmer1996] Zimmer, W., Relationships Between Design Patterns, Pattern Languages of Programs 2, Vlissides et. Al., eds., Addison Wesley, 1996 [OMG2005] OMG, Unified Modeling Language : Superstructure, OMG,2005. 68