티스토리 뷰
1 과목 : 소프트웨어 설계
XP(eXtreme Programming)의 기본원리
XP(eXtreme Programming)이란?
- 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해
고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법
XP의 5가지 핵심가치
- 의사소통(Communication)
- 단순성(Simplicity)
- 용기(Courage)
- 존중(Respect)
- 피드백(Feedback)
XP의 기본 원리
- Pair Programming
- 모든 프로그래밍은 하나의 컴퓨터에 2명의 프로그래머가 같이 공동 작업 진행 - Collective Ownership
- 소스코드에 대한 팀의 공통책임이 있으므로 코드는 누구든 수정 가능 - Continuous
- 컴포넌트 또는 모듈 단위로 나누어서 개발된 소스코드들은 하나의 작업이 끝날 때 마다 지속적으로 통합되고 동시에 테스트
캡슐화 설명
캡슐화(Encapsulation)란?
- 필요한 속성와 행위를 하나로 묶고 그 중 일부를 외부에서 사용하지 못하도록 은닉하는 것을 의미
캡슐화 특징
- 서로 관련성이 많은 데이터와 이와 관련도니 함수들을 한 묶음으로 처리하는 기법
- 결합도가 낮아지고 재사용이 용이
- 인터페이스가 단순화 된다
- 정보은닉과 관계가 깊음
- 변경 발생 시 오류의 파급효과가 적음
객체지향 설계 원칙(SOLID)
※ 영어도 외워둘 것
- 단일 책임 원칙(SRP, Single Responsibility Principle)
- 모든 클래스는 하나의 책임만 가지며, 클래스는 영향을 받아선 안 된다 - 개방 폐쇠의 원칙(OCP, Open-Close Principle)
- 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀야한다 - 리스코프 치환 원칙(LSP, Liskov Substiution Principle)
- 해당 객체를 사용하는 클라이언트는 상위 타입이 하위 타입으로 변경되어도, 차이점을 인식하지 못한 채 상위 타입을 통해 서브 클래스를 사용할 수 있어야 한다 - 인터페이스 분리 원칙(ISP, Interface Segregaion Principle)
- 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 하는 원칙 - 의존성 역전 원칙(DIP, Dependency Inversion Principle)
- 의존 관계를 맺을 때 변화하기 쉬운 것 보다 변화하기 어려운 것에 의존하라는 원칙
디자인 패턴
디자인 패턴이란?
- 객체 지향 프로그래밍 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴
특징(재,가,유,확,안)
- 재사용성
- 재사용하여 유사한 상황에서 코드를 더 쉽게 작성 - 가독성
- 구조를 명확하게 작성하여 개발자가 코드를 이해하고 유지보수하기 쉽게 만듬 - 유지보수성
- 코드를 쉽게 모듈화 할 수 있으며, 변경이 필요한 경우 해당 모듈만 수정하여 유지보수가 쉬움 - 확장성
- 새로운 기능을 추가하거나 변경할 때 기존 코드를 변경하지 않고도 새로운 기능을 통합할 수 있음 - 안정성과 신뢰성
- 수많은 사람들이 인정한 모범 사례로 검증된 솔루션을 제공
소프트웨어 상위 설계, 하위설계
상위설계
- 아키텍처 설계
- 데이터 설계
- 시스템 분할
- 인터페이스 정의
- 사용자 인터페이스 정의
하위설계
- 모듈 설계
- 인터페이스 작성
2 과목 : 소프트웨어 개발
EAI(Enterprise Architecture Integration)
EAI(Enterprise Architecture Integration)란?
- 기업 내 필요한 여러 어플리케이션이 있을텐데, 이런 각종 애플리케이션 간에 상호 연동이 가능하도록 통합하는 솔루션
Hybrid 방식
- 그룹 내에서는 hup&spoke 방식을, 사용하고 그룹 간에는 messageBus 방식을 사용
- Hybrid는 중간에 미들웨어를 둔다
Postfix 연산식
표기식 방식
전위표기식(Prefix)
- root > left > right
중위표기식(Infix)
- left > root > right
후위표기식(Postfix)
- left > right > root
테스트 용어
- 테스트 케이스
- 설계된 입력 값, 실행조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서 - 테스트 시나리오
- 테스트 케이스를 적용하는 순서에 다라 여러 개의 테스트 케이스들을 묶은 집합 - 테스트 오라클
- 결과가 참인지 거짓인지를 판단하기 위해서 정의된 참값을 입력하여 비교하는 기법
빌드 자동화 도구
빌드 자동화도구란?
- 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
빌드 자동화 도구 종류
- Ant
- Make
- Maven
- Grandle
- Groovy 기반으로 한 오픈 소스 형태
- 안드로이드 앱 개발 환경에서 사용
- 행할 처리 명령들을 모아 태스크(Task)로 만든 후 태스크 단위로 실행 - Jenkins
- Java 기반의 오픈 소스 형태
- 서블릿 컨테이너에서 실행되는 서버 기반 도구
- 친숙한 Web GUI 제공
- 분산 빌드나 테스트 가능
3 과목 : 데이터베이스 구축
트랜잭션
트랜잭션이란?
- 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위
특징
※ 영어와 뜻 무조건 알고 있기
- 원자성(Atomicity)
- 트랜잭션이 데이터베이스에 모두 반영이 되던가, 아님 전혀 반영되지 않아야 한다는 것 - 일관성(Consistency)
- 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 하는 것 - 독립성(Isolation)
- 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 것 - 지속성(Durability)
- 트랜잭션이 성공적으로 완료 되었을 경우, 결과는 영구적으로 반영되어야 하는 것
키의 종류
※ 각 키들의 특징을 외울 것
- 후보키(Candidate Key)
- 유일하게 식별할 수 있는 속성들의 부분집합을 의미
- 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야함
- 유일성과 최소송을 만족 - 기본키(Primary Key)
- 특정 튜플을 유일하게 구별할 수 있는 속성
- Null 값을 가질 수 없다
- 동일한 값이 중복되어 저장될 수 없다 - 대체키(Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들 - 슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
- 유일성은 만족하지만, 최소성은 만족시키지 못함
관계대수
관계대수란?
- 기존 릴레이션(테이블)들로부터 새로운 릴레이션을 생성하는 절차적 언어 문법
- 주어진 릴레이션 조작을 위한 연산의 집합
- 일반 집합 연산과 순수 관계 연산으로 구분된다
- 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다
DB 용어
- 스키마 : 속성(attribute)의 집합, 열
- 인스턴스 : 튜플의 집합(행, 레코드)
- 속성의 개수 : 차수
- 튜플의 개수 : 카디날리
4 과목 : 프로그래밍 언어 활용
Java 코드
- 자바에서 while 문은 조건 식의 결과 값이 Boolean 이어야 한다
- y--는 int이므로 Unresolved compilation problen 오류발생이 생긴다
접근제어자
- public
- 모든 접근을 허용 - protected
- 같은 패키지(폴더)에 있는 객체와 상속관계의 객체들만 허용 - default
- 같은 패키지(폴더)에 있는 객체들만 허용 - private
- 현재 객체 내에서만 허용
5 과목 : 정보시스템 구축 관리
CMM(Capability Maturity Model) 모델
CMM(Capability Maturity Model) 모델이란?
- 소프트웨어 개발 능력 측정 기준과 소프트웨어 프로세스 평가 기준을 제공함으로써 정보 및 전산 조직의 성숙수준을 평할 수 있는 모델
CMM모델의 레벨
- 레벨 1 : 초기단계
- 레벨 2 : 관리단계
- 레벨 3 : 정의단계
- 레벨 4 : 정량적 관리 단계
- 레벨 5 : 최적화 단계
폭포수 모형
폭포수 모형이란?
- 가장 오랜된 모형으로 많은 적용 사례가 있지만 요구사항의 변경이 어려우며, 선형 순차적 모형으로 고전적 생명 주기 모형이라고 한다
SOA(Service Oriented Architecture, 서비스 지향 아키텍처) 설명
SOA(Service Oriented Architecture, 서비스 지향 아키텍처)이란?
- 네트워크에서 공통의 통신 언어를 사용하는 서비스 인터페이스를 활용하여 소프트웨어 구성 요소를 다시 사용할 수 있게 만드는 소프트웨어 설계 유형
계층
- 표현 계층(Presentation Layer)
- 프로세스 계층(Process Layer)
- 서비스 계층(Service Layer)
- 비즈니스 계층(Business Layer)
- 영속 계층(Persistency Layer)
자동화 도구
- SREM(Software Requirements Enginering Methdology)
- TRW사가 개발
- RSL과 REVS를 사용하는 자동화 도구 - PSL/PSA
- 미시간 대학에서 개발
- PSL과 PSA를 사용하는 자동화 도구 - HIPO(Hieracgy Input Process Output)
- 하향식 소프트웨어 개발을 위한 문서화 도구 - SADT(Structure Analysis and Design Technique)
- SoftTech사에서 개발
- 구조적 요구 분석을 위해 블록 다이어그램을 채택한 자동화 도구
다중화 기술
- TDM(Time Division Multiplexing)
- 시분할(시간) 다중화기
- 통신 회선의 대역폭을 일정한 시간 폭(Time slot)으로 나누어 여러 대의 단말 장치가 동시에 사용
- 디지털 회선 주로 이용 - FDM(Frequency Division Multiplexing)
- 주파수 분할 다중화기
- 통신 회선의 주파수를 여러 개로 분할하여 여러 대의 단말장치가 동시에 사용
- 저속의 비동기식전송, 멀티 포인트 방식, 아날로그 신호 전송 적합 - CDM(Code Division Multiplexing)
- 코드 분할 다중화 방식
- 무선 통신에서 가장 널리 사용, 도청과 간섭 방지가 가능하지만 잡음을 분리해야하는 오버헤드 발생 - WDM(Wavelength Division Multiplexing)
- 파장 분할 다중화
- 빛의 파장을 제외하고 FDM방식과 동일
- 초고속 대용량 전송가능, 시스템 확장, 유연성 우수
'APS > 정보처리기사 필기' 카테고리의 다른 글
정보처리기사 필기 20210307 기출문제 정리노트 (0) | 2024.05.07 |
---|---|
정보처리기사 필기 20200822 기출문제 정리노트 (0) | 2024.04.30 |
정보처리기사 필기 20200606 기출문제 정리노트 (0) | 2024.04.22 |