[정보처리기사_필기] 1-3. 애플리케이션 설계 - 2

팔랑이·2023년 6월 29일
0

정보처리기사

목록 보기
6/20
post-thumbnail

25. 모듈 (⭐️⭐️⭐️⭐️)

1. 개요

모듈화 통해 분리된 시스템의 각 기능
서브루틴, 서브시스템, 작업단위 등과 같은 의미로 사용

  • 단독 컴파일 가능, 재사용 가능
  • 각 모듈의 기능이 서로 독립됨
  • 독립성은 결합도와 응집도에 의해 측정

2. 결합도 (Coupling) ⭐️⭐️⭐️

모듈간 상호의존 정도 또는 두 모듈 사이의 연관관계

  • 결합도와 품질은 반비례 관계
  • 강할수록 유지보수가 어려움

결합도의 정도; 밑으로 갈수록 결합도가 강함 (내공외제스자)
✓ 자료 결합도: 모듈간 인터페이스가 자료 요소로만 구성될때의 결합도, 수정돼도 다른모듈 영향 X이므로 가장 바람직한 결합도
✓ 스탬프 결합도: 배열이나 레코드등 자료구조 전달될때
✓ 제어 결합도: 제어요소 전달하는 결합도, 하위모듈이 상위모듈에 처리명령 내리는 권리 전도현상 발생
✓ 외부 결합도
✓ 공통 결합도: 공통데이터영역을 여러모듈이 사용할때의 결합도, 공통데이터영역 변경시 이를 사용하는 모든 모듈에 영향
✓ 내용 결합도: 다른모듈의 내부기능 및 자료 직접 참조하거나 수정할때의 결합도

3. 응집도 (Cohesion) ⭐️⭐️⭐️

모듈의 내부 요소들이 서로 관련되어 있는 정도

  • 응집도와 품질은 정비례 관계

응집도의 정도; 밑으로 갈수록 응집도 약함 (기순교절시논우)
✓ 기능적 응집도: 모듈안의 모든 기능이 단일문제와 연관되어 수행
✓ 순차적 응집도: Sequential Cohesion, 활동후 출력 -> 다음활동 입력
✓ 교환적 응집도: 동일한 입출력으로 여러기능 수행
✓ 절차적 응집도: Procedural Cohesion, 순차+교환
✓ 시간적 응집도: 특정시간에 처리되는 기능 모아 하나의 모듈로
✓ 논리적 응집도: 유사성격, 특정형태 분류해 하나의 모듈로
✓ 우연적 응집도: 관련없는 기능들 하나의 모듈로

4. 팬인/팬아웃

팬인: 어떤 모듈을 제어(호출)하는 모듈의 수
팬아웃: 어떤 모듈에 의해 제어(호출)되는 모듈의 수

✓ 팬인이 높다 -> 재사용이 용이하다 but 단일 장애점 발생할 수 있음
✓ 팬아웃이 높다 -> 불필요하게 다른 모듈 호출하고 있는지 검토, 단순화 가능 여부 확인

팬인 높게, 팬아웃 낮게 -> 시스템 복잡도 최적화

N-S 차트: 논리 기술에 중점 둔 표현방법, 도형이용 (박스다이어그램)

  • 연속, 선택및 다중선택, 반복 등의 제어논리구조 표현
  • GOTO 나 화살표 사용 X
  • 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는데 적합

26. 공통 모듈 (⭐️⭐️⭐️⭐️)

1) 개요

여러 프로그램에서 공통적으로 사용할 수 있는 모듈

  • 자주 사용되는 계산식, 매번 필요한 사용자 인증(로그인!) 등
  • 재사용성확보, 중복개발 회피 위해 설계때 공통부분 식별 필요
  • 다른 개발자들이 이해할 수 있도록 명세기법 준수

    명세기법
    ✓ 정확성
    ✓ 명확성: 중의적 해석 없도록 명확하게 작성
    ✓ 완전성
    ✓ 일관성
    ✓ 추적성

2) 재사용

누구나 이해 가능, 사용법 공개
외부모듈과 결합도는 낮고 응집도 높으면 재사용 가능

규모에 따른 분류

  • 함수와 객체: 클래스나 메소드 단위의 코드 재사용
  • 컴포넌트: 수정 없이, 인터페이스 통해 통신
    컴포넌트; 하나 이상의 클래스로 작성되는 실행코드 기반의 모듈
  • 애플리케이션: 공통기능 제공하는 앱 공유

3) 효과적 모듈 설계 방안

  • 결합도 줄이고 응집도 높여 모듈의 독립성, 재사용성 높임
  • 모듈 제어영역 안에서 영향영역 유지
    ✓ 제어영역: 어떤 모듈이 제어하는 하위 모듈
    ✓ 영향영역: 어떤 모듈이 다른 모듈에 미치는 영향 범위
  • 복잡도와 중복성 줄이고 일관성 유지
  • 기능 예측 가능성, but 지나치게 제한적 X

27. 코드 (⭐️⭐️⭐️⭐️)

1) 개요

주요 기능

  • 식별
  • 분류
  • 배열
  • 표준화
  • 간소화

2) 종류

  • 순차 코드: 차례로 일련번호 부여
  • 블록 코드 / 구분 코드: 공통성 있는것끼리 블록으로 구분 후 일련번호 부여
  • 10진코드 / 도서분류식 코드: ex) 1000:공학, 1100: SW공학, 1110: SW설계
  • 그룹 분류 코드: ex) 2-01-001 (지사-총무부-인사계)
  • 연상 코드: ex) TV-40 (40인치 TV), L-15-220 (15W 220V 램프)
  • 표의 숫자 코드 / 유효숫자코드: ex) 120-720-1500 (두께 폭 길이 강판)
  • 합성 코드: 2개 이상의 코드 조합, ex) 연상코드+순차코드 (KE-711 대한항공 711기, AC-253 에어캐나다 253기)

3) 코드부여체계

이름만으로 개체의 용도와 적용범위 알 수 있도록 코드 부여하는 방식


28. 디자인 패턴 (⭐️⭐️⭐️⭐️)

1) 개요

  • 모듈의 세부적 구현 방안 설계시 참조할 수 있는 해결방식 또는 예제
  • 문제 및 배경, 적용사례, 재사용 가능한 샘플코드 등으로 구성
  • 한 패턴에 변형 가하거나 특정요구사항 반영 시 유사형태의 다른 패턴으로 변화하는 특징이 있음
  • GoF(에릭감마, 리차드헬름, 랄프존슨, 존블리시디스)가 구체화 및 체계화
    -> 생성패턴, 구조패턴, 행위패턴으로 구성

👉🏻 아키텍처패턴 vs 디자인패턴

  • 아키텍처패턴은 디자인패턴보다 상위수준의 셜계
  • 아키텍처: 전체시스템 구조 설계 위한 참조모델
  • 디자인패턴: 서브시스템에 속하는 컴포넌트 및 그 관계 설계 위한 참조모델

2) 디자인패턴 사용의 장단점

  • 범용적 코딩스타일로, 구조파악이 용이
  • 객체지향 설계 및 구현의 생산성 높이는데 적합
  • 검증된 구조 재사용 통해 개발시간과 비용이 절약
  • 변경요청에 대한 유연한 대처 가능
  • 요구사항 직관적 구현이 아닌 디자인 패턴에 맞게 구현 -> 초기 투자비용 (노력과 시간) 많이 들 수 있음

3) 생성 패턴

  • 객체의 생성과 참조과정 캡슐화하여 객체 생성 및 변경시 프로그램 구조에 영향 크게 받지 않아 프로그램 유연성 ⬆️

생성 패턴 종류

  • 추상 팩토리: 클래스보단 인터페이스 통해 서로 연관, 의존하는 객체의 그룹으로 생성해 추상적으로 표현, 연관 서브 클래스 묶어 한번에 교체 가능
  • 빌더: 세부 인스턴스 조합하여 객체 생성, 동일 객체 생성해도 다른결과 출력가능
  • 팩토리 메소드: 상위클래스에서 인터페이스만 정의, 실제 객체 생성은 서브클래스가 담당
  • 프로토타입: 원본객체 복제해 객체 생성
  • 싱글톤: 하나의 객체-> 어디서든 참조가능 but 여럿이 동시에 참조불가, 불필요한 메모리낭비 최소화

4) 구조 패턴

클래스, 객체 등 조합하여 더 큰 구조로 만들 수 있게 해줌

구조 패턴 종류

  • 어댑터: 클래스 이용의 호환성을 맞춰줌
  • 브리지: 기능-구현 두 개의 별도 클래스로 구현하여 서로가 독립적으로 확장
  • 컴포지트: 복합객체, 단일객체 구분없이 다룸
  • 데코레이터: 객체간 결합 통해 능동적 기능확장
  • 퍼싸드
  • 플라이웨이트
  • 프록시

5) 행위 패턴 ⭐️⭐️⭐️

클래스, 객체가 상호작용 또는 책임분배 방법 정의하는 패턴

행위 패턴 종류 (11가지)

  • 책임 연쇄: 고리(체인) 따라 책임이 넘어감
  • 커맨드: 요청을 객체의 형태로 캡슐화, 요청에 필요한 정보 저장 및 로그 남김. 요청에 사용되는 각종 명령어를 추상-구체로 나눠 단순화
  • 인터프리터
  • 반복자: 접근 잦은 객체에 동일 인터페이스 사용하게 함
  • 중재자: 수많은 객체의 복잡한 상호작용을 객체로 캡슐화, 객체 의존성 줄여 결합도 감소, 객체 간 통제와 지시의 역할 수행
  • 메멘토: 특정 시점에서의 객체 내부 상태 객체화, 이후 요청에 따라 그 특정 시점으로 돌릴 수 있음 (ctrlz)
  • 옵서버: 상속된 다른 객체에게 객체의 변화상태 전달
  • 상태(State): 객체 상태에 따라 동일 동작 다르게 처리할 때 사용하는 패턴
  • 전략: 동일계열 알고리즘 개별적 캡슐화하여 상호교환가능하도록 정의
  • 템플릿 메소드
  • 방문자: 처리기능 분리하여 별도클래스 구성, 각 클래스 방문하여 처리기능 수행

참고 도서 📚
2022 시나공 정보처리기사 필기

profile
정체되지 않는 성장

0개의 댓글