컴포넌트 기반 소프트웨어 공학
1. 개요
컴포넌트 기반 소프트웨어 공학(CBSE)은 대규모 시스템 개발 시 규율 있는 문화와 프로세스를 통해 이점을 얻을 수 있는 방법론이다. CBSE는 서드파티 컴포넌트의 활용, UML을 이용한 시스템 시각적 설계, 최종 사용자와 상호 작용하는 컴포넌트의 사용성 테스트를 포함한다. 기술적으로 특정 도메인의 소프트웨어 프레임워크, 컴포넌트 지향 프로그래밍, 컴파운드 도큐먼트 기술, 분산 컴퓨팅 소프트웨어 컴포넌트, 제네릭 프로그래밍, 인터페이스 서술 언어(IDLs) 등이 CBSE에 활용된다.
이미지 준비중입니다.
| 유형 | 소프트웨어 공학 패러다임 |
|---|---|
| 관련 주제 | 소프트웨어 컴포넌트, 서비스 지향 아키텍처 |
| 목표 | 소프트웨어 시스템 개발 및 유지 보수 비용 절감, 생산성 향상, 재사용성 증진 |
|---|---|
| 기본 원칙 | 독립적인 컴포넌트 조립을 통한 시스템 구축 표준 인터페이스를 통한 컴포넌트 간 상호작용 컴포넌트 재사용 및 교체 용이성 플랫폼 독립성 및 분산 환경 지원 |
| 재사용성 | 이미 개발된 컴포넌트를 다른 시스템에서 재사용 가능 |
|---|---|
| 생산성 향상 | 컴포넌트 조립을 통해 개발 시간 단축 |
| 유지보수 용이성 | 컴포넌트 단위 수정 및 교체 가능 |
| 유연성 | 시스템 요구사항 변경에 따른 컴포넌트 교체 용이 |
| 품질 향상 | 검증된 컴포넌트 사용으로 시스템 안정성 향상 |
| 초기 투자 비용 | 컴포넌트 개발 및 관리 인프라 구축 필요 |
|---|---|
| 복잡성 증가 | 컴포넌트 간 인터페이스 관리 및 통합 어려움 |
| 성능 저하 가능성 | 컴포넌트 간 통신 오버헤드 발생 가능 |
| 의존성 문제 | 특정 컴포넌트에 대한 의존성 증가 가능 |
| 컴포넌트 | 특정 기능을 수행하는 독립적인 소프트웨어 모듈 |
|---|---|
| 인터페이스 | 컴포넌트 간 상호작용을 위한 표준화된 접근 방식 |
| 아키텍처 | 컴포넌트들을 통합하고 시스템 전체 구조를 정의하는 설계 |
| 저장소 | 재사용 가능한 컴포넌트들을 보관하고 관리하는 장소 |
| 컴포넌트 식별 | 시스템 요구사항 분석을 통해 필요한 컴포넌트 식별 |
|---|---|
| 컴포넌트 설계 | 각 컴포넌트의 기능, 인터페이스, 동작 방식 설계 |
| 컴포넌트 구현 | 설계된 컴포넌트를 프로그래밍 언어를 사용하여 구현 |
| 컴포넌트 테스트 | 구현된 컴포넌트의 기능 및 성능 검증 |
| 컴포넌트 통합 | 컴포넌트들을 조립하여 시스템 구축 |
| 시스템 테스트 | 통합된 시스템의 전체적인 기능 및 성능 검증 |
| CORBA | 분산 객체 환경을 위한 표준 아키텍처 |
|---|---|
| COM | 마이크로소프트에서 개발한 컴포넌트 기술 |
| EJB | 자바 기반 엔터프라이즈 컴포넌트 모델 |
| SOA | 서비스 지향 아키텍처 |
| 엔터프라이즈 시스템 | 대규모 비즈니스 애플리케이션 개발 |
|---|---|
| 임베디드 시스템 | 특정 기능을 수행하는 하드웨어 내장형 시스템 개발 |
| 웹 애플리케이션 | 웹 기반 서비스 개발 |
| 모바일 애플리케이션 | 스마트폰 및 태블릿용 애플리케이션 개발 |
-
컴포넌트 기반 소프트웨어 공학 -
컴포넌트 오브젝트 모델
컴포넌트 오브젝트 모델(COM)은 마이크로소프트에서 개발한 소프트웨어 컴포넌트 기술로, 서로 다른 애플리케이션이 객체를 통해 통신하고 기능을 공유할 수 있도록 하는 이진 인터페이스 표준을 제공하며, 다양한 프로그래밍 언어로 작성된 객체들의 상호 운용을 지원한다. -
컴포넌트 기반 소프트웨어 공학 -
공통 객체 요구 매개자 구조
공통 객체 요구 매개자 구조(CORBA)는 객체 관리 그룹(OMG)에서 분산 컴퓨팅 환경에서 객체 지향 기술을 통합하기 위해 제정한 표준 아키텍처로서, 객체 요청 브로커(ORB)를 통해 객체 간 통신을 제공하고 다양한 서비스를 지원한다. -
소프트웨어 개발 -
유스 케이스
유스 케이스는 시스템과 액터 간 상호작용을 통해 시스템 목표 달성에 기여하는 동작들을 나타내는 요구 사항 캡처, 모델링, 명세 기법으로, 객체 지향 소프트웨어 공학에서 기능 요구 사항을 캡처하는 데 중요한 역할을 하며 다양한 분야에서 활용된다. -
소프트웨어 개발 -
사용자 경험 디자인
사용자 경험 디자인은 인간 공학에 기반하여 제품 또는 서비스와 사용자 간의 상호작용을 설계하는 분야이며, 사용자 조사, 인터랙션 디자인, 사용성 테스트 등을 통해 효율적이고 만족스러운 경험을 제공하는 것을 목표로 한다. -
소프트웨어 구조 -
Ajax
Ajax는 웹 페이지 전체를 새로고침하지 않고 비동기적으로 서버와 통신하여 웹 애플리케이션의 일부를 업데이트하는 웹 개발 기술로, XMLHttpRequest 객체의 등장으로 가능해졌으며 HTML, CSS, DOM, JavaScript, JSON 등의 기술을 통합하여 동적인 사용자 인터페이스를 구현한다. -
소프트웨어 구조 -
멀티테넌시
멀티테넌시는 단일 애플리케이션 인스턴스로 여러 고객에게 서비스를 제공하여 SaaS 및 클라우드 환경에서 비용과 관리 효율성을 높이고 데이터 활용 가치를 창출하는 소프트웨어 아키텍처 방식이다.
2. 고려 사항
대규모 팀에서 개발하는 대규모 시스템의 경우, 컴포넌트 기반 소프트웨어 공학(CBSE)의 이점을 얻기 위해 규율 있는 문화와 프로세스가 필요하다. 서드파티 컴포넌트는 대규모 시스템에서 자주 활용된다.
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 IDL과 XML-RPC가 있다.
3.1. 특정 도메인의 컴포넌트 기반 소프트웨어 프레임워크
* ESMF
* 리액트 (자바스크립트 라이브러리)
3.2. 컴포넌트 지향 프로그래밍
* 컴포넌트 오브젝트 모델 (OCX/ActiveX/COM) 및 DCOM
* 에펠 프로그래밍 언어
* 엔터프라이즈 자바빈즈
* MidCOM
* 유니티
* 언리얼 엔진
* VCL, CLX 및 유사 자유 LCL 라이브러리
* XPCOM
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. 제네릭 프로그래밍
제네릭 프로그래밍은 컴포넌트 기반 소프트웨어 공학의 한 분야이다.