자격증/정보처리기사

[정보처리기사] 실기 정리 - 1. 요구사항 확인

lucy1215 2023. 2. 24. 12:29
728x90
반응형

1. 요구사항 확인

소프트웨어 생명 주기(Software Life Cycle)

- 소프트웨어 생명 주기는 소프트웨어를 개발하기 위한 설계, 운용, 유지보수 등의 과정을 각 단계별로 나눈 것

 

1. 폭포수 모형(Waterfall Model)

 - 각 단계를 확실히 매듭짓고 그 결과를 철저하게 검토하여 승인 과정을 거친 후다음 단계를 진행하는 개발 방법론 (이전 단계로 돌아갈 수 없다는 전제)

 - 가장 오래되고 가장 폭넓게 사용된 전통적인 소프트웨어 생명 주기 모형

 - 고전적 생명 주기 모형

 - 각 단계가 끝난 후에는 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 한다.

 

2. 프로토타입 모형(Prototype Model, 원형 모형)

 - 사용자의 요구사항을 파악하기 위해 실제 개발될 소프트웨어에 대한 견봄품(Prototype)을 만들어 최종 결과물을 예측하는 모형

 

3. 나선형 모형(Spiral Model, 점진적 모형)

 - 나선을 따라 돌 듯이 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 모형

 - 폭포수 모형과 프로토타입 모형의 장점에 위험 분석 기능을 추가한 모형

 - 누락되거나 추가된 요구사항 첨가 가능

 - 유지보수 과정 필요 X

 - 계획 수립 -> 위험 분석 -> 개발 및 검증 -> 고객 평가

 

4. 애자일 모형(Agile Model)

 - 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발하는 모형

 - 고객과의 소통에 초점을 맞춘 방법론

 - 폭포수 모형과 대조적

 - 대표적인 개발 모형*

   1) 스크럼 (Scrum)

   2) XP(eXtreme Programming)

   3) 칸반(Kanban)

   4) Lean

   5) 기능 중심 개발(FDD : Feature Driven Development)

 

애자일 개발 4가지 핵심 가치

  - 프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다.

  - 방대한 문서보다는 실행되는 SW에 더 가치를 둔다.

  - 계약 협상보다는 고객과 협업에 더 가치를 둔다.

  - 계획을 따르기보다는 변화에 반응하는 것에 더 가치를 둔다.

 

소프트웨어 공학

 - 소프트웨어의 위기를 극복하기 위한 방안으로 연구된 학문

 - 여러 가지 방법론과 도구, 관리 기법들을 통하여 소프트웨어의 품질과 생산성 향상 목적

 

소프트웨어 공학의 기본 원칙

 - 현대적인 프로그래밍 기술을 계속적으로 적용해야 한다.

 - 개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증해야 한다.

 - 소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록을 유지해야 한다.

 

XP(eXtreme Programming) 기법

 - 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상하는 방법

 - 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적인 참여 => 빠르게 개발하는 것 목적

 - XP5가지 핵심 가치

   1) 의사소통 (Communication)

   2) 단순성 (Simplicity)

   3) 용기 (Courage)

   4) 존중 (Respect)

   5) 피드백 (Feedback)

 

XP의 주요 실천 방법

 - Pair Programming : 다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성

 - Collective Ownership : 개발 코드에 대한 권한과 책임을 공동으로 소유함

 - Test-Driven Development : 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할지를 정확히 파악함

 - Whole Team : 개발에 참여하는 모든 구성원들은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가져야 함

 - Continuous Integration : 모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리 될 때마다 지속적으로 통합됨

 - Refactoring : 프로그램 기능의 변경 없이 시스템을 재구성함

      목적 : 프로그램을 쉽게 이해하고 쉽게 수정하여 빠르게 개발할 수 있도록 하기 위함

 - Small Release : 릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응할 수 있음

 

운영체제 (OS, Operating System)

 - 컴퓨터 시스템의 자원을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 소프트웨어

 - 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종

 - 운영체제 관련 요구사항 식별 시 고려사항

   1) 가용성

   2) 성능

   3) 기술 지원

   4) 주변 기기

   5) 구축 비용

 

데이터베이스 관리 시스템 (DBMS; DataBase Management System)

 - 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고, 데이터베이스를 관리해 주는 소프트웨어

 - 기존의 파일 시스템이 갖는 데이터의 종속성과 중복성의 문제를 해결하기 위해 제안된 시스템

 

웹 애플리케이션 서버(WAS; Web Application Server)

 - 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어

 

오픈 소스 (Open Source)

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

 

요구사항

 - 소프트웨어가 어떤 문제를 해결하기 위해 제공하는 서비스에 대한 설명과 정상적으로 운영되는데 필요한 제약조건

 - 요구사항의 유형

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

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

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

   4) 시스템 요구사항 : 개발과 관점에서 본 시스템 전체가 사용자와 다른 시스템에 제공해야 할 요구사항

 

요구사항 개발 프로세스

 - 개발 대상에 대한 요구사항을 체계적으로 도출하고 분석한 후 명세서에 정리한 다음 확인 및 검증하는 일련의 구조화된 활동

 - 요구사항 개발 프로세스가 진행되기 전에 타당성 조사가 선행되어야 한다.

 - 도출 - 분석 - 명세 - 확인

 

요구사항 도출

 - 시스템, 사용자, 개발자 등 시스템 개발에 관련된 사람들이 서로 의견을 교환하여 요구사항을 어떻게 수집할 것인지를 식별하고 이해하는 과정

 

요구사항 분석

 - 개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호하여 이해되지 않는 부분을 발견하고 이를 걸러내기 위한 과정

 

요구사항 명세

 - 분석된 요구사항을 바탕으로 모델을 작성하고 문서화하는 것을 의미

 

요구사항 확인

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

 

요구공학

 - 무엇을 개발해야 하는지 요구사항을 정의하고, 분석 및 관리하는 프로세스를 연구하는 학문

 

요구사항 명세 기법

 1) 정형 명세 기법

   - 수학적 원리 기반, 모델 기반

 2) 비정형 명세 기법

   - 상태/기능/객체 중심

 

구조적 분석 기법

 - 자료의 흐름과 처리를 중심으로 하는 요구사항 분석 방법

 - 하향식 방법

 - 주요 구조적 분석 기법 도구

   1) 자료 흐름도 (DFD; Data Flow Diagram)

      프로세스 :

      자료 흐름 : 화살표

      자료 저장소 : 직선(단선/이중선)

      단말 : 사각형

   2) 자료 사전 : 자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한 것

      = : 자료의 정의

      + : 자료의 연결

     ( ) : 자료의 생략

     [ ] : 자료의 선택

    { } : 자료의 반복

    * * : 자료의 설명

요구사항 분석용 CASE(자동화 도구)

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

   1) SADT : 시스템 정의, 소프트웨어 요구사항 분석, 시스템/소프트웨어 설계를 위한 도구

   2) SREM = RSL/REVS : TRW 사가 실시간 처리 소프트웨어 시스템에서 요구사항을 명확히 기술하도록 할 목적으로 개발한 도구

   3) PSL/PSA : PSL PSA를 사용하는 자동화 도구

   4) TAGS : 시스템 공학 방법 응용에 대한 자동 접근 방법

 

HIPO(Hierarchy Input Process Output)

 - 시스템 실행 과정인 입력. 처리. 출력의.처리. 기능을 표현한 것

 

UML(Unified Modeling Language)

 - 시스템 개발 과정에서 시스템 개발자와 고객 또는 개발자 상호 간의 의사소통이 원활하게 이루어지도록 표준화한 대표적인 객체지향 모델링 언어

 

 1) UML의 구성 요소 : 사물(Things), 관계(Relationships), 다이어그램(Diagram)

 2) 관계 : 연관, 집합, 포함, 일반화, 의존, 실체화

  2-1) 연관 관계

    - 2개 이상의 사물이 서로 관련되어 있는 관계 (표시)

  2-2) 집합 관계

    - 하나의 사물이 다른 사물에 포함되어 있는 관계 (- 표시)

  2-3) 포함 관계

    - 포함하는 사물의 변화가 포함되는 사물에게 영향을 미치는 관계 (- 표시)

  2-4) 일반화 관계

    - 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계

    - 일반적인 개념을 상위(부모), 구체적인 개념을 하위(자식)라고 부른다.

 

  2-5) 의존 관계

    - 연관 관계와 같이 사물 사이에 서로 연관은 있으나 필요에 의해 서로에게 영향을 주는 짧은 시간 동안만 연관을 유지하는 관계 (---> 표시)

  2-6) 실체화 관계

    - 사물이 할 수 있거나 해야 하는 기능으로, 서로를 그룹화 할 수 있는 관계

  3) 다이어그램 : 사물과 관계를 도형으로 표현한 것

   3-1) 구조적 다이어그램

      클래스 다이어그램  - 클래스와 클래스가 가지는 속성, 클래스 사이의 관계를 표현함

                                      - 객체들을 클래스로 추상화하여 표현

                                      - 구성요소 : 클래스, 제약조건, 관계

      객체 다이어그램 : 인스턴스(Instance)를 특정 시점 의 객체와 객체 사이의 관계로 표현함

      컴포넌트 다이어그램 : 컴포넌트 간의 관계나 컴포넌트 간의 인터페이스를 표현함

      배치 다이어그램 : 물리적 요소들의 위치를 표현

      복합체 구조 다이어그램 : 복합구조인 경우 그 내부 구조를 표현

      패키지 다이어그램 - 패키지들의 관계 표현

                                     - 구성요소 : 패키지, 객체, 의존 관계

 

    3-2) 행위 다이어그램의 종류

      유스케이스 다이어그램 - 사용자의 요구 분석, 기능 모델링 작업에 사용

                                            - 구성요소 : 시스템/시스템 범위, 액터, 유스케이스, 관계

     시퀀스 다이어그램 - 상호 작용하는 시스템이나 객체들이 주고받는 메시지를 표현

                                    - 구성요소 : 액터, 객체, 생명선, 실행 상자, 메시지, 객체 소멸, 프레임

     커뮤니케이션 다이어그램 - 메시지와 객체들 간의 연관 관계를 표현

                                              - 구성요소 : 액터, 객체, 링크, 메시지

     상태 다이어그램 - 상태 변화 표현

                                - 구성요소 : 상태, 시작 상태, 종료 상태, 상태 전환, 이벤트, 프레임

     활동 다이어그램 - 객체의 처리 로직이나 처리의 흐름을 순서에 따라 표현

                                - 구성요소 : 액션/액티비티, 시작 노드, 종료 노드, 조건 노드, 병합 노드, 포크 노드, 조인 노드, 스윔레인

     상호작용 개요 다이어그램 : 상호작용 다이어그램 간의 제어 흐름 표현

     타이밍 다이어그램 : 객체 상태 변화와 시간 제약 명시적으로 표현

 

스테레오 타입 (Stereotype)

 - UML에서 표현하는 기본 기능 외에 추가적인 기능을 표현하는 것

 - <<include>> : 포함 관계 / <<extends>> : 확장 관계 / <<interface>> : 인터페이스

   <<exception>> : 예외 정의 / <<constructor>> : 생성자 역할

 

소프트웨어 개발 방법론

 - 소프트웨어 개발, 유지보수 등에 필요한 여러 가지 일들의 수행 방법과 이러한 일들을 효율적으로 수행하려는 과정에서   필요한 각종 기법 및 도구를 체계적으로 정리하여 표준화한 것

 - 목적 : 소프트웨어의 생산성, 품질 향상

 - 주요 소프트웨어 개발 방법론

   1) 구조적 방법론 : 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론

        절차 : 타당성 검토 계획 요구사항 설계 구현 시험 운용/유지보수

   2) 정보공학 방법론 : 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중심의 방법론

        절차 : 정보 전략 계획 수립 업무 영역 분석 업무 시스템 설계 업무 시스템 구축

 

   3) 객체지향 방법론 : 객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론

         구성 요소 : 객체, 클래스, 메시지

         기본 원칙 : 캡슐화, 정보 은닉, 추상화, 상속성, 다형성

         절차 : 요구 분석 설계 구현-테스트 및 검증 - 인도

   4) 컴포넌트 기반 방법론 : 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론

         절차 : 개발 준비-분석-설계-구현-테스트-전개-인도

   5) 제품 계열 방법론 : 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론

   6) 애자일 방법론

 

소프트웨어 재사용(Software Reuse)

 - 이미 개발되어 인정받은 소프트웨어를 다른 소프트웨어 개발이나 유지에 사용하는 것

 - 재사용 방법

   1) 합성 중심 : 블록을 만들어서 끼워 맞춰 소프트웨어를 완성시키는 방법

   2) 생성 중심 : 추상화 형태로 써진 명세를 구체화하여 프로그램을 만드는 방법

 

소프트웨어 재공학(Software Reengineering)

 - 기존 시스템을 이용하여 보다 나은 시스템을 구축하고, 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것

 - 이점 : 품질 향상, 생산성 증가, 수명 연장, 오류 감소

 

CASE(Computer Aided Software Engineering)

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

 - 자동화 도구

 - 주요 기능

   1) 소프트웨어 생명 주기 전 단계의 연결

   2) 다양한 소프트웨어 개발 모형 지원

   3) 그래픽 지원

 

소프트웨어 비용 산정

 - 개발에 소요되는 인원, 자원, 기간 등으로 소프트웨어의 규모를 확인하여 개발 계획 수립에 필요한 비용을 산정하는 것

 - 하향식 비용 산정 기법 / 상향식 비용 산정 기법

 

하향식 비용 산정 기법

 - 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법

   1) 전문가 감정 기법 : 경험이 많은 두 명 이상의 전문가에게 비용 산정을 의뢰

   2) 델파이 기법 : 많은 전문가의 의견을 종합하여 산정

 

상향식 비용 산정 기법

 - 프로젝트의 세부적인 작업 단위별로 비용을 산정한 후 집계하여 전체 비용을 산정

   1) LOC(원시 코드 라인 수) 기법 : 각 기능의 원시 코드 라인수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 기법

   2) 개발 단계별 인월수 기법 : 기능을 구현시키는 데 필요한 노력을 생명 주기의 각 단계별로 산정

   3) 수학적 산정 기법

      3-1) COCOMO 모형

      3-2) Putnam 모형

      3-3) 기능 점수(FP) 모형

 

COCOMO 모형

 - LOC(원시 코드 라인 수)에 의한 비용 산정 기법

 - LOC를 예측 후 이를 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 방정식에 대입하여 비용을 산정

 - 개발 유형

   1) 조직형(Organic) : .소 규모의 소프트웨어/5만 라인 이하

   2) 반분리형(Semi-Detached) : 30만 라인 이하

   3) 내장형(Embedded Mode) : 초대형 규모 / 30만 라인 이상

 - 종류

   1) 기본형(Basic)

   2) 중간형(Intermediate)

   3) 발전형(Detailed)

 

Putnam 모형

 - 소프트웨어 생명 주기의 전 과정 동안에 사용될 노력의 분포를 예상하는 모형

 

기능 점수(FP;Function Point) 모형

 - 소프트웨어의 기능을 증대시키는 요인별로 기능 점수를 구한 후 비용을 산정하는 기법

 - 기능 증대 요인

   1) 자료 입력(입력 양식)

   2) 정보 출력(출력 보고서)

   3) 명령어(사용자 질의수)

   4) 데이터 파일

   5) 필요한 외부 루틴과의 인터페이스

 

비용 산정 자동화 추정 도구

 - SLIM : Rayleigh-Norden 곡선, Putnam 예측 모델 기초

 - ESTIMACS : FP 모형 기초

 

프로젝트 일정 계획

 1) PERT(프로그램 평가 및 검토 기술) : 전체 작업의 상호 관계를 표시하는 네트워크

 2) CPM(임계 경로 기법) : 작업을 나열하고 작업에 필요한 소요 기간을 예측하는 데 사용하는 기법

 3) 간트 차트 : 작업 일정을 막대 도표를 이용하여 표시하는 프로젝트 일정표

 

소프트웨어 개발 표준

 1) ISO/IEC 12207

   - 기본 생명 주기 프로세스, 지원 생명 주기 프로세스, 조직 생명 주기 프로세스

 2) CMMI (능력 성숙도 통합 모델)

   - 초기-관리-정의-정량적 관리-최적화

 3) SPICE(소프트웨어 처리 개선 및 능력 평가 기준)

   -불완전-수행-관리-확립-예측-최적화

반응형