[정보처리기사/필기] 1과목 <소프트웨어 설계> 오답정리

정보처리기사 필기시험을 준비하며 전자문제집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) '차' 클래스와 각 클래스가 일반화 관계

스크린샷 2020-09-21 오후 8 14 20
  • 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현함
  • 일반적인 개념을 상위(부모), 구체적인 개념을 하위(자식)이라고 함
  • 하위 사물에서 상위 사물인 쪽으로 속이 빈 화살표를 연결함

5. 객체 지향 소프트웨어 설계

1) 어떤 디자인 패턴을 사용할지 정할 때

  1. 문제와 배경을 보고
  2. 과거엔 어떻게 처리했는지 (사례, 샘플코드)를 살펴본다.

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) 주요기능

다양한 소프트웨어 개발 모형 지원, 그래픽 지원, 소프트웨어 생명주기의 전단계 연결

© 2020 euzl. from JunhoBaik's, Built with Gatsby