정보처리기사 : 1장 - 요구사항 확인
정보처리기사 : 2장 - 데이터 입출력 구현
정보처리기사 : 3,4장 - 통합 구현, 서버 프로그램 구현
📢3장 : 통합 구현
📢60. XML
📌XML
- XML(eXtensible Markup Language)는 특수한 목적을 갖는 마크업 언어를 만드는 마크업 언어다.
- 웹 브라우저 간 HTML 문법이 호환되지 않는 문제를 해결하기 위해 개발되었다.
📌SOAP
- SOAP(Simple Object Access Protocol)는 컴퓨터 네트워크 상에서 HTTP.HTTPS. SMTP 등을 이용하여 XML을 교환하기 위한 통신 규약
📌WSDL
- WSDL(Web Services Description Language)은 웹서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어다.
📢4장 : 서버 프로그램 구현
📢63. 소프트웨어 아키텍처
- 소프트웨어 아키텍쳐는 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조이다.
- 소프트웨어 아키텍처 설계의 기본 원리에는 모듈화, 추상화, 단계적 분해, 정보은닉이 있다.
📌모듈화
- 모듈화는 소프트웨어의 성능 향상, 시스템의 수정 및 재사용, 유지 관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 나누는 것을 의미한다.
- 모듈의 크기를 너무 작게 나누면 개수가 많아져 모듈 간의 통합비용이 많이든다.
- 모듈의 크기를 너무 크게 나누면 개수가 적어 통합비용은 적지만 모듈 하나의 개발 비용이 많이 든다.
📌추상화
- 추상화는 문제의 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜 나가는것
추상화의 유형
📌단계적 분해
- 단계적 분해는 문제를 상위의 중요개념으로부터 하위의 개념으로 구체화 시키는 분할 기법이다.
📌정보 은닉
- 정보 은닉은 한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법이다.
- 하나의 모듈이 변경되더라도 다른 모듈에 영향을 주지 않으므로 수정, 시험, 유지보수가 용이하다.
📌상위/하위 설계
- 소프트웨어 개발의 설계 단계는 크게 상위 설계와 하위 설계로 구분할 수 있다.
- 상위설계 : 아키텍처 설계, 예비 설계
- 하위설계 : 모듈 설계, 상세 설계
📌설계 과정
- 설계 목표 설정 : 요구사항 분석 후 설계 목표 설정
- 시스템 타입 결정 : 시스템과 서브시스템의 타입을 결정하고, 아키텍처 패턴 선택
- 아키텍처 패턴 적용 : 시스템의 표준 아키텍처 설계
- 서브시스템 구체화 : 서브시스템의 기능 및 서브시스템 간의 상호작용을 위한 동작과 인터페이스 정의
- 검토 : 설계 목표, 요구사항, 설계의 기본 원리 등을 만족하는지 아키텍처 검토
📢64. 아키텍처 패턴
- 아키텍처 패턴은 아키텍처를 설계할 때 참조 할 수 있는 전형적인 해결 방식 또는 예제를 의미한다.
- 주요 아키텍처 패턴 종류
- 레이어 패턴
- 클라이언트-서버 패턴
- 파이프-필터 패턴
- 모델-뷰-컨트롤러 패턴
- 기타패턴
- 마스터-슬레이브 패턴
- 브로커 패턴
- 피어-투-피어 패턴
- 이벤트-버스 패턴
- 블랙보드 패턴
- 인터프리터 패턴
📢65. 객체지향
- 객체지향은 소프트웨어의 각 요소들을 객체(Object)로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법
- 객체지향의 구성요소
- 객체(Object)
- 클래스(Class)
- 메시지(Message)
- 객체지향의 특징
📢66. 객체지향 분석 및 설계
📌객체지향 분석
- 객체지향 분석은 사용자의 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업이다.
📍방법론
- 럼바우 기법 : 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행함
- Coad와 Yourdon 방법 : E-R다이어그램을 사용하여 객체의 행위를 모델링함
📍럼바우의 분석기법
- 객체 모델링 기법이다.
- 객체 모델링 : 객체 다이어그램으로 표시한다.
- 동적 모델링 : 상태 다이어그램으로 표시한다.
- 기능 모델링 : 자료 흐름도(DFD)를 이용하여 표현한다.
📍설계 원칙
SOLID
- SRP 단일 책임 원칙 : 객체는 단 하나의 책임만 가져야 한다는 원칙
- OCP 개방-폐쇄 원칙 : 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야한다는 원칙
- LSP 리스코프 치환 원칙 : 자식클래스는 최소한 부모클래스의 기능은 수행할 수 있어야 한다는 원칙
- ISP 인터페이스 분리 원칙 : 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙
- DIP 의존 역전 원칙 : 의존 관계 성립 시 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙
📢67. 모듈
- 모듈은 모듈화를 통해 분리된 시스템의 각기능
- 모듈의 독립성은 결합도와 응집도에 의해 측정된다.
📌결합도
- 결합도는 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계이다.
- 결합도가 약할수록 품질이 좋고, 강할수록 품질이 낮다
"내공부 제가 스스로 자습할게요."
- 내용 결합도
- 공통 결합도
- 외부 결합도
- 제어 결합도
- 스탬프 결합도
- 자료 결합도
📌응집도
- 응집도는 모듈 내부 요소들이 서로 관련되어 있는 정도
- 응집도가 강할수록 품질이 높고, 약할수록 품질이 낮다.
"응기 순교 절시 논우
- 기능적 응집도
- 순차적 응집도
- 교환적 응집도
- 절차적 응집도
- 시간적 응집도
- 논리적 응집도
- 우연적 응집도
📌팬인/팬아웃
- 팬인은 어떤 모듈을 제어하는 모듈의 수(화살표 받는 수)
- 팬아웃은 어떤 모듈에 의해 제어되는 모듈의 수(화살표 보내는 수)
📌N-S차트
- N-S차트는 논리의 기술에 중점을 두고 도형을 이용해 표현하는 방법
📢68. 단위 모듈
- 단위 모듈은 소프트웨어 구현에 필요한 여러 동작 중 한가지 동작을 수행하는 기능을 모듈로 표현한 것이다.
📌IPC
- IPC(Inter-Process Communicatiion)는 모듈 간 통신 방식을 구현하기 위해 사용되는 대표적인 프로그래밍 인터페이스 집합
- IPC의 대표 메소드 5가지
- Shared Memory
- Socket
- Semaphores
- Pipes&named Pipes
- Message Queueing
📌단위 모듈 테스트
- 단위 모듈 테스트는 프로그램 단위 기능으로 구현된 모듈이 정해진 기능을 정확히 수행하는지 검증하는 것
- 단위 테스트(Unit test)라고도 불린다
📌테스트 케이스
- 테스트 케이스(Test CAse)는 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위한 테스트 항목에 대한 명세서이다.
📢69. 공통 모듈
- 공통 모듈은 여러 프로그램에서 공통으로 사용할 수 있는 모듈
📌종류
📌재사용
- 재사용은 이미 개발된 기능들을 새로운 시스템이나 기능 개발에 사용하기 적합하도록 최적화하는 작업이다.
- 재사용 규모에 따른 분류
❗효과적인 모듈 설계 방안
- 결합도는 줄이고, 응집도는 높여서 모듈의 독립성과 재사용성을 높인다.
📢71. 디자인 패턴
- 디자인 패턴은 모듈 간의 관계 및 인터페이스를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미한다.
- GOF디자인 패턴은 생선 패턴, 구조 패턴, 행위 패턴으로 구분된다.
📌생성 패턴
추빌팩프싱
- 추상 팩토리(Abstract Factory)
- 빌더(Builder)
- 팩토리 매소드(Factory Method)
- 프로토타입(Prototype)
- 싱글톤(Singleton)
📌구조 패턴
어브컴데퍼플프
- 어댑터(Adapter)
- 브리지(Bridge)
- 컴포지트(Composite)
- 데코레이터(Decorator)
- 퍼싸드(Facade)
- 플라이웨이트(Flyweight)
- 프록시(Proxy)
📌행위 패턴
그 외 나머지
- 책임 연쇄
- 커맨드
- 인터프리터
- 반복자
- 중재자
- 메멘토
- 옵저버
- 상태
- 전략
- 템플릿 메소드
- 방문자