티스토리 뷰
CBT 사이트 사용
정처산기의 경우 개편 후 업로드가 없어 정처기 기출로 대신함
제목만 오답풀이함 그냥.. 그냥 정리라고 해도 무방
1과목 : 소프트웨어 설계, 2과목 : 소프트웨어 개발
기능적,비기능적 요구사항
기능적 요구사항 : 시스템이 실제로 어떻게 동작하는지에 관점을 둔 요구사항
비기능적 요구사항 : 시스템 구축에 대한 서능, 보안, 품질, 안정 등에 대한 성능, 보안, 품질, 안정성등으로 실제 수행에 보조적인 요구사항
요구사항 검증 (Requirements Validation)
요구사항 검증 (Requirements Validation)
- 실제로 고객이 원하는 바를 원했는지 보이는것
- 검증이 중요한 이유, 시스템을 개발하거나 시스템이 운영 중일 경우 발견되는 방대한 재작업 비용이 발생되기떄문
- 시스템을 변경하여 요구사항 문제를 수정하는 비용은 설계 및 코딩오류에 비하여 비용이 많이 소요
(시스템 설계및 구현변경 다시 테스트하기때문)
요구사항 체크리스트 (Requirements Checklist)
유효성(Validify): 고객의 필요를 충족하는 기능을 제공하는지
일관성(Consistency): 충돌하는 요구사항이 존재하는지
완결성(Completeness): 고객이 요구한 모든 기능이 포함되었는지
검증 가능성(Verifiability): 만들고 난 뒤 요구사항들을 검증할 수 있는지
Encapsulation
속성과 관련된 연산을 클래스안에 묶어서 하나로 취급하는 것
소프트웨어 설계 요구사항 개발 프로세스
도출 - 분석 - 명세 - 확인
소프트웨어 설계 추상화 기법
제 기 자
- 제어 추상화: 제어의 정확한 메커니즘을 정의하지않고 원하는 효과를 정하는데 이용하는 방법
- 기능 추상화: 입력 자료를 출력자료로 변환하는 과정을 추상화 하는 방법
- 자료 추상화: 자료와 자료에 적용될 수 있는 기능을 함께 정의함으로써 자료 객체를 구성하는 방법
소프트웨어 아키텍처
설계과정
설계목표설정 - 시스템 타입 결정 - 아키텍처 패턴 적용 - 서브시스템 구체화 - 검토
파이프 필터패턴
-데이터 통로인 파이프를 이용해 컴포넌트인 필터간에 데이터를 전송하는구조로 단방향, 양방향 모두 구현할 수 있음
필터간 이동시 오버헤드 발생
마스터-슬레이브(Master-Slave)아키텍처
일반적으로 실시간 시스템에서 사용됨
마스터: 작업을 분리, [배포, 연산, 통신, 조정] 책임,슬레이브가 반환한 결과값으로부터 최종 결과값을 계산한다
슬레이브 프로세스들을 제어할 수 있다
슬레이브: 요청 작업 처리,스터의 작업 요청을 처리하고 처리된 결과를 되돌려준다
통합 테스트 (Integration test)
시스템을 구성하는 모듈의 인터페이스와 결합을 테스트하는 것
상향식 통합 테스트(Bottom up intergration test)
- 프로그램의 하위 모듈에서 상위 모듈방향으로 통합
- 가장 하위단계의 모듈부터 통합및 테스트가 수행되므로 스텁 필요치 않음
- 하나의 주요제어 모듈과 관련된 종속 모듈의 그룹인 클러스터 필요
하향식 통합 테스트 (Top Down intergration test)
- 상위 모듈에서 하위 모듈 방향으로 통합
- 깊이 우선 통합법, 넓이 우선 통합법 사용
- 초기부터 사용자에게 시스템 구조 보여줌
- 모듈간의 인터페이스와 시스템의 동작이 정상적으로 잘 되고있는지 빨리 파악하고자 할 떄
UI 설계 도구
- 스토리보드: 디자이너와 개발자가 최종적으로 참고하는 작업지침서, 상단이나 우측에 제목,작성자등 입력
좌측엔 ui화면, 우측엔 디스크립션 기입
- 프로토타입: 와이어프레임이나 스토리보드등에 인터랙션을 적용함으로 실제 구현된것처럼 테스트가 가능한 동적 형태의 모형
- 유스케이스: 사용자 측면에서의 요구사항으로, 사용자가 원하는 목표를 달성하기 위해 수행할 내용 기술
UML 다이어그램의 분류
정적구조 [클래스, 객체, 패키지, 컴포넌트, 복합구조, 배치]
- 클래스 다이어그램: 객체를 생성하기 위한 도구
- 객체 다이어그램: 객체 간의 연결관계를 표현
- 패키지 다이어그램: 객체들의 그룹화된 표현
- 컴포넌트 다이어그램: 시스템을 구성하는 컴포넌트 사이에 의존관계를 표현
- 복합구조 다이어그램: 컴포넌트나 클래스의 내부구조를 보여주기 위해 사용, 내부연결형태 표현
- 배치 다이어그램: h/w자원에 연결된 s/w컴포넌트 배치를 표현
동적구조 [유스케이스, 상태, 활동, 시퀀스(순차), 통신, 상호작용, 타이밍]
- 유스케이스 다이어그램: 사용자의 시각에서 소프트웨어의 범위와 기능을 표현
- 상태 다이어그램: 시간에 따라 객체가 변하는 상태를 표현
- 활동 다이어그램: 객체의 동적행위를 활동으로 표현
- 시퀀스(순차) 다이어그램: 객체간 상호작용을 시간 순서에 따른 메세지로 표현
- 통신 다이어그램: 객체간 상호작용을 관계형태의 메세지로 표현
- 상호작용 다이어그램: 객체들의 상호작용 관계를 표현
- 타이밍 다이어그램: 객체간 상태변화를 구체적인 시간으로 표현
클래스 설계원칙
- 단일 책임원칙: 하나의 객체는 하나의 동작만의 책임을 가짐
- 개방-폐쇄의 원칙: 클래스는 확장에 대해 열려있어야하며 변경에 대해 닫혀있어야함
- 리스코프 교체의 원칙: 특정 메소드가 상위타입을 인자로 사용할 때, 그 타입의 하위 타입도 문제없이 작동해야함
- 의존관계 역전의 원칙: 상위계층이 하위계층에 의존하는 전통적인 의존관계를 반전시킴으로 상위 계층이 하위계층의 구현으로 독립되게 할 수 있음
GoF(Gangs of Four) 디자인패턴
생 구 행
생성패턴 (추빌팩프싱)
- 추상팩토리(abstract factory)
- 빌더(builder)
- 팩토리메서드(factorymethod)
- 프로토타입(protptype)
- 싱글톤(sington): 특정 클래싀 인스턴스가 오직 하나임을 보장, 이 인스터스에 대한 접근 방법 제공
구조패턴 (어브컴데퍼플프)
- 어댑터(adapter)
- 브리지(bridge)
- 컴포지트(composite)
- 데코레이터(decorator)
- 파사드(facade)
- 플라이웨이트(flyweight)
- 프록시(proxy)
행위패턴
클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의
- 책임 연쇄(chain of responsibility)
- 커맨드(command)
- 인터프리터(interpreter)
- 이터레이터(iterator)
- 중재자(mediator)
- 메멘토(memento)
- 옵서버(observer)
- 상태(state)
- 전략(strategy)
- 템플릿메서드(template method)
- 방문자(visitor)
RCS (Revision Control System)
- cvs와의 차이점은 소스파일의 수정을 한 사람만으로 제한
- 다수의 사용자가 동시 파일 수정 할 수 없도록 파일 잠금방식으로 버전을 관리함
- 다른 방향으로 진행된 개발 결과를 합치거나 변경내용 추척 가능
용어
Refactoring
- 소프트웨어를 보다 쉽게 이해할 수있고 적은 비용으로 수정할 수 있도록
- 겉으로 보이는 동작의 변화 업싱 내부구조를 변경함
Analysis
기존 소프트웨어를 분석하여 재공학 대상을 선정
Migration
기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 변환
Restructuring
기존 소프트웨어를 향상시키기위하여 코드 재구성(기능과 외적 동작은 변하지않음)
Reversr Engineering
기존 소프트웨어를 분석하여 소스코드를 얻어내는 작업(소스코드로 소프웨어를 만드는 작업의 역작업)
Alien code
개발자가 퇴사했거나 현재 사용하지않는 환경 및 언어로 작성되었거나 프로그램의 관련문서나 주석이 없는 상태에서 시간이 흐른뒤 유지보수가 불가능하거나 힘든 프로그램 소스
Critical path method (CPM 임계 경로법)
- 네트워크를 중심으로 논리적 구성, 시간과 비용문제 취급
- 프로젝트를 일정 기일내 완성시키고 해당 계획이 원가의 최소값에 의해 보증되는 등의 최적 스케줄 구하는 관리법
(주로 건설과 설계를 포함하는 복잡한 일에 이용되어 효과를 발휘 함)
Work Breakdown Structure (업무 분업 구조)
- 성과 목표 완전 달성을 위한 프로그램
- 산업 관리 간접 부문의 기술 혁신형 업무- 목표를 설정하여 소정 기간, 자원내 달성하는 형태의 업무를 효과적으로 수행하기위한 수법
Waterfall Model (폭포수 모델)
- s/w 개발 생명주기에 기반하고 있는 소프트웨어 개발 기법 중 하나
- 각 개발 단계를 확실히 매듭짓고 다음단계로 넘어간다는 의미
Risk Analysis
- 프로젝트에 내재된 위험요소 인식, 그영향을 분석하여 이를 관리함
- 프로젝트를 성공을 위해 위험요소를 사전에 여측, 대비하는 모든 기술과 활동
테스트
통합테스트 (Integration test)
- 모듈 통합하는 과정에서"모듈간의" 호환성을 확인하기 위해 수행되는 테스트
시스템 테스트
- "완전한 시스템"에 대해 수행하는 데스트, 기능적, 비기능적 요구사항을 만족하는지 확인
인수테스트(Acceptance test)
- 실제 환경에서 "사용자"가 참여하는 테스트
- 요구분석명세서에 나타난 사항을 모두 충족하는지, 시스템이 예상대로 동작하는지 사용자의 관점에서 확인
단위 테스트(unit test)
- 구현단계에서 각 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트
- 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 시행
- 상위모듈의 역할을 하는 가상 모듈을 테스트 드라이버라고 하고 그역할은 테스트 할 모듈을 호출하는 것
- 필요한 데이터를 인자를 통해 넘겨주고, 테스트가 완료된 후 그 결과 값을 받는 역할을 해줌
- 개별 모듈을 시험하는 것으로, 모듈이 정확하게 구현되었는지, 예정한 기능이 제대로 수행되는지 점검
테스트 드라이버
- 테스트 대상 하위 모듈을 호출하고, 파라미터 전달, 모듈 테스트 수행 후의 결과 도출
- 상향식 테스트에 사용됨
테스트 스텁
- 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구
- 하향식 테스트에 사용
객체지향 분석기법
Rumbaugh 럼바우 방법
- 모든 소프트웨어 구성요소를 그래픽 표기법을 이용하여 모델링
- 객체 모델링기법이라고도 한다
- 분석활동은 객체 모델링 (객체 다이어그램) -> 동적 모델링 (동적 다이어그램) -> 기능 모델링 순 (자료흐름도 (DFD))
Booch 부치 방법
- 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 분석방법
- 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의
Jacobson 방법
- 유스케이스를 강조하여 사용하는 분석방법
Coad와 Yourdon방법
- E-R 다이어그램을 사용하여 객체의 행위를 모델링
- 객체식별, 구조식별, 주제정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의등의 과정으로 구성
Wirfs-Brock 방법
- 분석과 설계깐의 구분이 없고 고객명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법
NS Chat (프로그램 설계도 중 하나)
- 3가지 기본구조(연속, 선택, 반복) 만으로 논리 표현(표준화 가능)
- flow chart의 최대 단점인 화살표가 표시되지않음
- 기본구조의 입구와 출구는 각 하나씩
- 전체적인 알고리즘을 일목요연하게 볼 수 있음
클린 코드 작성하기
- 추상화: 상위클래스,메소드,함수; 프로그램 특성만 간략하게, 하위클래스,메소드, 함수; 세부적 내용 구현
- 의존성(배제): 다른 모듈에 미치는 영향을 최소화하여 코드변경시 영향이 가지 않도록
- 중복성(최소화): 코드의 중복을 최소화
- 가독성: 누구든지 읽기 쉽게 작성
- 단순성: 코드를 단순하게 작성(프로그램을 최소단위로 분리,작업을 한번에 하나씩 처리하도록)
정형 기술 검토 FTR의 지침
- 제품 검토의 집중성: 오류 검출에 초점을 두고 해결책을 나중으로 미룸
- 사전 준비성: 검토를 위한 자료를 사전에 배포하여 검토하도록 함
- 의제의 제한성: 의견을 제한하되 충분히 받아들임
- 안건 고수성: 안건을 세우면 고수함
- 논쟁 반박의 제한성: 논쟁과 반박을 제한함
- 문제공개성: 문제영역을 공개함
- 참가인원의 제한성: 참가자의 수를 제한
- 문서성: 발견된 오류는 문서화함
자료구조의 분류
- 비선형 구조: 트리, 그래프
- 선형 구조: 스택, 큐, 데크, 리스트
- 파일 구조: 순차파일, 색인파일, 직접파일
화이트박스 테스트
종류
- 기초경로 검사(basic path testing)
- 조건 검사(condition testing)
- 루프 검사(loop testing)
- 데이터 흐름 검사(date flow testing)
검증기준
- 문장 검증기준
- 분기 검증기준
- 조건 검증기준
- 분기/조건 기준
블랙박스 테스트
종류
- 동치(동등)분할 검사
- 경계값분석
- 원인-효과검사
- 오류 예측 검사
- 비교 검사
코드인스펙션
- 결함뿐만 아니라 모든 것이 표준대로 되어있는지 확인하기 위한 검토
- 표준이나 명세서에 서술항 내용과 비교하여 편차와 에러를 식별하기 위해 산출물을 근거로 수행하는 검사
- 정적 테스트에 가까움
- 코드 품질 향상 기법 중 하나
- 결함과 함께 코딩 표준 주수여부, 효율성등 다른 품질 이슈도 검사
- 프로그램 수행시켜보는 것 대신 읽어보고 눈을 확인하는 방법
깊이우선탐색 (DFS)
깊이 우선 탐색은 이름 그대로 최대한 깊이 탐색한 이후 탐색할 것이 없다면 그 이전으로 돌아가 탐색 이어가는것
예) a-b-e, e의 위치에서 더이상 내려갈곳없기때무에 f로 이동 f에서 다시 밑인 g로 이동 1차 끝
깊이 검색이 끝났기 때문에 형제노드인 a에서 시작하여 c로 가고 더이상 갈곳없기때문에 a로 돌아가 다시 d
3과목 : 데이터베이스 구축
분산 데이터베이스 시스템
- 물리적으로 분산된 데이터베이스 시스템을 논리적으로 하나의 데이터베이스 시스템처러 사용 할 수 있음
- 물리적으로 분산되어 지역별로 필요한 데이터를 처리할 수 있는 지역컴퓨터를 분산처리기라고 함
- 분산 데이터베이스 시스템을 위한 통신 네트워크 구조가 데이터 통신에 영향을 주므로 효율적 설계 필요
분산 데이터베이스의 목표
- 위치 투명성 (Location Transparency) 하드웨어와 소프트웨어의 물리적 위치를 사용자가 알 필요 없다
- 중복 (복제)투명성 (Replication Transparency)
사용자에게 통지할 필요없이 시스템안에 파일들과 자원들의 부가적인 복사를 자유롭게 할 수 있다
- 병행 투명성 (Concurrency Transparency) 다중 사용자들이 자원들을 자동으로 공유할 수 있다
- 장애 투명성 (Faiure Transparency) 사용자들은 어느 위치의 시스템에서 장애가 발생했는지 알 필요 없다
데이터 사전
- 시스템 자신이 필요로 하는 여러가지 객체(기본테이블,뷰,인덱스,데이터베이스,패키지,접근권한)에 관한 정보를 포함하고 있는 시스템 데이터베이스
- 시스템 카탈로그,메타 데이터라고도 함
- 시스템 카탈로그 자체도 시스템 테이블로 구성, sql문 이용하여 내용검색 가능
- 사용자가 시스템 카탈로그 직접 갱신할 수 없음
- sql문으로 여러가지 객체에 변화를 주면 자동갱신함
데이터베이스 설계단계- 트랜잭션 설계단계
- 개념설계: 트랜잭션 모델링
- 산출물로 E-R Diagram을 만들 수 있음
- DBMS에 독립적 개념 스키마 설계
- 논리적 설계 단계의 앞단계에서 수행
- 논리설계: 트랜잭션 인터페이스 설계
- 물리설계: 트랜잭션 세부설계
데이터베이스의 트랜잭션 성질
- 원자성(Atomicity): 완전하게 수행완료되지않으면 수행되지않아야함
- 일관성(Consistenct): 시스템의 고정 요소는 트랜잭션 수행 전후에 갈아야함
- 격리성(Isolation): 트랜잭션 실행 시 다른 트랜잭션의 간섭을 받지 않아야 함
- 영속성(Durability): 트랜잭션의 완료결과가 데이터베이스에 영구히 기억됨
Partially Committed
트랙잭션의 마지막 연산이 실행된 직후의 상태로, 모든 연산의 처리는 끝났지만 트랙잰션이 수행한 최종 결과 데이터베이스에 반영하지않은 상태, 마지막연산 실행된 직후의 상태로 아직 commit연산 실행 전
용어
Operation
데이터 모델의 구성요소중 데이터 구조에 따라 개념세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리하는 작업
테이블 키(Primary key)
기본기 (Primary key)
- 후보키 중에 선정된 주키(메인키)로 중복된 값을 가질 수 없다
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- 기본키는 후보키의 성질을 갖는다. 즉 튜플을 식별하기위해 반드시 필요한 키
- 기본키는 null값을 가질 수 없다 즉 시본키로 설정된 속성에는 null값이 있어서는 안됨
슈퍼키 (super key)
- 데이터 베이스에서 테이블의 행을 고유하게 식별할 수 있는 속성
- 속성의 집합
외래키
- 관계형 데이터베이스에서 한 테이블 속성 집합이 다른 테이블의 기본키가 됨
- 데이터베이스 내에 존재하는 테이블들의 관계에서 참조의 무결성을 보장하기 위함
- 중복되는 값, 비어있는 값(null) 가질 수 있음(<->기본키)
후보키 (candidate key)
- 유일성과 최소성을 만족하는 속성, 속성들의 집합
- 슈퍼키 중 최소성을 만족하는 것이 후보키가 됨
- 후코비는 키본키로 사용 할 수 있으며, 후보키가 여러개일 경우 하나지정해서 사용
DDL (Date Define Lanauage, 데이터 정의어)
SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경또는 삭제시 사용하는 언어
CREATE : SCHEMA, DOMAIN, TABLE, VIEW, INDEX 를 정의
ALERT : TABLE에 대한 정의를 변경하는데 사용
DROP : SCHEMA, DOMAIN, TABLE, VLEW, INDEX 삭제
DML (Date Manipulation Language, 데이터 조작어)
데이터베이스 사용자가 응용 프로그램이나 질의어를 통해 저장된 데이ㅓ를 실질적으로 처리하는데 사용하는 언어
SELECT : 테이블에서 조건에 맞는 튜플 검색
INSERT : 테이블에 새로운 튜플 삽입
UPDATE : 테이블에서 조건에 맞는 튜플의 내용 갱신
DELETE : 테이블에서 조건에 맞는 튜플 삭제
DCL (Date Control Language, 데이터 제어어)
데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 사용된는 언어
데이터 베이스 관리자가 데이터 관리를 목적으로 사용
COMMIT : 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 조작 작업이 정상적으로 완료 됐음을 알려주는 명령어
ROLLBACK : 아직 COMMIT 되지 않은 변경된 모든내용 들을 취소하고 , 데이터베이스를 이전 상태로 되돌리는 명령어
GRANT : 데이터베이스 사용자에게 사용 권한 부여
REVOKE : 데이터베이스 사용자의 사용 권한 취소
4과목 : 프로그래밍 언어 활용
RIP (Routing infotmation protocol)
- 경로 선택 메트릭은 홉 카운트이다
- 각 라우터는 이웃 라우터들로부터 수신한 정보를 이용, 라우팅 표 갱신
- 최단 경로 탐색에는 bellman-ford 알고리즘을 사용하는 거리 벡터 라우팅 프로토콜
- 라우팅 프로토콜을 IGP와 EGP로 분류했을때 IGP에 해당
- 최적의 경로 산출하기 위한 정보로 홉(거리값)만을 고려하므로 RIP을 선택한 경로가 최적의 경로가 아닌 경우가 많이 발생 할 수 있음
- 소규모 네트워크 환경에 적합
- 최대 홉 카운트를 15홉 이하로 한정하고 있다
UDP (User Datagram Protocol)
- 비연결형 및 비신뢰성 전송 서비스 제공
- 흐름제어나 순서제어가 없어 전송속도가 빠르다
- 수신된 데이터의 순서 재조정 기능을 지원안함
- 복구 기능을 제공하지않는다
- 단순 헤더 구조로 오버헤드 적음
- TCP와 같이 트랜스포트 계층에 존재