모듈의 성능 평가
모델링 절차
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)
- 가장 약한 응집도를 가지며 모듈의 품질을 하락시킴
- 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우
- 모듈화의 장점이 전혀 없고 유지보수가 어려움
※ <이기적> 환상의 콤비 정보처리기사 책으로 공부하며 정리한 내용입니다.
'Certificate > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 2023년 1회 정보처리기사 필기 합격 후기 (1) | 2023.03.25 |
---|---|
[정보처리기사] 소프트웨어 아키텍처 ( 정리, 공부 ) (0) | 2023.01.04 |
[정보처리기사] 공통 모듈 (정리, 공부) (0) | 2022.12.21 |
[정보처리기사] UI 설계 ( 정리, 공부 ) (1) | 2022.12.20 |
[정보처리기사] UI 요구사항 ( 정리, 공부 ) (0) | 2022.12.19 |