컴포넌트 아키텍처
컴포넌트 아키텍처 개발 및 사용 사례는 컴포넌트 아키텍처가 독립적이고 대체 가능한 모듈식 컴포넌트를 기반으로 하므로 복잡도를 관리하고 재사용을 촉진하는 데 도움을 줍니다.
관계
관련 요소
기본 설명

컴포넌트 아키텍처 이미지

계층이 있는 컴포넌트 기반 아키텍처

컴포넌트 아키텍처의 의미

컴포넌트 아키텍처는 개념: 컴포넌트에 설명된 대로 대체 가능한 컴포넌트에 기반한 아키텍처입니다. 컴포넌트 아키텍처가 독립적이고 대체 가능한 모듈 컴포넌트를 기반으로 하므로 복잡도를 관리하고 재사용을 촉진하는 데 도움을 줍니다.

아키텍처 강조

유스 케이스는 전체 라이프사이클에 걸쳐 RUP 엔드투엔드를 구동하지만 디자인 활동은 시스템 아키텍처의 개념 중심으로 수행되며 소프트웨어 집약 시스템의 경우에는 소프트웨어 아키텍처 중심으로 수행됩니다. 프로세스 반복의 초기 단계(대부분 정제(Elaboration) 단계)에서는 소프트웨어 아키텍처를 생성하고 확인하는 데 주로 초점을 맞춥니다. 여기서, 소프트웨어 아키텍처는 초기 개발 주기에는 실행 가능한 아키텍처 프로토타입의 양식을 가지고 점차적으로 발전하여 반복의 후기에는 최종 시스템이 됩니다.

실행 가능한 아키텍처는 선택된 시스템 기능 및 특성, 특히 비기능적 요구사항을 만족시키는 것을 시연하기 위해 빌드된 시스템의 부분적인 구현을 의미합니다. 실행 가능한 아키텍처의 목적은 시스템의 완전한 기능 파손에 대한 우려없이 견고한 기반으로 구현/구축(Construction) 단계에 추가될 수 있도록 성능, 처리량, 용량, 신뢰성 및 기타 "기능"에 관련된 위험성을 완화하는 것입니다.

아키텍처(특히, 소프트웨어 아키텍처)의 개념에 대한 소개 및 이 개념이 중요한 이유에 대한 설명은 개념: 소프트웨어 아키텍처를 참조하십시오.

RUP는 아키텍처를 디자인, 개발 및 확인하기 위한 규칙적이고 조직적인 방법을 제공합니다. 여러 아키텍처 보기의 개념에 관련된 아키텍처 설명에 대한 템플리트 및 아키텍처 양식, 디자인 원칙 및 제한조건의 캡처에 대한 템플리트를 제공합니다. 분석 및 디자인 원칙은 아키텍처 선택 방법에 대한 가이드라인뿐만 아니라 아키텍처 제한조건 및 구조적으로 의미있는 요소를 식별하는 데 목적이 있는 특정 활동을 포함합니다. 관리 프로세스는 초기 반복 계획 시 아키텍처의 디자인 및 주요 기술 위험성의 해결책을 고려하는 방법을 표시합니다. 자세한 정보는 프로젝트 관리 원칙 및 역할: 소프트웨어 설계자와 연관된 모든 활동을 참조하십시오.

다음 몇 가지 이유로 아키텍처가 중요합니다.

  • 아키텍처를 통해 복잡도를 관리하고 시스템 무결성을 유지보수하기 위해 프로젝트에 대해 전반적으로 지능적 제어를 얻고 보유할 수 있습니다.

복잡한 시스템은 각 파트의 합계 또는 소규모 독립 전술 결정의 연속 이상입니다. 파트를 조직적으로 구성하기 위해 통합되고 일관된 구조를 가지고 있어야 하며 이해할 수 없을 정도록 복잡도가 "넘치지" 않고 시스템을 확장시키는 방법에 대한 정확한 규칙을 제공해야 합니다.

아키텍처는 디자인 문제를 논의하는 데 사용될 공통 참조 세트, 공통 용어를 확립하여 프로젝트 전체에서의 개선된 커뮤니케이션 및 이해에 대한 수단을 확립합니다.

  • 이는 대규모 재사용을 위한 효율적인 기반이 됩니다.

주요 컴포넌트 및 이들 간의 중요한 인터페이스를 명료하게 표현하면 아키텍처를 통해 재사용(공통 부분을 식별하는 내부 재사용 및 기성 상용 컴포넌트를 결합한 외부 재사용 모두)에 대해 추론할 수 있습니다. 더 큰 규모에서의 재사용도 허용됩니다. 즉, 공통 도메인의 여러 기능성을 다루는 제품 라인과 연관된 아키텍처 자체의 재사용이 허용됩니다.

  • 이는 프로젝트 관리를 위한 기반을 제공합니다.

계획 및 인력 구성은 주요 컴포넌트 라인에 따라 조직됩니다. 근본적인 구조적 결정은 작고 응집된 아키텍처 팀에서 수행되며 이런 결정은 분배되지 않습니다. 개발은 작은 팀 세트에 걸쳐 파티션되며 각각은 하나 또는 여러 개의 시스템 파트를 책임집니다.

컴포넌트 기반 개발

컴포넌트 기반 개발은 다음과 같은 일반 응용프로그램 개발의 변형입니다.

  • 응용프로그램은 다른 팀에 의해 서로 비교적 독립적으로 개발된 별도의 실행 가능 컴포넌트에서 빌드됩니다. RUP에서는 이것을 "어셈블리 컴포넌트"라고 합니다. 자세한 정의는 개념: 컴포넌트를 참조하십시오.
  • 응용프로그램은 응용프로그램을 구성하는 어셈블리 컴포넌트 중 일부만 업그레이드하여 조금씩 점진적으로 업그레이드할 수 있습니다.
  • 어셈블리 컴포넌트를 응용프로그램 사이에 공유하여 재사용 기회를 만들 수 있지만 프로젝트 간 종속성도 발생합니다.
  • 컴포넌트 기반 응용프로그램은 분산되는 경향이 있습니다(반드시 컴포넌트 기반과 관련이 있지는 않음).

어셈블리 컴포넌트는 다음의 결과로 생성됩니다.

  • 모듈 아키텍처 정의에서 잘 형성된 컴포넌트를 식별, 고립, 디자인, 개발 및 테스트합니다. 이런 컴포넌트는 개별적으로 테스트되고 점차 통합되어 전체 시스템을 형성할 수 있습니다.
  • 또한 이런 컴포넌트 중 일부, 특히 광범위한 문제점에 대한 공통 솔루션을 제공하는 컴포넌트는 재사용되도록 개발될 수 있습니다. 이런 재사용가능한 컴포넌트(유틸리티 또는 클래스 라이브러리의 단순한 콜렉션보다 규모가 더 클 수 있음)는 조직 내 재사용의 기초를 형성하여 전체 시스템 생산성 및 품질을 향상시킵니다.
  • 보다 최근에는 상업적으로 성공한 컴포넌트 하부 구조(예: CORBA, 인터넷, ActiveX, JavaBeans, .NET 및 J2EE)의 출현으로 전체 산업에서 다양한 도메인에 대한 상용 컴포넌트가 유발됩니다.

앞의 목록에서 첫 번째 사항은 객체 지향 기술의 기반이 되는 개념을 한 단계 더 발전시켜 모듈성 및 캡슐화 등 이전 개념을 활용합니다. 목록의 마지막 두 사항은 한 번에 한 라인씩 소프트웨어를 프로그래밍하는 것에서 컴포넌트를 어셈블하여 소프트웨어를 작성하는 것으로 소프트웨어 개발을 바꿉니다.

RUP는 다음과 같은 방법으로 컴포넌트 기반 개발을 지원합니다.

  • 반복 방법을 통해 점차적으로 컴포넌트를 식별하고 개발할 내용, 재사용할 내용 및 구매할 내용을 결정할 수 있습니다.
  • 소프트웨어 아키텍처에 초점을 맞춰 상호작용하는 근본 메커니즘 및 패턴을 포함한 구조(컴포넌트 및 컴포넌트가 통합되는 방법)를 명료하게 표현할 수 있습니다. 이것은 프로젝트 관리의 계획 측면을 지원합니다. 여기에서 컴포넌트 종속성은 동시에 개발될 수 있는 컴포넌트와 순차적으로 개발될 수 있는 컴포넌트를 판별하는 데 도움을 줄 수 있습니다.
  • 패키지, 서브시스템 및 계층과 같은 개념은 분석 및 디자인 중에 컴포넌트를 구성하고 인터페이스를 지정하는 데 사용됩니다.
  • 테스트는 먼저 컴포넌트 중심으로 조직되고 점차적으로 더 큰 통합 컴포넌트 세트 중심으로 조직됩니다.

컴포넌트에 대한 자세한 정보는 개념: 컴포넌트를 참조하십시오.