1. 소프트웨어 생명주기 모델 프로세스
-1) 요구사항 분석
- 기능 요구사항
- 비기능 요구사항
-2) 설계
- 시스템 구조 설계
- 프로그램 설계
- UI 설계
-3) 구현
- 인터페이스 개발
- 자료 구조 개발
- 오류 처리
-4) 테스트
- 단위 테스트
- 통합 테스트
- 시스템 테스트
- 인수 테스트
-5) 유지보수
- 예방, 완전, 교정, 적응 유지보수
2. 소프트웨어 생명주기 모델 종류 (폭프나반)
-1) 폭포수 모델(Waterfall Model)
- 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어가는 모델
- 선형 순차적 모형
- 각 단계 별 정의와 산출물이 명확
- 요구사항 변경이 어려움
- 이해 용이 / 관리 편리
-2) 프로토타이핑 모델(Prototyping Model)
- 고객이 요구한 주요 기능을 프로토타입으로 구현, 고객의 피드백 반영하여 소프트웨어를 만들어 나가는 모델
- 프로토타입은 발주자나 개발자 모두에게 공동의 참조 모델을 제공
- 요구분석 용이 / 타당성 검증 가능
- 프로토타입 폐기에 따른 비용 증가
-3) 나선형 모델(Sprial Model) (계위개고)
- 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해나가는 모델
- 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가
- 위험성 감소와 변경에 유연한 대처
- 단계 반복에 따른 관리 어려움
-4) 반복적 모델 (Iteration Model)
- 구축 대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 SDLC 모델
- 사용자의 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발하여 최종 시스템으로 완성 시키는 모델
- 병행 개발로 인한 일정 단축 가능
- 병행 개발에 따른 관리비용 증가
3. 소프트웨어 개발 방법론 종류
-1) 구조적 방법론 (Structured Development)
- 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론
- 프로세스 중심의 하향식 방법론
- 나씨-슈나이더만(Nassi-Shneiderman) 차트 사용
- 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조로 표현
- 조건이 복합되어있는 곳의 처리를 시각적으로 명확히 식별하는데 적함
-2) 정보공학 방법론 (Information Engineering Development)
- 정보 시스템 개발에 필요한 관리 절차와 작업 기반을 체계화한 방법론
- 개발 주기를 이용해 대형 프로젝트를 수행하는 체계적인 방법론
-3) 객체지향 방법론 (Object-Oriented Development)
- ‘객체’라는 기본 단위로 시스템을 분석 및 설계하는 방법론
- 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론
- 객체, 클래스, 메시지 사용
-4) 컴포넌트 기반 방법론 (CBD; Component Based Development)
- 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
- 개발 기간 단축으로 인한 생산성 향상
- 기능 추가 쉬움 (확장성)
- 소프트웨어 재사용 가능
-5) 애자일 방법론 (Agile Development)
- 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
-6) 제품 계열 방법론 (Product Line Development)
- 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론
4. 애자일 방법론
개발 기간이 짧고 신속하며 폭포수 모형에 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아서 유동적 개발 가능
에자일 방법론 유형
-1) XP (eXtreme Programming)
- 5가지 가치 : 용기, 단순성, 의사소통, 피드백, 존중
- 12가지 기본 원리
- 짝 프로그래밍(Pair Programming) : 개발자 둘이서 짝으로 코딩하는 원리
- 공통 코드 소유(Collective Ownership) : 시스템에 있는 코드는 누구든지 언제라도 수정 가능
- 지속적인 통합 (CI; Continuous Integration) : 매일, 여러 번 소프트웨어 통합/빌드 해야 한다는 원리
- 계획 세우기 (Planning Process)
- 작은 릴리즈 (Small Release) : 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트 해야 한다는 원리
- 메타포어 (Metaphor) : 공통적인 이름 체계와 시스템 서술서를 통해 의사소통을 원활하게 한다는 원리
- 간단한 디자인(Simple Design)
- 테스트 기반 개발 (TDD; Test Driven Develop) : 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리
- 리팩토링(Refactoring) : 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템 재구성 한다는 원리
- 40시간 작업
- 고객 상주
- 코드 표준
-2) 스크럼(SCRUM)
- 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
- 백로그(Backlog) : 제품과 프로젝트에 대한 요구사항
- 스프린트(Sprint) : 2~4주의 짧은 개발 기간으로 반복적 수행으로 개발 품질 향상
- 스크럼 미팅(Scrum Meeting) : 매일 15분 정도 미팅으로 To-Do List 계획 수립, 데일리 미팅
- 스크럼 마스터(Scrum Master) : 프로젝트 리더, 스크럼 수행 시 문제를 인지 및 해결하는 사람
- 스프린트 회고 (Sprint Retrospective) : 스프린트 주기를 돌아보며 규칙 준수 여부, 개선점 등 확인 및 기록
- 번 다운 차트 (Burn Down Chart) : 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트
-3) 린(LEAN)
- 도요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상
- 7가지 원칙 : 낭비제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화
5. 비용 산정 모형
-1) 하향식 산정 방법 : 전문가 판단, 델파이 기법
-2) 상향식 산정 방법 : LoC(코드 라인 수), Man Month, COCOMO 모형, 푸트남 모형, 기능점수(FP)모형
- LoC(Lines of Code) : 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고 이를 이용하는 비용 산정 방식 (예측치 = (낙관치+4*중간치+비관치)/6)
- Man Month 모형 : 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식
Man Month = Loc / 프로그래머의 월간 생산성
프로젝트 기간 = Man Month / 프로젝트 인력
- COCOMO(COnstructive COst MOdel) 모형 : 프로그램 규모에 따라 비용을 산정하는 방식
비용산정 결과는 Man-Month로 산정
조직형 (Organic Model) : 5만 라인 이하
반 분리형(Semi-Detached Model) : 30만 라인 이하
임베디드 형(Embedded Model) : 30만 라인 이상
- 푸트남 모형 (Putnam) : 소프트웨어 개발 주기의 단계별로 요구할 인력의 분포를 가정하는 방식
시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 분포도를 기초로 함
- 기능점수(FP; Function Point) 모형 : 요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식
기능점수 = 총 기능점수 X [0.65 + (0.1 X 총 영향도)]
6. 일정 관리 모델 종류
-1) 주 공정법 (CPM; Critical Path Method) : 여러 작업의 수행 순서가 얽혀있는 프로젝트의 일정을 계산
노드와 노드 간 연결을 통해 공정을 계산하기 위한 액티비티 표기법
가장 긴 시간이 걸리는 경로를 계산
-2) PERT : 비관치, 중간치, 낙관치의 3점 추정 방식으로 일정 관리
-3) 중요 연쇄 프로젝트 관리 (CCPM) : 주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성
'정보처리기사 > 01. 요구사항 관리' 카테고리의 다른 글
Chapter 04. 분석 모델 확인하기 (0) | 2021.09.08 |
---|---|
Chapter 03. 요구사항 확인 (0) | 2021.09.08 |
Chapter 02. 현행 시스템 분석 (0) | 2021.09.08 |
댓글