2023. 2. 14. 18:35ㆍ정처기 필기/1과목 - 소프트웨어 설계
아키택처 패턴
* 아키택처란 ? 전체 시스템의 밑그림
1. 레이어 패턴(Layers Pattern)
- 시스템을 계층(Layer)으로 구분하여 구성하는 고전적 방법
2. 클라이언트 - 서버 패턴
- 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
- 클라이언트나 서버는 독립적이다.
- 다만, 응답을 받기 위해 동기화 되는 경우 제외
* 컴포넌트 : 독립적인 기능을 수행하는 실행코드 기반으로 작성된 모듈
3. 파이프-필터 패턴
- 데이터 스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화해 파이프를 통해 데이터를 전송하는 패턴
- 필터 컴포넌트는 재사용이 좋고, 확장에 용이하다.
- 필터 컴포넌트를 재배치하여 다양한 파이프라인 구축이 가능
4. 모델-뷰-컨트롤러 패턴
- 모델 : 핵심 기능과 데이터를 보관 (Entity)
- 뷰 : 사용자에게 정보를 표시
- 컨트롤러 : 입력 처리 / 뷰 제어 / UI
- 각 파트는 별도의 컴포넌트로 분리되어 서로 영향 받지 않고 개발 작업을 수행하는 것이 중요하다.
- 대화형 애플리케이션에 적합하다.
5. 마스터-슬레이브 패턴
- 마스터 컴포넌트에서 슬레이브 컴포넌트로 분할한 후,
슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식
* 장애 허용 시스템 , 병렬 컴퓨터 시스템
6. 브로커 패턴
- 컴포넌트와 사용자를 연결해주는 패턴
* 분산 환경 시스템
7. 피어-투-피어 패턴
- 피어를 하나의 컴포넌트로 간주하며, 각 피어는 서비스를 호출하는 클라이언트가 될 수도,
서비스를 제공하는 서버가 될 수도 있는 패턴
* 멀티스레딩 사용
8. 이벤트 - 버스 패턴
- 소스가 특정 채널에 이벤트 메시지를 발행하면, 해당 채널을 구독한 리스너들이 메시지를 받아 이벤트를 처리하는 방식
- 이벤트를 생성하는 소스, 이벤트를 수행하는 리스너
- 이벤트의 통로인 채널, 채널을 관리하는 버스
9. 블랙보드 패턴
- 해결책이 명확하지 않은 문제를 처리하는데 유용한 패턴
* 음성인식, 차량 식별, 신호 해석
10. 인터프리터 패턴
- 특정 언어로 작성된 프로그램 코드를 해석하는 컴포넌트를 설계할 때 사용
객체 지향
1. 객체(Object)
- 독립적으로 식별 가능한 이름을 가지고 있다. (hashcode)
- 상태(State)는 일반적으로 시간에 따라 변한다.
- 객체와 객체는 상호 연관성에 의한 관계가 형성됨
- 객체가 반응할 수 있는 메시지의 집합을 행위(연산, Method)라고 하며, 객체는 행위의 특성을 나타냄
- 객체 일정한 기억장소를 가지고 있음.
2. 클래스(Class)
- 하나 이상의 유사한 객체들을 묶어서 하나의 공통된 특성을 표현한 것
- 공통된 속성과 연산(행위)를 갖는 객체의 집합
- 객체지향 프로그램에서 데이터를 추상화하는 단위
- 각각의 객체들이 갖는 속성과 연산(Method)을 정의하고 있는 틀
- 슈퍼 클래스는 특정 클래스의 상위 클래스
- 서브 클래스는 특정 클래스의 하위 클래스
3. 인스턴스
- 클래스에 속한 각각의 객체
- 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화라고 한다.
4. 메서드
- 클래스로부터 생성된 객체를 사용하는 방법
- 함수(Function) or 프로시저(Procedure)에 해당하는 연산
5. 메시지
- 객체에게 어떤 행위를 하도록 지시하기 위한 방법
6. 캡슐화(encapsulation)
- 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
- 인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부 접근이 제한됨
- 정보 은닉 측면과 가장 밀접한 관계
- 외부 모듈의 변경으로 인한 파급 효과가 적음
- 재사용 용이, 인터페이스 단순해짐
- 결합도 Down / 응집도 Up
7. 상속(Inheritance)
- 상위 클래스의 모든 속성/연산을 하위 클래스가 물려 받는 것
- 재사용 !
8. 다중 상속
- 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속 받는 것
9. 다형성(Polymorphism)
- 똑같은(하나의) 메시지로 각각의 객체가 가진 고유한 방법으로 응답하는 능력
'정처기 필기 > 1과목 - 소프트웨어 설계' 카테고리의 다른 글
공통 모듈 / 코드 (0) | 2023.02.14 |
---|---|
결합도 / 응집도 (0) | 2023.02.14 |
품질 요구사항 / 소프트웨어 아키텍처 (0) | 2023.02.13 |
UML / 사용자 인터페이스 (0) | 2023.02.13 |
개발 기술 환경 파악 / 요구사항 정의 (0) | 2023.02.13 |