컴포넌트 기반 소프트웨어 공학

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

컴포넌트 기반 소프트웨어 공학(CBSE)은 대규모 시스템 개발 시 규율 있는 문화와 프로세스를 통해 이점을 얻을 수 있는 방법론이다. CBSE는 서드파티 컴포넌트의 활용, UML을 이용한 시스템 시각적 설계, 최종 사용자와 상호 작용하는 컴포넌트의 사용성 테스트를 포함한다. 기술적으로 특정 도메인의 소프트웨어 프레임워크, 컴포넌트 지향 프로그래밍, 컴파운드 도큐먼트 기술, 분산 컴퓨팅 소프트웨어 컴포넌트, 제네릭 프로그래밍, 인터페이스 서술 언어(IDLs) 등이 CBSE에 활용된다.

컴포넌트 기반 소프트웨어 공학
개요

이미지 준비중입니다.

컴포넌트 기반 소프트웨어 공학의 다이어그램 표현
유형소프트웨어 공학 패러다임
관련 주제소프트웨어 컴포넌트, 서비스 지향 아키텍처
특징
목표소프트웨어 시스템 개발 및 유지 보수 비용 절감, 생산성 향상, 재사용성 증진
기본 원칙독립적인 컴포넌트 조립을 통한 시스템 구축
표준 인터페이스를 통한 컴포넌트 간 상호작용
컴포넌트 재사용 및 교체 용이성
플랫폼 독립성 및 분산 환경 지원
장점
재사용성이미 개발된 컴포넌트를 다른 시스템에서 재사용 가능
생산성 향상컴포넌트 조립을 통해 개발 시간 단축
유지보수 용이성컴포넌트 단위 수정 및 교체 가능
유연성시스템 요구사항 변경에 따른 컴포넌트 교체 용이
품질 향상검증된 컴포넌트 사용으로 시스템 안정성 향상
단점
초기 투자 비용컴포넌트 개발 및 관리 인프라 구축 필요
복잡성 증가컴포넌트 간 인터페이스 관리 및 통합 어려움
성능 저하 가능성컴포넌트 간 통신 오버헤드 발생 가능
의존성 문제특정 컴포넌트에 대한 의존성 증가 가능
핵심 개념
컴포넌트특정 기능을 수행하는 독립적인 소프트웨어 모듈
인터페이스컴포넌트 간 상호작용을 위한 표준화된 접근 방식
아키텍처컴포넌트들을 통합하고 시스템 전체 구조를 정의하는 설계
저장소재사용 가능한 컴포넌트들을 보관하고 관리하는 장소
개발 단계
컴포넌트 식별시스템 요구사항 분석을 통해 필요한 컴포넌트 식별
컴포넌트 설계각 컴포넌트의 기능, 인터페이스, 동작 방식 설계
컴포넌트 구현설계된 컴포넌트를 프로그래밍 언어를 사용하여 구현
컴포넌트 테스트구현된 컴포넌트의 기능 및 성능 검증
컴포넌트 통합컴포넌트들을 조립하여 시스템 구축
시스템 테스트통합된 시스템의 전체적인 기능 및 성능 검증
관련 기술
CORBA분산 객체 환경을 위한 표준 아키텍처
COM마이크로소프트에서 개발한 컴포넌트 기술
EJB자바 기반 엔터프라이즈 컴포넌트 모델
SOA서비스 지향 아키텍처
활용 분야
엔터프라이즈 시스템대규모 비즈니스 애플리케이션 개발
임베디드 시스템특정 기능을 수행하는 하드웨어 내장형 시스템 개발
웹 애플리케이션웹 기반 서비스 개발
모바일 애플리케이션스마트폰 및 태블릿용 애플리케이션 개발
참고 문헌
서적Fundamentals of Software Architecture: An Engineering Approach (O'Reilly Media, 2020)
Component-Based Software Development: Principles, Perspectives Integrating Methodologies
Component-Based Development for Enterprise Systems: Applying the SELECT Perspective
기타Management Information Systems 12/E: Managing the Digital Firm P.539
📚 더 읽어볼만한 페이지
  • 컴포넌트 기반 소프트웨어 공학 - 컴포넌트 오브젝트 모델
    컴포넌트 오브젝트 모델(COM)은 마이크로소프트에서 개발한 소프트웨어 컴포넌트 기술로, 서로 다른 애플리케이션이 객체를 통해 통신하고 기능을 공유할 수 있도록 하는 이진 인터페이스 표준을 제공하며, 다양한 프로그래밍 언어로 작성된 객체들의 상호 운용을 지원한다.
  • 컴포넌트 기반 소프트웨어 공학 - 공통 객체 요구 매개자 구조
    공통 객체 요구 매개자 구조(CORBA)는 객체 관리 그룹(OMG)에서 분산 컴퓨팅 환경에서 객체 지향 기술을 통합하기 위해 제정한 표준 아키텍처로서, 객체 요청 브로커(ORB)를 통해 객체 간 통신을 제공하고 다양한 서비스를 지원한다.
  • 소프트웨어 개발 - 유스 케이스
    유스 케이스는 시스템과 액터 간 상호작용을 통해 시스템 목표 달성에 기여하는 동작들을 나타내는 요구 사항 캡처, 모델링, 명세 기법으로, 객체 지향 소프트웨어 공학에서 기능 요구 사항을 캡처하는 데 중요한 역할을 하며 다양한 분야에서 활용된다.
  • 소프트웨어 개발 - 사용자 경험 디자인
    사용자 경험 디자인은 인간 공학에 기반하여 제품 또는 서비스와 사용자 간의 상호작용을 설계하는 분야이며, 사용자 조사, 인터랙션 디자인, 사용성 테스트 등을 통해 효율적이고 만족스러운 경험을 제공하는 것을 목표로 한다.
  • 소프트웨어 구조 - Ajax
    Ajax는 웹 페이지 전체를 새로고침하지 않고 비동기적으로 서버와 통신하여 웹 애플리케이션의 일부를 업데이트하는 웹 개발 기술로, XMLHttpRequest 객체의 등장으로 가능해졌으며 HTML, CSS, DOM, JavaScript, JSON 등의 기술을 통합하여 동적인 사용자 인터페이스를 구현한다.
  • 소프트웨어 구조 - 멀티테넌시
    멀티테넌시는 단일 애플리케이션 인스턴스로 여러 고객에게 서비스를 제공하여 SaaS 및 클라우드 환경에서 비용과 관리 효율성을 높이고 데이터 활용 가치를 창출하는 소프트웨어 아키텍처 방식이다.

2. 고려 사항

대규모 팀에서 개발하는 대규모 시스템의 경우, 컴포넌트 기반 소프트웨어 공학(CBSE)의 이점을 얻기 위해 규율 있는 문화와 프로세스가 필요하다. 서드파티 컴포넌트는 대규모 시스템에서 자주 활용된다.

UML를 사용하여 시스템을 시각적으로 설계할 수 있다.

UML에서 두 개의 컴포넌트의 예: 체크아웃은 고객의 주문을 처리하며, 다른 컴포넌트는 신용 카드를 청구해야 한다.
UML에서 두 개의 컴포넌트의 예: 체크아웃은 고객의 주문을 처리하며, 다른 컴포넌트는 신용 카드를 청구해야 한다.
각 컴포넌트는 사각형으로 표시되며, 인터페이스는 제공된 인터페이스를 나타내는 막대 사탕 모양과 인터페이스의 사용을 나타내는 소켓 모양으로 표시된다.

컴포넌트 기반 사용성 테스트는 최종 사용자와 상호 작용하는 컴포넌트를 위한 것이다.

3. 기술

* 컴파운드 도큐먼트 기술로는 객체 연결 삽입(OLE)이 있다.
* 분산 컴퓨팅 소프트웨어 컴포넌트에는 공통 객체 요구 매개자 구조, DCOM 및 이후 버전의 COM (및 COM+), 자바 플랫폼, 엔터프라이즈 에디션, Kompics, 웹 서비스(REST 포함), [https://web.archive.org/web/20190718180803/https://www.axcioma.com/ AXCIOMA], [https://cohorte.github.io COHORTE] 등이 있다.
* 제네릭 프로그래밍은 컴포넌트 기반 소프트웨어 공학의 한 분야이다.
* 인터페이스 서술 언어(IDLs)에는 SOAP IDLXML-RPC가 있다.

3.1. 특정 도메인의 컴포넌트 기반 소프트웨어 프레임워크

* ESMF
* 리액트 (자바스크립트 라이브러리)

3.2. 컴포넌트 지향 프로그래밍

* 컴포넌트 오브젝트 모델 (OCX/ActiveX/COM) 및 DCOM
* 에펠 프로그래밍 언어
* 엔터프라이즈 자바빈즈
* MidCOM
* 유니티
* 언리얼 엔진
* VCL, CLX 및 유사 자유 LCL 라이브러리
* XPCOM

UML에서 두 개의 컴포넌트 예시: 체크아웃은 고객의 주문을 처리하며, 다른 컴포넌트는 신용 카드를 청구해야 한다.
UML에서 두 개의 컴포넌트 예시: 체크아웃은 고객의 주문을 처리하며, 다른 컴포넌트는 신용 카드를 청구해야 한다.

3.3. 컴파운드 도큐먼트 기술

객체 연결 삽입 (OLE)

3.4. 분산 컴퓨팅 소프트웨어 컴포넌트

* 공통 객체 요구 매개자 구조
* DCOM 및 이후 버전의 COM (및 COM+)
* 자바 플랫폼, 엔터프라이즈 에디션
* Kompics
* 웹 서비스
* REST
* [https://web.archive.org/web/20190718180803/https://www.axcioma.com/ AXCIOMA]
* [https://cohorte.github.io COHORTE]

3.5. 제네릭 프로그래밍

제네릭 프로그래밍은 컴포넌트 기반 소프트웨어 공학의 한 분야이다.

3.6. 인터페이스 서술 언어 (IDLs)

SOAP IDLXML-RPC는 인터페이스 서술 언어(IDL)이다.