객체지향 설계 유형 및 도메인 객체 인터페이스를 이용한 논문 투고 관리 시스템 설계 및 구현 Design and Implementation of a Paper Submission Management System Using Domain Object Interface and Object Oriented Design Patterns원문보기
최근 소프트웨어 아키텍처 설계 시 소프트웨어의 재사용성 및 유지보수 비용의 효율성을 고려한 객체지향 디자인 패턴의 관심이 증가하고 있다. 따라서 본 논문은 객체지향 디자인 패턴 기반의 도메인 객체 인터페이스를 활용하여 특정 도메인에 해당하는 논문 투고 관리 시스템을 설계하고, 아울러 자바와 XML을 이용하여 구현한 시스템을 제안한다. 제안하는 시스템은 GoF 디자인 패턴을 적용하여 하향식과 상향식을 적절히 조합한 시스템 전체 아키텍처를 설계한 후에 상향식으로 각각의 시스템 객체들을 조립하여 구현하는 방식을 적용한다. 또한 본 시스템은 시스템의 데이터 자체에 대해서는 XML을 통해 각종 퍼시스턴스 객체(Persistent Object)의 형태로 변환되도록 하며, 도메인 객체를 클래스로 자동 생성하는 방식을 채택하지 않음으로써 시스템의 복잡성을 최소화한다. 마지막으로 시스템의 구현은 일반 클라이언트/서버 환경에서도 사용 가능하지만, 사용자의 편의성 및 일관성을 고려해 일반 웹브라우저에 내장된 XSLT를 통해 시스템 사용자 GUI를 구현한다.
최근 소프트웨어 아키텍처 설계 시 소프트웨어의 재사용성 및 유지보수 비용의 효율성을 고려한 객체지향 디자인 패턴의 관심이 증가하고 있다. 따라서 본 논문은 객체지향 디자인 패턴 기반의 도메인 객체 인터페이스를 활용하여 특정 도메인에 해당하는 논문 투고 관리 시스템을 설계하고, 아울러 자바와 XML을 이용하여 구현한 시스템을 제안한다. 제안하는 시스템은 GoF 디자인 패턴을 적용하여 하향식과 상향식을 적절히 조합한 시스템 전체 아키텍처를 설계한 후에 상향식으로 각각의 시스템 객체들을 조립하여 구현하는 방식을 적용한다. 또한 본 시스템은 시스템의 데이터 자체에 대해서는 XML을 통해 각종 퍼시스턴스 객체(Persistent Object)의 형태로 변환되도록 하며, 도메인 객체를 클래스로 자동 생성하는 방식을 채택하지 않음으로써 시스템의 복잡성을 최소화한다. 마지막으로 시스템의 구현은 일반 클라이언트/서버 환경에서도 사용 가능하지만, 사용자의 편의성 및 일관성을 고려해 일반 웹브라우저에 내장된 XSLT를 통해 시스템 사용자 GUI를 구현한다.
Recently, the interest on object oriented design patterns has been increased considering to reusability of software and efficiency of maintenance expense in designing software architecture. In this paper, we design the paper submission management system applicable to specific domain using domain obj...
Recently, the interest on object oriented design patterns has been increased considering to reusability of software and efficiency of maintenance expense in designing software architecture. In this paper, we design the paper submission management system applicable to specific domain using domain object interface based on object oriented design patterns, and then implement it with Java and XML. The proposed system applies method of implementation by assemblying each system objects with upward after system entire architecture design by combining properly downward method and upward method and applies with GoF Design pattern. As well as, we convert domain data of system into the form of various persistent objects through XML, and minimize the complexity of system by not adopting method that generates domain object as in Class with automatic. Finally, the implementation of our system can be used in general C/S environment, but we implement system user GUI using the XSLT built in general web browser in consideration for user convenience and consistency.
Recently, the interest on object oriented design patterns has been increased considering to reusability of software and efficiency of maintenance expense in designing software architecture. In this paper, we design the paper submission management system applicable to specific domain using domain object interface based on object oriented design patterns, and then implement it with Java and XML. The proposed system applies method of implementation by assemblying each system objects with upward after system entire architecture design by combining properly downward method and upward method and applies with GoF Design pattern. As well as, we convert domain data of system into the form of various persistent objects through XML, and minimize the complexity of system by not adopting method that generates domain object as in Class with automatic. Finally, the implementation of our system can be used in general C/S environment, but we implement system user GUI using the XSLT built in general web browser in consideration for user convenience and consistency.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
[기능] 논문의 이전, 현재, 다음 상태를 각각 가지고 있으며, 되돌아가기, 다음으로 넘어가기, 논문 취소하기, 수정하기 등의 구현을 한다. 또한 특정 상태마다 만족해야할 조건이 모두 다르므로 상태에 따라서 트랜잭션이 처리될지 여부를 판단한다. 이 때 트랜잭션 처리는 다음에 나오는 커맨드 패턴을 이용하며, 실제 이러한 트랜잭션들은 옵저버 패턴의 트랜잭션 큐에 들어 있다.
본 논문에서 이러한 문제점을 보완하고자 디자인 패턴을 사용한 도메인 객체 인터페이스(Domain Object Interface, DOI)와 XML을 이용한 특정 도메인 구현인 논문 투고 관리 시스템을 설계 및 구현한다. 제안하는 시스템은 GoF 디자인 패턴을 적용하여 하향식과 상향식 구현을 적절히 조합하여 시스템 전체 객체를 구성한 뒤에 상향식으로 각각의 시스템 객체들을 조립해서 사용하는 방식을 따른다.
본 논문에서는 자바스크립트를 이용하는 것은 웹브라우저 화면상에 제안된 논문 투고 관리 시스템의 사용자 GUI를 설계하기 위함이다. 본 논문에서 이용되는 데이터들은 모두 DOM을 통해 제공되며 이 때 문서 형태로 데이터가 추상화 되어 있으므로 별도의 인터프리터 패턴들을 직접 구현하여 사용할 필요 없이 화면에 출력할 때 DOM이나 SAX 등을 사용하여 값을 추출하거나 XSL의 두 가지 기술인 XSLT, XSL-FO를 이용하여 다른 원하는 형태로 변경이 매우 용이하도록 설계하고 있다.
제안 방법
또한 시스템 안에서 구동되는 각각의 데이터들은 도메인의 정의마다 달라질 수밖에 없기에 데이터의 다양한 효율성 및 설계자가 원하는 관점을 보다 용이하게 표현할 수 있도록 XML을 이용하고 있다. 데이터 자체에 대해서는 XML을 통해 각종 퍼시스턴스위치에 어울리는 형태로 변환되도록 하며, 도메인 객체를 클래스로 생성하는 방식의 자동화를 거치지 않음으로써 시스템의 복잡도를 낮추었다. 일반적으로 대부분의 구현들은 클래스를 반드시 생성하여야 된다는 관점을 가지고 있으나 제안하는 시스템 구현에서는 성능보다 유연성을 증대시키는 것이 주요 핵심이므로, XML에 대해서 문서 객체 모델(Document Object Model, DOM)의 문서 객체를 전송하고 문서 자체를 해석하는 방식을 따른다.
첫째, 생성패턴(Creational Pattern)으로 객체 생성과정을 추상화 하는 디자인 패턴으로 클래스 정의와 객체 생성 방식을 구조화 및 캡슐화한다. 둘째, 구조화 패턴(Structural Pattern)으로 서로 다른 기능을 지닌 객체들이 협력을 통하여 큰 구조를 형성할 수 있도록 일반적인 구성방식을 제시한다. 마지막으로 행위 패턴(Behavioral Pattern)으로 객체들의 행위를 조직화하고 관리하며 그들 사이의 의사소통을 기술한다[5].
아울러 제안하는 시스템에서는 도메인 객체의 메타 데이터를 테이블 형태가 아닌 DOM 트리구조 형태로 나타내며, 이로 인해 각각의 객체 단계를 연결하고자 할 경우 각각의 위치를 지정해 줘야 하거나 인덱스를 통한 프로퍼티 접근을 해야 하는 단점을 극복하고 한 번의 컴파일로 즉시 접근이 가능하도록 XPath를 이용하며, 반환되는 값도 노드 또는 노드 리스트가 반환되도록 한다. 또한 시스템 내에서 사용된 데이터들은 모두 DOM을 통해 문서 객체 형태로 데이터가 추상화되어 있으므로 별도의 인터프리터(Interpreter) 패턴을 구현하지 않고, 사용자의 편의성 및 일관성을 고려해 일반 웹브라우저에 내장된 XSLT를 통해 시스템 사용자 GUI를 구현하며, 화면의 깜빡거림을 제거하기 위해서 AJAX를 사용하여 구현한다.
본 논문에서는 자바스크립트를 이용하는 것은 웹브라우저 화면상에 제안된 논문 투고 관리 시스템의 사용자 GUI를 설계하기 위함이다. 본 논문에서 이용되는 데이터들은 모두 DOM을 통해 제공되며 이 때 문서 형태로 데이터가 추상화 되어 있으므로 별도의 인터프리터 패턴들을 직접 구현하여 사용할 필요 없이 화면에 출력할 때 DOM이나 SAX 등을 사용하여 값을 추출하거나 XSL의 두 가지 기술인 XSLT, XSL-FO를 이용하여 다른 원하는 형태로 변경이 매우 용이하도록 설계하고 있다. 아울러 본 시스템에서는 자바스크립트를 사용할 수 있으므로 Prototype 형태로 클래스를 정의하고, 화면의 깜빡거림을 제거하기 위해서 자바스크립트의 일부인 AJAX(Asynchronous JavaScript+XML)[9]를 이용하여 구현한다.
본 논문에서는 DOI 설계를 위해 크게 5가지 패턴 즉, 팩토리 메서드(Factory Method) 패턴, 싱글톤(Singleton) 패턴, 프록시(Proxy )패턴, 옵저버(Observer) 패턴, 템플릿 메서드(Template Method) 패턴을 적용하고 있다.
본 논문에서는 DOI를 기반으로 논문 투고 관리 시스템을 설계하기 위해 크게 3가지 패턴 즉, 프로토타입(Prototype) 패턴 및 스테이트(State) 패턴, 커맨드(Command) 패턴을 적용하고 있다.
본 논문에서는 기본적으로 객체 지향 디자인 패턴 및 DOI를 이용한 논문 투고 관리 시스템을 제안하며, 특정 DOI를 이용한 논문 투고 관리에 이용되는 데이터의 입출력과 DDL 및 DML의 기본적인 구문, 데이터 전달, 오류 반환 및 클래스 파일 생성을 하지 않고, 클래스와 연관된 CRUD와 데이터 전송 전체를 도메인 객체를 기반으로 제안하는 시스템을 설계 및 구현한다. 그림 1은 객체 지향 디자인 패턴을 이용하여 설계한 전체 시스템의 패턴을 나타내며, 논문 투고 관리 시스템은 크게 도메인 데이터의 생성과 처리 및 저장 공간을 설계한 DOI 부분과 특정 도메인의 응용을 위한 논문 투고 관리 시스템의 도메인 객체를 처리하는 부분으로 나뉘어 설계한다.
본 논문에서는 디자인 패턴을 사용하여 DOI와 특정 도메인인 논문 투고 관리 시스템을 설계 및 구현 하였다. 제안하는 시스템 설계를 위해 GoF 디자인 패턴을 적용하여 하향식과 상향식 구현을 적절히 조합하여 시스템 전체 객체를 구성한 뒤에 상향식으로 각각의 시스템 객체들을 조립해서 사용하는 방식을 활용 하였다.
본 논문에서는 메타 데이터를 객체화하기 위해서 반영(Reflection)기법 대신에 DOM 객체를 이용한다. 이는 시스템 코드를 변경하지 않고 각 데이터의 형태를 변경할 수 있도록 해주며 각각의 타입 검사를 DOM객체에서 제공되는 유효성 검사로 모두 대체할 수 있게 한다.
본 논문의 관련연구로는 크게 객체지향 디자인 패턴과 DOI를 위한 메타 데이터, 그리고 기존의 논문 투고 관리 시스템으로 나누어 살펴본다.
또한 값의 유효성 검사는 XML이 아닌 JSON을 사용하여 적용했으며 JSON과 XML 간의 변환은 매우 용이하므로, JSON으로 Rule을 적용하거나 XML로 규칙을 적용하여 값을 검사하거나 도메인 객체에 명시한 제약조건으로 오류를 반환할 수 있다. 본 시스템 구현에서는 개발자의 융통성을 고려하여 JSON을 사용하여 규칙을 작성하고, 각각의 값을 매번 유효성 검사 하지 않고, 동일한 인터페이스로 값으로 유효성 검사 하도록 구현한다.
그림 11은 제안한 시스템의 기능 모듈을 나타낸 것이다. 본 시스템은 크게 5가지의 모듈로 구분하며, 그 중 사용자는 회원 모듈, 회비 모듈, 논문 모듈을 사용하고, 관리자는 코드 모듈, 테이블 모듈을 추가하여 관리할 수 있도록 구현한다.
XML Fragment로 직접 연결하려면, 각각의 XML을 출력할 때 XSLT를 적용하여 화면에 출력하도록 한다. 본 시스템의 경우 단일 값이 연결되므로 단순히 XSLT를 통해서 화면 출력 시 이미지가 출력되도록 하였다.
본 논문에서 이용되는 데이터들은 모두 DOM을 통해 제공되며 이 때 문서 형태로 데이터가 추상화 되어 있으므로 별도의 인터프리터 패턴들을 직접 구현하여 사용할 필요 없이 화면에 출력할 때 DOM이나 SAX 등을 사용하여 값을 추출하거나 XSL의 두 가지 기술인 XSLT, XSL-FO를 이용하여 다른 원하는 형태로 변경이 매우 용이하도록 설계하고 있다. 아울러 본 시스템에서는 자바스크립트를 사용할 수 있으므로 Prototype 형태로 클래스를 정의하고, 화면의 깜빡거림을 제거하기 위해서 자바스크립트의 일부인 AJAX(Asynchronous JavaScript+XML)[9]를 이용하여 구현한다.
아울러 제안하는 시스템에서는 도메인 객체의 메타 데이터를 테이블 형태가 아닌 DOM 트리구조 형태로 나타내며, 이로 인해 각각의 객체 단계를 연결하고자 할 경우 각각의 위치를 지정해 줘야 하거나 인덱스를 통한 프로퍼티 접근을 해야 하는 단점을 극복하고 한 번의 컴파일로 즉시 접근이 가능하도록 XPath를 이용하며, 반환되는 값도 노드 또는 노드 리스트가 반환되도록 한다. 또한 시스템 내에서 사용된 데이터들은 모두 DOM을 통해 문서 객체 형태로 데이터가 추상화되어 있으므로 별도의 인터프리터(Interpreter) 패턴을 구현하지 않고, 사용자의 편의성 및 일관성을 고려해 일반 웹브라우저에 내장된 XSLT를 통해 시스템 사용자 GUI를 구현하며, 화면의 깜빡거림을 제거하기 위해서 AJAX를 사용하여 구현한다.
제안된 시스템은 복잡한 문서 처리와 논문 심사 흐름의 투명성 확보뿐만 아니라 업무 흐름의 변화와 관련된 요구사항을 빠르게 대처할 수 있다는 장점을 제시하고 있다. 제안된 시스템은 크게 시스템 사용자가 직접 업무를 처리하는 웹 클라이언트 부분과 업무 흐름을 관리하는 프로세스 관리 시스템으로 구분하였다. 프로세스 관리 시스템은 업무 흐름을 정의하고 실행시키며 관리하는 역할을 담당하고 정의된 업무 흐름에 따라서 각 사용자는 인터넷 접속을 통해 업무를 수행하는 시스템을 제안하였다.
본 논문에서는 디자인 패턴을 사용하여 DOI와 특정 도메인인 논문 투고 관리 시스템을 설계 및 구현 하였다. 제안하는 시스템 설계를 위해 GoF 디자인 패턴을 적용하여 하향식과 상향식 구현을 적절히 조합하여 시스템 전체 객체를 구성한 뒤에 상향식으로 각각의 시스템 객체들을 조립해서 사용하는 방식을 활용 하였다. 즉, 설계를 하는 도중 발견된 문제에 대해서는 상향식으로 정의 하였으며, 주요 골자에 해당하는 XML과 디자인 패턴을 이용하는 것에 대해서는 하향식으로 적용을 하고, 특정 도메인을 그 위에 둘 때 상향식으로 적용할 수 있도록 하였다.
본 논문에서 이러한 문제점을 보완하고자 디자인 패턴을 사용한 도메인 객체 인터페이스(Domain Object Interface, DOI)와 XML을 이용한 특정 도메인 구현인 논문 투고 관리 시스템을 설계 및 구현한다. 제안하는 시스템은 GoF 디자인 패턴을 적용하여 하향식과 상향식 구현을 적절히 조합하여 시스템 전체 객체를 구성한 뒤에 상향식으로 각각의 시스템 객체들을 조립해서 사용하는 방식을 따른다. 즉, 설계를 하는 도중 발견된 문제에 대해서는 상향식으로 정의를 하지만 주요 핵심에 해당하는 XML과 디자인 패턴을 이용하는 것에 대해서는 하향식으로 적용하고, 특정 도메인을 상위에 위치시킬 때는 상향식으로 적용한다.
제안하는 시스템 설계를 위해 GoF 디자인 패턴을 적용하여 하향식과 상향식 구현을 적절히 조합하여 시스템 전체 객체를 구성한 뒤에 상향식으로 각각의 시스템 객체들을 조립해서 사용하는 방식을 활용 하였다. 즉, 설계를 하는 도중 발견된 문제에 대해서는 상향식으로 정의 하였으며, 주요 골자에 해당하는 XML과 디자인 패턴을 이용하는 것에 대해서는 하향식으로 적용을 하고, 특정 도메인을 그 위에 둘 때 상향식으로 적용할 수 있도록 하였다. 본 논문에서의 도메인 데이터는 도메인 객체들의 집합이며 도메인 스텁은 초기화 되지 않은 도메인 객체의 메타 정보를 가진 선언이며 이것은 XML로 표현하였다.
감마(Gamma)는 디자인 패턴을 3가지로 분류하고 있다. 첫째, 생성패턴(Creational Pattern)으로 객체 생성과정을 추상화 하는 디자인 패턴으로 클래스 정의와 객체 생성 방식을 구조화 및 캡슐화한다. 둘째, 구조화 패턴(Structural Pattern)으로 서로 다른 기능을 지닌 객체들이 협력을 통하여 큰 구조를 형성할 수 있도록 일반적인 구성방식을 제시한다.
제안된 시스템은 크게 시스템 사용자가 직접 업무를 처리하는 웹 클라이언트 부분과 업무 흐름을 관리하는 프로세스 관리 시스템으로 구분하였다. 프로세스 관리 시스템은 업무 흐름을 정의하고 실행시키며 관리하는 역할을 담당하고 정의된 업무 흐름에 따라서 각 사용자는 인터넷 접속을 통해 업무를 수행하는 시스템을 제안하였다.
대상 데이터
즉, 설계를 하는 도중 발견된 문제에 대해서는 상향식으로 정의 하였으며, 주요 골자에 해당하는 XML과 디자인 패턴을 이용하는 것에 대해서는 하향식으로 적용을 하고, 특정 도메인을 그 위에 둘 때 상향식으로 적용할 수 있도록 하였다. 본 논문에서의 도메인 데이터는 도메인 객체들의 집합이며 도메인 스텁은 초기화 되지 않은 도메인 객체의 메타 정보를 가진 선언이며 이것은 XML로 표현하였다. 도메인 스텁 선언 후에 DOI를 통해 도메인 객체가 되며, 이 후 부터 프로세스에 참여할 수 있다.
이론/모형
2) virtual proxy : 실제 객체의 전체 내용을 담게 되면 성능상의 하락이 있으므로 캐시로써 동작하도록 한다. 본 연구에서는 virtual proxy를 이용한다.
성능/효과
도메인 스텁 선언 후에 DOI를 통해 도메인 객체가 되며, 이 후 부터 프로세스에 참여할 수 있다. 마지막으로 제안하는 시스템은 단지 하나의 트랜잭션만을 가지고 있는 시스템이며 DOI를 기반으로 적용한 특정 도메인에 대한 구현은 다른 응용 도메인에서도 동일하게 적용할 수 있어 시스템 확장성 및 유연성이 매우 높다고 볼 수 있다.
본 논문에서 제안한 DOI는 특정 DBMS에 제한되어 있지 않으며, MS SQL-Server, MySQL, Oracle 등 다수의 DBMS 상에도 구현이 가능하다.
[7]의 연구에서는 비즈니스 프로세스 관리 시스템(Business Process Management System, BPMS)을 기반으로 하고 있는 온라인 논문 투고 관리 시스템을 제안하였다. 제안된 시스템은 복잡한 문서 처리와 논문 심사 흐름의 투명성 확보뿐만 아니라 업무 흐름의 변화와 관련된 요구사항을 빠르게 대처할 수 있다는 장점을 제시하고 있다. 제안된 시스템은 크게 시스템 사용자가 직접 업무를 처리하는 웹 클라이언트 부분과 업무 흐름을 관리하는 프로세스 관리 시스템으로 구분하였다.
후속연구
향후 연구로는 도메인 객체의 수명 관리를 위해 도메인 객체의 버전관리 및 실시간 모니터링, 또한 RDBMS 스키마가 도메인 객체 스텁과 동기화가 용이하게 이루질 수 있는 동기화 연구가 진행될 계획이다.
질의응답
핵심어
질문
논문에서 추출한 답변
디자인 패턴이란 무엇인가?
디자인 패턴은 비슷한 문제에 대한 동일한 코드 조각으로 유연하고, 복잡도 낮은 해결책을 제시하는 일종의 템플릿이다. 핵심은 동적인 코드 적용을 통한 유연성과 확장성 증대에 있다.
메타 데이터란 무엇인가?
메타 데이터는 데이터를 설명하는 데이터로 도메인 스텁(Stub)의 정의 자체를 의미한다. 도메인 객체는 이러한 메타 데이터를 객체화 하는데 사용한다.
감마가 분류한 디자인 패턴 3가지는 무엇인가?
감마(Gamma)는 디자인 패턴을 3가지로 분류하고 있다. 첫째, 생성패턴(Creational Pattern)으로 객체 생성과정을 추상화 하는 디자인 패턴으로 클래스 정의와 객체 생성 방식을 구조화 및 캡슐화한다. 둘째, 구조화 패턴(Structural Pattern)으로 서로 다른 기능을 지닌 객체들이 협력을 통하여 큰 구조를 형성할 수 있도록 일반적인 구성방식을 제시한다. 마지막으로 행위 패턴(Behavioral Pattern)으로 객체들의 행위를 조직화하고 관리하며 그들 사이의 의사소통을 기술한다[5].
참고문헌 (9)
Robert Cecil Martin, "Agile Software Development, Principles, Patterns, and Practices", Prentice Hall, pp.1-529, 2002.
김종수, "네트워크 게임 설계에 있어서 GoF 디자인 패턴 적용에 관한 연구", 동의대학교 학위논문, pp.1-135, 2006.
서영준, "XML 기반한 디자인 패턴 컴포넌트의 설계 및 구현", 경희대학교 학위논문, pp.1-53, 2001.
김운용, 최영근, "디자인 패턴지향 소프트웨어 개발 지원 도구", 한국정보과학회논문지, Vol.28 No.8, pp.555-564, 2002.
김태현, 고승규, 최윤철, "XML, DTD 모호성 제거와 DOM 활용을 위한 디자인 패턴연구", 한국정보과학회논문지, Vol.27 No.2, pp.412-414, 2000.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.