소프트웨어 공학 - 6
객체 지향 (객체에 근간) 기법
실세계의 현상을 컴퓨터상에 객체로서 실현(모델화)함으로써 컴퓨터를 자연스러운 형태로 사용하여 다양한 문제를 해결하기 위한 프로그램 기법..
그냥 객체로 상호작용하는 프로그래밍 기법이라 쉽게 생각하자..
쉽게 이해, 재사용, 유지보수 쉬운 특징이 있다.
객체 지향 프로그래밍은 객체, 클래스, 메시지를 이용하여 개발하는 방식이다.
객체 : 개체 , 속성, 메소드로 구성된 클래스의 인스턴스를 의미
클래스: 객체의 타입을 정의하고 객체를 생성하는 틀을 의미
메시지: 객체 간의 통신을 의미
객체의 구성 요소
현실 세계의 개체(Entity)를 데이터 속성(Attribute)과 메소드(Method)를 결합 시킨 형태로 표현한 것
개체 : 현실 세계의 본직
속성 : 자료 저장소의 역할을 하며, 절차 지향 프로그래밍의 변수와 대응
메소드 : 호출 단위를 의미하며, 절차 지향 프로그래밍의 함수와 대응. 메시지를 받아 실행해야 할 객체의 구체적 연산.
객체지향기법의 원칙
- 캡슐화 : 데이터와 함수를 하나로 묶는 것. 정보가 은폐되어 오류의 파급효과가 적입. 재사용이 용이. 인터페이스가 단순해지고 결합도가 낮아짐
- 정보 은닉 : 자신의 정보를 숨기고 고려되지 않는 영향을 최소화
- 상속성 : 부모클래스의 모든 속성과 메서드를 하위 클래스가 상속
- 추상화 : 중요하고 관계있는 부분만
- 다형성 : 하나의 메시지에 여러 가지 형태의 응답. 자료형에 따라 각가 다른 작업을 수행할 수 있게 하는. 상속과 관계가 깊은 개념
객체지향 분석
부치 방법(Booch)
- 미시적, 거시적 개발 프로세스를 모두 사용하는 분석 방법
- 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의
Coard 와 Yourdon 방법
- E-R 다이어그램을 사용하여 객체의 행위를 모델링
- 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의
- 연산과 메시지 연결 정의 등의 과정으로 주로 관계를 분석
럼바우의 방법
- 가장 일반적으로 사용되는 방법
- 분석 활동을 객체모델, 동적모델, 기능 모델로 나누어 수행하는 방법
- 모든 소프트웨어 구성요소를 그래픽 표기법을 이용하여 모델링하는 기법
객체 모델링 : 객체들 간의 관계를 규정하여 표현
동적 모델링 : 상태도를 이용
기능 모델링 : 자료 흐름도 이용
소프트웨어 재사용
소스코드 (재사용에 가장 많이 이용)
소프트웨어 크기가 작을 수록 재사용률이 높다
개발 시간과 비용 단축, 품질 및 생산성 향상, 프로젝트 실패 위험 감소, 시스템 구축 방법에 대한 지식공유
(고급 프로그래머 배출 X, 종속 X, 보안 X, 새로운 개발 방법X )
소프트웨어 재공학
기존의 소프트웨어를 파기하지 않고 새로운 기능을 추가하여 예방 유지보수 측면에서 문제를 해결. 비용 절감.
(수정 유지보수 측면X, 최신의 소프트웨어보다 효율적X, 재사용 X, 재개발은 재공학의 활동에 포함X)
주요활동
- 분석 : 기존 소프트웨어 명세서를 확인하여 소프트웨어 동작을 이해하고, 재공학 대상을 선정
- 개조 : 하나의 표현을 다른 형태로 바꾸는것
- 역공학 : 기존 SW를 분석하여 재발견하거나 다시만듬. 일반적인 개발 단계와 반대되는 의미로 기존 코드를 복구. 원시 코드로부터 설계정보 추출 및 절차 설계 표현, 프로그램과 데이터 구조 정보 추출. 대상이 되는 SW가 있어야함.
- 역공학의 가장 간단하고 오래된 형태는 재문서화
- 이식
- 재구성 : SW를 형태에 맞게 수정하는 활동. 상대적으로 같은 추상적 수준에서 하나의 표현을 다른 표현 형태로 바꿈
재공학의 목표
복잡한 시스템을 다루는 방법 구현, 다른뷰의 생성, 읽어버린 정보의 복구 및 제거, 부작용의 발견
CASE
소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화 하는 것
(구현과 유지보수만을 중심으로 한다. X) (소프트웨어 사용방법을 제공한다X) (기존 소프트웨어를 다른 환경에서 사용할 수 있도록 변환한다X) (새로운 기술을 적용시킨다X) (생명주기 모형X)
효과
개발 시간 단축, 품질 향상 유지보수 용이, 재사용성 향상, 개발 주기의 표준화
CASE 분류
상위 CASE : 전반부에 사용, 요구 분석과 설계단계
하위 CASE : 하반부에서 사용, 코드의 작성과 테스트, 문서화 과정
통합 CASE : 전체 과정을 지원