Just do IT
article thumbnail

응집도

   - 모듈 내부에서 구성 요소 간에 밀접한 관계를 맺고 있음

   - 응집도가 높을수록 필요한 요소들로 구성 / 응집도가 낮을수록 관련이 적은 요소들로 구성

   1) 응집도의 유형

구분 설명
기능적 응집도
Functional Cohesion
- 모듈 내부의 모든 기능이 단일한 목적을 위해 수행
예) 원 넓이 계산
순차적 응집도
Sequential Cohesion
- 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우
통신적 응집도
Communication Cohesion
- 동일한 자료를 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우
- 처리 순서는 상관 없음
절차적 응집도
Procedural Cohesion
- 관련없는 기능 요소가 배열된 순서로 수행됨
- 요소들이 서로 관련없다는 것만 빼면 순차적응집도와 유사
시간적 응집도
Temporal Cohesion
- 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우
논리적 응집도
Logical Cohesion
- 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈들에서 처리되는 경우
예) 모든 마우스 및 키보드 입력 처리 루틴 그룹화
우연적 응집도
Coincidental Cohesion
- 모듈 내부의 각 구성 요소들이 연관이 없을 경우

 

   2) 응집도와 품질 ⭐

      - 응직도 순서 : 우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 <

      통신적 응집도 < 순차적 응집도 < 기능적 응집도

      (우논시절통순기)

      - 기능적 응집도가 품질이 가장 높음 / 우연적 응집도가 품질이 가장 낮음

 

결합도

   - 모듈과 모듈간의 관련성

   - 관련이 적을수록 독립성이 높아 모듈 간 영향이 적어짐

   1) 결합도의 유형

구분 설명
자료 결합도
Data Coupling
- 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호작용이 일어나는 경우
스탬프 결함도
Stamp Coupling
- 모듈 간의 인터페이스로 배열이나 오브젝트, 스트럭처 등이 전달되는 경우
- 데이터 구조 결합도
제어 결합도
Control Coupling
- 단순 처리할 대상인 값만 전달되는게 아니라 어떻게 처리를 해야한다는 제어 요소가 전달되어 다른 모듈의 흐름을 제어
외부 결합도
External Coupling
- 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜, 디바이스 인터페이스를 공유할 때 발생
공통 결합도
Common Coupling
- 파라미터가 아닌 모듈 밖에 선언 되어 있는 전역 변수르 참조하고 전역 변수를 갱신하는 식으로 상호작용 하는 경우
내용 결합도
Content Coupling
- 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우

 

   2) 결합도와 품질

      - 결합도 순서 : 자료 결합도 > 스탬프 결합도 > 제어 결합도 > 외부 결합도 > 공통 결합도 > 내용 결합

         (자스제외공내)

      - 자료 결합도가 품질이 가장 높음 / 내용 결합이 품질이 가장 낮음

 

시퀀스 다이어그램

   - 기능 수행을 위해 시스템 내의 객체들이 다른 객체들과 어떻게 교류하는지를 보여주는 다이어그램

구성항목 설명
객체 Object - 사각형 박스 안에 밑줄 친 이름 아래쪽으로 생명선을 가지고 있다
생명선 LifeLine - 객체에서 아래로 뻗어 나가는 쇄선
- 시간의 스름에 따라 발생하는 이벤트
실행 Activation - 실행되고 있음을 나타냄
- 직사각형으로 표시, 직사각형이 길수록 수행시간이 길다
메시지 Message - 객체 간 상호작용은 메시지 교환으로 이루어짐
시간 - 수행 순서는 위에서 아래로 표시

 

코드의 종류

유형 설명
순차 코드 - 일정한 일련번호
예) 1, 2, 3, ..., 10
블록 코드 - 공통 특성을 몇 개의 블록으로 구분하여 부여
예) 총무과01, 인사과02, ...
10진 분류 코드 - 10진으로 분류하고 다시 10진으로 분류
예) 공학 400, 컴퓨터 410, 파이썬 4123
그룹 분류 코드 - 대분류/중분류/소분류 구분 후, 그룹 내에서 순차 번호
예) 111 총무부 인사과 행정계, 112 총무부 인사과 기획계
연상 코드 - 대상 항목의 명칭을 코드에 반영
예) TV-75(75인치TV), KOR(한국)
표의 숫자 코드 - 물리적 수치를 이용하여 만든 코드
예) 100-800-600 (가로100, 세로800, 높이600)
합성 코드 - 2개 이상의 코드를 조합하여 만든 코드
예) 연상코드 + 순차코드 (KAL-737)

 

디자인 패턴

   - 반복적으로 나타나는 문제점들에 대한 해결 방안을 제시한 것

   - 다양한 응용 소프트웨어 시스템들을 개발할 때 존재하는 공통되는 설계문제, 공통되는 해결책을 묶어 패턴이라고 함

   - 팀원 사이의 의사소통을 원활하게 해주는 역할

   - UML과 같은 일종의 설계 기법이며, 설계 방법

   - SW 설계 시 SW 재사용성, 호환성, 유지보수성을 보장하여 '올바른 설계'를 빠르게 만들 수 있도록 도와줌

   1) 디자인 패턴 구성요소

패턴 이름 (Pattern Name) - 패턴의 이름은 해당 패턴의 솔루션을 담고 있다
문제 (Problem) - 패턴이 적용되어 해결될 필요가 있는 디자인 
해결 (Solution) - 문제를 해결하기 위한 요소들 사이의 관계
- 다양한 상황에 적용할 수 있는 템플릿
결과 (Consequence) - 패턴을 적용해서 얻은 결과와 장단점 서술

 

   2) 디자인 패턴 분류

      - 생성(Creational) 패턴 : 객체 생성에 관련된 패턴

      - 구조(Structural) 패턴 : 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴

      - 행위(Behaviroal) 패턴 : 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴

 

   3) GoF 디자인 패턴 분류

생성 패턴 - 간단한 블록의 코드로 여러가지 다양한 객체를 생성
- 실행 시간에 객체의 다양한 버전을 생성
- 생성한 객체에 제한을 가함
구조 패턴 - 더 큰 구조를 형성하기 위하여 클래스와 객체를 어떻게 합성하는가?
- 상속 기법 이용 : 인터페이스, 구현을 합성
- 구조화 패턴
   새로운 기능을 구현하기 위하여 객체를 구성하는 방식
   런타임에 객체 구조를 변경
   유연성, 확장성
행위 패턴 - 반복적으로 일어나는 객체들의 상호작용을 패턴화해 놓은 것
- 객체들 간의 알고리즘이나 역할 분담에 관련된 것

 

   4) GoF 디자인 패턴 분류

생성 패턴 - 추상팩토리 (Abstract Factory)
- 빌더 (Builder)
- 팩토리메서드 (Factory Method)
- 프로토타입 (Prototype)
- 싱글톤 (Singleton)
구조 패턴 - 어댑터 (Adaptor)
- 브리지 (Bridge)
- 컴퍼지트 (Composite)
- 데커레이터 (Decorator)
- 퍼사드 (Facade)
- 플라이웨이트 (Flyweight)
- 프록시 (Proxy)
행위 패턴 - 책임연쇄 (Chain of Responsibility)
- 커맨드 (Command)
- 인터프리터 (Interpreter)
- 이터레이터 (Iterator)
- 미디에이터 (Mediator)
- 메멘토 (Memento)
- 옵서버 (Observer)
- 스테이트 (Satae)
- 스트래티지 (Strategy)
- 템플릿메서드 (Template Method)
- 비지터 (Visitor)

 

생성 (Creational) 패턴

   - 객체 생성에 관련된 패턴

추상 팩토리 - 공장을 만들어내는 상위 공장을 먼저 정의하고, 여기서 구체적인 공장을 만든 후, 이 공장에서 객체 생성
- 구체적인 클래으세 의존하지 않음
- 서로 연관된 객체들의 조합을 만드는 인터페이스를 제공
팩토리 메서드 - 인스턴스를 만들어내는 공장을 통해 객체 생성
- 객체 생성 처리를 서브 클래스로 분리해 저리하도록 캡슐화
프로토타입 - 기존의 인스턴스를 그대로 복제하여 새로운 객체를 생성하는 방법
빌더 - 객체를 생성할 때 필요한 파라미터가 많은 경우, 각 파라미터가 무엇을 의미하는지 빌더라는 형태를 통해 명확히 하여 생성할 수 있다
싱글톤 - 전역변수르 사용하지 않음
- 객체를 하나만 생성
- 생성된 객체를 어디에서든지 참조할 수 있도록 함

 

구조(Structual) 패턴

   - 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴

컴퍼지드
Composite
- 여러 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별없이 다루게 해줌
- 어떤 클래스(Composite)가 자기 자신 혹은 다른 클래스(Leaf)를 가질 수 있는 구조
데커레이터
Decorator
- 객체의 결합을 통해 기능을 유연하게 확장하게 해줌
- 각각의 기능을 담당하는 클래스(Decorator)들과 이 기능을 적용할 클래스(Component)를 분리한 뒤, 필요에 따라 동적으로 각 기능을 적용할 수 있는 구조
어댑터
Adapter
- 서로 다른 두 클래스(Client롸 Adaptee)가 있고, 이 둘은 그대로 둔 채 이 둘의 인터페이스를 연결하고자 어댑터 클래스를 만들어 사용하는 구조
프록시
Proxy
- 구체적인 업무를 담당하고 있는 클래스에 접근하기 전에, 간단한 사전 작업 처리하는 클래스(Proxy)를 두는 구

 

행위(Behaviroal) 패턴

   - 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴

옵서버
Observer
- 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동
- 일대다 객체 의존관계
- 하나의 관찰대상 - 여러 개의 관찰자 구조
스테이트
State
- 객체의 상태에 따라 객체의 행위 내용 변경
스트래터지
Strategy
- 동일 계열의 알고리즘들을 인터페이스-캡슐화하고, 
알고리즘들을 컴포지션(위임 형태로) 가지는 패턴
방문자
Visitor
- 방문자와 방문 공간을 분리하여, 방문 공간이 방문자를 맞이할 때,
이후에 대한 행동을 방문자에게 위임하는 패턴
책임 연쇄
Chain of responsibility
- 요청을 처리하는 동일 인터페이스 객체들을 체인 형태로  연결해놓은 패턴
템플릿 메서드 - 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화
- 전체 일을 수행하는 구조는 그대로 특정단계에서 수행하는 내역을 바꾸는 패턴
커맨드
Command
- 특정 객체에 대한 커맨드를 객체화 하여 이 커맨드 객체를 필요에 따라 처리하는 패턴
- 실행될 기능을 캡슐화
- 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계

 

정리하기


1. 응집도
   - 높을수록 필요한 요소들로 구성 / 낮을수록 관련이 적은 요소들로 구성
   - 기능적/Functional > 순차적/Sequential > 통신적/Communication > 절차적/Procedure > 시간적/Temporal > 논리적/Logical > 우연적/Coincidental 
   - 기능적 응집도가 가장 높음 / 우연적 응직도가 가장 낮음

2. 결합도
   - 낮을수록 독립성이 높아지고 모듈간 영향이 적어짐
   - 자료/Data > 스탬프/Stamp > 제어/Control > 외부/External > 공통/Common > 내용/Content
   - 자료 결합도가 가장 높음 / 내용 결합도가 가장 낮음

3. 시퀀스 다이어그램
   - 기능 수행을 위해 시스템 내의 객체들이 다른 객체들과 어떻게 교류하는지 보여주는 다이어그램
   - 객체, 생명선, 실행, 메시지, 시간

4. 코드의 종류
   - 순차 코드, 블록 코드, 10진 분류 코드, 그룹 분류 코드, 연상 코드, 표의 숫자 코드, 합성 코드

5. 디자인 패턴
   - 구성요소 : 패턴이름, 문제, 해결, 결과
   - 패턴 분류 : 생성(Creational)패턴, 구조(Structural)패턴, 행위(Behavioral)패턴

6. 생성(Creational)패턴
   - 추상 팩토리, 팩토리 메서드, 프로토타입, 빌더, 싱글톤

7. 구조(Structural)패턴
   - 컴퍼지트(Composite), 데커레이터(Decorator), 어댑터(Adapter), 프록시(Proxy)

8. 행위(Behavioral)패턴
   - 옵서버(Observer), 스테이트(State), 스트래터지(Strategy), 방문자(Visitor), 책임연쇄(Chain or responsibility), 템플릿 메서드, 커맨드(Command)

 

4. 인터페이스 설계

'정보처리기사 > 1과 소프트웨어 설계' 카테고리의 다른 글

4. 인터페이스 설계  (0) 2023.11.17
2. 화면 설계  (2) 2023.11.14
1. 요구사항 확인  (2) 2023.11.14
profile

Just do IT

@AmyG

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!