[소프트웨어 설계] Module

이도연·2024년 6월 7일

정보처리기사

목록 보기
4/21

Module

모듈화를 통해 분리된 시스템의 각 기능들로 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용

  • 하나의 기능만을 수행하고 다른 모듈과의 과도한 상호작용을 배제함으로써 이루어짐
  • 모듈의 독립성을 높이기 위해서는 결합도 줄이고 응집도 높임.
  • 다른 모듈의 영향을 주지 않을 수 있으므로 수정 용이

평가 기준

응집도(cohesion)

한 모듈 내에 있는 구성 요소의 기능적 관련성을 평가하는 기준
응집도가 높을수록 독립성이 높아짐.

구분응집도설명
기능적 응집도
(funtion cohesion)
모듈 내의 요소가 갖는 기능의 용집도
순차적 응집도
(sequential cohesion)
모듈 내의 상위 line 의 출력요소가 하위 line 의 입력요소로 사용
통신적 응집도
(communicational cohesion)
여러가지 기능을 수행하여 모듈 내 구성 요소들이 같은 입력자료를 이용하거나 동일 출력 데이터를 만들어내는 경우
절차적 응집도
(procedural cohesion)
모듈 내 명령 기능이 절차에 맞게 처리 - 입출력을 공유하지 않으나 순서에 따라 수행될 필요가 있는 경우
시간적 응집도
(temporal coheision)
특정한 시점에서 작업을 수행하는 경우, 시간의 흐름에 따라 작업순서가 정렬되는 응집관계
논리적 응집도
(logical cohesion)
유사한 기능들이 하나의 모듈 안에 구성된 경우 사용하는 매개변수에 따라 처리하는 내용이나 경로가 달라지게 됨
우연적 응집도
(coincidental cohesion)
관련 없는 요소들로 구성된 모듈(단순히 일정한 크기로 분할된 경우)

결합도(coupling)

모듈과 모듈 간 상호 의존도를 측정하는 것
결합도를 최소화하여 모듈 독립성을 높이는 것이 좋다.

구분결함도설명
자료 결합도
(data Coupling)
두 모듈 간 꼭 필요한 자료만 전달하는 양성적 결합성
스탬프 결합도
(stamp Coupling)
두 모듈 간 자료구조로 전달하는 결합성으로 불필요한 자료도 전달되는 문제 발생
제어 결합도
(control Coupling)
두 모듈 간 제어신호를 전달하는 결합성
외부 결합도
(external Coupling)
두 모듈 간 전역변수로 선언된 공유자료 전달
공통 결합도
(common Coupling)
두 모듈 간 공통주소를 사용하여 음성적 전달
내용 결합도
(content Coupling)
두 모듈 간 내용으로 전달하여 그 내용이 변경되면 사용하는 모든 모듈이 영향



Fan-in/Fan-out

Fan-in(공유도)

어떤 모듈을 제어(호출)하는 모듈의 수를 의미

fan-in 이 높다는 것은 재사용 측면에서 설계가 잘 되어 있다고 볼 수 있다.
그러나 단일 장애점이 발생할 수 있으므로 중점적인 관리 및 테스트가 필요하다.

Fan-out(제어폭)

어떤 모듈에 의해 제어(호출)되는 모듈의 수를 의미

Fan-out 이 높은 경우 불필요하게 다른 모듈을 호출하고 있는지 검토하고 단순화시킬 수 있는지 여부 확인이 필요하다.

-> Fan-in 은 높게, Fan-out 은 낮게 설계해야 시스템 복잡도를 최적화할 수 있다.



코드 설계

컴퓨터를 이용하여 자료를 처리하는 과정에서 분류, 조합 및 집계를 용이하게 하고, 특정 자료의 추출을 쉽게 하기 위해서 사용하는 기호이다.

코드의 기능 - 분류 기능, 식별 기능, 배열 기능


순차 코드(sequence code)

자료 발생 순서, 크기 순서 등 일정 기준에 따라서 처음부터 차례로 일련변호를 부여

  • 항목 수가 작고 변경이 적은 자료에 적합
  • 일정 순서대로 코드를 할당하기때문에 기억 공간 낭비x 자릿수가 가장 짧음

블록 코드(block code)

코드화 대상 항목 중 공통이 있는 것끼리 블록으로 구분하고, 각 블록 내에서 일련번호 부여

  • 자릿수가 비교적 짧고 블록별로 식별과 분류가 쉽다.
  • 블록마다 여유 코드를 두어 코드의 추가가 쉽다.

그룹분류식 코드(Group code)

코드화 대상 항목을 일정 기준에 따라 대,중,소분류 등으로 구분하고, 각 그룹안에서 일련변호 부여

  • 분류시준이 명확한 경우 이용도가 높다
  • 기계어 처리에 적합
  • 각 자리가 특정한 의미를 가지고 있어, 구분별 분류와 집계가 편리하고 의미가 명확
  • 예시) 주민번호 : 생년월일-행정구역코드(도/시/군/구/읍면/동리-일련번호)

10진코드(Decimal Code)

코드화 대상 항목을 0~9까지 10진수로 분할하고, 각각을 다시 10진수로 분할하는 방법을 필요시까지 반복

  • 도서관에서 도서 정리 목적으로 널리 사용
  • 코드 체계가 명확하고 무한대로 확장 가능

표의 숫자 코드(Significant code)

코드와 대상 항목의 성질(물체의 길이, 넓이, 부피, 지름 등)을 그대로 코드에 적용

  • 코드에 대상체의 성질을 그대로 반영하므오 기억이 쉽다
  • 코드 추가 및 삭제 용이
  • 예시) G 78-15 -> 프로파일 8.25인치 / 높이와 너비 비율 / RIM 15인치

연상코드(Mnemonic code)

코드화 대상 항목의 명칭, 약호와 관계 있는 숫자나 문자 기호를 이용아여 코드 부여

  • 코드만 보고도 대상 품목 쉽게 연상 가능
  • 지명, 물건명, 상호명에 적용
  • 예시) 한국 -> KOR

0개의 댓글