230920 TIL #195 정처기 실기 - #7 서버프로그램 구현 - 2

김춘복·2023년 9월 19일
0

TIL : Today I Learned

목록 보기
195/550

Today I Learned

오늘은 정보처리기사 실기 서버프로그램 구현 파트를 공부했다.


서버 프로그램 구현 - 2

모듈

모듈화를 통해 분리된 시스템의 각 기능으로 서브시스템, 작업 단위 등을 의미한다.
소프트웨어 구조를 이루며 다른 것들과 구별될 수 있는 독립적인 기능을 갖는 단위.
하나 또는 몇개의 논리적인 기능을 수행하기 위한 명령어들의 집합
모듈의 독립성은 결합도, 응집도에 의해 측정된다.

결합도

모듈 간 상호 의존하는 정도. 약할수록 좋다.

  • 결합도의 종류와 강도(약<--->강)
    자료 - 스탬프 - 제어 - 외부 - 공통 - 내용 결합도

결합도의 종류 - A

  • 자료 결합도(Data Coupling) : 모듈간 인터페이스가 자료 요소로만 구성될 때의 결합

  • 스탬프 결합도(Stamp Coupling) : 모듈 간 인터페이스로 배열이나 레코드 등의 자료구조가 전달될 때의 결합도

  • 제어 결합도(Control Coupling) : 어떤 모듈이 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호나 제어 요소를 전달하는 결합도

  • 외부 결합도(External Coupling) : 어떤 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때 결합도

  • 공통 결합도(Common Coupling) : 공유되는 공통 데이터 영역을 여러 모듈이 사용할 때 결합도. 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 사용해 상호작용할 때의 결합도

  • 내용 결합도(Content Coupling) : 한 모듈이 다른 모듈의 내부기능 및 내부 자료를 직접 참조하거나 수정할 때의 결합도.

응집도

모듈 내부 요소들이 서로 관련되어 있는 정도. 강할수록 좋다.

  • 응집도의 종류와 강도(약<---->강)
    우연적 - 논리적 - 시간적 - 절차적 - 교환적 - 순차적 - 기능적 응집도

응집도의 종류 - A

  • 우연적 응집도(Coincidental Cohesion) : 모듈 내부의 각 구성요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도

  • 논리적 응집도(Logical Coheshion) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도

  • 시간적 응집도(Temporal Cohesion) : 특정 시간에 처리되는 몇개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도

  • 절차적 응집도(Procedural Cohesion) : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도

  • 교환적 응집도(Communication Cohesion) : 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도

  • 순차적 응집도(Sequential Cohesion) : 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도

  • 기능적 응집도(Functional Cohesion) : 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도

팬인 / 팬아웃 - A

  • 팬인(Fan-In) : 어떤 모듈을 제어하는 모듈의 수. 화살표로 들어오는 수(부모 수)

  • 팬아웃(Fan-Out) : 어떤 모듈에 의해 제어되는 모듈의 수. 화살표로 내보내는 수(자식 수)

N-S 차트

논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법. Chapin Chart라고도 한다.
연속, 선택, 다중선택, 반복 등의 제어 논리 구조로 표현한다.

단위 모듈

소프트웨어 구현에 필요한 여러 동작 중 한가지 동작을 수행하는 기능을 모듈로 구현한 것
독립된 컴파일이 가능하며 다른 모듈에 호출이나 삽입되기도 한다.


IPC - A

모듈간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
대표적인 메서드는 Shared Memory(공유 메모리), Socket(소켓), Semaphores(세마포어), Message Queueing(메시지 큐잉), Pipes & named Pipes(파이프와 네임드 파이프)이 있다.

테스트 케이스 - A

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

표준에 따른 테스트 케이스의 구성요소

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

공통 모듈 명세 기법의 원칙

공통모듈 : 여러 프로그램에서 공통으로 사용할 수 있는 모듈. 명확히 이해할 수 있도록 다음과 같은 명세 기법을 준수해야 한다.

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

재사용

이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화 하는 작업

재사용 규모에 따른 분류

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

0개의 댓글