정보처리기사 실기 요점정리

1장. 요구사항 확인

▶ 수험서 : 2021 시나공 정보처리기사 실기

※ 시나공 교재를 토대로 작성하였으며 [ ] 안에 번호는 교재의 섹션입니다.

※ 부족한 내용은 구글링 및 수제비 카페를 참고하여 작성하였습니다.

 

 

 

[1] 소프트웨어 생명주기 모형

- 나선형 모형의 4가지 주요활동 : 위험 분석 → 고객평가 → 계획 수립 → 개발 및 검증
- 프로토타입 모형 : 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측하는 모형
- 애자일 모형 : 고객과의 소통에 초점을 맞춘 방법론, 폭포수 모형과 대조적, 기업 활동 전반에 사용

 


[2] 스크럼 기법 

- 스크럼 개발 과정 : 스프린트 계획 회의 → 스프린트 → 일일스크럼회의 → 스프린트 검토 회의 → 스프린트 회고

 


[3] XP의 주요 실천방법

- XP의 5가지 핵심 가치 : 의사소통, 단순성, 용기, 존중, 피드백
- 리팩토링의 목적 : 프로그램을 쉽게 이해하고 수정하여 빠르게 개발할 수 있도록 하기 위함
- 주요 실천 방법 : 짝 프로그래밍 Pair Programming, 공동 코드 소유 Collective Ownership,

                          테스트 주도 개발 Test-Driven Development, 전체 팀 Whole Team,

                          계속적인 통합 Continuous Integration, 리팩토링 Refactoring, 소규모 릴리즈 Small Releases

 


[5] 개발 기술 환경 파악

- 운영체제 관련 요구사항 식별 시 고려사항 : 가용성, 성능, 기술 지원, 주변 기기, 구축 비용
- DBMS 관련 요구사항 식별 시 고려사항 : 가용성, 성능, 기술 지원. 상호 호환성, 구축 비용
- WAS 관련 요구사항 식별 시 고려사항 : 가용성, 성능, 기술 지원, 구축 비용
- 오픈소스 요구사항 식별시 고려사항 : 라이선스의 종류, 사용자 수, 기술의 지속가능성

  * 오픈 소스 : 누구나 별다른 제한 없이 사용할 수 있도록 소스 코드를 공개한 소프트웨어

 


[6] 요구사항 정의

- 요구사항의 유형

  * 기능 요구사항 : 기능이나 수행과 관련된 요구사항

  * 비기능 요구사항 : 품질이나 제약사항과 관련된 요구사항

  * 사용자 요구사항 : 사용자 관점에서 시스템이 제공해야 할 요구사항

  * 시스템 요구사항 : 개발자 관점에서 본 시스템 전체가 제공해야 할 요구사항

 

 

[7] 요구사항 개발 프로세스

- 요구사항 개발 프로세스 : 도출 → 분석 → 명세 → 확인

  * 도출 : 시스템 개발에 관련된 사람들이 요구사항을 어떻게 수집할 것인지 식별하고 이해하는 과정

  * 분석 : 개발 대상에 대한 사용자의 요구사항을 이해하고 문서화하는 활동

  * 명세 : 분석된 요구사항을 바탕으로 모델을 작성하고 문서화하는 과정

  * 확인 : 요구사항 명세서가 정확하고 완전하게 작성되었는지를 검토하는 활동

- 요구공학 : 요구사항을 정의하고 분석 및 관리하는 프로세스를 연구하는 학문
- 요구사항 명세기법 : 정형 명세 기법, 비정형 명세 기법

 


[8] 요구사항 분석

- 구조적 분석 기법 도구 : 자료흐름도, 자료사전, 소단위 명세서, 개체 관계도, 상태전이도, 제어 명세서

- 자료흐름도 DFD : 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법 (= 자료 흐름 그래프, 버블 차트)

 

 

- 자료 사전 DD : 자료흐름도에 있는 자료를 더 자세히 정의하고 기록한 것 (= 메타 데이터)

  * 기호 : 정의 =, 연결 +, 생략 ( ), 선택 [ ], 반복 { }, 설명 * *

 


[9] 요구사항 분석 CASE와 HIPO

- 요구사항 분석용 CASE : SADT, SREM(RSL/REVS), PSL/PSA, TAGS
- HIPO 차트의 종류 : 가시적 도표, 총체적 도표, 세부적 도표

 


[10] UML의 개요

- UML 구성요소 : 사물, 관계, 다이어그램
- 사물의 종류 : 구조 사물, 행동 사물, 그룹 사물, 주해 사물

 


[11] 관계

- 연관 관계 Association  :   2개 이상의 사물이 서로 관련되어있는 관계
- 집합 관계 Aggregation :  하나의 사물이 다른 사물에 포함되어있는 관계
- 포함 관계 Composition  :  포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계
- 일반화 관계 Generalization :   하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계
- 의존 관계 Dependency :   필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계
- 실체화 관계 Realization :   사물이 할 수 있거나 해야 하는 기능으로, 서로를 그룹화할 수 있는 관계

 


[12] 다이어그램


<구조적 다이어그램>
- 클래스 Class : 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현
  * 구성 요소 : 클래스, 제약조건, 관계

  * 클래스 : 각각의 객체들이 갖는 속성과 오퍼레이션을 표현한 것

  * 연관클래스 : 연관관계에 있는 두 클래스에 추가로 표현해야 할 속성이나 오퍼레이션이 있는 경우 생성하는 클래스


- 객체 Object : 인스턴스를 특정 시점의 객체와 객체 사이의 관계로 표현, 객체 모델링에 사용


- 컴포넌트 Component : 실제 구현 모듈인 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현


- 배치 Deployment : 결과물, 프로세스, 컴포넌트 등 물리적인 요소들의 위치를 표현


- 복합체 구조 Composite Structure : 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현


- 패키지 Package : 요소들을 그룹화한 패키지간의 의존 관계를 표현한 것
  * 구성 요소 : 패키지, 객체, 의존관계(⟪import⟫, ⟪access⟫)


<행위 다이어그램>
- 유스케이스 Use Case : 사용자와 외부 시스템들이 개발될 시스템을 이용해 수행할 수 있는 기능을 사용자의 관점에서 표현
  * 구성 요소 : 시스템/시스템 범위, 액터, 유스케이스, 관계(⟪extend⟫, ⟪include⟫)


- 시퀀스 Sequence : 시스템이나 객체들이 메시지를 주고받으며 상호작용 하는 과정을 그림으로 표현
  * 구성 요소 : 액터, 객체, 생명선, 실행 상자, 메시지, 객체 소멸, 프레임


- 커뮤니케이션 Communication : 시스템이나 객체들이 메시지를 주고받으며 상호작용하는 과정과 객체들의 연관을 그림으로 표현
  * 구성 요소 : 액터, 객체, 링크, 메시지


- 상태 State : 객체들 사이에 발생하는 이벤트에 의한 객체들의 상태 변화를 그림으로 표현
  * 구성 요소 : 상태, 시작 상태, 종료 상태, 상태 전환, 이벤트, 프레임


- 활동 Activity : 사용자의 관점에서 시스템이 수행하는 기능을 처리 흐름에 따라 표현
  * 구성 요소 : 액션/액티비티, 시작노드, 종료노드, 조건노드, 병합노드, 포크노드, 조인노드, 스윔레인

  * 액션 : 더 이상 분해할 수 없는 단일 작업이고, 액티비티는 몇 개의 액션으로 분리될 수 있는 작업


- 상호작용 개요 Interaction Overview : 상호작용 다이어그램 간의 제어 흐름을 표현
- 타이밍 Timing : 객체 상태 변화와 시간 제약을 명시적으로 표현

 

<모델링>

- 기능 모델링 : 사용자의 요구사항을 분석하여 개발될 시스템이 갖춰야 할 기능을 사용자와 공유하기 위해 그림으로 표현하는 것

  * 종류 : 유스케이스 다이어그램, 활동 다이어그램

- 동적 모델링의 종류 : 시스템의 내부 구성 요소들의 상태 변화 과정과 과정에서 발생하는 상호 작용을 표현한 것

  * 종류 : 시퀀스 다이어그램, 커뮤니케이션 다이어그램, 상태 다이어그램

- 정적 모델링 : 사용자가 요구한 기능을 구현하는데 필요한 자료들의 논리적인 구조를 표현

  * 종류 : 클래스 다이어그램

- 스테레오 타입 : ⟪include⟫포함, ⟪extend⟫확장, ⟪interface⟫인터페이스, ⟪exception⟫예외, ⟪constructor⟫생성자

 


[20] 소프트웨어 개발 방법론- 구조적 방법론 : 사용자의 요구사항을 파악하여 문서화하는 처리중심의 방법론
- 정보공학 방법론 : 계획, 분석, 구축에 정형화된 기법들을 통합 및 적용하는 자료 중심의 방법론
- 객체지향 방법론 : 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론
- 컴포넌트 기반 방법론 : 컴포넌트를 조합하여 새로운 애플리케이션을 만드는 방법론
- 제품 계열 방법론 : 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론, 영역공학과 응용공학으로 구분

 


[21] S/W 공학의 발전적 추세

- 소프트웨어 재사용 : 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것, 생성중심과 합성중심
- 소프트웨어 재공학 : 기존 시스템을 이용하여 보다 나은 시스템을 구축하고 새로운 기능을 추가하여 소프트웨어의 성능을 향상시키는 것

- CASE (Computer Aided Software Engineering)

    : 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 자동화하는 것

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

 


[22] 비용 산정 방법

- 소프트웨어 비용 결정 요소

  * 프로젝트 요소 : 제품 복잡도, 시스템 크기, 요구되는 신뢰도

  * 자원 요소 : 인적 자원, 하드웨어 자원, 소프트웨어 자원

  * 생산성 요소 : 개발자 능력, 개발 기간

 


[23] 하향식 비용 산정 기법

- 전문가 감정 기법 : 조직 내 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰하는 기법
- 델파이 기법 : 다수의 전문가와 한 명의 중재자를 통해 비용을 산정하는 비용 산정 기법

 


[24] 상향식 비용 산정 기법

- LOC 기법 산정 공식

  * 노력 = LOC / 1인당 월평균 생산 코드 라인 수 = 개발기간 x 투입 인원

  * 개발 비용 = 노력 x 1인당 월평균 인건비

  * 개발 기간 = 노력 / 투입 인원

- 개발 단계별 인월수 기법 : LOC 기법을 보완하기 위한 기법으로, 각 기능을 구현시키는 데 필요한 노력을 생명 주기의 각 단계별로 산정

 


[25] 수학적 산정 기법

- COCOMO 모형의 프로젝트 유형 : 조직형(Organic, ~5만), 반분리형(Semi-Detached, ~30만), 내장형(Embedded, 30만~)
- COCOMO 모형의 종류 : 기본형(Basic), 중간형(Intermediate), 발전형(Detailed)
- Putnam 모형 : 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형
- 기능점수(FP) 모형 : 소프트웨어의 기능을 증대시키는 요인별로 가중치를 부여하여 기능점수를 구한 후 비용을 산정하는 기법

  * 기능 증대 요인 : 자료입력, 정보 출력, 명령어, 데이터 파일, 필요한 외부 루틴과의 인터페이스

 


[26] 프로젝트 일정 계획

- PERT : 프로그램 평가 및 검토 기술, 전체 작업의 상호관계를 표시하는 네트워크
- CPM : 임계 경로 기법, 필요한 작업을 나열하고 작업에 필요한 소요 시간을 예측하는 데 사용되는 기법
- 간트 차트 : 시간선 차트, 프로젝트의 작업일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표

 


[27] 소프트웨어 개발 방법론 결정

- 프로젝트 관리 유형 : 일정 관리, 비용 관리, 인력 관리, 위험 관리, 품질 관리

 


[28] 소프트웨어 개발 표준

- ISO/IEC 12207 : ISO에서 만든 표준 소프트웨어 생명 주기 프로세스

  * 구분 : 기본 생명 주기 프로세스, 지원 생명 주기 프로세스, 조직 생명 주기 프로세스

- CMMI(Capability Maturity Model Integration) : 소프트웨어 개발 조직의 업무 능력 및 조직의 성숙도를 평가하는 모델

  * 프로세스 성숙도 : 초기(Initial), 관리(Managed), 정의(Defined), 정량적 관리(Quantitatively Managed), 최적화(Optimizing)

- SPICE(Software Process Impovement and Capability Determination)

   : 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준

            

  * 프로세스 구성 : 고객-공급자 프로세스, 공학 프로세스, 지원 프로세스, 관리 프로세스, 조직 프로세스

  * 프로세스 수행 능력 단계 : 불완전 → 수행 → 관리 → 확립 → 예측 → 최적화

 


[29] 소프트웨어 개발 방법론 테일러링 고려사항

- 내부적 기준 : 목표 환경, 요구사항, 프로젝트 규모, 보유 기술

- 외부적 기준 : 법적 제약사항, 표준 품질 기준

 


[30] 소프트웨어 개발 프레임워크

- 소프트웨어 개발 프레임워크 : 공통적으로 사용되는 구성요소와 아키텍처를 일반화하여 제공해주는 반제품 형태의 소프트웨어 시스템

  * 종류 : 스프링 프레임워크, 전자정부 프레임워크, 닷넷 프레임워크

- 프레임워크의 특징

  * 모듈화 : 캡슐화 통해 모듈화를 강화하고 설계 및 구현의 변경에 따른 영향을 최소화함으로써 소프트웨어의 품질을 향상시킴

  * 재사용성 : 프레임워크는 재사용가능한 모듈들을 제공함으로써 예산 절감, 생산성 향상, 품질 보증이 가능함

  * 확장성 : 프레임워크는 다형성을 통한 인터페이스 확장이 가능하여 다양한 형태와 기능을 가진 애플리케이션 개발이 가능함

  * 제어의 역흐름 : 개발자가 관리하고 통제해야 하는 객체들의 제어를 프레임워크에 넘김으로써 생산성을 향상시킴