소프트웨어 개발방법론

BaeBae·2022년 3월 6일
0

정보처리기사

목록 보기
1/21
post-thumbnail

< 소프트웨어 생명주기 모델 >

  • 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
  • 시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화한 것


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

① 폭포수 모델 : 고전적 생명주기 모델, 요구사항 변경 어려움
② 프로토타이핑 모델 : 고객 요구 주요 기능 프로토타입으로 구현, 피드백 반영 -> 소프트웨어 개발
③ 나선형 모델 : 계획 및 정의 -> 위험분석 -> 개발 -> 고객 평가
④ 반복적 모델 : 병렬적으로 개발 후 통합 or 반복적으로 개발하여 점증 완성


< 애자일>

  • 애자일 방법론은 절차보다 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론이다

< 애자일 방법론의 유형>

1. XP(eXtrme Programming)

  • 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
  • 1~3주의 반복(Iteration) 개발주기를 가짐

1.1. 5가지 가치
① 용기(Courage): 용기를 가지고 자신감 있게 개발
② 단순성(Simplicity): 필요한 것만 하고 그 이상의 것들은 하지 않음
③ 의사소통(Communication): 개발자, 관리자, 고객 간의 원활한 소통
④ 피드백(Feedback): 의사소통에 대한 빠른 피드백
⑤ 존중(Respect): 탐원 간의 상호 존중

1.2. 12가지 기본원리
① 짝 프로그래밍(Pair Programming): 개발자 둘이서 짝으로 코딩하는 원리
② 공동 코드 소유(Collective Ownership): 시스템에 있는 코드는 누구든지 언제라도 수정가능하다는 원리
③ 지속적인 통합(CI; Continuous Integration): 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리
④ 계획 세우기(Plannning Process): 고객이 요구하는 비즈니스 가치를 정의하고, 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는지를 알려 주어야 한다는 원리
⑤ 작은 릴리즈(Small Release): 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다는 원리
⑥ 메타포어(Metaphor): 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 한다는 원리
⑦ 간단한 디자인(Simple Design): 현재의 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리
⑧ 테스트 기반 개발(TDD; Test Driven Develop): 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리
⑨ 리팩토링(Refactoring): 프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템을 재구성한다는 원리
⑩ 40시간 작업(40-Hour Work): 개발자가 피곤으로 인해 실수하지 않도록 일주일에 40시간 이상을 일하지 말아야 한다는 원리
⑪ 고객 상주(On Site Customer): 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 포로젝트에 풀타임으로 상주시켜야 하다는 원리
⑫ 코드 표준(Coding Standard): 효과적인 공동 작업을 위해서는 모든 코드에 대한 코딩 표준을 정의해햐 한다는 원리


2. 스크럼(Scrum)

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

2.1. 주요개념
① 백로그(Backlog): 제품과 프로젝트에 대한 요구사항
② 스프린트(Sprint): 2~4주의 짧은 개발 기간으로 방복적 수행으로 개발품질 향상
③ 스크럼 미팅(Scrum Meeting): 매일 15분 정도 미팅으로 To-Do List 계획 수립, 데일리 미팅이라고도 함
④ 스크럼 마스터(Scrum Master): 프로젝트 리더, 스크럼 수행 시 문제를 인지 및 해결하는 사람
⑤ 스프린트 회고(Sprint Retrospective): 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등을 확인 및 기록
⑥ 번 다운 차트(Burn Down Chart): 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트, 백로그는 보통 수직축에 위치하며 시간은 수평축에 위치


3. 린(LEAN)

  • 도요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
  • JIT(Just In Time), 칸반(Kanban) 보드 사용
  • 7가지 원칙: 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화


< 비용산정 모델 분류 >

1. 하향식

  • 경험이 많은 전문가에게 비용산정 의뢰 or 여러 전문간와 조정자를 통해 산정
  • 전문가 판단
  • 델파이 기법(Delphi Method): 전문가의 경험적 지식을 통한 문제 해결 및 미래예측을 위한 기법, 전문가 합의법이라고도 함

2. 상향식

  • 세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식
  • 코드 라인 수(Loc)
  • Man Month
  • COCOMO 모형
  • 푸트남 모형
  • 기능점수(FP) 모형


< 비용산정 모형 종류>

1. LoC(Lines of Code) 모형

  • 예측치 = 비관치 + 4*중간치 + 낙관치 / 6
  • 비관치: 가장 많이 측정된 코드 라인 수
  • 중간치: 측정된 모든 코드 라인 수의 평균
  • 낙관치: 가장 적게 측정된 코드 라인 수

2. Man Month 모형

  • 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용 산정
  • Man Month = LoC / 프로그래머의 월간 생산성
  • 프로젝트 기간 = Man Month / 프로젝트 인력

3. COCOMO(COnstructive COst MOdel) 모형

  • 프로그램 규모에 따라 비용을 산정하는 방식
  • 조직형(Organic Model): 소규모, 5만 라인 이하의 소프트웨어 개발하는 유형
  • 반 분리형(Semi-Detached Model): 단순형과 임베디드형의 중간형, 30만 라인 이하
  • 임베디드형(Embedded Model): 초대형 규모, 실시간 처리 시스템, 30만 라인 이상

4. 푸트남(Putnam) 모형

  • 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식

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

  • 요구 기능 증가시키는 인자별로 가중치 부여 후 요인별 가중치를 합산하여 총 기능의 점수를 계산해 비용 산정
  • 기능점수(FP) = 총 기능점수 X [ 0.65 + (0.1 X 총 영향도) ]


< 일정관리 모델 종류 >

1. 주 공정법(CPM)

  • 프로젝트 시작에서 종료까지 가장 긴 시간이 걸리는 경로

2. PERT

  • 비관치, 중간치, 낙관치의 3점 추정 방식을 통해 일정 관리

3. 중요 연쇄 프로젝트 관리(CCPM)

  • 주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성하는 기법
profile
Data가 좋은 Web 개발자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN