본문 바로가기
소프트웨어

[소프트웨어] 모듈의 독립성 평가, 코드 종류

by 정공자씨 2024. 1. 15.

 

 


모듈


 

1. 모듈이란?

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

- 시스템을 독립적 부분으로 분할하고, 복잡한 문제를 작고 간결한 부분으로 나누어, 문제를 해결하자는 하향식 방법

 

 

 

2. 모듈의 특징

  • 코딩, 컴파일 독립적으로 실행되며 재사용이 가능
  • 모듈의 기능적 독립성은
    • 소프트웨어를 구성하는 각 모듈의 기능이 서로 독립됨을 의미하는 것으로
    • 모듈이 하나의 기능만을 수행하고, 다른 모듈과의 과도한 상호작용을 배제함으로써 이루어짐
  • 즉, 모듈의 독립성을 높이기 위해서는 결합도는 줄이고 응집도는 높인다 ★
    • 결합도는 줄임 : 다른 모듈과의 연결성
    • 응집도는 줄임 : 혼자 자체적으로 해결할 수 있는 정도
  • 다른 모듈의 영향을 주지 않을 수 있으므로, 수정이 용이

 

 

 

3. 모듈의 독립성 평가 기준

① 응집도
② 결합도
★  모듈의 독립성 확보를 위하여 결합도는 약하게, 응집도는 강하게 설계해야 함

 

1) 응집도(cohesion)

 

   (1) 의미

  • 한 모듈 내에 있는 구성 요소의 기능적 관련성을 평가하는 기준
  • 응집도가 높을수록 모듈의 독립성은 높아짐
  • 가장 바람직한 응집도 : 기능적 응집도

   (2) 구분

  • 우연적 응집도 : 관련성 없는 요소들로 우연히 구소
  • 논리적 응집도 : 유사한 기능들이 하나의 
  • 절차적 응집도 : 모듈 내 기능이 절차에 맞게 처리
  • 좋은 설계를 위한  가장 바람직한 응집도 : 기능적 응집
응집도 순서  (약 - 강) : 우 - 논 - 시 - 절 - 통 - 순 - 기

 

 

 

2) 결합도(coupling)

 

(1) 의미

  • 모듈과 모듈간의 상호 의존도를 측정하는 것
  • 좋은 설계는 결합도를 최소화하여 모듈의 독립성을 높인 것 
  • 좋은 설계를 위한 가장 바람직한 결합도 : 자료 결합도

(2) 종류

  • 자료 결합도 : 모듈간 꼭 필요한 자료만
  • 스탬프 결합도 : 모듈간 자료구조 전달, 불필요한 자료도 전달
  • 제어 결합도 : 모듈간  제어신호를 전달
  • 외부 결합도 : 모듈간 전역 변수로 선언된 공유자료 전달
  • 공통 결합도 : 모듈간 공통 주소를 사용하여 음성적 전달
  • 내용 결합도 : 모듈간 내용으로 전달하여, 그 내용이 변경되면 모든 모듈이 영향
결합도 순서 ( 걍 - 약 ) : 내 - 공 - 외 - 제 - 스 - 자

 

 

 

4. Fan-in/fan-out : 제어 계층

모듈 간의 효과적인 제어를 위하여, 설계에서 계층적 자료조직이 제시되어야 함

 

1) 설명

Fan-in(공유도)
  • 어떤 모듈을 제어(호출)하는 모듈의 수
  • 나를 가리키는 상위 모듈의 개수
Fan-out(제어폭)
  • 어떤 모듈에 의해 제어(호출)되는 모듈의 수
  • 내가 가리키는 하위 모듈의 개수

 

2) 시스템 복잡도 최적화

Fan-in이 높은 경우
  • 재사용 측면에서 설계가 잘 되어 있다고 볼 수 있으나,
  • 단일 장애점이 발생할 수 있으므로 중점적인 관리 및 테스트가 필요
Fan-out이 높은 경우
  • 불필요하게 다른 모듈을 호출하고 있는지 검토하고
  • 단순화시킬 수 있는지 여부 확인 필요
★  Fan-in은 높게,  Fan-out은 낮게 설계해야 시스템 복잡도를 최적화

 

 

3) 그림 

  • F를 부르는 상위 모듈(fan-in) : B, C   
  • F가 하위 모듈을 가리킴, F에 의해 제어되는 모듈(fan-out) : H   

 

 

 


코드 설계


 

코드란?

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

 

코드의 3가지 기능

1. 분류 기능
2. 식별 기능 :  데이터를 식별
3. 배열 기능

 

 

 

코드의 종류

 

1. 순차코드(sequence code)

 

[ 의미 ]

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

 

[ 특징 ]

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

 


 

 

2. 블록코드(block code, 구분코드)

[ 의미 ]

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

 

[ 특징 ]

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

 


 

 

3. 그룹분류식 코드(Group Classification Code)

 

[ 의미 ]

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

 

[ 특징 ]

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

 


 

 

4. 10진코드(Decimal Code)

 

[ 의미 ]

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

 

[ 특징 ]

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

 


 

 

5. 표의 숫자 코드(Significant code)

 

[ 의미 ]

  • 코드화 대상 항목의 성질(물체의 길이, 넓이, 부피,지름 등등)을 그대로 코드에 적용시키는 방법

 

[ 특징 ]

  • 코드에 대상체의 성질을 그대로 반영하므로 기억하기가 쉬움
    • 중량, 용량, 거리, 크기 면적 등의 물리적 수치를 직접 코드에 적용
  • 코드의 추가 및 삭제가 용이

 


 

 

6. 연상코드(Mnemonic code)

 

[ 의미 ]

  • 코드화 대상 항목의 명칭이나 약호와 관계 있는 숫자나 문자 기호를 이용하여 코드를 부여
  • 명칭과 관련된 숫자나 문자 기호(예: smart - 57, 스마트티비 57인치)

 

[ 특징 ]

  • 코드만 보고도 대상 품목을 쉽게 연상할 수 있음
  • 지명, 물건명, 상호명에 많이 적용