정보처리기사 실기 - 요구사항 분석

둡둡·2023년 4월 6일

정보처리기사

목록 보기
1/12

요구사항 확인

  • 소프트웨어 생명 주기(Software Life Cycle)
    • 소프트웨어를 개발하기 위한 각 단계별 과정
    • 소프트웨어 개발 단계
      • 계획-분석-설계-구현-테스트-유지보수
  • 생명 주기 모형
    • 폭포수, 프로토타입, 나선형, 애자일 모형
  • 나선형 모형(Spiral Model)
    • 여러 번의 개발 과정을 거쳐 점진적으로 개발
    • 보헴(Bohem) 제안
    • 계획-분석-개발-평가
  • 애자일 모형
    • 유연한 대응, 소통, 상호작용, 협업, 변화
    • 스크럼, XP, 칸반, Lean, FD(기능 중심 개발)
    • 스크럼: 팀이 중심이 되어 효율성을 높이는 기법
      • 스프린트 계획 회의-스프린트-데일리 스크럼 회의-검토-회고
      • 제품 백로그, 소멸 차트, 스크럼 마스터
    • XP(eXtrem Programming): 짧고 반복적, 수시로 유연하게 대응
      • 5대 핵심 가치: 피드백, 존중, 용기, 단순성, 소통
      • 12가지 기본원리: 짝프로그래밍, 지속적인통합(CI), 메타포어, 테스트주도개발(Test Driven Develop) 등
  • 현행 시스템 파악
    • 시스템 구성, 기능, 인터페이스 > 아키텍처, 구성 > 하드웨어, 네트워크 구성 파악
  • 개발 기술 환경 파악
    • 운영체제(OS), 데이터베이스(DBMS), 미들웨어(WAS) 등 파악하여 고려

요구사항 정의

  • 요구사항 유형: 기능/비기능, 사용자, 시스템 요구사항
  • 기능 요구사항
    • 시스템이 무엇을 하고, 어떤 기능을 하는지 기능 및 수행 관련된 사항
    • 입력/출력, 데이터 저장/연산 등
  • 비기능 요구사항
    • 품질이나 제약사항 관련된 요구사항
    • 시스템 장비 구성, 성능, 인터페이스, 테스트, 보안, 품질 등
  • 요구사항 개발 프로세스
    • 요구사항 개발은 요구공학의 한 요소
      • 요구공학: 요구사항을 정의하고 분석 및 관리하는 프로세스 연구
    • 도출-분석-명세-확인
    • 도출 주요 기법
      • 청취, 인터뷰, 설문, 브레인스토밍, 프로토타이핑, 유스케이스 등
    • 분석 도구
      • 자료 흐름도(DFD), 자료 사전(DD), 개체 관계도(ERD), 상태 전이도(STD), 소단위 명세서(Mini-Spec)
      • 자료 흐름도(DFD): 프로세스(원형), 자료 흐름(화살표), 자료 저장소(두줄), 단말(사각형)
      • 자료 사전(DD): =, +, (생략), [or], {반복}, **
    • 명세: 정형/비정형 명세 기법
    • 확인: 형상 관리(SCM)

요구사항 분석

  • 요구사항 분석 도구
    • CASE(Computer Aided Software Engineering)
      • 요구사항 자동 분석 및 명세 자동화 도구
      • 상위 CASE
        • 계획수립, 요구분석, 기본 설계 단계를 다이어그램으로 표현
        • 모순 검사 및 오류, 일관성 검증
        • 자료 흐름도 프로토타이핑 작성 및 UI 설계 지원
      • 하위 CASE
        • 구문 중심 편집 및 정적/동적 테스트 지원
        • 시스템 명세서 및 소스 코드 생성 지원
    • HIPO(Hierarchy Input Process Output)
      • 시스템 입/출력, 처리 기능을 표현하는 하향식 문서화 도구
      • 가시적 도표: 시스템의 전체적인 기능과 흐름을 보여주는 계층 구조도
      • 총체적 도표: 프로그램을 구성하는 기능을 기술, 입력/처리/출력에 대한 전반적인 정보
      • 세부적 도표: 총체적 도표에 표시된 기능을 구성하는 기본 요소들을 상세히 기술
  • UML(Unified Modeling Language)
    • 시스템 개발 과정에서 의사소통이 원활하게 이루어지도록 표준화한 객체지향 모델링 언어
    • 구성 요소
      • 사물(Things), 관계(Relationships), 다이어그램(Diagram)
    • 럼바우(Rumbaugh) 모델
      • 객체 다이어그램 > 동적 상태 > 기능(DFD) 모델링
  • 사물(Things)
    • 다이어그램 안에서 관계가 형성될 수 있는 대상들
    • 구조 사물: 시스템의 개념적, 물리적 요소를 표현(클래스, 유스케이스, 컴포넌트, 노드 등)
    • 행동 사물: 시간과 공간에 따른 요소들의 행위를 표현(상호작용, 상태 머신 등)
    • 그룹 사물: 요소들을 그룹으로 묶어서 표현(패키지)
    • 주해 사물: 부가적인 설명이나 제약 조건 등을 표현(노트)
  • 관계(Relationship)
    • 사물과 사물 사이의 연관성 표현
    • 연관 관계(Association) : 실선 화살표, 서로 관련된 관계
    • 집합 관계(Aggregation) : 빈 마름모, 하나의 사물이 다른 사물에 포함되는 관계
    • 복합/포함 관계(Composition) : 채워진 마름모, 집합의 특수한 형태로 서로 영향을 미치는 관계
    • 일반화/상속 관계(Generalization) : 빈 화살표, 더 일반적이거나 구체적인 관계
    • 의존 관계(Dependency) : 점선 화살표, 짧은 시간 동안만 연관을 유지하는 관계
    • 실체화 관계(Realization) : 빈 점선 화살표, 할 수 있거나 해야할 기능으로 그룹화 관계
  • 다이어그램(Diagram)
    • 사물과 관계를 도형으로 표현
    • 정적(구조적 다이어그램)
      • 클래스: 클래스와 클래스의 속성, 클래스 사이의 관계를 표현
      • 객체(객체와 객체 사이 관계), 컴포넌트, 배치(종속성, 위치표현), 패키지(폴더,점선)
    • 동적(행위 다이어그램)
      • 유스케이스: 개발될 기능을 사용자의 관점에서 표현
      • 활동: 시스템이 수행하는 기능을 처리 흐름에 따라 순서대로 표현
      • 시퀀스: 상태 변화 과정과 발생하는 상호작용 메시지 표현
      • 커뮤니케이션: 시퀀스 + 상호 작용하는 과정과 객체들 간의 연관 표현
      • 상태: 객체들 사이에 발생하는 이벤트에 의한 상태 변화

소프트웨어 개발 방법론

  • 소프트웨어 개발, 유지보수 등에 필요한 여러 가지 수행 방법
  • 주요 개발 방법론
    • 구조적, 정보공학, 객체지향, 컴포넌트, 애자일방법론 등
  • 구조적 방법론
    • 정형화 된 분석 절차, 문서화
    • 분할과 정복(Divide and Conquer)
  • 정보공학 방법론
    • 정형화된 기법들을 통합 및 적용하는 자료 중심 방법론
  • 객체지향 방법론
    • 개체(Entity)를 하나의 객체(Object)로 만들어 조립하여 구현하는 방법론
    • 구성 요소: 객체, 클래스, 메시지
    • 기본 원칙: 캡슐화, 정보 은닉, 추상화, 상속성, 다형성
  • 컴포넌트 기반 방법론(CBD)
    • 기존의 컴포넌트를 조합하여 만드는 방법론
    • 재사용을 통한 효율성, 확장성, 품질 향상

소프트웨어 3R

  • 재사용(Reuse)
    • 합성 중심, 생성 중심
  • 재공학(Reengineering)
    • 기존 시스템을 재설계 및 보수하여 성능 향상
  • 역공학(Reserve)
    • 기존 시스템 및 소프트웨어를 분석하여 개발을 반대로 수행하는 것

소프트웨어 비용 산정

  • 비용 산정 기법
    • 하향식 / 상향식
    • 시스템 크기가 크고 기간이 짧고 신뢰도가 높을수록 많이 들고, 후기로 갈수록 적게 든다
  • 하향식 비용 산정 기법
    • 전문가 감정 기법, 델파이 기법
  • 상향식 비용 산정 기법
    • LoC(Lines of Code, 원시 코드 라인 수) 기법
      • 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치 측정하여 예측치, 비용 산정
    • COCOMO 모형(COnstructive COst MOdel)
      • 프로그램 규모(LOC)를 예측하여 소프트웨어 종류에 따라 비용 산정
      • 조직형(Organic): 5만 이하, 소규모 소프트웨어 과학기술 계산용
      • 반분리형(Semi-Detached): 30만 이하, 중간형 소프트웨어
      • 임베디드형(Embedded): 30만 이상, 초대형 규모의 소프트웨어
    • 푸트남(Putnam) 모형
      • 소프트웨어 생명 주기의 단계별로 사용될 인력의 분포도 가정
      • 생명 주기 예측 모델
      • Rayleigh-Norden 곡선의 노력 분포도
    • 기능점수(FP, Function Point)
      • 소프트웨어 기능을 증대시키는 요인별로 가중치 부여하여 기능 점수 산출
      • 알브레히트(Albrecht) 제안
  • 비용 산정 자동화 추정 도구
    • SLIM, ESTIMACS

프로젝트 일정 계획

  • 주 공정법 (CPM, Critical Path Method)
    • 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 액티비티 표기법
    • 임계 경로 기법
  • PERT(Program Evaluation and Review Technique)
    • 프로그램 평가 및 검토 기술
    • 프로젝트에 필요한 전체 작업의 상호 관계 표시
    • 노드와 간선으로 구성, 낙관치/기대치/비관치 표시
  • 중요 연쇄 프로젝트 관리(CCPM)
    • 주 공정 연쇄법으로 자원제약사항을 고려하여 일정 관리
  • 간트 차트
    • 프로그램의 각 작업들이 언제 시작하고 종료되는 지에 대한 작업 일정표
    • 시간선 차트

소프트웨어 개발 표준

  • ISO/IEC 12207
    • ISO(국제표준화기구)에서 만든 표준 소프트웨어 생명주기 프로세스
    • 기본 생명 주기, 지원 생명 주기, 조직 생명 주기 프로세스
  • CMMI(Capability Maturity Model Intergration)
    • 소프트웨어 개발 조직의 업무 능력 및 성숙도를 평가하는 모델
  • SPICE

소프트웨어 개발 프레임워크

  • 소프트웨어 개발 프레임워크 특성
    • 모듈화
    • 재사용성
    • 확장성: 다형성을 통한 인터페이스 확장 가능
    • 제어의 역흐름: 객체들의 제어를 프레임워크에 넘겨 생산성 향상
profile
괴발개발라이프

0개의 댓글