반응형
청춘고양이
배움을 기록하는 곳
청춘고양이
전체 방문자
오늘
어제
  • Hello World (119)
    • JQuery (5)
    • In my opinion (4)
    • HTML&CSS (8)
    • JS (9)
    • JAVA (21)
    • Spring Boot (21)
    • Node.js (1)
    • Linux (7)
    • Git (2)
    • Kotlin (4)
    • Fluttor (4)
    • 정보처리기사 (19)
    • AWS (1)
    • Oracle (8)
    • MySQL (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 객체 안의 함수
  • 청춘고양이
  • spring 기본설정
  • 제이쿼리 비밀번호
  • 가위바위보js
  • 스크롤js
  • 제이쿼리 패스워드 변경
  • 초보개발
  • 자바
  • 자바db연동
  • js 비밀번호
  • 쉬프트 연산
  • css
  • js 패스워드 변경
  • 중복 제거 로또
  • ScrollEffectJs
  • js 로또 번호
  • 제이쿼리
  • js
  • 제이쿼리 버튼클릭시 색 변경

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
청춘고양이
정보처리기사

모듈 / IPC / 디자인 패턴

정보처리기사

모듈 / IPC / 디자인 패턴

2023. 9. 2. 11:02
반응형

모듈 : 모듈화를 통해 분리된 시스템의 각 기능. 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업단위 등을 의미
모듈의 독립성 => 결합도와 응집도에 의해 측정
모듈의 독립성을 높이려면 결합도는 최소화 응집도는 최대화

  • 결합도(coupling) : 모듈간에 상호 의존하는 정도 (결합도는 약할수록 품질이 높고 강할수록 품질이 낮다)
    • 자료결합도(data) : 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
    • 스탬프결합도(stamp) : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
    • 제어결합도(control) : 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어신호나 제어요소를 전달하는 결합도
    • 외부결합도(external) : 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할때의 결합도
    • 공통결합도(common) : 공유되는 공통 데이터 영역을 여러 모듈이 사용할때의 결합도
    • 내용결합도(content) : 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할 때의 결합도

응집도 : 모듈의 내부 요소들이 서로 관련되어 있는 정도
응집도는 강할수록 품질이 높고, 약할수록 품질 이 낮다
우연적 응집도 : 모듈 내부의 각 구성요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
시간적 응집도 : 특정 시간에 처리되는 몇개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
절차적 응집도 : 모듈이 다수의 관련 기능을 가질 때 모듈안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
교환(통신적) 응집도 : 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성요소들이 모였을 경우의 응집도
순차적 응집도 : 모듈 내 하나의 활동으로 부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도
기능적 응집도 : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
팬인 : 어떤 모듈을 제어하는 모듈의 수
팬아웃: 어떤 모듈에 의해 제어되는 모듈의 수
N-S 차트 : 논리의 기술에중점을 두고 도형을 이용해 표현하는 방법, 박스 다이어그램

  • 연속, 선택 및 다중 선택, 반복 3가지 제어논리구조 표현

단위모듈 

  • IPC : 모듈간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합

IPC의 대표적인 메소드 5가지 

  • Shared Memory : 공유 가능한 메모리를 구성하여 다수의 프로세스가 통신하는 방식
  • Socket : 네트워크 소켓을 이용하여 네트워크를 경유하는 프로세스 간에 통신하는 방식
  • Semaphores : 공유 자원에 대한 접근 제어를 통해 통신하는 방식
  • Pipes & named Pipes : 파이프라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신하는 방식
  • Message Queueing : 메시지가 발생하면 이를 전달하는 방식으로 통신하는 방법

테스트 케이스 : 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서
테스트케이스의 구성요소

  • 식별자 : 항목식별자, 일련번호
  • 테스트항목 : 테스트 대상
  • 입력명세 : 입력데이터, 테스트 조건
  • 출력명세 : 테스트 케이스 수행시 예상되는 출력결과
  • 환경설정 : 필요한 하드웨어, 소프트웨어의 환경
  • 특수 절차 요구 : 테스트 케이스 수행시 특별히 요구되는 절차
  • 의존성 기술 : 테스트케이스 간의 의존성

공통모듈 : 여러프로그램에서 공통으로 사용할 수 있는 모듈
명세기법 5가지

  • 정확성 : 시스템 구현시 해당 기능이 필요하는 것을 알 수 있도록 정확히 작성
  • 명확성 : 해당 기능을 이해할 때 중의적으로 해석되지 않도록 명확하게 작성
  • 완전성 : 시스템 구현을 위해 필요한 모든 것을 기술
  • 일관성 : 공통 기능들 간 상호 충돌이 발생하지 않도록 작성
  • 추적성 : 기능에 대한 요구사항의 출처, 관련 시스템 등의 관계를 파악할 수 있도록 작성

재사용 : 이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화하는 작업
재사용 규모에 따른 분류

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

디자인 패턴 : 모듈간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 에제를 의미 

  • 생성패턴 
  • 구조패턴
  • 행위패턴

생성패턴 : 클래스나 객체의 생성과 참조과정을 정의하는 패턴

  • 추상팩토리 : 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 서로 연관 의존하는 객체들의 그룹을 생성하여 추상적으로 표현
  • 빌더 : 작게 분리된 인스턴스를 건축하듯 조합하여 객체를 생성 
  • 팩토리메소드 : 객체 생성을 서브클래스에서 처리하도록 분리하여 캡슐화한 패턴
  • 프로토타입 : 원본객체를 복제하는 방법으로 객체를 생성하는 패턴
  • 싱글톤 :

구조패턴 : 구조가 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰 구조로 만드는 패턴

  • 어댑터 : 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환해주는 패턴
  • 브리지 : 구현부에서 추상층을 분리,  서로가 독립적으로 확장할 수 있도록 구성한 패턴
  • 컴포지트 : 여러 객체를 가진 복합객체와 단일 객체를 구분없이 다루고자 할 때 사용하는 패턴
  • 데코레이터 : 객체간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
  • 퍼싸드 : 복잡한 서브클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴
  • 플라이웨이트 : 인스턴스가 필요할 때마다 매번 생성하는 것이 아니고 가능한 공유해서 사용함으로써 메모리를 절약하는 패턴
  • 프록시 : 접근이 어려운 객체와 여기에 연결하려는 객체 사이에서 인터페이스 역할을 수행하는 패턴

행위패턴  : 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴

  • 옵서버 : 한 객체의 상태가 변화하면 객체에 상속되어있는 다른 객체들에게 변화된 상태를 전달하는 패턴, 주로 분산된 시스템간의 이벤트를 생성 발행하고 이를 수신해야할 때 이용
  • 책임 연쇄 : 요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음객체로 넘어가는 형태의 패턴
  • 커맨드 : 요청을 객체의 형태로 캡슐화하여 재이용하거나 취소할 수 있도록 요청에 필요한 정보를 저장하거나 로그에 남기는 패턴
  • 인터프리터 : 언어나 문법 표현을 정의하는 패턴 
  • 반복자 : 자료구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
  • 중재자 : 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴
  • 메멘토 : 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴
  • 상태 : 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴
  • 전략 : 동일한 계열의 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의하는 패턴
  • 템플릿 메소드 : 상위클래스에서 골격을 정의하고, 하위클래스에서 세부 처리를 구체화하는 구조의 패턴
  • 방문자 : 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성하는 패턴 

 

반응형
저작자표시 (새창열림)

'정보처리기사' 카테고리의 다른 글

애플리케이션 테스트  (0) 2023.09.03
미들웨어 / 인터페이스 / 화면설계 / 소프트웨어 품질  (0) 2023.09.02
통합구현 / 웹서비스 활용 / 아키텍처 / 객체지향  (0) 2023.08.27
데이터베이스 개념(2)  (0) 2023.08.27
데이터베이스 개념(1)  (0) 2023.08.26
    '정보처리기사' 카테고리의 다른 글
    • 애플리케이션 테스트
    • 미들웨어 / 인터페이스 / 화면설계 / 소프트웨어 품질
    • 통합구현 / 웹서비스 활용 / 아키텍처 / 객체지향
    • 데이터베이스 개념(2)
    청춘고양이
    청춘고양이
    신입개발자

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.