Wednesday, December 27, 2006

 

Data, Processor, Decision (DPD) model refine.

Data, Processor, Decision (DPD) 모델을 이용하여 실제로 소프트웨어가 어떻게 설계되는지를 상상해보자.

YanneCompiler를 DPD 모델을 이용하여 설계한다고 하면, 먼저 입력 소스 파일을 Parsing 하여 Parse Tree와 Symbol Table을 생성해야 한다. Parse Tree와 Symbol Table은 다시 Symbol Resolver에 의해 사용되며, Symbol Resolver는 완성된 Parse Tree를 출력한다. 데이터 흐름도는 다음과 같다.

Source File(input, D) --> Parser(P) --> Symbol Table & Parse Tree(D)
--> Symbol Resolver (P) --> Parse Tree(D) --> ...

이 예에서 몇 가지 관찰할 것이 있다. 첫째, 데이터(DATA) 모델은 실제로는 DATA TYPE, 즉 Class를 의미한다. 둘째, Processor는 특정 Class의 데이터 오브젝트를 입력으로 받아, 특정 Class의 데이터 오브젝트를 출력으로 생성한다. 위 다이어그램에서 Source File은 "filename"을 의미할 수도 있고, 아니면 메모리에 저장된 "text file"을 의미할 수도 있다. 여기서는 파일 이름이 입력으로 사용된다고 가정하자. Parser Processor는 string class의 한 오브젝트인 "파일이름"을 입력으로 받아 내부에서 Parsing을 수행하여 Symbol Table class, Parser Tree class 형의 오브젝트를 출력으로 생성한다.

이 경우, Data Processor는 다음과 같은 Attribute를 가지게 된다.

(Data Processor는 일반적인 함수와 거의 같은 인터페이스와 기능을 가진다.)


Data Processor {
Input parameter (iname1, iclass1), (iname2, iclass2), ...
Output parameter (oname1, oclass1), (oname2, oclass2), ...

Internal Service Methods.
}

또한 Processor는 입력 class와 출력 class에 대한 정보를 미리 가지고 있어야 한다. 그렇게 해야 Service Method들이 입/출력 class들을 가공할 수 있다.

Processor의 입/출력 데이터와 연관되는 attribute는 데이터 형이다. 위에서는 Class라고 간단히 언급했지만, 실제로 하나의 데이터형(Class)는 다른 여러 class들의 관계속에서 만들어진다. 예를 들면, double class를 이용하여 row/column vector class를 만들고, 다시 vector class를 이용하여 matrix를 만드는 것처럼 말이다. 위 YanneCompiler 예에서 Symbol Table class는 SymbolTableEntry class를 이용하여 구성되며, SymbolTableEntry class는 다시 Parameter, Method, Variable class 같은 하위 class를 이용하여 생성된다. 이들 class들은 다시 string, integer, double 같은 기본 데이터형으로 이루어지고.. 따라서 DPD에서 Data에 연관되는 것은 object를 modeling 하기 위한 class의 구현에 초점이 맞추어진다. class의 구현은 여러가지 요소로 이루어지는데, 중요한 것은 1) 구성 class간의 연관 관계(inheritance, use), 2) 각 class를 구성하는 variable 및 method들의 구성이다.

Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?