Chapter01. 소프트웨어 개발방법론
1. 소프트웨어 개발방법론
(1)소프트웨어 생명주기 모델
1. 소프트웨어 생명주기(SDLC : Software Development Life Cycle) 모델 개념
시스템의 요구분석부터 유지보수까지의 전공정을 체계화한 절차.(=모든 작업 프로세스를 모델화)
2.소프트웨어 생명주기 모델 프로세스 (요설구테유)
요구사항 분석 - 제품에 대한 요구와 조건을 결정하는 단계 - 기능 요구사항 .비기능 요구사항
설계 - 논리적 결정 단계 - 시스템 구조 설계,프로그램 설계,사용자 인터페이스 설계
구현 - 특정 프로그래밍 언어를 사용하여 실제 프로그램을 작성하는 단계 - 인터페이스 개발, 자료 구조 개발, 오류 처리
테스트 - 정해진 요구를 만족하는지, 예상과 실제 차이점을 검사 및 평가하는 단계 - 단위,통합,시스템,인수 테스트
유지보수 - 인수 및 설치된 이후 일어나는 모든 활동 - 예방, 완전, 교정, 적응 유지보수
3. 소프트웨어 생명주기 모델 (폭프나반)
종류 | 설명 | 특징 |
폭포수 모델 (Waterfall Model) |
SW개발 시 각 단계를 확실히 마무리 지은 후 다음 단계로 넘어가는 모델 가장 오래된 모델 선형 순차적 모형이며 고전적 생명주기 모델(=경험 및 성공 사례가 많음) |
순차적 접근 관리가 편함 요구사항 변경 어려움 |
프로토타이핑 모델 (Prototyping Model) |
고객이 요구한 주요 기능을 프로토타입으로 구현하여, 지속적 피드백 반영하여 SW 개발 모델 | 프로토 타입 개발 요구분석 용이 및 타당성 검증 가능 프로토타입 폐기로 인한 개발 비용 증가 |
나선형 모델 (Spriral Model) |
SW 개발시 위험 요소를 최소화 하기 위해 점진적으로 완벽한 시스템을 개발하는 모델 절차(계위개고) : 계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가 |
위험분석, 반복 개발 위험성 감소 및 요구 변경에 바로 대처 가능 단계 반복으로 관리 어려움 |
반복적 모델 (Iteration Model) |
구축 대상을 병렬로 나누어 개발 후 통합 또는 반복적으로 개발하여 점증 완성시키는 모델 사용자의 요구사항을 일부분 또는 제품 일부분을 반복적으로 개발하여 최종 완성 |
증분방식 병행 개발 병행 개발로 관리 비용 증가 |
(2) 소프트웨어 개발방법론
1. 소프트웨어 개발방법론 (Software Development Methodology) 개념
소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법 및 절차
2. 소프트웨어 개발방법론 종류
종류 | 설명 |
구조적 (Structured) |
프로세스 중심 하향식 방법론 나씨-슈나이더만 차트 사용(= 논리의 기술에 중점을 둔 도형식 표현 기법) |
정보공학 | 개발에 필요한 절차와 기법을 체계화 한 방법론 (대형 프로젝트 적합) |
객체지향 | "객체"라는 기본 단위로 시스템 분석 및 설계하는 방법론 객체,클레스,메시지 사용 |
컴포넌트 기반 (CBD) |
컴포넌트를 조립하여 새로운 프로그램 개발하는 방법론(레고블록(??)) 개발 시간 단축으로 생산성을 향상 새로운 기능을 쉽게 추가 |
애자일 (Agile) | 절차보다 사람이 중심이 되어 유연하고 신속하게 개발 개발 기간이 짧고 식속하며, 폭포수 모형에 대비되는 방법론으로 개발과 함께 즉시 피드백 받아 유동적으로 개발할 수 있음 대표적으로 XP, 린(Lean), 스크럼(SCRUM) 등 있음. |
제품 계열 | 특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발 영역 공학과 응용공학으로 구분 |
3. 애자일 방법론의 유형
종류 | 설명 | |
XP (eXtreme Progarmming) |
의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법 1~3주의 반복적 개발주기 |
|
스크럼(SCRUM) |
매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론 | |
백로그(Backlog) | 제품과 프로젝트에 대한 요구사항 | |
스프린트 (Sprint) | 2~4주의 짧은 개발 기간 반복 수행으로 개발 품질 상향 | |
스크럼미팅(Scrum meeting) | 매일 15분 정도 미팅시간을 가져 To-do list 작성 | |
스크럼 마스터 | 프로젝트 리더 | |
스프린트 회고 | 스프린트 끝난 시점에서 규칙 준수 여부 및 개선점 확인 및 기록 | |
번 다운 차트 | 남아 있는 백로그 대비 시간을 차트로 표현 | |
린(Lean) | 토요타의 린 시스템 품질기법 적용하여 낭비 요소를 제거하여 품질 향상 JIT,칸반보드 사용 |
4. 애자일과 전통적 방법론 차이
비교 | 애자일 방법론 | 전통적 방법론 |
계획수립 | 유동적 범위 | 확정적 범위 |
업무수행 | 팀 중심 | 관리자 주도적 명령과 통제 개인 단위 업무 수행 |
개발/검증 | 반복 주기 단위 SW개발 및 검증 | 순차적 수행(요설구테) |
성공요소 | 고객 가치 전달 | 계획 및 일정 준수 |
유형 | XP,스크럼,린 등 | 폭포수,프로토타입,나선형 |
2. 비용산정, 일정 관리 모형
(1) 비용산정 모형
1.비용산정 모형 개념
소프트웨어의 규모파악을 통한 투입자원, 소요시간등 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식
2. 비용산정 모형 분류
하향식 산정방식
전문가에게 비용 산정 요청하는 방식으로 종류는 전문가 판단, 델파이 기법이 있음.
상향식 산정방식
세부적인 요구사항과 기능에 따라 필요한 비용을 계산하는 방식
코드라인수(LOC) 코드 라인 수를 측정하여 계산
Man Month : 한사람이 1개월 동안 작업가능한 일의 양을 기준으로 비용 계산
COCOMO : 보헴이 제안한 모형으로 프로젝트 완성 노력(Man Month)에 따라 규모를 정하고
규모는 : 조직(5만)- 반 분리(30만) - 임베디드(30만 이상)
푸트남 : 개발 주기의 단계별 요구할 인력을 분포하를 가정하는 방식
기능점수(FP)모형 : 각 기능별 가중치를 부여하여 이를 계산
(2) 일정관리 모델
1. 일정관리 모델 개념 : 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델
2. 일정관리 모델 종류
종류 | 설명 |
주공정법(CPM) | 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 기법 임계경로(Critical Path) : 프로젝트의 시작과 종료까지 가장 긴 시간이 걸리는 경로 및 기간 |
PERT | 일의 순서를 계획적으로 정리하기 위한 수렴 기법 비관치 / 중간치/ 낙관치의 3점 추정방식을 통해 일정관리하는 기법 |
중요 연쇄 프로젝트 관리 (CCPM) |
주 공정 연쇄법으로 자원제약사항을 고려하여 일정을 작성하는 기법 |
기출 문제 풀이
[2020 2회차 단답형 기출]
절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속적응적 경량 개발방법론으로, 개발 기간이 짧고 신속하며, 워터폴(폭포수)에 대비되는 방법론으로 최근 회사에서 각관받는 방법론은 무엇인가?
애자일 방법론
절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론
개발 기간이 짧고 신속하며, 폭포수 모델에 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아 유동적 개발 가능
[2020년 1회차 단답형]
LoC(LoC(Line Of Code)가 30,000라인이고, 개발자가 5명이며, 개발자가 월 평균 300라인을 개발한다고 할 때 프로젝트 개발 기간과 계산식은?
프로젝트 개발 기간 공식 = Man Month / 프로젝트 인력
= 100 / 5 = 20개월
Man Month(1인당 노력) = LoC / 프로그래머의 월간 생산성
= 30,000 / 300 = 100개월
'소소한 IT이야기 > 정보보안기사 실기' 카테고리의 다른 글
정보처리기사 실기 요약 - 1. 요구 사항 확인 (2) | 2022.10.03 |
---|---|
정보처리기사 프로그래밍 언어 활용 (feat.버블 정렬, 기출문제) (3) | 2022.10.01 |
[정보처리기사 실기 요약] 화면 설계 (feat. UI 요구사항, UI표준) (1) | 2022.09.12 |