[정처기]소프트웨어 개발 방법론(1)

김은지·2022년 5월 2일
0

학습 내용 정리

목록 보기
20/25

작년 9월, 아무것도 모르는 상태로 정보처리기사 필기 자격증을 따고,
올 해 약 7월 말 쯤 치뤄질 실기시험을 준비하기로 했다.

시험 자체가 개발자가 되는 것에 도움이 된다 안된다 말은 많지만
암기력만 기른 것 같았던 필기 시험도 지나고보니 다양한 개념을 그래도 들어보게는 해주었다.
그래서 효율 따지지 않고 공부를 시작하기로 했다.
시험 합격과 학습 그 자체를 목표로 해서 학습학습~~!


요구사항확인

  1. 소프트웨어 개발 방법론
    (1) 소프트웨어 생명주기 모델 : 시스템의 요구분석에서 뷰지보수까지 전 공정을 체계화한 절차(SDLC : Software Development Life Cycle)
    (2) 소프트웨어 생명주기 모델 프로세스 :

    요구사항 분석 : 기능, 제약조건, 목표 등을 사용자와 함께 명확히 정의함(기능/비기능적 요구사항)
    설계 : 시스템구조, 프로그램, 사용자 인터페이스등의 설계
    구현
    구현 : 프로그래밍 언어로 실제 프로그램 구현하는 단계
    테스트 : 시스템이 실제 정해진 요구를 만족하는지 확인하는 단계(단위테스트, 통합테스트 등등)
    유지보수 : 시스템이 인수, 설치 된 후 일어나는 모든 활동

    (3) 소프트웨어 생명주기 모델 종류 : 폭프나반

    폭포수 모델 : 요구사항 변경이 어려움
    프로토타이핑 모델 : 주요기능을 프로토타입의 구현 - 프로토타입 폐기에 따른 비용 증가
    나선형 모델 : 위험분석과 개발의 반복 - 변경에 유연한 대처, 관리가 어려움
    반복적 모델 : 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증완성시키는 모델

    ** 나선형모델 절차 : 계획 및 정의 / 위험분석 / 개발 / 고객평가

  2. 소프트웨어 개발 방법론
    (1) 정의 : 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법으로 개발의 시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 것.
    (2) 소프트웨어 개발 방법론 종류 :

    구조적 방법론 : 전체 시스템의 기능에 따라 나누어 개발하고 이를 통합하는 분할/정복 접근방식의 방법론, 프로세스 중심의 하향식 방법론

    나씨-슈나이더만 차트 : 구조적 프로그래밍의 표현을 위해 사용함

    정보공학 방법론 : 정보시스템 개발에 필요한 관리 절차/작업 기법을 체계화한 방법론(DB흐름 등), 개발주기를 이용해 대형 프로젝트 수행하는 체계적인 방법론

    객체지향 방법론 : 객체라는 기본 단ㄴ위로 시스템 분석 및 설계(객체, 클래스, 메시지 등 사용)

    컴포넌트 기반 방법론 : 컴포넌트(원하는 DB와 SW의 개발된 모듈 단위)를 조립해서 하나의 새로운 응용프로그램 개발, 확장성 및 생산성 향상, 재사용 가능

    애자일 방법론** : 절차보다는 사람 중심, 변화에 유연

    제품 계열 방법론 : 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발, 영역공학(핵심자산구현)과 응용공학(제품구현)으로 구분

(3)애자일 방법론

  • 개념 : 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적 개발이 가능하도록 하는 경량 개발방법론

  • 특징 : 개발기간이 짧고, 신속 - 폭포수 모형과 대비되어 유동적 개발 가능

    애자일 방법론의 유형 : XP, Lean, SCRUM

    XP(eXtream Programing)
    특징 :
    1. 1-3주의 반복(iteration)개발주기

    1. 5개 가치 : 피존용단소
      • 의사소통(Communication)
      • 단순성(Simplicity)
      • 용기(Courage)
      • 피드백(Feedback)
      • 존중(Respect)
    2. 12개 실천항목(중 주요 6가지) : 짝테전디소계
    • Pair Programming(짝 프로그래밍): 다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경
    • Test-Driven Development(테스트 주도 개발): 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야할지 정확히 파악, 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구 사용
    • Whole Team(전체 팀): 개발에 참여하는 모든 구성원들은 각자 자신의 역할이 있고 책임을 가져야 함
    • Desgin Improvement(디자인 개선) 또는 Refactoring(리팩터링): 프로그램 기능의 변경 없이, 단순화, 유연성 강화 등을 통해 시스템을 재구성
    • Small Releases(소규모 릴리즈): 릴리즈 기간을 짧게 반복함으로써 고객의 요구 변화에 신속히 대응
    • Continuous Integration(CI/지속적인 통합): 모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리 될 때마다 지속적으로 통합

SCRUM : 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리중심 방법론

  • 백로그 : 제품과 프로젝트에 대한 요구사항
  • 스프린트 : 2-4주의 짧은 개발기간의 반복적 수행으로 개발품질 향상
  • 스크럼 미팅 : 매일 15분 정도 미팅으로 To-Do-List 계획수립
  • 스크럼 마스터 : 프로젝트 리더
  • 스프린트 회고 : 스프린트 주기를 되돌아보며 회고
  • 번다운 차트 : 남아있는 백로그 대비시간을 그래픽적으로 표현한 차트

Lean : 낭비요소를 제거하여 품질을 향상시킨 방법론

  • JIT(Just In Time), 칸반보드 사용
  • 7가지 원칙 : 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화

0개의 댓글