소프트웨어공학/수업

10. 소프트웨어 아키텍처(5-2)

멜데스 2017. 5. 21. 00:56

1. 컴포넌트웨어(Componentware)  

개요 

정의 

객체 지향을 기반으로 Plug & Play형 소프트웨어 부품을 조합하여 시스템을 개발하는 기술의 체계 

특징 

 기존 소프트웨어 재사용은 원시코드의 재사용이 중심이었으며, 기술과 아키텍처 지원 측면에서 실현 부족 

 컴포넌트웨어는 여러 개의 객체를 부품으로서 패키지화하는 기술을 제공하고, 부품 간의 인터페이스 표준화가 중요 

대표적 기반기술 

ActiveX / DCOM 

CORBA 

Java Beans 


컴포넌트웨어 출현배경 

종래형 개발방법의 한계 

PC 사용성의 확대(EUC의 확대) 

GUI, Excel, DB 등과 네트워크의 연동 

개발 비용감소 및 기간단축 

H / W의 가격저하에 대응한 어플리케이션 개발 비용의 감소 

조립형 개발로의 전환 

객체지향 기술에 기반한 재이용기술의 성장 

분산 객체환경, 프레임워크, 패턴 등 

재사용할 수 있는 부품의 출현 

 Plug & Play형 부품의 성공 

 부품 자체가 비즈니스 모델이 됨 

요구 

ECU(End User Computing)/EUD(End User Development) 

 퍼스컴의 보급에 의하여 윈도우즈상에서 업무처리를 수행하는 기회 증가 

 복잡한 작업을 수행하는 어플리케이션을 말단 사용자 자신이 개발할 필요성 증가 

소프트웨어 개발 가격이 대폭적으로 저렴 

하드웨어 가격이 저렴해지면서 소프트웨어 개발 비용도 내려가도록 요구 


근원 

객체지향 기술과 인터넷의 발전 

 클래스 라이브러리, 프레임워크, 디자인패턴 등의 객체지향 재사용 기술이 성숙 

 웹의 급속한 보급에 의하여 다양한 어플리케이션이 웹을 사용하여 인터넷상에 구축 

플러그 & 플레이형 부품 시장의 출현 

 수많은 소프트웨어 부품 벤더가 생겨 부품 시장 형성 

 업무 형태 

- 컴포넌트 벤더(Component Vendor) 

- 인터그레이터(Integrator) 

- 컴포넌트 브로커(Component Broker) 


객체지향 컴포넌트웨어 

특징 

 컴포넌트웨어는 객체지향 기술을 발전시킨 것 

 객체지향 기술에서는 객체지향 분석을 통해 얻어진 모델을 재이용하기 위해 재이용하는 골격과 가치 

있는 부품이 필수적 

 소프트웨어 아키텍처는 소프트웨어 전체 구조를 다큐먼트화한 것이며, 소프트웨어 전체 구조를 

근간으로 하여 재사용 


어플리케이션 프레임워크 

정의 

특정 도메인에서 여러 어플리케이션이 공통으로 적용되는 

클래스와 메시지 흐름을 이용해 주요 기능을 구현한 대단위 재사용 부품 


동향 

이미 GUI 툴 등으로 실용화되었으며, 최근에는 좀 더 복잡한 비즈니스 어플리케이션 분야를 대상으로 한 것이 

개발 

예 : IBM의 샌프란시스코 

개발 중인 공용 프레임워크에서는 Java로 구현한 기업의 재무, 수발주, 재고 관리 등의 

어플리케이션 프레임워크 제공 


디자인 패턴 

정의 

 일반성 있는 설계문제를 해결하기 위하여 여러 개의 클래스 사이의 전형적인 협조 작업을 패턴화한 것 

 경험 많은 소프트웨어 엔지니어의 해법을 디자인적인 추상성을 부여해 패턴화 


장점 

 새로운 시스템 분석 / 설계 시에 이미 구축된 부분은 패턴을 이용하면 훨씬 많은 시간 절약 

 공통 언어 역할을 통해 효율적인 협동 작업 가능 

 시스템의 안정성과 성능 향상 


컴포넌트웨어의 접근방법 

다섯 가지 방법 

1원시코드로부터 객체코드로의 재사용으로 

 원시코드 재이용의 문제점 

– 부품을 재컴파일해야 하며, 전문가가 아니면 재이용 어려움 

– 보수 문제 발생 

→ 기능 추가를 위해서는 부품 내부를 알아야 함 

 컴포넌트웨어는 종래의 원시코드 재이용의 문제점 해결


2 단일 객체의 재사용으로부터 복합 객체의 재사용으로 

 의미 있는 부품은 보통 여러 개의 객체로 구성 

 여러 개의 객체를 부품으로서 패키지화하는 기술은 필수 

3절차의 재사용에서부터 모든 부품의 재사용에

호출에 멈추지 않고 부품 교환이나 인터페이스 표준화 


4실제 동작하는 아키텍처의 지원 

벤더, 버전, OS, 프로세서의 차이를 넘어서 객체를 상호운용하기 위한 분산객체 환경을 미들웨어나 

프레임워크 형태로 제공 


5부품 조립형 어플리케이션 모델 

수행해야 하는 작업을 중심으로 필요한 어플리케이션을 복합 문서로 집어 넣는 문서지향 

또는 태스크지향의 어플리케이션 모델을 통해 부품을 유기적으로 결합 


특징 

부품화, 패키지화 기술 

 어플리케이션은 컨테이너라고 부르는 부품을 조합한 복합 문서 

 컨테이너에 컨트롤(ActiveX, OLE 컨트롤)이나 Java Applet, Java Beans등의 부품을 조합하여 어플리케이션 구성 

부품 조립 기법 

 클라이언트 / 서버 모델에 의해 클라이언트 내 또는 클라이언트 / 서버 사이에서 부품을 연대 

 부품 사이의 연대나 외부 이벤트에 대한 응답을 제어하기 위한 스크립트 언어와 실행 환경 제공 

어플리케이션 개발 지원환경 

부품을 시각적으로 조합시키는 어플리케이션 개발 지원 환경 제공 

프레임워크 

 컴포넌트웨어를 실현하는 소프트웨어는 프레임워크로서 제공 

 컴포넌트 아키텍처의 배후에 있는 프레임워크의 제어 모델을 고려할 필요 있음 


분산 컴포넌트웨어 

특징 

 Java Applet과 같은 플랫폼과 독립적으로 네트워크상을 이동할 수 있는 부품 기술이 급속히 발전 

 종래의 재사용과 달리 부품을 물리적으로 집적시킬 필요가 없음 

 여러 개의 어플리케이션에서 공유하는 데이터베이스와 같이 클라이언트로부터 멀리 

떨어져 이용하고 싶은 부품도 존재 

종류 

이동 컴포넌트 

Java Applet이나 ActiveX처럼 네트워크를 이용하는 부품 

리모트 컴포넌트 

 클라이언트로부터 서버에 있는 컴포넌트를 RPC에서 이용 

 대표적 기술 

– CORBA의 ORB(Object Request Broker) 

– Java의 RMI(Remote Method Invocation) 

– MS의 COM (Component Object Model / DCOM(Distributed COM) 

 두 종류의 부품 연대를 ActiveX, CORBA2.0, Java에서 실행하는 방법  

 COM / DCOM과 CORBA 사이의 상호 운영을 위한 COM-CORBA Interworking 프로토콜 정의 


요소기술 

부품화, 패키지화 기술 

복합 문서(Compound Documents) 

객체군을 정리하여 그 인터페이스를 표준화한 것 

복합 파일 시스템(Compound File System) 

 구조화 저장소(Structured Storage) 

 복합 문서를 격납하는 파일 시스템 

 계층 구조를 취하는 여러 개의 파일과 디렉터리를 정리하여 하나의 파일로서 취급 

부품 조립 기술  

여러 부품을 조합하여 어플리케이션을 구축할 경우 부품 사이의 인터페이스 통일 필요 


A 부품의 조립  

 끼워놓기(Embedding) 

– 객체 전체를 복합 문서 가운데에 끼워 넣는 방법 

– 데이터량이 적거나 처리 속도가 요구되는 경우에 사용 

 링킹(Linking) 

– 객체의 실체는 다른 복합 문서에 존재하며, 포인터에 의해 참조하는 방법 

– 데이터량이 많거나 공통 데이터의 경우에 사용 


B 호출 인터페이스의 통일 - 분산객체  

 벤더, 배치 언어, 프로세서의 차이에 의하지 않고 동적으로 객체의 메소드를 기동할 수 있는 구조 

 언어 독립적인 인터페이스 정의 언어(IDL: Interface Definition Language)와 지원 환경 개발 

– 예 : OMG의 CORBA-IDL, MS COM/DCOM의 COM-IDL 

C 사용자 인터페이스의 통일 - 비주얼 편집  

부품마다 다른 사용자 인터페이스를 하나로 융합하는 시도 


사례 

여섯 가지 사례 

CORBA 

Common Object Request Broker Architecture 

객체지향으로 클라이언트/서버 아키텍처의 어플리케이션을 개발하기 위하여 필요로 하는 객체 연대기구 


OMG(Object Management Group)에 의하여 규정 

 1989년에 설립 

 700여 컴퓨터 관련회사가 참가하고 있는 컨소시엄 

 CORBA를 중심으로 어플리케이션을 구축하기 위하여 필요로 하는 부품이나 인터페이스에 관한 광범위한 표준화 추진 


객체요구브로커(ORB) 

 ORB 그 자체가 클라이언트 / 서버 아키텍처를 취함 

 클라이언트 측은 서버 내의 객체의 배치 방법 등의 세부사항은 알 필요 없이 정보은폐가 가능 


COM 

Component Object Model 

 플랫폼에 의존하지 않는 분산 객체 환경과 기본 객체 서비스를 제공 

– ActiveX의 중요 부분은 플랫폼에 비의존 

 Binary Standard와 인터페이스 모델 

– CORBA와 Java의 객체 모델과 차이점 

 ActiveX는 COM상에 실현되는 객체 기술 


DCOM 

Distributed COM 


JavaBeans 

특징 

 Java로 기술(Description) 

 플랫폼에 의존하지 않는 컴포넌트 

Javabeans 구성요소 

 Property 

– 이름을 가진 속성 

– Set <속성명>(파라미터)에서 속성을 변경 (Setter Method) 

– 반환값 get<속성명>()에서 속성의 값을 읽어냄 (Getter Method) 

→ 예 :  전경색을 표시하는 foreground라는 속성을 가지기 위해서는 속성을 변경하는 메소드   

            setForeground(Color c), 속성의 값을 읽어내는 ColorgetForeground()를 구현 

 Method 

– 다른 Beans로부터 이용할 수 있도록 공개 

– BenasInfo에 선언함으로써 공개 메소드 제한 

 Event 

– Beans 내에서 발생한 상태의 변화 

– 상태의 변화 정보를 가지는 이벤트 객체와 상태의 변화가 발생했을 때 호출되는 메소드 선언에 대해서 정의 


JavaRMI 

Java Remote Method Invocation 

 네트워크에 연결되어 있는 다른 머신(Remote)에서 동작하고 있는 Java 객체의 메소드를 호출하는 기구 

 리모트 객체의 인스턴스 변수에 직접 액세스 불가