글
답)
I. 재사용성과 유지보수성 향상을 위한, 객체지향 설계의 개요
가. 객체지향(Object Oriented)의 정의
- 실 세계의 개체(Entity)를 속성(Attribute)과 메소드(Method)가 결합된 형태의 객체(Object)로 표현하는 개념,UML을 이용한 비주얼 모델링과 의사교환하는 SW개발방법론
나. 객체지향 의 등장배경
- 전통적 개발의 문제점 극복: 재사용,확장성,유지보수성 증대
- SW 위기 해결 대안 : 많은 개발시간,낮은 품질,높은 위험요소로 개발생산성 저하 발생
다. 객체지향 의 장점
장점 |
단점 |
자연스런 모델링 |
전문가 집단 부족 |
재사용을 통한 높은 생산성 |
비용 |
점증적인 개발 및 유지보수 용이 |
속도저하 |
라. 객체지향 의 특성
구분 |
내용 |
추상화 Abstraction |
- 공통된 특성을 간략하게 표현한 설질 |
캡슐화 Encapsulation |
- 정보은닉,접근제어(Private/public/protected) |
다형성 Polymorphism |
- 동일한 메시지에 대해 클래스에 따라 다르게 반응하는 특징(overriding,overloading) |
상속성 - Inheritance |
- 계층구조,재사용 근간,단일상속,다중상속 - 상위 클래스의 속성과 메소드를 하위 클래스에서 재정의 없이 사용 |
2. 객체지향 설계 5원칙
1) 인퍼페이스의 분리 (I/F: Interface)
- 의미: 하나의 I/F는 하나의 기능 갖음, (ex: 입력, 출력 I/F 각각 구성)
- 방법: 명확한 I/F 성격 분리, 공유 I/F 재사용 극대화, 기 구현 Client 변경 최소화
- 특징: Client는 사용하지 않는 I/F에 의존관계 맺지 않음(소스레벨 가독성 향상)
2) 개방폐쇠 원칙 (Open-Closed Principle)
- 의미: 소프트웨어 Entity(classes, Modules, Function)는 확장에는 열려있고
수정에는 닫혀있어야 한다는 설계 원칙(상속기능,유연성확보)
- 방법: 클래스간 공통속성 추출 추상클래스 디자인, 상속받아 세부구현, Adapter 통한 접근
- 특징: Class 변경에 따른 클라이언트 코드 변경 및 영향 최소화
3) 단일책임의 원칙 : SRP (Single Responsibility Principle)
- 의미: 객체가 제공하는 모든 서비스는 그 하나만의 책임만을 수행해야 한다는 원칙(응집도향상)
- 방법: Extract Class, Extract Method 이용, 책임별 Class로 분할, 같은 책임 통합.
- 특징: 함수(I/F)가 아닌 객체에 초점. 산탕총 수술 (변경 전파 폭풍) 방지
4) 리스코프 치환원칙 (Liskov Substitution Principle)
- 의미: 자식들은 부모타입들이 사용되는 곳에 대체될 수 있어야 함.
- 방법: Overriding, Overloading. 부모 Class와 동이란 I/F 이름 이용.
- 특징: 파생 클래스는 확장이 주요 목적, 추가는 부가적 문제. 부모 클래스 책임을 넘지 않음.
(5) 의존관계 역전의 원칙 (The Dependency Inversion Principle)
- 의미: 의존 대상은 파생 클래스가 아닌 추상 클래스여야 함.(상위레벨 클래스 의존만 가능)
- 방법: Interface에 의한 프로그래밍, 객체간 연동.
- 특징: 참조는 부모 클래스 I/F에 의존. LSP 선행 필수.
(낮은결합도,확장성 높아져 유지보수성 햐상)
3. 객체지향 설계원칙의 활용 및 고려사항
가. 설계 품질평가: Class Diagram, 참조도를 객체지향 원칙에 준하여 품질 평가
나. 리팩토리 기준: Class 구성을 설계 원칙에 부합하도록 분해/통합 및 I/F 분리 수행
다. 지나친 일반화 배제: Class의 비대화 및 기능 불명확 땨른 설계원칙 위해, 모호성 발생
라. 디자인패턴 활용: 객체지향 설계원칙 적용의 Best Practice 도입으로 효과적인 적용.
"끝"
I. 객체지향설계의향후전망및실무적용시고려되어야될사항
가. 적용방법론과기술적측면에서의향후전망
구분 |
내용 |
방법 |
- 소프트웨어개발이복잡, 다양해짐으로 Prototype을개발하여위험요인사전제거하는추가활동필요 -웹개발환경의보편성으로유사반복내용에대한디자인패턴개발적용및 소프트웨어시스템관점으로접근하고있음. - 개발의생산성을위해 CASE도구및 Repository를환경을토대로버전및형상관리를위한자동화추세 |
기술 |
- 최근프로그래밍언어가분산객체환경을지원하는웹서비스가가능한플랫폼지원 - 객체지향기술은기업비즈니스또는산업차원에서소프트웨어재사용성을높이기위해 CBD 프로젝트가활성화될전망임 |
나. 객체지향기술적용시고려되어야할항목
항목 |
내용 |
프로젝트착수시 |
- 프로젝트착수시에객체지향은재사용에대한규모산정 - 재사용체계구축에대한수립이필요. 또한재사용성의활용도측면에서의고려가검토되어야함 |
프로젝트수행시 |
- 분석/설계시에클래스의책임과역할분석을위한 CRC(Candidate, Responsibility, Collaboration)카드작성 - 재사용성을극대화하기위한 Design Pattern 활용 |
유지보수수행시 |
- 재사용컴포넌트관리와프로세스(기능)과연계관리가필요 - 컴포넌트의조립으로결합컴포넌트생성 |
구분 |
내용 |
SRP |
- Single Responsibility Principle (단일책임의 원칙) - 한 개의 클래스는 한 개의 책임만을 담당해야 함 특징-응집도 향샹으로 유지보수성 향상 하나의 책임만 수행하므로 변화에 적응 높음 |
OCP |
- Open-Closed Principle (개방-폐쇄 원칙) - 확장에는 열려있고, 변경에는 닫혀 있어야 함 특징 - 기존코드의 변경없이 확장을 통한 변경을 허용 기능의 상속이 아닌 설계의 유연성 강조 |
LSP |
- Liskov Substitution Principle (리스코프 대체 원칙) - 수퍼클래스는 구상클래스로 대체할 수 있음 특징-클래스 목적에 맞게 설계하기 때문에 상하위 클래스 호환성 향상 자식 클래스는 부모클래스의 책임을 넘지 않음 |
ISP |
- Interface Segregation Principle (인터페이스 분리원칙) - 하나의 인터페이스 보다, 다수의 구체적 인터페이스가 좋음 특징-소스레벨 가독성 향상 명확한 I/F 성격 분리, 공유 I/F 재사용 극대화, 기 구현 Client 변경 최소화 |
DIP |
- Dependency Inversion Principle (의존관계 역전 원칙) - 추상화된 것은 구체적인 것에 의존하면 안됨 특징-(낮은결합도,확장성 높아져 유지보수성 햐상) interface에 의한 프로그래밍 |
======================================================
1.컴포넌트 재사용을 통해 생산성을 향상시키는 CBD 방법론 개요
가.CBD (Component Based Development)방법론의 정의
- 컴포넌트 개발, Repository에 저장, 컴포넌트 조립을 통해
재사용성과 비즈니스 적시성을 향상시키는 개발 방법론
나.CBD 방법론의 진화형태
- Porduct Line : 제품중심 Core Assets 식별, CBD 기반 개발
- SoA : 공유와 재사용 가능한 서비스를 컴포넌트와 조합
2.CBD 방법론의 주요 특징
가.CBD 방법론의 주요 특징
1) UseCase Driven : 사용자 요구사항 분석으로 컴포넌트 식별
2) Blackbox Reuse : I/F 기반의 컴포넌트 호출
3) Iteration : 개발단계 반복을 통해 위험을 취소화
4) Lossely Coupled : MVC 모델에 기반한 약결합 구현
나.CBD 방법론 절차
1) 컴포넌트개발(CD) : usecase로 컴포넌트 식별하고 개발, 저장소저장
2)컴포넌트조립(CBSD) : 기존 컴포넌트를 조립하여 SW 개발
다.CDB 방법론의 종류
1)UP(Unified Process) : UML 기반, 아키텍처중심, 2차원구조(동적, 정적)
2)마르미III : 한국형CBD, 분석강조, 미니프로젝트 반복, 프로토타입 후 진행
3)Catalysis : UML 표기기반 CBD, 분산시스템 모델링/구축
3.CBD 개발 SW의 평가 요소
가.응집도:컴포넌트 기능의 충실도, 높을 수록 좋음
나.결합도:컴포넌트간의 관련성, 낮을 수록 좋음
다.독립성:플랫폼 종속성 여부, 종속되지 않아야 함
라.Round Trip Engineering : 분석/설계/구현/테스트 자동화 도구 지원 여부
=======================================================
*** 추가사항
1.CBD 방법론의 장점
가.생산성 : 부품 조립을 통해 APP 개발시간 단축 및 개발 생산성 향상
나.변경용이성 : 요구사항 수용에 안정적이고 신속한 변경 가능
다.재사용성 : 바이너리 기반의 재사용 및 컴포넌트 대체 용이
라.관리용이성 : 독립적인 컴포넌트 단위로 복잡성 최소화
마.기술집약성 : 기술 숙련에 대한 검증, 아키텍처, 프레임워크, 분산 객체 기술 등
2.컴포넌트 식별 방법
가.유즈케이스 시나리오 분석을 통한 컴포넌트 도출
- include : 동일하게 반복되는 <> 관계의 유즈케이스 도출
- extend : 특정조건에 의해 수행되는 <>관계의 유즈케이스 도출
나.설계단계의 UI Layout 설계 혹은 UI 네비게이션 설계 시 도출
- 공통 UI (공통화면일 경우), 공통 UI 컨트롤(페이지 Up/Down 등 상/하위 컨트롤 도출)
다.<> 클래스 상관관계 분석을 통한 컴포넌트 도출 : Core클래스 + 종속클래스그룹핑
라.Usecase와 <> 클래스의 상관관계 분석으로 도출
마.전문가 판단
'정보관리기술사 > sw공학' 카테고리의 다른 글
요구공학 개요 (0) | 2015.03.18 |
---|---|
MDA (0) | 2015.03.17 |
유즈케이스 모델링,UML 2.0 (0) | 2015.03.17 |
RUP 4+1 View (0) | 2015.03.15 |
나선형 모델,SCRUM (0) | 2015.03.15 |
RECENT COMMENT