정보처리기사 필기시험을 준비하며
전자문제집CBT
의 해설을 정리한 것입니다.
1. 요구사항 분석
1) 요구사항 개발 프로세스
도출 → 분석 → 명세 → 확인
도출 단계
주요 기법 : 인터뷰, 설문, 브레인스토밍 → 청취, 인터뷰 질문 기술 필요
2) 요구사항 분석 기법
요구사항 분석 기법 : 요구사항 분류, 개념 모델링, 요구사항 할당, 요구사항 협상, 정형 분석
- 개념 모델링, 정형 분석, 요구사항 협상 → 관찰 및 모델 작성 기술 필요
2. 럼바우 객체 지향 분석
1) 럼바우(Rumbaugh)의 분석 기법
- 가장 일반적으로 사용 되는 방법과 분석 활동을
객체 모델
,동적 모델
,기능 모델
로 나누어 수행함 - 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링한다. 객체 모델링 기법(OMT)라고도 함
1-1) 객체 모델링 (Object Modeling) = 정보 모델링
시스템에서 요구되는 객체를 찾아 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램
으로 표시
분석 활동의 세 가지 모델 중 가장 중요함!
1-2) 동적 모델링 (Dynamic Modeling)
상태 다이어그램(상태도)를 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현함
1-3) 기능 모델링 (Function Modeling)
자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름 중심으로 처리 과정을 표현함
3. 협약에 의한 설계 (Design by Contract)
- 클래스에 대한 여러 가정을 공유하도록 명세한 것
- 소프트웨어 컴포넌트에 대한 정확한 인터페이스 명세를 위하여
선행조건
,결과조건
,불변조건
을 나타내는 설계 방법
1) 협약에 의한 설계의 세 가지 타입
- 선행조건(Precondition) : 오퍼레이션이 호출되기 전에 참이 되어야 하는 조건
- 결과조건(Postcondition) : 오퍼레이션이 수행된 후 만족되어야 하는 조건
- 불변조건(Invatiant) : 클래스 내부가 실행되는 동안 항상 만족하여야 하는 조건 (ex. 리스트에 있는 노드가 항상 오름차순으로 되어야 함)
4. UML 모델
1) '차' 클래스와 각 클래스가 일반화 관계
- 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현함
- 일반적인 개념을 상위(부모), 구체적인 개념을 하위(자식)이라고 함
- 하위 사물에서 상위 사물인 쪽으로 속이 빈 화살표를 연결함
5. 객체 지향 소프트웨어 설계
1) 어떤 디자인 패턴을 사용할지 정할 때
- 문제와 배경을 보고
- 과거엔 어떻게 처리했는지 (사례, 샘플코드)를 살펴본다.
2) 객체 지향 설계 원칙
- 단일 책임 원칙 (SRP, Single Responsibility Principle)
객체는 단 하나의 책임만 가져야 한다. - 개방-폐쇄의 원칙 (OCP, Open Closed Principle)
기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다. - 리스코프 치환 법칙 (LSP, LisKov Substitution Principle)
일반화 관계에 대한 이야기며, 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다.
⇒ 서브타입(상속받은 하위 클래스)은 어디에서나 자신의 기반타입(상위클래스)으로 교체할 수 있어야 함 - 인터페이스 분리 원칙 (ISP, Interface Segregation Principle)
인터페이스를 클라이언트에 특화되도록 분리시키라는 설계 원칙 - 의존 역전 원칙 (DIP, Dependency Inversion Principle)
의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존하라는 것
6. 자료 사전 표기법
기호 | 의미 |
---|---|
= | 자료의 정의 |
+ | 자료의 연결 |
() | 자료의 생략 |
[|] | 자료의 선택 |
{} | 자료의 반복 |
** | 자료의 설명(주석) |
7. 자료 흐름도 (Data Flow Diagram)
1) 구성 요소
프로세스(Process), 자료 흐름(Data Flow), 자료 저장소(Data Store), 단말(Terminator)
8. CASE(Computer-Aided Software Engineering) 도구
1) CASE 도구란?
- 소프트웨어 공학 작업을 자동화한 소프트웨어 패키지
- 소프트웨어 관리자들과 실무자들의 소프트웨어 프로세스와 관련된 활동을 지원한다.
- 즉, 프로젝트 관리 활동을 자동화하고, 결과물을 관리하며, 엔지니어들의 분석, 설계 및 코딩과 테스트작업을 돕는다.
- 1980년에 소개되었고, 1990년대부터 자주 사용됨
2) 주요기능
다양한 소프트웨어 개발 모형 지원, 그래픽 지원, 소프트웨어 생명주기의 전단계 연결