공통 모듈 설계(1)

김덕근·2022년 12월 27일
0

정보처리기사

목록 보기
6/17

공통 모듈

모듈의 개념(재사용, 분할과 정복)

전체 프로그램의 기능 중 특정 기능을 처리할 수 있는 실행 코드
(독립성이 높다 = 응집도 높고, 결합도 낮고)

재사용 범위에 따른 분류

  1. 함수와 객체 - 클래스나 메소드 단위의 소스 코드를 재사용
  2. 컴포넌트 - 컴포넌트 자체에 대한 수정 없이 인터페이스를 통해 통신하는 방식으로 재사용
  3. 애플리케이션 - 공통된 기능들을 제공하는 애플리케이션을 공유

재사용 유형

편의적 재사용(내부 재사용, 외부 재사용)
계획적 재사용(나중에 재사용)

재사용의 대표적인 사례

라이브러리(내부 라이브러리, 외부 라이브러리)
디자인 패턴(방식, 가이드)
프레임워크(공통적인 틀, spring)

공통 모듈 작성 원칙

정확성(Correctness)
명확성(Clarity)
완전성(Completeness)
일관성(Consistency)
추적성(Traceability)

모듈화 개념(효율적인 관리, 유지보수 용이, 오류 최소화, 노력/비용 최소화)
프로그램이 효율적으로 관리될 수 있도록 시스템을 분해하고 추상화 함


응집도(Cohesion)

개념

모듈 내부에서 구성 요소 간에 밀접한 관계를 맺고 있는 정도
응집도가 높을수록 필요한 요소들로 구성되어 있고 낮을수록 관련이 적은 요소들로 구성
응집도가 높을수록 잘 설계된 모듈

응집도 유형

  1. 기능적 응집도(Functional Cohesion) - 단일한 목적
  2. 순차적 응집도(Sequential Cohesion) - 한 활동의 출력값이 다음활동에서 사용할 경우
  3. 통신적 응집도(Communication Cohesion) - 동일한 입력과 출력
  4. 절차적 응집도(Procedural Cohesion) - 모듈안의 구성 요소들이 그 기능을 순차적으로 수행
  5. 시간적 응집도(Temporal Cohesion) - 특정 시간에 처리되어야 하는 활동
  6. 논리적 응집도(Logical Cohesion) - 유사한 성격, 특정 형태로 분류
  7. 우연적 응집도(Coincidental Cohesion) - 관련이 없을 경우

결합도(Coupling)

개념
모듈과 모듈 간의 관련성/의존성 정도
관련이 적을수록 모듈의 독립성이 높아 모듈간 영향이 적어진다.
결합도가 낮을수록 잘 설계된 모듈

결합도 유형

  1. 자료 결합도(Data Coupling) - 모듈간의 인터페이스로 값이 전달
  2. 스탬프 결합도(Stamp Coupling) - 배열이나 오브젝트,스터럭처 등이 (주소값)전달
  3. 제어 결합도(Contol Coupling) - 제어 요소가 전달(if...)
  4. 외부 결합도(External Coupling) - 외부의 다른 모듈에서 참조
  5. 공통 결합도(Common Coupling) - 전역 변수를 참조하고 전역 변수를 갱신하는 식의 상호작용
  6. 내용 결합도(Content Coupling) - 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용

팬인(Fan-in), 팬아웃(Fan-out)

소프트웨어의 구성요소인 모듈을 계층적으로 분석하기 위해 활용
팬인과 팬아웃 분석을 통해 시스템의 복잡도를 측정

시스템 복잡도를 최적화하기 위해서는 팬인은 높게, 팬 아웃은 낮게 설계

팬인(Fan-in)

  • 얼마나 많은 모듈들이 현재 모듈을 호출하는지를 나타낸다.
  • 해당 모듈로 들어오는 상위 모듈 수

팬아웃(Fan-out)

  • 어떤 모듈에 의해 호출되는 모듈의 수
  • 해당 모듈에서 호출하는 하위 모듈 수

코드 설계

코드의 기능
식별: 각 데이터 간의 성격에 따라 구분 가능
분류: 특정 기준이나 동일한 유형에 대한 그룹화
배열: 의미를 부여하여 나열 가능
기타: 표준화, 간소화, 연상, 암호화, 오류 검출

코드의 유형

  1. 순차 코드(Sequence Code) - 일정한 순서에 의해 일련번호를 부여하는 코드 / 1,2,3,4...
  2. 블록 코드(Block Code) - 공통 특징을 중심으로 항목들을 별도의 집단으로 분류하고, 한 집단 안에서 순서대로 코드를 부여 / 시/군/구 ...
  3. 10진 코드(Decimal Code) - 10진수 형태로 표현한 코드 / 5948..
  4. 그룹 분류 코드(Group Classification Code) - 대분류,중분류,소분류 각 분류별로 번호를 순서로 분류 / 대 - 중 - 소
  5. 연상 코드(Mnemonic Code) - 대상의 명칭과 관계있는 문자, 숫자, 약어를 사용 / TV_2022_10 ...
  6. 표의 숫자 코드(Significant Digit Code) - 중량, 면적, 용량 등의 물리적 수치를 이용 / 30-50-120(길이, 너비, 용량)
  7. 합성 코드(Combined Code) - 두 개 이상의 코드를 조합하여 만든 코드 방식

코드의 오류 발생 형태

  1. 생략 오류(Omission error) - 한 자리 빼고 기록 / 1234 -> 123
  2. 필사 오류(Transcription error) - 임의의 한 자리를 잘못 기록 / 1234 -> 1235
  3. 전위 오류(Transposition error) - 좌우 자리를 바꾸어 기록 / 1234 -> 1243
  4. 이중 오류(Double Transposition error) - 전위 오류가 두가지 이상 발생 / 1234 -> 2143
  5. 추가 오류(Addtion error) - 한 자리 추가로 기록 1234 -> 12345
  6. 임의 오류(Random error) - 위의 오류가 두 가지 이상 결합하여 발생 / 1234 -> 12367
profile
안녕하세요!

0개의 댓글