정보처리기사

정보처리기사 필기 공부 1과목

Daekyue 2023. 3. 29. 18:15

- , 외부 송수신 연계 기술 : DB 링크, DB 연결, API/Open API, JDBC, 하이퍼링크, 소켓

 

-XP12가지 기본원리 : Pair Programming(짝 프로그래밍), Collective Ownership(공동 코드 소유), 지속적인 통합

계획 세우기, 작은 릴리즈, 메타포어, 간단한 디자인, 테스트 기반 개발, 리팩토링, 40시간 작업, 고객 상주, 코드표준

XP(extreme programming)5가지 가치 : 용기, 단순성, 의사소통, 피드백, 존중

 

디자인 패턴 : 소프트웨어 설계에서 자주 발생하는 문제에 대한 일바적이고 반복적인 해결방법

 

객체 지향 설계 원칙(SOLID) : 단일 책임의 원칙, 개방 폐쇄 원칙, 인터페이스 분리의 원칙, 의존성 역전의 원칙

리스코프 치한의 법칙(상속 받은 하위 클래스는 어디서나 자신의 상위 클래스로 교체할 수 있어야 한다는 원칙

 

럼바우 메소드(객체(정보 모델링), 동적(상태 다이어그램), 기능(자료 흐름도,DFD),

Wirfs-Block 메소드(고객 명세서 평가), Jacobson(유스케이스)

 

데이터 흐름도(DFD) 구성요소 : 처리기(process)(), 데이터 흐름 (화살표),

데이터 저장소(Data Store, 위아래만 선 있는 사각형), 단말(Terminator, 사각형)

요구분석 기법 : 사용자의 요구를 추출하여 목표를 정하고 어떤 방식으로 해결할 것인지 결정하는 단계

특징 : 개발의 첫 단계, 문서화 통한 유지보수, 소단위 명세서 활용, 비용이 많이 드는 단계X

단계 절차 : 요구사항 분류 개념 모델링 생성 및 분석 요구사항 할당 요구사항 협상 정형 분석

요구사항 분석이 어려운 이유 : 개발자와 사용자 간 지식 차이, 요구사항이 모호함, 요구사항이 변화가능, 예외

 

UML(Unified Modeling Language) :객체 지향 소프트웨어 개발 과정의 산출물을 명세화, 시각화, 문서화할 때 언어

특징 : 가시화 언어, 구축 언어, 명세환 언어, 문서화 언어 (가구명문으로 외우기, 가구명문 UML)

구성요소 : 사물, 관계, 다이어그램

UML의 관계 : 연관(Association, 실선), 의존(Dependency), 일반화(Generalization), 실체화(Realization),

포함(Composition), 집합(Aggregation) 관계

- UML 다이어그램 (구조적 다이어그램 / 정적 다이어그램, 행위적 다이어그램 / 동적 다이어그램)

구조적 다이어그램 종류 : 클래스, 객체, 배치, 컴포넌트, 복합체 구조, 패키지

행위적 다이어그램 종류 : 유스케이스, 시퀀스, 커뮤니케이션, 상태, 활동, 타이밍

 

유스케이스 다이어그램 : 액터가 시스템을 통해 수행하는 일련의 단위 구성요소는 액터, 시스템, 유스케이스, 관계

액터 : 사용자가 시스템에 대해 수행하는 역할, 액터명은 역할 중심으로 추상화하여 정의

하나의 액터는 여러 개의 유스케이스와 상호작용이 가능

유스케이스 다이어그램 구성요소 간의 관계 종류 : 연관관계, 포함관계, 확장관계, 일반화관계

연관관계(Association) : 유스케이스와 액터 간의 상호작용이 있음을 표현, 실선으로 연결

포함관계 : 하나의 유스케이스가 다른 유스케이스의 실행을 전제로 할 때 형성되는 관계, 점선으로 연결 <<include>>

확장관계(Extend) : 특정 조건에 따라 확장 기능 유스케이스를 수행하는 관계, <<extend>>

 

- 애자일 방법론 : 소프트웨어 개발방법론의 하나, 개발과 함께 즉시 피드백을 받아서 유동적으로 개발하는 방법

특징 : 요구사항은 기능 중심 정의, 절차와 도구보다 개인과 소통을 중시, 계획을 짧게 세워 요구 변화에 유연신속대응

스크럼(SCRUM) : 매일 정해진 시간,장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론

특징 : 제품책임자(제품에 대한 요구사항을 작성하는 주체), 제품 백로그(제품과 프로그램에 대한 요구사항),

 

- 모델링 : 개발될 시스템에 대해 엔지니어들이 공통된 개념을 공유하는데 도움을 줌, 팀의 응용문제 이해를 도움

구조적 방법론: DFD(Data Flow Diagram), DD(Data Dictionary) 사용하여 요구사항의 결과 표현

객체 지향 방법론에서는 UML 표기법 사용

-분석 자동화 도구 : 요구사항을 자동으로 분석, 요구사항 분석 명세서를 기술하도록 개발된 도구(CASE)

특징 : 표준화 적용, 문서화 통한 품질 개선, 변경으로 인한 영향 추적이 쉬움, 유지보수 비용 축소 가능, 재사용성

주요기능 : 그래픽 지원, 소프트웨어 생명주기 전 단계 연결, 문서 자동화 기능 제공, 작업자 간의 커뮤니케이션 증대

상위 CASE : 계획 수립, 요구분석, 기본설계 단위를 다이어그램으로 표현, (자료흐름도, 프로토타이핑, UI 설계 지원)

하위 CASE : 구문 중심 편집 및 정적, 동적 테스트 지원, 시스템 명세서 생성 및 소스 코드 생성 지원

요구사항 관리 도구 : 요구사항 변경으로 인한 비용 편익 분석, 변경 내용의 추적, 변경에 따른 영향 평가

 

- UI 유형 : CLI(텍스트로), GUI(그래픽 환경), NUI(직관적 키보드 마우스X), OUI(유기적, 입력장치가 곧 출력장치)

설계원칙 : 직관성, 유효성, 학습성, 유연성 필요기능 : 사용자의 입력 검증, 에러 처리와 에러메세지, 프롬포트제공

- UI 화면 설계 구현 : 와이어 프레임(화면 단위 레이아웃 설계), 스토리보드(서비스 구축 위한 정보 포함), 프로토타입

 

공통 모듈 원칙 : 정확성, 명확성, 완전성, 일관성, 추적성

좋은 모듈 : 독립성과 재사용성을 높이기 위해 결합도는 낮추고 응집도 높임, 복잡도와 중복성을 줄임, 일관성 유지

응집도 : 우연적 < 논리적 < 시간적 < 절차적 < 통신적 < 순차적 < 기능적 우연적이 제일 안좋음(우논시절 통순기)

결합도 : 내용 > 공통 > 외부 > 제어 > 스탬프 > 자료 내용이 제일 안좋음(내공 외제 스자)

 

코드 오류 종류 : 사본 오류(한자리 잘못), 전위 오류(연속된 글자 순서 바뀜), 생략 오류, 첨가 오류, 이중 전위 오류

 

-상향식 설계 : 하위 기능들로부터 제일 상위까지 하향식 설계 : 제일 상위에 있는 기능서 하위로

코드 설계 종류 : 연상 코드, 블록 코드, 순차 코드, 표의 숫자 코드, 십진 코드, 그룹 분류식 코드

 

HIPO : 시스템의 분석 및 설계, 문서화할 때 사용되며, 하향식 소프트웨어 개발을 위한 문서화 도구

특징 : 체계적인 문서 관리 가능, 기능과 자료의 의존 관계를 동시에 표현, 변경 유지보수가 용이, 계층구조로 표현

차트 종류 : 가시적 도표, 총체적 도표, 세부적 도표

 

소프트웨어 아키텍처 설계과정 : 목표 설정 타입 결정 스타일 적용 기능,동작(구현) 설계검토 (목타적구검)

4+1: 유스케이스 뷰, 논리 뷰, 프로세스 뷰, 구현 뷰, 배포 뷰

비용평가 모델

SAAM(Software Architecture Analysis Method) : 변경 용이성과 기능성에 집중, 평가가 용이, 경험 없는 조직서

ATAM(Architecture Trade-off Analysis Method) : 품질 속성의 이해 상충 관계까지 평가하는 모델

CBAM(Cost Benefit Analysis Method) : ATAM 바탕, 경제적 의사결정에 대한 요구를 충족하는 비용 평가 모델

ADR(소프트웨어 아키텍처 구성요소 간 응집도 평가), ARID(전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중)

 

GOF(Gang of Four Design Pattern) : 생성 패턴, 구조 패턴, 행위 패턴으로 23가지 디자인 패턴을 분류

생성 패턴 : 팩토리 메소드, 추상 팩토리, 빌더, 프로토타입, 싱글톤

구조 패턴 : 어댑터, 브릿지, 컴포지트, 데코레이터, 퍼싸드, 플라이웨이트, 프록시

행위 패턴 : 책임 연쇄, 커맨드, 인터프리터, 반복자, 중재자, 메멘토, 옵서버, 상태, 전략, 템플릿 메소드

 

FEP(컴퓨터 프로세서가 처리하기 전 미리 처리하여 처리 시간을 줄여줌) EAI(기업 애플리케이션 통합)

 

정보 은닉 : 사용자가 굳이 알 필요가 없는 정보는 사용자로부터 숨겨야 한다는 개념, 모듈이 독립성을 갖게해줌