20
COMPONENT BASED DEVELOPMENT METHODOLOGY 이이이 2012. 04. 06

Compponent based Develpment Methodology

Embed Size (px)

DESCRIPTION

Software Development Methodology -Compponent based Develpment Methodology

Citation preview

Page 1: Compponent based Develpment Methodology

COMPONENT BASED DEVELOPMENT

METHODOLOGY이오준

2012. 04. 06

Page 2: Compponent based Develpment Methodology

2

• 구조적 방법론– 프로세스를 중심으로 시스템을

개발하는 방법 .

• 정보공학 방법론– 자료를 중시하여 시스템을

개발하는 방법 .

• 객체지향 개발 방법론– 객체를 중심으로 시스템을

개발하는 방법 .– OMT(Object Modeling

Technique), RUP(Rational Unified Process)

• 컴포넌트 기반 개발 방법론– 아키텍처를 기반으로 컴포넌트를

조립하여 시스템을 개발하는 방법 .– Catalysis, RUP, 마르미 III,..

Object

DataData

FunctionFunction

DataData

FunctionFunction

Architecture

Component

1960 1970 1980 1990 2000

Structured Methodology

Information EngineeringMethodology

Object-OrientedMethodology

CBDMethodology

Page 3: Compponent based Develpment Methodology

- COMPONENT.

- SOFTWARE ARCHITECTURE.

- COMPONENT BASED DEVELOPMENT METHODOLOGY.

목차

Page 4: Compponent based Develpment Methodology

4

Component.

Page 5: Compponent based Develpment Methodology

5

Component 의 정의 .

- 독립적으로 실행 가능하며 , 표준 인터페이스를 갖추고 , 소프트웨어의 대처 가능성 , 재사용성 , 기능적 독립성을 갖춘 소프트웨어 집합 .

Page 6: Compponent based Develpment Methodology

6

Component 의 정의 .

6

Main Application Form(from GUI Framework)

Start()…..

Login From(from GUI Framework)

Open()enterUserName()ValidateUserIDPassword()…..

Main Student Form//register for courses()//display possible operations()

Main Registration Form

<<boundary>>RegistertionForCoursesForm

submitSchedule()displayCourseOfferings()updateSchedule()deleteSchedule()requestScheduleDeleteConfimation()displaySchedule(theSchedule:schedule)SaveSchedule()displayBlankSchedule()isRegistrationOpen()…..

<<control>>Registeration Controller

getCurrentSchedule(for Student:학생 , for Semester:semester):ScheduledeleteCurrentSchedule()submitSchedule()saveSchedule()getCourseOfferings():CourseOfferingList…..

<<Interface>>Interface Registeration Controller

getCurrentSchedule(for Student:학생 , for Semester:semester):ScheduledeleteCurrentSchedule()submitSchedule()saveSchedule()getCourseOfferings():CourseOfferingList…..

Naming.(from java.r…)

Lookup()

<<boundary>>CloseRegistration Form…..

<<control>>CloseRegistrationController

…..

Remote(from java.rml)

UnicastRemoteObject.(from Server)

UnicastRemoteObject()…..

1

10..1

1

1

0..1

1

1

0..1

Page 7: Compponent based Develpment Methodology

7

Component 의 특징 .

- 실행 환경에서 독립적으로 개발 , 배포될 수 있다 .

- 개발 생산성을 획기적으로 향상시킬 수 있다 .

- 컴포넌트 구조를 사용한다면 , 환경 및 사용자의 요구 사항에 적응 가능한 시스템을 쉽게 개발할 수 있다 .

- 인터페이스를 이용하여 구현 이전에 컴포넌트를 이용한 분석 작업이 가능하다 .

Page 8: Compponent based Develpment Methodology

8

Component 의 구분 .

구분 정의

분산 컴포넌트 EJB, CORBA, COM+ 등 분산 객체 환경 지원 컴포넌트 .

비즈니스컴포넌트

물리적으로 배포할 수 있는 독립된 하나의 비즈니스 개념을 구현한 컴포넌트 .

확장 비즈니스컴포넌트

확장을 고려하여 설계된 Business Component 의 집합으로

그룹 형태로 재사용이 가능한 항목의 집합체

시스템컴포넌트

비즈니스 가치를 제공하기 위해 같은 일을 하는 시스템 수준의 컴포넌트 집합 .

Page 9: Compponent based Develpment Methodology

9

Software Architecture.

Page 10: Compponent based Develpment Methodology

10

Software Architecture 의 정의 .• 프로그램 혹은 컴퓨팅 시스템의 소프트웨어 아키텍처란 , 소프트웨어

컴포넌트 , 이들 컴포넌트의 가시적인 속성 , 그리고 컴포넌트 사이에 관계로 구성된 시스템의 전체적인 구조를 말한다 .

- Bass, Clements, Kazman, 1998

“Software Architecture in Practice” 에서 발췌

• 소프트웨어 아키텍처는 시스템을 구성하는 컴포넌트와 이들의 인터페이스 , 그리고 상호관계를 정의한 것이라고 볼 수 있습니다 .

Page 11: Compponent based Develpment Methodology

11

Software Architecture 의 역할 .1. stakeholder 간에 원활한 의사소통 수단 .

– stakeholder 에게 보이는 시스템의 모습은 그들의 관점에 따라서 달라질 수 있다 .

– 서로를 이해하고 , 합의를 도출할 수 있게 해주는 공통적인 시스템의 추상이다 .

2. 프로젝트 초기에 결정된 설계 사항을 기재해 놓은 산출물 .– 시스템 품질 속성에 큰 영향을 끼침 .

– 성능과 보안 , 유지보수성과 신뢰성 , 현재 개발 비용과 미래의 개발 비용 사이에

tradeoff 를 아키텍처에 기재함 .

3. 여러 시스템들을 위해서 재사용할 수 있는 시스템의 추상적 모습 .– 시스템이 어떻게 구성되어 있고 , 결합되어 있는지를 보여주는 모델 .

– 크거나 복잡해서는 안되며 , 개발자가 충분히 인식할 수 있을 정도여야 한다 .

– 비슷한 요구사항을 갖고 있는 다른 시스템을 위해 재사용될 수 있다 .

Page 12: Compponent based Develpment Methodology

12

Component Based Development Methodology.

Page 13: Compponent based Develpment Methodology

13

Component Based Development 의 정의 .

테스트가 완료된 소프트웨어 컴포넌트를 아키텍처를 기반으로 조립하여 사용자의 요구에 맞는 응용 소프트웨어를 만드는 방법으로 전통적 개발 방법론을 계승하면서 새로운 웹 기반 개방형 아키텍처를 수용하려는 소프트웨어 공학적 접근 개발 방법론 .

기존 객체지향 분석 / 설계에서 상속을 제외하고 인터페이스 중심의 접근을 강화한 재사용 프레임워크를 수용하는 방법론 .

“CBD = CD + CBSD ( 컴포넌트 개발 + 컴포넌트 적용 응용 개발 )”

Page 14: Compponent based Develpment Methodology

14

컴포넌트 기반 분산 객체 기술의 등장 . OMG 의 CORBA, 선 마이크로 시스템즈의 EJB 와 RMI, 그리고 MS 진영의 COM, DCOM

- 기업 환경 변화에 따른 소프트웨어의 대형화 , 복잡화 .

- 복잡성과 유지 보수 비용의 증가 : 70% 이상의 유지보수 비용 .

- 개발 생산성 향상과 높은 질의 소프트웨어 요구 .

Component Based Development 의 등장 배경 .

Page 15: Compponent based Develpment Methodology

15

Component Based Development 의 특징 .

언어에 독립적이다 .객체지향 방법은 단일 언어로 개발하고 수시로 모듈을 수정하여 re-compile 해야 하는 단점 .

컴포넌트를 사용하는 응용프로그램은 컴포넌트의 위치에 상관없이 동일한 방법으로 사용할 수 있다 .

[ Client ] --( 서비스 호출 )--> [ ORB ] --( 서버 위치 파악 )--> [ 서버 컴포넌트 ]

- 개발 시 처음부터 컴포넌트 재사용 기술을 통하여 잘 정의되고 검증된 컴포넌트를 활용함으로써 , 개발 기간 단축 .

- 자원에 대한 재사용성 확대 및 시장 환경 변화에 능동적으로 대처 .

- 테스트와 디버깅 단계에서 시간을 절약 .

- 컴포넌트 명세서를 통한 소프트웨어 품질 관리 프로세스 지원 .

- 인터페이스 기반의 접근 방법을 통해 , 조직 내의 복잡한 시스템 구성 속에서 일관성을 유지하기 쉬움 .

Page 16: Compponent based Develpment Methodology

16

Component Based Development 의 개요 .

비즈니스분석

비즈니스설계

컴포넌트추출

컴포넌트설계

컴포넌트배포

컴포넌트커스텀화

어플리케이션설계

어플리케이션요구 분석

CD

CBSD

컴포넌트구현

컴포넌트 검증

컴포넌트 조립어플리케이션완성

컴포넌트 저장소

Page 17: Compponent based Develpment Methodology

17

Component Based Development 의 개요 .

Page 18: Compponent based Develpment Methodology

18

구분 CBD OOD

개발프로세스

소규모 단위의 프로젝트로 나누어 반복과 점진 수행 .

전통적 SDLC 를 따르며 개발 품질 향상을 위해 프로토타입 수행 .

아키텍처측면

프로젝트 시작과 함께 계획 및 표준화 수립 후 지속적 개선 .

명확한 아키텍처 제시 및 표준화가 미흡함 .

응용개발기술

컴포넌트 단위의 블랙박스 상태에서 표준 인터페이스 적용 .( 객체 지향의 상속 개념이 없음 )

객체지향 언어 적용 중심 프로그래밍( 클래스 수준의 상속 , 다형성 접근 )

SW 공학측면

비즈니스 중점의 소프트웨어 재사용을 통한 생산성 향상 .

데이터 및 프로세스 융합을 통한 개발 패러다임 변화 .

CBD 와 OOD 의 비교 .

Page 19: Compponent based Develpment Methodology

19

결론 .

- 변화에 유기적으로 대응할 수 있다 .

- 컴포넌트의 재사용으로 생산성이 높다 .

- 오류 유입 가능성을 아키텍처 수준으로 한정 시킬 수 있다 .

- 시스템 구성 속에서 일관성을 유지하기 쉬움 .

- 대규모 프로젝트에 적합하다 .

Page 20: Compponent based Develpment Methodology

20

감사합니다 .