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

팔랑이·2023년 6월 19일
0

정보처리기사

목록 보기
1/20
post-thumbnail

1과목 1장 _ 요구사항 확인

1. 소프트웨어 생명주기 (⭐️⭐️⭐️⭐️)

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

1) 현대적 프로그래밍 기술 계속적으로 적용
2) 품질이 유지되도록 지속적 검증
3) 개발 관련 사항 및 결과에 대한 명확한 기록 유지

소프트웨어 생명주기

: 소프트웨어 개발 방법론의 바탕이 되는것으로, 소프트웨어 개발을 위해 정의, 운용, 유지보수 등의 과정을 단계별로 나눈것

1) 폭포수 모형 (Waterfall Model)

  • 이전단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 철저하게 검토하여 다음단계 진행 (선형 순차적 모델)
  • 가장 오래되고 폭넓게 사용된 전통적 모델이라 고전적 생명주기 모형이라고도 함
  • 이를 적용한 경험과 성공사례가 많음
  • 제품의 일부가 될 매뉴얼을 작성해야 함
  • 각 단계가 끝난 후에는 다음단계 수행을 위한 결과물이 명확하게 산출되어야 함
  • 두 개 이상의 과정이 병행하여 수행되지 않음

    타당성 검토 -> 계획 -> 요구분석 -> 설계 -> 구현(코딩) -> 시험(검사) -> 유지보수

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

  • 사용자의 요구사항 명확한 파악 위해 프로토타입 만들어 최종결과물 예측
  • 사용자-시스템 사이의 인터페이스에 중점 두어 개발
  • 개발이 완료된 시접에서 오류가 발견되는 폭포수모형의 단점 보완

    요구수집->빠른설계->프로토타입구축->고객평가->조정->구현->요구수집->...

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

  • 보헴이 제안, waterfall과 prototype의 장점에 위험분석기능 추가한 모델
  • 나선을 따라 돌듯이 여러번의 개발과정을 거쳐 점진적으로 완벽한 최종 소프트웨어 개발
  • 개발하며 발생할 수 있는 위험 관리 및 최소화가 목적
  • 개발과정이 점진적으로 반복되므로 누락/추가된 요청사항 첨가 가능, 유지보수 과정 따로 필요 X

    계획 -> (위험)분석 -> 개발 -> 평가 반복!

4) 애자일 모형 (Agile Model)

  • 고객의 요구사항에 민첩하고 유연하게 대응할 수 있도록 일정 주기 반복하며 개발 진행
  • 좋은 것을 빠르고 낭비없게 만들기 위해 고객과의 소통에 초점 맞춘 방법론을 통칭
  • 기업활동 전반에 걸쳐 사용
  • Sprint 또는 Iteration이라 불리는 짧은 개발주기 반복, 반복되는 주기마다 개발되는 결과물에 대한 고객의 요구 적극수용
  • 고객이 요구사항에 우선순위 부여하여 개발 진행
  • 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합

애자일 개발 핵심가치 4가지
1. 프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다
2. 방대한 문서보다는 실행되는 SW에 더 가치를 둔다
3. 계약 협상보다는 고객과의 협업에 더 가치를 둔다
4. 계획을 따르기보다는 변화에 반응하는것에 더 가치를 둔다

✓ 폭포수 모형과 애자일을 비교하여 공부하기


2. 스크럼(Scrum) 기법 (⭐️⭐️⭐️)

스크럼 개요

  • 팀 중심이 되어 개발의 효율성 높이는 기법
  • 팀원 스스로가 팀을 구성(self-organizing), 개발작업에 관한 것을 스스로 해결 (cross-functional)
  • 제품 책임자(PO), 스크럼 마스터(SM), 개발팀(DT)로 구성됨

1) 제품 책임자 (Product Owner)

  • 개발 제품에 대한 이해도가 높고, 요구사항을 책임지고 의사 결정할 사람(주로 개발 의뢰자나 사용자)
  • 이해관계자들의 의견 종합하여 제품에 대한 요구사항 작성
  • 요구사항 담긴 백로그(요구사항 우선순위 목록) 작성 및 우선순위 지정

2) 스크럼 마스터 (Scrum Master)

  • 객관적 시각에서 조언하는 가이드, 통제하는역할은 아님
  • 일일 스크럼 회의 주관하여 진행상황 점검, 개발과정 발생한 장애요소 공론화

3) 개발팀 (Development Team)

  • PO, SM 제외한 모든 팀원으로, 개발자 외에도 테스터 디자이너 등 개발과정에 참여하는 모든사람
  • 보통 7-8명이 적당

스크럼 개발 프로세스

#1 제품 백로그: 개발 요구사항을 우선순위에 따라 나열, 지속적 업데이터, 백로그에 작성된 스토리 기반으로 릴리즈플랜 수립

#2 스프린트 계획 회의: 백로그 중 이번 스프린트에서 수행할 작업 대상으로 단기일정 수립, 스토리를 태스크(Task)라는 작업 단위로 분할 후 개발자별로 수행할 작업 목록인 스프린트 백로그 작성

#3 스프린트(Sprint): 실제 개발작업 진행하는 과정으로, 2-4주 소요(짧은 기간!!). Sprint Backlog 작성된 Task 대상으로 작업시간 추정하여 개발 담당자에게 할당, 개발자가 원하는 태스크를 직접 선별하도록 하는 것이 좋음. Task - To Do / In Progress / Done

#4 일일 스크럼 회의: 매일 약 15분정도 짧은 시간 진행상황 점검, 보통 서서 진행하며 남은 작업시간은 소멸차트(Burn-down Chart)에 표시. SM은 발생한 장애 해결 도움.

#5 스프린트 검토 회의: 부분 또는 전체완성제품이 요구사항에 부합하는지 사용자가 포함된 참석자 앞에서 테스트 진행, 한 주당 한 시간 내로 진행. PO는 피드백 정리 후 백로그 업데이트

#6 스프린트 회고: 주기 되돌아보며 규칙준수했는지, 개선점 없는지 등을 확인하며 해당 스프린트 끝나고 하거나 주기적으로 진행


3. XP (eXtreme Programming) 기법 (⭐️⭐️⭐️⭐️)

1) XP 개요

XP는 수시로 발생하는 고객의 요구사항에 유연한 대처 위해 고객의 참여-개발과정의 반복 극대화하여 개발생산성 향상시킴

  • 짧고 반복적인 개발주기, 단순설계, 고객의 적극참여 통해 빠르게 개발
  • 릴리즈기간 짧게 반복하며 요구사항에 관한 가시성 높임
  • 릴리즈 테스트마다 고객 참여시키며 확인
  • 비교적 소규모인원의 개발 플젝에 효과적

XP의 5가지 핵심가치: 의사소통, 단순성, 용기, 존중, 피드백
👉🏻 의사선생님 피존용기에 담(단)아주세요

2) XP 개발 프로세스

  • 사용자 스토리: 고객요구사항->간단한 시나리오 / 내용은 기능단위 구성, 필요한 경우 간단한 테스트사항 기재

  • 스파이크(Spike): 기술문제에 대한 위험 감소 위해 별도로 만드는 간단 프로그램 / 처리할 문제 외의 다른 조건 모두 무시

  • 이터레이션: 하나의 릴리즈를 더 세분화한 단위 / 일반적으로 1-3주 / 이 기간동안 새로운 스토리 작성 가능

  • 테스트 과정에서 발견한 오류는 다음 이터레이션에 포함, 테스트 완료시 다음 이터레이션 진행

XP의 주요 실천 방법 (영어로도 알아야 함)

#1 Pair Programming(짝 프로그래밍): 다른 사람과 함께 프로그래밍 수행함으로써 개발에 대한 책임 공동으로 나눠가짐

#2 Collective Ownership(공동 코드 소유): 개발 코드에 대한 권한과 책임 공동 소유

#3 Test-Driven Development(테스트 주도 개발): 실제 코드 작성 전 테스트케이스 먼저 작성하며 자신이 무엇을 해야 할지 파악/ 지속적 진행 위해 자동화된 테스팅 도구 사용

#4 Whole Team(전체 팀): 개발에 참여하는 모든 구성원(고객포함) 각자 자신의 역할 알고 책임 가져야 함

#5 Continuous Integration(계속적 통합): 모듈단위로 나눠서 개발된 코드 작업 마무리시 통합

#6 Small Relases(소규모 릴리즈): 릴리즈기간 짧게 반복 -> 고객요구변화 신속한 반응

#7 Design Improvement or Refactoring(디자인 개선 또는 리팩토링): 프로그램 기능의 변경 없이 단순화, 유연성 강화 등을 통한 시스템 재구성


참고 도서 📚
2022 시나공 정보처리기사 필기

profile
정체되지 않는 성장

0개의 댓글