📡 Implementing Server program
Modularity(모듈화)
모듈화는 소프트웨어의 성능 향상, 스시템의 수정 및 재사용, 유지 관리 등이 용의하도록 시스템의 기능들을 모듈 단위로 나누는 것을 의미한다.
- 모듈화는 모듈간 결합도(Coupling)의 최소화와 모듈 내 요소들의 응집도(Cohesion)를 최대화하는 것이 목표
Module
모듈은 모듈화를 통해 분리된 시스템으로 각 기능으로, 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작은 단위 등을 의미한다.
Coupling(결합도)
결합도는 모듈 간에 상효 의존하는 정도 똔느 두 모듈 사이의 연관 관계이다.
- 결합도가 약할수록 품질이 높고, 강할수록 품질이 낮음
- 내용 결합도 > 공통 결합도 > 외부 결합도 > 제어 결합도 > 스탬프 결합도 > 자료 결합도
📌 (내)(공) (외)(제) (쓰)(자)
Tpyes of Coupling
-
Content Coupling(내용 결합도) : 모듈 간의 인터페이스로 데이터, 지역 변수 등을 직접 참조하거나 수정할 때의 결합도
-
Common Coupling(공통[공유] 결합도) : 모듈 간의 인터페이스로 파라미터가 아닌 모듈 밖에 선언된 전역 변수를 사용하여 전역 변수를 갱신하는 방식으로 상호작용하는 때의 결합도
-
External Coupling(외부 결합도) : 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도
-
Control Coupling(제어 결합도) : 단순 처러 대상인 데이터만 전달되는 것이 아니라 어떻게 처리해야 하는지를 결정하는 제어 요소가 전달되는 경우의 결합도, 제어 신호가 이동하여 하위모듈이 상위 모듈에게 처리 명령을 내리는 권리 전도 현상이 발생.
-
Stamp Coupling(스탬프[검인] 결합도) : 모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도
-
Data Coupling(자료 결합도) : 모듈 간의 인터페이스가 자료 요소로만 구성될 때의 결합도
Cohesion(응집도)
응집도는 모듈의 내부 요소들이 서로 관련되어 있는 정도이다.
- 응집도가 강할수록 품질이 높고, 약할수록 품질이 낮음
- 기능적 응집도 > 순차적 응집도 > 교환적 응집도 > 절차적 응집도 > 시간적 응집도 > 논리적 응집도 > 우연적 응집도
📌 (기)(순)(교) (절)(시) (논)(우)
Tpyes of Cohesion
-
Functional Cohesion(기능적 응집도) : 하나의 기능에 밀접하게 관련되어 있거나 연관되어 있을 때의 응집도
-
Sequential Cohesion(순차적 응집도) : 모듈 내 하나의 할동으로부터 나온 출력 데이터를 그다음 활동의 입력 데이터로 사용할 경우의 응집도
-
Communication Cohesion(교환[통신]적 응집도) : 서로 다른 기능을 수행하지만 동일한 입력과 출력을 사용할 때의 응집도
-
Procedural Cohesion(절차적 응집도) : 내부의 요소들이 기능적으로 연관성은 없으나, 순차적으로 실행될 때의 응집도
-
Temporal Cohesion(시간적 응집도) : 특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
-
Logical Cohesion(논리적 응집도) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
-
Coincidental Cohesion(우연적 응집도) : 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
객체지향 분석의 방법론
- Rumbaugh 방법 : 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행함
- Booch 방법 : 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하며, 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의함
- Jacobson 방법 : Use Case를 강조하여 사용
- Coad와 Yourdon 방법 : E-R 다이어그램을 사용하여 객체의 행위를 모델링하며, 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성함
- Wirfs-Brock 방법 : 분석과 설계 간의 구분이 없고, 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행
Rumbaugh의 분석 기법
Rumbaugh의 분석 기법은 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법이다.
- OMT(Object-Modeling Technique), 즉 객체 모델링 기법이라고 함
- 분석 활동은 '객체 모델링 → 동적 모델링 → 기능 모델링' 순으로 이루어 진다.
- Object Modeling(객체 모델링) : Imformation Modeling(정보 모델링)이라고도 하며, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 기별 및 객체들 간의 관계를 규정하여 표시하는 모델링으로 E-R 다이어그램이 있음
- Dynamic Modeling(동적 모델링) : 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현하는 모델링으로 상태 변화도(STD), 사건 추적도가 있음
Functional Modeling(기능 모델링) : 다수의 프로세스들 간의 자료 프름을 중심으로 처리 과정을 표현한 모델링으로 자료흐름도(DFD)가 있음
SOLD 원칙
- SRP(Single Responsibility Principle) : 단일 책임의 원칙으로, 객체는 단 하나의 책임만 가져야 한다는 원칙
- OCP(Opne Close Principle) : 개방-폐쇄 원칙으로, 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다는 원칙
- LSP(The Liskov Substitution Principle) : 리스코드 치환 원칙으로, 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다는 원칙
- ISP(Interface Segregation Principle) : 인터페이스 분리 원칙으로, 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙
- DIP(Dependency Inversion Principle) : 의존 역전 원칙으로, 의존 관계 성립 시 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙
IPC(Inter-Process Communication)
IPC는 모듈 간 통신방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스의 집합이다.
- 복수의 프로세스를 수행하며 이뤄지느 프로세스 간 통신까지 구현이 가능
- IPC 대표 메소드
- Shared Memory
- Socket
- Semaphores
- Pipes & named Pipes
- Message Queueing
Test Case
테스트 케이스는 구현된 SW가 사용자의 요구사항을 정확하게 준수했는지르 ㄹ확인하기 위한 테스트 항목에 대한 명세서이다.
- ISO/IEC/IEEE 29119-3 표준에 따른 테스트 케이스의 구성 요소
식별자_ID | 테스트 항목 | 테스트 조건 | 테스트 데이터 | 예상 결과 |
---|
LS_W10_35 | 로그인 가능 | 사용자 초기 화면 | 아이디(test_01), 비밀번호(203s%5!ff) | 로그인 성공 |
LS_W10_36 | 로그인 가능 | 사용자 초기 화면 | 아이디(test_02), 비밀번호(1234) | 로그인 실패(1) - 비밀번호 비일치 |
LS_W10_37 | 로그인 가능 | 사용자 초기 화면 | 아이디(" "), 비밀번호(" ") | 로그인 실패(2) - 미입력 |
참고,
길벗알앤디. 『정보처리기사 실기 단기완성』. 길벗. 2023.