모듈
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인치)
[ 특징 ]
- 코드만 보고도 대상 품목을 쉽게 연상할 수 있음
- 지명, 물건명, 상호명에 많이 적용
'소프트웨어' 카테고리의 다른 글
[소프트웨어] 디자인 패턴 개요 및 종류 (0) | 2024.01.15 |
---|---|
[소프트웨어] 객체 지향의 개요, 객체지향 방법론의 종류 (1) | 2024.01.15 |
[소프트웨어] 소프트웨어 아키텍처, 아키텍처 패턴 (0) | 2024.01.15 |
[소프트웨어] 요구사항 분석, UI 프로토타입 (0) | 2024.01.15 |
[소프트웨어] UI의 특징, UI 설계 도구, UI 요구사항 확인 (0) | 2024.01.15 |