베스트 프랙티스: 컴포넌트 구조 사용

계층을 포함한 컴포넌트 기반
구조
주제
컴포넌트 구조는 개념:
컴포넌트에 설명된 대로 대체 가능한 컴포넌트에 기반한 구조입니다.
컴포넌트 구조가 독립적이고 대체 가능한 모듈 컴포넌트를 기반으로 하므로
복잡도를 관리하고 재사용을 촉진하는 데 도움을 줍니다.
유스 케이스는 전체 라이프사이클에 걸쳐 RUP 엔드투엔드를 구동하지만
설계 활동은 시스템
구조의 개념 중심으로 수행되며
소프트웨어 집약 시스템의 경우에는 소프트웨어 구조 중심으로 수행됩니다.
프로세스 반복의 초기 단계(대부분 구현화 단계)에서 중점은
소프트웨어 구조를 생성하고
확인하는 것입니다. 여기서, 소프트웨어 구조는 초기 개발 주기에서 실행 가능한 구조적 프로토타입의 양식을 취하고
점차적으로 전개하여 반복의 후기 단계에서 최종 시스템이 됩니다.
실행 가능한 구조로 선택된 시스템 기능 및 등록 정보, 특히 비기능적 요구사항을 만족시키는 것을
시연하기 위해 빌드된 시스템의 부분적인 구현을 의미합니다.
실행 가능한 구조의 목적은 시스템의 완전한 기능적 성능이 파손에 대한 두려움없이
견고한 기반으로 구축 단계에 추가될 수 있도록
성능, 처리량, 용량, 신뢰성 및
기타 "기능"에 관련된 위험을 완화하는 것입니다.
구조(특히, 소프트웨어 구조)의 개념에 대한 소개 및
이 개념이 중요한 이유에 대한 설명은
개념:
소프트웨어 구조를 참조하십시오.
RUP는 구조를 설계, 개발 및 확인하기 위해 조직적이고 규칙적인 방법을 제공합니다.
여러 구조적 관점의 개념에 관련된 구조적 설명에 대한 템플리트 및
구조적 양식, 설계 규칙 및 제한조건의 캡처에 대한 템플리트를 제공합니다.
분석 및 설계 규칙은
구조적 선택 방법에 대한 가이드라인뿐만 아니라
구조적 제한조건 및 구조적으로 의미있는 요소를 식별하는 데 목적이 있는 특정 활동을 포함합니다.
관리 프로세스는 초기 반복 계획시
구조의 설계 및 주요 기술 위험의 해결책을 고려하는 방법을 표시합니다.
자세한 정보는 프로젝트 관리 규칙 및
역할: 소프트웨어 아키텍트와
연관된 모든 활동을 참조하십시오.
구조는 몇 가지 이유로 인해 중요합니다.
- 구조는 복잡도를 관리하고 시스템 무결성을 유지보수하기 위해
프로젝트에 대해 전반적으로 지능적 제어를 얻고 보유합니다.
복잡한 시스템은 각 파트의 합계보다 더 많고
작게 나눠진 독립 전술의 연속적인 의사결정보다 많습니다. 이것은 파트를 조직적으로 구성하기 위해
통합되고 일관적인 구조를 가지고 있어야 하며,
인간의 이해력을 넘어 복잡도가 "폭발"하지 않고 시스템을 확대시키는 방법에 대한 정확한 규칙을 제공해야 합니다.
구조는 설계 문제를 논의하는 데 사용될 공통 참조 세트, 공통 어휘를 확립하여
프로젝트 전체에서의 개선된 의사소통 및 이해에 대한 수단을 확립합니다.
- 이것은 대규모 재사용에 대해 효율적인 기초가 됩니다.
주요 컴포넌트 및 이들 간의 중요한 인터페이스를 명료하게 표현하여
구조를 통해 재사용(공통 부분을 식별하는 내부 재사용 및 이미 만들어진
구매 가능한 컴포넌트를 결합한 외부 재사용 모두)에 대해 추론할 수 있습니다.
더 큰 규모에서의 재사용도 허용됩니다.
이것은 공통 도메인의 여러 기능을 처리하는 제품 라인과 연관된
구조 자체의 재사용입니다.
- 이것은 프로젝트 관리에 대한 기초를 제공합니다.
계획 및 인력 지정은 주요 컴포넌트 라인에 따라 구성됩니다.
근본적인 구조 의사결정은 작고 응집된 구조 팀에서 수행되며
이런 의사결정은 분배되지 않습니다. 개발은 작은 팀 세트에 걸쳐 분할되며
각각은 하나 또는 여러 개의 시스템 파트를 책임집니다.
컴포넌트 기반 개발은 일반 어플리케이션 개발을 다음과 같이 변형한 것입니다.
- 어플리케이션은 비교적 서로 독립적으로 개발되는
분리된 실행 가능한 컴포넌트에서 빌드됩니다.
RUP에서는 이것을 "어셈블리 컴포넌트"라고 합니다.
자세한 정의는 개념:
컴포넌트를 참조하십시오.
- 어플리케이션은 어플리케이션을 포함하는 일부 어셈블리 컴포넌트를 업그레이드하여
더 작은 증가량으로 업그레이드될 수 있습니다.
- 어셈블리 컴포넌트는 어플리케이션 간에 공유될 수 있으며
재사용할 기회를 작성하지만 내부 프로젝트 종속성도 작성합니다.
- 엄밀히 말하면 컴포넌트 기반인 것에 연관이 없지만
컴포넌트 기반 어플리케이션이 분배되는 경향이 있습니다.
어셈블리 컴포넌트는 다음의 결과로 생성됩니다.
- 모듈 구조 정의에서 잘 형성된 컴포넌트를 식별, 고립, 설계, 개발 및 테스트합니다.
이런 컴포넌트는 개별적으로 테스트되고
점차 통합되어 전체 시스템을 형성할 수 있습니다.
- 또한 이런 컴포넌트 중 일부, 특히 광범위한 문제점에 대한 공통 솔루션을 제공하는 컴포넌트는
재사용되도록 개발될 수 있습니다. 유틸리티 또는 클래스 라이브러리의 단순한 콜렉션보다
규모가 더 클 수 있는 이런 재사용 가능한 컴포넌트는
조직 내 재사용을 기초로 하여 전체 시스템 생산성 및 품질을 증가시킵니다.
- 보다 최근에는 상업적으로 성공한 컴포넌트 인프라스트럭처(예:
CORBA, 인터넷, ActiveX, JavaBeans, .NET 및 J2EE)의 출현은
다양한 도메인용으로 구매 가능한 전체 컴포넌트 산업을 촉진시킵니다.
앞의 목록에서 첫 번째 것은 객체지향 기술의 기초가 되는 개념을 한 단계 더 가져오는
모듈성 및 캡슐화 등 이전 개념을 활용합니다. 목록의 마지막 두 개는 소프트웨어 개발을
한 번에 한 라인씩 소프트웨어를 프로그래밍하는 것에서 컴포넌트를 어셈블하여 소프트웨어를 작성하는 것으로
바꿉니다.
RUP는
다음과 같은 방법으로 컴포넌트 기반 개발을 지원합니다.
- 반복 방법을 통해 점차적으로 컴포넌트를 식별하고
개발될 것, 재사용할 것 및 구매할 것을 결정할 수 있습니다.
- 소프트웨어 구조에 집중하면 상호 작용하는 근본 메커니즘 및 패턴을 포함한
구조(컴포넌트 및 컴포넌트가 통합되는 방법)를
명료하게 표현할 수 있습니다. 이것은 프로젝트 관리의 계획 측면을 차례로 지원합니다.
여기에서 컴포넌트 종속성는 동시에 개발될 수 있는 컴포넌트와
순차적으로 개발될 수 있는 컴포넌트를 판별하는 데 도움을 줄 수 있습니다.
- 패키지, 서브시스템 및 계층과 같은 개념은
분석 및 설계 중에 컴포넌트를 체계화하고 인터페이스를 지정하는 데 사용됩니다.
- 테스트 작업은 먼저 컴포넌트 중심으로 구성되고
점차적으로 더 큰 통합 컴포넌트 세트 중심으로 구성됩니다.
컴포넌트에 대한 자세한 정보는 개념: 컴포넌트를 참조하십시오.
|