개념: 디자인에서 코드로 맵핑
이 가이드라인은 디자인에서 구현으로 이동하기 위한 일부 옵션을 설명하고 접근 방식의 이점 및 약점에 대해 설명합니다.
관계
관련 요소
기본 설명

소개

디자인은 확실하게 구현할 수 있도록 시스템을 충분히 정의해야 합니다. 충분히 구성하는 것은 프로젝트마다, 그리고 회사마다 다릅니다.

어떤 경우에는 디자인이 구현자가 진행할 수 있을 만큼만 정교한 스케치와 유사합니다("스케치 및 코드" 접근 방식). 스펙 정도는 구현자의 전문 지식, 디자인의 복잡도, 디자인이 잘못 해석될 수 있는 위험성에 따라 다릅니다.

다른 경우에, 디자인이 자동으로 코드로 변환될 수 있을 정도로 디자인이 정교합니다. 여기에는 일반적으로 언어 및/또는 환경 특정 시맨틱을 표시하기 위한 표준 UML 확장이 포함됩니다.

디자인은 다음과 같이 계층 구조를 가질 수 있습니다.

  • 전체 시스템을 스케치하는 상위 레벨 디자인 모델
  • 시스템 내에서 필요한 인터페이스와 주요 서브시스템 동작을 명확하게 지정하는 서브시스템 스펙 모델
  • 서브시스템 내부사항에 대한 자세한 디자인 모델

개발 사례는 디자인 모델이 프로젝트의 특정 프로세스에서 실현되는 방법과 모델이 다른 모델 및 구현과 관련되는지 여부/관련 방법을 정의해야 합니다. 세부사항은 프로젝트 가이드라인에서 캡처해야 합니다.

아래의 섹션에서는 디자인과 구현을 관련짓는 다른 옵션을 설명하고 접근 방식의 이점 및 약점에 대해 설명합니다.

스케치 및 코드

디자인에 대한 하나의 공통적인 접근 방식은 어느정도 추상적인 레벨에서 디자인을 스케치하고 바로 코드로 이동하는 것입니다. 디자인 모델의 유지보수는 수동으로 이루어집니다.

이 접근 방식에서는 디자인 클래스가 몇몇 코드 레벨 클래스의 추상이 되어야 합니다. 각각의 디자인 클래스를 하나의 "헤드" 클래스에 맵핑할 것을 권장합니다. 그러면 이 헤드 클래스는 다시 몇몇 "헬퍼" 클래스를 사용하여 해당 동작을 수행합니다. "헬퍼" 클래스를 사용하여 복잡한 속성을 구현하거나 오퍼레이션 구현에 필요한 데이터 구조를 빌드할 수 있습니다. 디자인에서는 "헬퍼" 클래스를 모델링하지 않고 헤드 클래스에 정의된 주요 속성, 관계 및 오퍼레이션만 모델링합니다. 이와 같은 모델의 목적은 구현에서 완료될 수 있는 세부사항을 추상화하는 것입니다.

이 접근 방식은 다른 디자인 모델 요소에 적용되도록 확장됩니다. 예를 들어, 코드 레벨 인터페이스보다 더 추상적인 디자인 인터페이스를 가질 수 있습니다.

라운드트립 엔지니어링

라운드트립 엔지니어링 환경에서는 디자인 모델이 코드의 시각적 표시가 되는 세부사항 레벨로 전개됩니다. 코드 및 해당되는 시각적 표시는 동기화됩니다(도구 지원 사용).

다음은 디자인 모델을 라운드트립 엔지니어링 컨텍스트로 표시하기 위한 일부 옵션입니다.

상위 레벨 디자인 모델 및 자세한 디자인 모델페이지의 맨 위로

이 접근 방식에는 두 레벨의 디자인 모델이 유지보수됩니다. 각각의 상위 레벨 디자인 요소는 라운드트립된 모델의 하나 이상의 세부 요소에 대한 추상입니다. 예를 들어, 디자인 클래스는 이전에 설명한 "스케치 및 코드" 접근 방식에서와 같이 하나의 "헤드" 클래스를 몇몇 "헬퍼" 클래스에 맵핑할 수 있습니다. 상위 레벨 디자인 모델 요소에서 라운드트립 모델 요소로의 추적성은 두 모델 사이에 일관성을 유지하는 데 도움이 될 수 있습니다.

이는 덜 중요한 세부사항을 추상화하는 데 도움이 될 수 있지만 모델 사이의 일관성 유지에 필요한 노력에 대해 이 이점의 밸런스를 조절해야 합니다.

단일 전개 디자인 모델페이지 맨 위로

이 접근 방식에는 단일 디자인 모델이 있습니다. 디자인 요소의 초기 스케치는 코드와 동기화될 수 있을 때까지 전개됩니다. 디자인 유스 케이스 실현을 설명하는 데 사용되는 다이어그램과 같이, 다이어그램은 초기에 스케치된 디자인 클래스를 참조하지만 결국은 언어 특정 클래스를 참조합니다. 디자인에 대한 상위 레벨 설명은 다음과 같이 필요에 따라 유지보수됩니다.

  • 시스템 논리 구조의 다이어그램
  • 서브시스템/컴포넌트 스펙
  • 디자인 패턴 / 메커니즘

이와 같은 모델은 구현과의 일관성 유지에 더 쉽습니다.

스펙 및 실현(realization) 모델

관련된 접근 방식은 클라이언트 구현이 주요 서브시스템에 대해 컴파일할 수 있을 때까지 자세하게, 그 서브시스템에 대한 스펙 측점에서 디자인을 정의하는 것입니다.

서브시스템 실현(realization)의 자세한 디자인은 이 스펙 모델과 별도로 모델링하고 유지보수할 수 있습니다.

서브시스템 스펙 및 실현에 관련된 가이드라인과 가이드라인 사용 시기는 중간 산출물 가이드라인: 서브시스템 정의를 참조하십시오.