본문 바로가기
정보처리기사/어플리케이션개발

정보처리기사 실기 어플리케이션 개발 [객체지향 소프트웨어 공학]

by boolean 2017. 4. 15.
728x90

정보처리기사 실기 어플리케이션 개발 [객체지향 소프트웨어 공학]

개요

현실 세계의 entitiy를 하나의 object로 만들어, 소프트웨어를 작성할 때에도 객체를 조립하듯이 하는 기법

구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 제시

소프트웨어의 재사용 및 확장성을 높임 --> 고품질의 빠른 개발. 유지보수 용이

복잡한 구조를 단계적(계층적)으로 표현. 멀티미디어 데이터 및 병렬 처리 지원

구성 요소

  • 객체 (object)

데이터 + 데이터를 처리하는 함수 ==> 두 가지를 하나로 모은 모듈

데이터 : 객체가 가지고 있는 정보. 속성. 상태. 분류

데이터 처리 함수 : 객체가 처리하는 기능. 객체의 상태를 참조하거나 변경. (=메소드.서비스.동작.연산)

  • 클래스 (class)

공통된 속성과 연산을 갖는 객체의 집합

객체들이 갖는 속성과 연산을 정의

Instance (인스턴스) : 클래스에 속한 객체.   인스턴스화: 클래스로 새로운 객체 생성하는 것

최상위 클래스는 유일하게 상위 클래스를 갖지 않음.

슈퍼클래스 : 특정 클래스의 상위(부모) 클래스.

서브클래스 : 특정 클래스의 하위(자식) 클래스

  • 메시지 (message)

객체 간의 상호작용할 때 사용하는 수단. 외부에서 메소드를 일으키는 요구사항.

메시지를 수신받은 객체는 요구된 메소드를 수행하여 결과 반환


객체지향 기법의 원칙

  • 캡슐화 (encapsulation)

데이터와 데이터 함수를 하나로 묶는 것.

재사용이 쉬움

객체 세부 내용 알필요가 없으므로 인터페이스가 단순해짐

객체 간 결합도가 낮아짐

  • 정보 은닉 (information hiding)

다른 객체에게 자신의 정보를 숨김. 연산을 통하여 접근 허용

객체의 수정이 다른 객체에게 주는 영향이 적음 (최소화)

유지보수 및 소프트웨어 확장 시 오류 최소화

  • 추상화 (abstraction)

불필요한 부분 생략. 객체의 중요한 속상에 중점을 두어 모델화

상속성 (inheritance)

상위 클래스의 모든 속성과 연산을 하위클래스가 물려 받음

하위 클래스는 상위 클래스의 속성과 연산을 정의하지 않고서 사용할 수 있음

하위 클래스는 상위 클래스의 속성 및 연산 외에 새로운 속성과 연산 추가 가능

  • 다형성 (polymorphism)

메시지에 의해 객체가 수행될 때, 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답하는 능력

객체는 동일한 메소드를 사용하여 같은 의미를 갖는 결과를 내놓음

객채지향 기법의 생명주기

계획 및 분석 -> 설계 -> 구현 -> 테스트 및 검증 

각 단계의 전환이 쉬우므로, 각 과정이 명확하게 순차적으로 이루어지지 않음


  • 객채지향 분석 (Object Oriented Analysis, OOA)

사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 관련 속성 및 연산, 객체 간의 관계등을 정의하여 모델링하는 것

객체지향 분석의 방법론

Rumbaugh(럼바우) 방법

가장 일반적으로 사용. 객체 모델, 동적 모델, 기능 모델로 나누어 수행

Booch(부치) 방법

미시적(micro) 및 거시적(macro) 개발 프로세스를 모두 사용

Jacobson(제이콥슨) 방법

use case를 강조하여 분석

Coad와 Yourdon 방법

e-r 다이어그램을 사용하여 개체 활동을 데이터 모델링하는 데 초점

Wirfs-Brock 방법

분석과 설계 간의 구분이 없음.

고객 명세를 평가하여 설계 작업까지 연속적으로 수행


** 럼바우의 분석 기법

= 객체 모델링 기법 (OMT)

객체 모델링

=정보 모델링

시스템에서 요구되는 객체를 찾아 속성과 연산 식별 및 객체 간 관계 규정하여 객체 다이어그램으로 표현

순서

객체/클래스 식별 --> 클래스 자료사전 작성 --> 클래스 간 관계 정의 --> 객체 속성 및 연결 관계 정의 --> 클래스 계층화, 모듈 정의 --> 생성된 모형을 반복적으로 검증

동적 모델링

상태 다이어그램을 이용하여 시간의 흐름에 따른 객체 간 제어 흐름, 동작 순서 등 동적 행위 표현

객체나 클래스의 사건, 상태를 중심으로 다룸

순서

상호 작용 순서에 대한 시나리오 작성 --> 시나리오를 역할과 시간에 따라 표기하여 사건 추적도 작성 --> 추적도를 바탕으로 사건 흐름도 작성 --> 사건과 상태를 연결시킨 상태도 작성

기능 모델링

자료 흐름도(DFD)를 이용하여 다수의 프로세스 간의 자료 흐름을 중심으로 처리 과정을 표현한 모델링

입력에 따른 어떤 결과를 구할지 표현

순서

외부와 시스템 간 입출력 자료 정의 --> 자료 흐름도 상세화 --> 프로세스의 기능에 대한 정의를 기능명세서로 작성 -->제약조건 파악 --> 최적화 기준 명세화



  • 객채지향 설계 (Object Oriented Design, OOD)

분석 모델을 설계 모델로 변환

시스템 설계 및 객체 설계 수행

설개 개념 : 추상화, 정보은닉, 기능 독립성, 모듈화⭐️ , 상속성

일반적인 설계 순서

문제 정의 -> 요구 명세화 -> 객체 연산자 정의 -> 객체 인터페이스 결정 -> 객체 구현


럼바우(rumbaugh)의 설계

시스템설계

전체적인 시스템 구조 설계

분석 단계의 분석 모델을 서브 시스템으로 분할하여 시스템 계층을 정의

분할 과정 중에서 성능 최적화 방안, 문제 해결 전략 등을 확정

객체설계

분석 단계에서 만들어진 객체와 요소들을 이용한 통신을 설계모델로 제작

부치(Booch)의 설계

자료 흐름도(DFD)를 사용하여 객체를 분해하고, 객체 간 인터페이스를 찾아 ADA 프로그램으로 변환

윌리엄 로렌슨(William Lorensen)의 설계

추상화, 상속성, 메시지 등의 OOD 개념을 직접 지원해주는 기능을 갖고 있는 프로그래밍 언어 (예,smalltalk)로 개발하기 위한 기법



  • 객채지향 구현

객체는 순차적으로(sequentially) 또는 동시적으로(concurrently) 구현 될 수 있다

객체지향 프로그래밍 (OOP)

새로운 개념의 모듈 단위(객체)를 중심으로 하여 프로그램 개발

개발 언어

객체 기반 (객체만 지원) - ada, actor

클래스 기반 (객체와 클래스 지원)- clu

객체 지향성 (객체, 클래스, 상속 지원)- simula, smalltalk, c++, object C 등


  • 객채지향 테스트

클래스 테스트

구조적 기법에서의 단위테스트와 같은 개념. 최소 단위의 객체 검사

통합 테스트

객체를 결합하여 하나의 시스템으로 완성 시키는 과정에서 검사

스레드 기반 테스트 - 각각 스레드가 통합되고 개별적으로 테스트

사용 기반 테스트 - 독립 테스트 후 종속 테스트

확인 테스트

요구사항 만족 여부 검사

시스템 테스트

모든 요소들이 적합하게 통합되고 올바르게 수행하는지 테스트



출처: http://emzei.tistory.com/209 [emzei]

댓글