반응형

모듈의 성능 평가

모델링 절차

1) 설계 모델링

① 설계 모델링의 개념

  • 요구사항 분석 단계를 바탕으로 정의된 기능들을 구체적으로 구현하여 명시하는 단계
  • 소프트웨어에서 요구되는 기능과 성능을 만족하도록 설계 명세서를 작성하는 과정
  • 기능 외에도 소프트웨어 구조, 행위들을 모델링하여 분석, 검증하는 단계
  • 소프트웨어 실행에 필요한 관련 기술과 원칙을 적용하는 과정

② 설계 모델링의 절차

  • 요구 명세 : 기능적 요구, 품질적 요구, 형태적 요구 사항 등을 정의
  • 설계 프로세스 : 분석, 명세, 검증, 모델링 절차를 반복하여 설계
  • 아키텍처 설계 명세 : 설계 프로세스를 통해 생성된 행위 및 구조 모델의 테스트를 계획하고 실행
  • 상세 설계 명세 : 코드, UI, 인터페이스 등을 설계

③ 설계 모델링의 구성

  • 구조 모델의 구성

- 시스템 구조 : 컴포넌트 구성 요소와 연결 구조

- 컴포넌트 구조 : 인터페이스, 데이터 구조, 알고리즘 구조

  • 구조 모델의 요소

- 정적(static) 요소 : 구성 요소의 유형 및 결합 관계, 인터페이스, 상호작용 채널

- 동적(dynamic) 요소 : 동적 생성 및 소멸, 결합과 연결, 위치 이동, 복제

  • 행위 모델의 구성

- 시스템 행위 : 시스템 기능 입출력, 컴포넌트 제어

- 컴포넌트 행위 : 계산, 실행 제어, 상호작용

  • 행위 모델의 요소

- 정적(static) 요소 : 입출력 데이터, 매핑, 데이터 흐름 채널

- 동적(dynamic) 요소 : 제어, 프로토콜, 상태 전이, 처리 및 입출력 순서, 알고리즘

2) 구조 모델링

  • 소프트웨어 구성 요소들 사이의 구조적 관계에 대한 특성을 모델링하는 과정
  • 구성 요소들은 유형, 인터페이스, 내부 설계 구조 형태별로 분류하여 구조화

3) 행위 모델링

① 기능적 특성 모델링 : 입출력 데이터, 데이터 흐름, 데이터 변환, 데이터 저장등을 모델링

② 동적 특성 모델링

  • 구성 요소가 언제 어떠한 순서로 수행되는지 모델링
  • 상태 전이, 데이터 흐름 경로, 사건 발생 순서, 실행 경로 등을 모델링

모듈의 성능 평가 기준

1) 결합도(Coupling)

  • 모듈 사이의 연관 관계에 의해 모듈이 서로 의존하는 정도를 의미
  • 결합도가 약할수록 의존성이 약해지기 때문에 모듈의 독립성이 높아짐

- 의존성/종속성(dependency) : 어떠한 기능의 결과가 다른 기능에 영향을 미치는 정도

- 독립성(independence) : 의존성의 반대 개념

- 대부분의 경우, 의존성을 줄이고 독립성을 높여 품질을 상승시킴

2) 응집도(Cohesion)

  • 모듈의 내부 요소들이 밀접한 관계를 맺고 있는 정도를 의미
  • 응집도가 강할수록 필요한 요소들로만 구성되어 있기 때문에 독립성이 높아짐

3) 모듈의 독립성과 품질의 관계

  • 모듈의 결합도가 약하고 응집도가 강할수록 모듈의 독립성이 높아짐
  • 독립성이 높아진 모듈은 높은 품질을 가짐

소프트웨어 모듈 결합도

1) 자료 결합도(Data Coupling)

  • 가장 낮은 결합도를 가지며 모듈의 품질을 향상시킴
  • 모듈 간의 인터페이스로 전달되는 인수와 전달받는 매개변수를 통해서만 상호작용이 일어나는 경우
  • Call By Value의 방식으로 함수를 호출

- 학점 계산을 위해 과목 점수를 전달하고, 전달받은 모듈로부터 계산된 학점이 반환

2) 스탬프 결합도(Stamp Coupling)

  • 두 묘듈이 동일한 자료구조를 부분적으로 공유하는 경우
  • 자료 구조의 어떠한 변화가 결합되어 있는 모든 모듈들에게 영향을 미침

- 고객 모듈의 대여기록을 고객등급 계산 모듈과 대여패턴 분석 모듈에 전달

3) 제어 결합도(Control Coupling)

  • 모듈간의 인터페이스로 값만 전달되는 것이 아니라 제어 요소를 전달하는 경우
  • 모듈이 전달하는 인수(제어 요소)로 인해 다른 모듈의 처리 절차가 변경되는 종속적인 관계

- 대여료 계산 모듈에 회원가입 여부를 전달하여 회원, 비회원의 대여료를 다르게 계산

4) 외부 결합도(External Coupling)

  • 두 모듈이 모듈 외부에 선언된 변수를 참조하는 경우
  • 외부 변수는 모든 모듈이 공통으로 사용 가능하므로 문제 발생의 가능성이 높음

- 소설 도서 등록 모듈과 만화 도서 등록 모듈에 도서를 등록할 때마다 모듈 외부의 전체 도서 개수(변수)를 증가시키거나 등록번호에 활용

5) 공통(공유) 결합도(Common Coupling)

  • 모듈이 다른 모듈의 내부 데이터를 참조하는 경우
  • 인수로 전달받은 매개변수가 아닌, 호출 모듈의 내부 전역 변수를 제어하는 Call By Reference 방식

6) 내용 결합도(Content Coupling)

  • 가장 높은 결합도를 가지며 모듈의 품질을 하락시킴
  • 모듈이 다른 모듈의 내부 기능과 데이터를 직접적으로 사용하는 경우
  • 가장 좋지 않은 결합으로 모듈의 설계를 다시 할 필요가 있음

소프트웨어 모듈 응집도

1) 기능적 응집도(Functional Cohesion)

  • 가장 강한 응집도를 가지며 모듈의 품질을 향상시킴
  • 모듈 내부의 모든 기능 요소들이 단일 문제를 해결하는 데 수행되는 경우
  • 모듈 구조의 최하위 계층에 많이 분포되어 있으며 기본 라이브러리의 모듈이 이에 해당

2) 순차적 응집도(Sequential Cohesion)

  • 모듈의 기능 수행의 결과(출력 데이터)를 그 다음 기능 수행의 입력 데이터로 사용하는 경우

- 합계 계산 모듈의 출력값이 평균 계산 모듈의 입력값이 되는 경우

3) 교환(대화)적 응집도(Communication Cohesion)

  • 모듈의 기능들이 동일한 입출력 데이터를 사용하여 서로 다른 기능을 수행하는 경우

- 합계 계산 모듈의 출력값이 평균 계산 모듈과 학점 계산 모듈의 입력값이 되는 경우

4) 절차적 응집도(Procedural Cohesion)

  • 모듈의 기능들이 하나의 문제를 해결하기 위해 순차적으로 수행되는 경우
  • 순차적 응집도와 달리 이전 기능의 출력 데이터를 현재 기능의 입력 데이터로 사용하지 않음

- 데이터 입력 모듈, 데이터 분석 모듈 등이 차례로 실행되는 경우

5) 시간적 응집도(Temporal Cohesion)

  • 각 기능들의 연관성은 없지만 특정 시기에 함께 처리해야 하는 기능들을 묶어놓는 경우

6) 논리적 응집도(Logical Cohesion)

  • 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 모듈이 형성되는 경우

7) 우연적 응집도(Coincidental Cohesion)

  • 가장 약한 응집도를 가지며 모듈의 품질을 하락시킴
  • 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우
  • 모듈화의 장점이 전혀 없고 유지보수가 어려움

※ <이기적> 환상의 콤비 정보처리기사 책으로 공부하며 정리한 내용입니다.

반응형

+ Recent posts