UML(Unified Modeling Language)
    요구 분석, 시스템 설계, 시스템 구현 등 등 일련의 과정에서 사용되는 모델링 언어로 이 세 단계 과정에서 발생하는 개발자간의 의사 소통의 불일치를 해소할 수 있다. 또한 모델링에 대한 표현력이 강하고 비교적 모순이 적은 논리적인 표기법(notation)을 가진 언어라는 장점도 갖는다. 따라서 개발자간의 의사 소통이 쉬워지며 생략되거나 불일치되는 모델링 구조에 대한 지적도 용이하다. 물론, 개발하려는 시스템 규모가 크거나 작거나 상관없이 모두 적용가능하다.
클래스 다이어그램
  • 여러 다이어그램 중에서도 디자인 패턴을 이해하는데 필수적인 논리적인 뷰(logical view)에 포함된 다이어그램으로 객체지향 방법론의 중심이다.
  • 시스템에 존재하는 객체의 타입과 타입 간의 정적인 관계(static relationship)를 기술한다.
  • 정적인 관계 : 어소시에이션(association), 서브타입(subtype), 클래스 이름(name), 어트리뷰트(attribute), 오퍼레이션(operation) 등
  • 유스케이스 다이어그램을 통한 요구 분석 과정이 선행되어야 함
  • 클래스 다이어그램을 그리는 과정
    컨셉추얼(Conceptual) 다이어그램 : 도메인(domain) 개념을 간략화시키는 정도의 클래스 다이어그램으로 실제 구현은 거의 고려하지 않고 개념적인 표기에만 중점을 둔다.
    스페시피케이션(Specification) 다이어그램 : 클래스 간의 인터페이스를 중심으로 설계되며 이 단계에서도 구체적인 구현과정을 고려하지 않는다. 따라서 특정 언어에 의존적이지 않은 비교적 포괄적인 개념이다.
    임플리멘테이션(Implementation) 단계 : 비로소 상세 설계 작업이 이뤄지는 동시에 프로그래밍 언어를 고려한 세밀한 설계가 이루어진다.
어소시에이션(association)
    클래스간의 연관 관계를 표시한다. 둘 혹은 그 이상의 클래스 간에 맺어진 의존 관계를 의미하며, 하나 이상의 클래스에 대한 레퍼런스로도 사용된다. 시스템의 요구 분석서를 이용하면 클래스의 어소시에이션을 추출하는데 도움이 된다. 주로, 요구 사항 구문에서 서술적인 문장이 클래스 다이어그램의 어소시에이션으로 대응된다.
멀티플러서티(multiplicity)
  • 주어진 연관 관계에 포함되는 대상 클래스가 몇 개인지 제시한다.
  • 쓰이는 위치는 해당 클래스의 어소시에이션 표시부 근처이며, 표현양식은 0,1 등의 숫자로 직접 표기하는 방식, *을 이용해 0이상의 개수를 표기하는 방식, 3..*과 같은 형태로 개수의 특정 범위를 설정하는 방식 등이 있다.
어트리뷰트(attribute)
  • 각각의 객체가 가진 속성, 즉 실제 프로그래밍 언어에서 클래스에 포함된 변수를 가리킨다. 클래스 다이어그램에서 클래스는 큰 사각형 형태로 표시되며 첫 줄에는 클래스 이름, 둘째 줄에는 어트리뷰트, 마지막 줄에는 오퍼레이션이 포함된다.
  • '어트리뷰트 이름:어트리뷰트 타임 = 지정값' 형식으로 표현된다.
오퍼레이션(operation)
  • 해당 클래스가 수행하는 프로세스나 함수를 의미하며 다른 말로 멤버 함수 또는 메쏘드라고 부르기도 한다.
  • '오퍼레이션 이름(매개 변수) : 리턴 타입' 형식으로 표현된다.
제너럴라이제이션(generalization)
    상속 개념을 이용한 클래스의 구성
제약 사항(constraints rule)
  • 클래스 간에 유지되어야 할 조건을 표시하는 것,
  • '{constraint rule}' 형식으로 표현된다.
스테레오 타입(stereotype)과 다중/동적 분류(multiple and dynamic classification)
  • 스테레오 타입은 객체 또는 클래스의 종류를 나타내며 보다 상위 개념에서 객체를 분류하는 개념이다.
  • 예를 들어 인터페이스, 컨트롤 등의 기능을 수행하는 클래스를 표시하는데 사용된다.
  • '<>' 형식으로 표현된다.
  • 다중/동적 분류 방식은 복잡한 객체지향 시스템을 설계할 때 객체를 분류하는 방식으로 사용된다.
  • 다중 분류 방식은 하나의 상위 클래스에 따른 여러 서브타입을 구성하는 원리를 이용한다. 다중 분류 기법을 사용하면 한 객체가 여러 타입으로 묘사될 수 있다.
  • 동적 분류 방식은 기본 원리는 다중 분류 방식과 유사하지만 런타임에 동적으로 서브타입을 적용시킬 수 있는 특성이 있다. 결국, 한 객체가 지정된 서브타입 안에서 동적으로 타입을 변화시킬 수 있다.
어그리게이션과 컴포지션(aggregation and composition)
  • 어그리에이션은 어소시에이션의 일종으로, 어소시에이션은 두 객체가 동등한 입장에서 상호 참조하는 관계인데 반해 어그리게이션은 전체와 부분을 표시하는 포함 관계를 나타낸다.
  • 컴포지션은 어그리게이션보다 다양한 의미를 내포하고 있다. 예를 들어, 하나의 전체 객체에 컴포지션 관계를 구성하는 부분 객체가 속한 개념이다. 따라서 전체 객체의 생성과 소멸은 그 객체와 컴포지트 관계에 있는 객체에게 절대적인 영향을 끼친다.
인터페이스와 추상 클래스(interface and abstract classes)
  • Generalization은 상속을 의미하며 Refinement는 인터페이스 구현을 의미한다. 또한 Dependency는 구체적 클래스에서 인터페이스 클래스를 사용할 때 표현하는 용어이다.
  • 추상 클래스는 서브 클래스의 공통된 성질을 슈퍼 클래스로 추출하기 위해 사용되는 클래스로, 프로토타입만 정의하는 메쏘드 선언과 어트리뷰트를 가질 수 있다. 하지만 클래스의 객체를 생성할 수 없다.
  • 추상 클래스가 갖는 장점은 첫째, 개념적으로 존재하는 객체를 모델링하거나 서브 클래스 간의 공통 특성에 대한 정의를 통해 재사용성을 증가시키는 것이다. 둘째, 유지 보수 시에 수정하거나 보완할 대상을 최소화시킬 수 있어 모듈의 확장성을 증가시키기도 한다.
  • 인터페이스는 자바 환경을 전제로 하는데, 메쏘드 선언만 갖고 있을 뿐, 실제 구현 코드는 존재하지 않으므로 구현에 관한 개념이 아니며 주된 목적이 클래스 간의 인터페이스를 선언하는 것이다.
  • 인터페이스는 객체지향 방법론에서 주장하는 어떤 변화가 생겼을 때 그에 따른 변경 작업을 가능한 줄이기 위한 해결 방안인 클래스 간의 상호 의존성을 최소화하자는 이론과도 부합한다.

'Programming > UML' 카테고리의 다른 글

[안영회의 UML 강좌19] - System Architecture - 200308  (0) 2006.04.07

Posted by 영웅기삼
,