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

HaYeong Jang·2021년 6월 24일
0

정보처리기사

목록 보기
1/7
post-thumbnail

01 소프트웨어 개발방법론

1. 소프트웨어 개발방법론 ⭐️⭐️⭐️

소프트웨어 생명주기(SDLC): 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차

소프트웨어 생명주기 프로세스

  1. 요구사항 분석 (기능/비기능 요구사항)
  2. 설계 (시스템 구조 설계, 프로그램 설계, 사용자 인터페이스 설계)
  3. 구현 (인터페이스 개발, 자료 구조 개발, 오류 처리)
  4. 테스트 (단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트)
  5. 유지보수 (예방, 완전, 교정, 적응 유지보수)

소프트웨어 생명주기 모델 종류

  • 폭포수 모델
  • 프로토타이핑 모델
  • 나선형 모델: 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가
  • 반복적 모델: 병행 개발

소프트웨어 개발방법론: 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법

소프트웨어 개발방법론 종류

  • 구조적 방법론: 분할과 정복, 나씨-슈나이더만(Nassi-Shneiderman) 차트 사용
  • 정보공학 방법론
  • 객체지향 방법론
  • 컴포넌트 기반 방법론
  • 애자일 방법론: 사람 중심
  • 제품 계열 방법론: 영역/응용 공학

애자일 방법론: 절차보다는 사람 중심, 신속 적응적 경량 개발방법론

애자일 방법론 유형

XP: 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론

  • 5가지 가치: 용기, 단순성, 의사소통, 피드백, 존중
  • 12가지 기본원리
    • 짝 프로그래밍
    • 공동 코드 소유
    • 지속적인 통합
    • 계획 세우기
    • 작은 릴리즈
    • 메타포어
    • 간단한 디자인
    • 테스트 기반 개발
    • 리팩토링
    • 40시간 작업
    • 고객 상주
    • 코드 표준

스크럼: 팀을 위한 프로젝트 관리 중심 방법론

  • 백로그: 제품과 프로젝트에 대한 요구사항
  • 스프린트: 2~4주의 짧은 개발 기간
  • 스크럼 미팅: 매일 15분 정도 미팅 (데일리 미팅)
  • 스크럼 마스터: 프로젝트 리더
  • 스프린트 회고: 스프린트 주기를 되돌아봄
  • 번 다운 차트: 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트

: 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용

  • 7가지 원칙: 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화

2. 비용산정, 일정관리 모형 ⭐️⭐️⭐️

비용산정 모형: 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식

비용산정 모형 분류

  • 하향식 산정방법: 전문가 판단, 델파이 기법
  • 상향식 산정방법: 코드 라인 수(Loc), Man Month, COCOMO 모형, 푸트남 모형, 기능점수(FP) 모형

비용산정 모형 종류

Loc: 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고 비용을 산정하는 방식
Man Month: 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식

  • Man Month = Loc(라인) / 프로그래머의 월간 생산성(라인)
  • 프로젝트 기간 = Man Month / 프로젝트 인력(명)

COCOMO: 보헴이 제안, Man-Month로 산정

  • 조직형: 5만 라인 이하
  • 반 분리형: 30만 라인 이하
  • 임베디드형: 30만 라인 이상

푸트남: 소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식, Rayleigh-Norden 곡선의 노력 분포도

기능점수(FP): 요구 기능을 증가시키는 인자별로 가중치 부여

  • FP = 총 기능점수 [0.65 + (0.1 총 영향도)]

일정관리 모델: 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델

일정관리 모델 종류

  • 주 공정법(CPM): 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법
  • PERT: 비관치, 중간치, 낙관치의 3점 추정방식을 통해 일정을 관리하는 기법
  • 중요 연쇄 프로젝트 관리(CCPM): 자원제약사항을 고려하여 일정을 작성하는 기법


02 현행 시스템 분석

1. 현행 시스템 파악 ⭐️⭐️⭐️

현행 시스템 파악: 사용하고 있는 소프트웨어, 하드웨어, 네트워크의 구성 파악

현행 시스템 파악 절차

  1. 구성/기능/인터페이스 파악
  2. 아키텍처 및 소프트웨어 구성 파악
  3. 하드웨어 및 네트워크 구성 파악

소프트웨어 아키텍처: 여러가지 소프트웨어 구성요소 간의 관계를 표현하는 시스템의 구조나 구조체

소프트웨어 아키텍처 4+1 뷰: 4개의 아키텍처 개념을 제시하고, 요구사항 체크 방법으로 유스케이스 사용

  • 유스케이스 뷰: 다른 뷰를 검증하는 데 사용되는 뷰 (사용자, 설계자, 개발자, 테스트 관점)
  • 논리 뷰: 기능적인 요구사항 (설계자, 개발자 관점)
  • 프로세스 뷰: 비기능적인 요구사항 (개발자, 시스템 통합자 관점)
  • 구현 뷰: 컴포넌트 구조와 의존성을 보여줌
  • 배포 뷰: 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여줌

소프트웨어 아키텍처 패턴: 소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식

소프트웨어 아키텍처 패턴 유형

  • 계층화 패턴: 시스템을 계층으로 구분하여 구성
  • 클라이언트-서버 패턴: 하나의 서버와 다수의 클라이언트로 구성
  • 파이프-필터 패턴: 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능
  • 브로커 패턴: 분산 시스템에서 사용
  • 모델-뷰-컨트롤러 패턴: 대화형 애플리케이션

소프트웨어 아키텍처 비용 평가 모델: 아키텍처의 적합성을 평가하는 모델

소프트웨어 아키텍처 비용 평가 모델 종류

  • SAAM: 변경 용이성과 기능성에 집중
  • ATAM: 품질 속성들의 이해 상충관계까지 평가
  • CBAM: ATAM 바탕, 경제적 의사결정에 대한 요구 충족
  • ADR: 응집도 평가
  • ARID: 특정 부분에 대한 품질요소에 집중

디자인 패턴: 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴

디자인 패턴 유형

  • 목적: 생성, 구조, 행위
  • 범위: 클래스, 객체

디자인 패턴 종류

생성

  • Builder: 복잡한 인스턴스를 조립하여 만드는 구조
  • Prototype: 일반적인 원형을 만들어 놓고, 그것을 복사한 후 필요한 부분만 수정하여 사용
  • Factory Method: 상위 클래스에서 객체를 생성하는 인터페이스 정의, 하위 클래스에서 인스턴스 생성
  • Abstract Factory: 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공
  • Singleton: 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 함
    구조
  • Bridge: 기능의 클래스 계층과 구현의 클래스 계층을 연결
  • Decorator: 기존에 구현되어 있는 클래스에 필요한 기능을 추가
  • Facade: 복잡한 시스템에 대하여 단순한 인터페이스 제공
  • Flyweight: 모두가 갖는 본질적인 요소를 클래스 화하여 공유 -> ’클래스의 경량화’
  • Proxy: ‘실체 객체에 대한 대리 객체’
  • Composite: 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현
  • Adapter: 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만듦

행위

  • Mediator: 중재자에게 모든 것을 요구하여 통신의 빈도수를 줄여 객체지향의 목표를 달성하게 해줌
  • Interpreter: 여러 형태의 언어 구문을 해석할 수 있게 만듦
  • Iterator: 집합체 안에 들어있는 모든 항목에 접근할 방법 제공
  • Template Method: 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꿈
  • Observer: 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 감 -> 자동으로 내용 갱신
  • State: 객체 상태를 캡슐화하여 클래스화
  • Visitor: 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업 수행
  • Command: 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행됨
  • Strategy: 알고리즘 군을 정의하고 같은 알고리즘을 하나의 클래스로 캡슐화
  • Memento: Undo 기능을 개발할 때 사용
  • Chain of Responsibility: 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결함

2. 개발 기술 환경 정의 ⭐️⭐️⭐️

운영체제: 컴퓨터 사용자와 하드웨어 간의 인터페이스를 담당하는 프로그램 (소프트웨어)

운영체제 현행 시스템 분석 시 고려 사항

  • 품질 측면: 신뢰도, 성능
  • 지원 측면: 기술 지원, 주변 기기, 구축 비용

운영체제 종류 및 특징

  • PC: Windows, UNIX, Linux
  • 모바일: Android, iOS

네트워크: 컴퓨터 장치들의 노드 간 연결을 사용하여 서로에게 데이터를 교환할 수 있도록 하는 기술

OSI 7계층: 물리, 데이터 링크, 네트워크, 전송, 세션, 표현, 응용

DBMS: 데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능들을 제공하는 응용 프로그램

DBMS 현행 시스템 분석 시 고려 사항

  • 성능 측면: 가용성, 성능, 상호 호환성
  • 지원 측면: 기술 지원, 구축 비용

미들웨어: 운영체제와 소프트웨어 애플리케이션 사이에 위치

미들웨어 현행 시스템 분석 시 고려 사항

  • 성능 측면: 가용성, 성능
  • 지원 측면: 기술 지원, 구축 비용


03 요구사항 확인

1. 요구사항 ⭐️⭐️⭐️

요구공학: 사용자 요구사항에 대한 도출, 분석, 명세, 확인 및 검증하는 구조화된 활동

요구사항의 분류

  • 기능적 요구사항: 기능성, 완전성, 일관성
  • 비기능적 요구사항: 신뢰성, 사용성, 효율성, 유지보수성, 이식성, 보안성 및 품질 관련 요구사항, 제약사항

요구사항 개발 프로세스

  1. 요구사항 도출(Elicitation): 소프트웨어가 해결해야 할 문제 이해, 수집된 요구사항 구체적으로 표현
  2. 요구사항 분석(Analysis): 도출된 요구사항에 대해 충돌, 중복, 누락 등 분석
  3. 요구사항 명세(Specification): 체계적으로 검토, 평가, 승인될 수 있는 문서를 작성
  4. 요구사항 확인 및 검증(Validation & Verification): 요구사항을 이해했는지 확인, 완전한지 검증

요구사항 도출 단계 기법

  • 인터뷰
  • 브레인스토밍
  • 델파이 기법
  • 롤 플레잉
  • 워크숍
  • 설문 조사

요구사항 분석 단계 기법

  • 자료 흐름 지향 분석
  • 객체지향 분석

요구사항 명세 단계 기법

  • 비정형 명세 기법: 자연어 기반으로 서술
  • 정형 명세 기법: 수학적인 원리와 표기법으로 서술

요구사항 확인 및 검증 단계 기법

  • 요구사항 검토
  • 정형 기술 검토 활용
    • 동료 검토: 요구사항 명세서 작성자가 요구사항 명세서를 설명하고 이해관계자들이 설명을 들으면서 결함을 발견하는 형태
    • 워크 스루: 검토 자료를 회의 전에 배포해서 사전검토한 후 짧은 시간 동안 회의를 진행하는 형태
    • 인스펙션: 저작자 외의 다른 전문가 또는 팀이 검사하여 오류를 찾아내는 공식적 검토 방법
  • 프로토타이핑 활용
  • 모델 검증
  • 테스트 케이스 및 테스트를 통한 확인
  • CASE 도구 활용 검증
  • 베이스라인을 통한 검증
  • 요구사항 추적표(RTM)를 통한 검증

상세 정형 기술 검토 기법

  • 관리 리뷰
  • 기술 리뷰
  • 인스펙션 (동료 검토라고도 함)
  • 워크 스루
  • 감사

요구사항 관리: 프로젝트 진행 과정에서 발생하는 요구사항의 변경에 대해 일치성과 무결성을 제공하기 위해 일련의 관리를 수행하는 활동

요구사항 관리 단계 절차

  1. 요구사항 협상
  2. 요구사항 기준선 설정
  3. 요구사항 변경관리
  4. 요구사항 확인 및 검증

2. 요구사항의 시스템화 타당성 분석 ⭐️



04 분석 모델 확인하기

1. 분석 모델 검증 ⭐️

2. 분석 모델의 시스템화 타당성 분석 ⭐️

profile
기억하기 위해 기록하는 개발로그👣

0개의 댓글