티스토리 뷰

728x90
반응형

소프트웨어 생명주기(SDLC; SW Development Life Cycle)

: 요구분석부터 유지보수까지 전체 체계화한 절차. 개발부터 생애 마칠 때까지 순서 작업프로세스를 모델화.

 

- 소프트웨어 생명주기 모델 프로세스

1) 요구사항 분석(미팅): SW 기능, 제약조건, 목표 등을 사용자와 함께 요구조건을 정의 (기능/비기능 요구사항)

2) 설계: 명세단계에서 정의한 기능을 수행할 수 있도록 방법을 논리적으로 결정(시스템 구조/프로그램/UI 설계)

3) 구현: 설계단계에서 결정한 문제해결방법을 개발. 프밍언어, 기법 등 결정. (UI/자료구조 개발, 오류 처리)

4) 테스트(QA): 요구 만족하는지, 예상/실제 결과 어떤 차이인지 검사, 평가. ( 단위/통합/시스템/인수 테스트)

5) 유지보수(SE): 시스템 인수되고 설치된 후 일어나는 모든 활동(활동: 예방, 완전, 교정, 적응 유지보수)

 

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

1) 폭포수 모델(Waterfall Model): 가장 오래된 모델= 선형 순차적 모형=고전적 생명주기 모형. 적용경험과 성공 사례 . SW개발 시 각 단계를 마무리 지은 후 다음으로 넘어감. 단계별 정의와 산출물이 정확

- 장점: 이해 용이, 관리 편리

- 단점: 요구사항 변경 어려움

- 절차: 타당성검토-> 계획-> 요구사항분석-> 설계-> 구현-> 테스트-> 유지보수

2) 프로토타이핑 모델: 요구기능을 프로토타입으로 구현해 고객 피드백 반영하며만듦. 발주자, 개발자 모두에게 공동 참조 모델을 제공. 프로토타입은 구현 단계의 골격.

장점: 요구분석 용이, 타당성 검증 가능

단점: 프로토타입 폐기 비용 증가

- 절차: 요구사항분석-> 프로토타입개발-> 프로토타입 평가 ->(별로면 요구사항분석으로 돌아감)구현->테스트

3) 나선형모델(spiral Model): 위험최소화 위해 점진적으로(반복개발) 완벽하게 개발해나가는 모델.

장점: 위험감소, 변경에 유연한 대처

단점: 단계 반복으로 관리어려움.

절차: 계획/정의-> 위험분석-> 개발-> 고객평가->(별로면 계획 및 정의로 돌아감)

4) 반복적 모델(Iteration Model): 병렬 개발 후 통합하거나, 반복개발하여 점증 완성시키는 SDLC 모델. 요구사항 혹은 제품 일부를 반복개발하여 최종완성시킴.

증분방식으로 병행 개발

장점: 병행개발로 일정 단축 가능

단점: 병행개발로 관리 비용 증가

절차: 개발대상->병렬적으로(분석->설계->구현) 여러번.

 

 

- 소프트웨어 개발방법론

: SW 개발 전 과정에 지속적 적용하는 방법,절차,기법임.

SW를 생명체로 간주, SW 개발시작부터 시스템을 사용하지 않는 과정까지의 전 과정을 형상화한 방법론.

 

1. 구조적 방법론(Structured Development)

: 시스템을 기능에 따라 나눠 개발. 분할,정복 접근 방식의 방법론. 프로세스 중심의 하향식 방법론. 구조적 프밍 표현 위해 나씨-슈나이더만 차트 사용.

나씨-슈나이더만: 논리기술에 중점 둔 도형식 표현방법. 연속, 선택 및 다중 선택, 반복 등의 제어 논리 구조로 표현. 조건이 복합되어 있는 곳의 처리를 시각적으로 명확히 식별하는데 적합.

 

2. 정보공학 방법론

: 정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론.

 

3. 객체지향 방법론(Object-oriented Development)

: 객체 단위로 분석/설계. 객체, 클래스, 메시지사용.

 

4. 컴포넌트 기반 방법론(CBD)

컴포넌트: 원하는 DBSW의 개발된 모듈단위.

SW를 구성하는 컴포넌트를 조립해 응프를 작성하는 방법론. 개발 기간 단축으로 생산성 향상, 새 기능 추가가 쉽고(확장성). SW 재사용 가능.

 

5. 제품 계열 방법론(Product Line Development)

: 공통 기능 정의해 개발. 임베디드 SW 작성에 유용. 영역 공학과 응용공학으로 구분됨.

영역공학: 영역분석, 영역설계, 핵심 자산을 구현

응용공학: 요구분석, 설계, 제품 구현

 

6. 애자일 방법론(Agile Development)

: 절차보다 사람중심으로 변화에 유연, 신속적응, 효율적 개발하는 신속 적응적 경량 개발방법론. 개발 과정의 어려움(기존 개발방법론의 한계) 극복 위해 모색됨.

개발기간 짧, 신속하며, 폭포수모형에 대비됨. 개발과 함께 즉시 피드백받아 유동적으로 개발함.

 

애자일 방법론 등장 배경

1) SW 개발환경 변화: 개발트렌드가 모바일환경으로 변화. 시장 적시성과 잦은 배포의 중요성 부각

2) 기존 개발방법론의 한계: 전통적 방법론은 문서, 절차 위주로 변화에 신속 대응 어렵.

 

애자일 방법론의 유형: XP, (Lean), 스크럼(SCRUM)

 

[1] XP(eXtreme 프로그래밍): 의사소통 개선, 즉각 피드백으로 품질 높인 방법론. 1~3주의 반복 개발주기.

- XP5가지 가치

(1) 용기(Courage): 자신감있게 개발(코드작성전 테스트, 빠르게 피드백, 테스트에 노부합한 코드 리팩토링할 용기)

(2) 단순성(simplicity): 필요한것만 하고, 그 이상 안함.

(3) 의사소통(커뮤니케이션): 개발자,관리자,고객간 소통

(4) 피드백: 의사소통에 대한 빠른 피드백

(5) 존중(respect): 팀원 간 상호 존중

 

- XP12가지 기본원리

(1) 짝프밍(pair programming): 개발자2 짝지어 코딩

(2) 공동 코드 소유(collective ownership): 누구든지 언제든 수정가능한 원리

(3) 지속적 통합(CI; Continuous Integration): 매일 여러번 SW를 통합, 빌드해야하는 원리

(4) 계획 세우기(planning process): 고객이 요구하는 비즈니스 가치를 정의하고, 개발자가 필요한 것, 지연될 수 있는 부분을 알려주어야 한다는 원리)

(5) small release: 작은 시스템 먼저 만들고, 짧단위로 업데이트한다는 원리

(6) metaphor: 공통적 이름체계와 시스템 서술서를 통해 고객과 개발자간 의사소통 원활하는 원리

(7) simple design: 요구사항에 맞게 가장 단순히 설계.

(8) 테스트 기반 개발 TDD(Test Driven Develop): 테스트를 먼저 수행하고 통과하도록 코드를 작성함.

(9) refactoring: 프로그램 기능 안바꾸고 중복제거, 단순화 등을 위해 시스템을 재구성

(10) 40시간작업: 피곤실수안하게 1주에 40시간 일하지마

(11) 고객상주(on site customer): 개발자질문에 즉각 대답가능한 고객을 플젝에 풀타임으로 상주시켜야함.

(12) 코드표준(coding standard): 효과적 공동작업 위해 코딩표준을 정의해야함.

 

[2] SCRUM: 매일 정한 시간, 장소에서 단시간 개발팀을 위한 플젝관리 중심 방법론.

 

스크럼의 주요개념 6가지

(1) Backlog: 제품과 프로젝트에 대한 요구사항

(2) Sprint:2~4주의 짧 개발기간으로 반복수행->품질향상

(3) scrum meeting: 매일 15분 미팅으로 Todo list계획 수립. daily meeting이라고도 함.

(4) scrum master: 플젝 리더, 문제 인지자. 해결자

(5) 스프린트 회고(sprint retrospective): 스프린트 주기를 되돌아보며 규칙 준수여부, 개선점 확인 및 기록. 스프린트 끝난 시점이나 일정 주기로 시행.

(6) Burn Down Chart: 남아있는 백로그 대비시간을 그래픽적으로 표현한 차트. 백로그는 보통 수직축에 위치하며 시간은 수평축에 위치.

 

[3] LEAN: 도요타의 린 시스템 품질기법을 SW 개발 프로세스에 적용해 낭비 요소 제거, 품질 향상시킨 방법론

JIT(Just In Time), 칸반(Kanban) 보드 사용.

 

린의 7가지 원칙

: 낭비제거, 품질내재화, 지식창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화

 

 

애자일과 전통적 방법론 비교

 

- 비용산정 모형

: SW 규모파악 통한 투입자원, 소요시간 파악하여 계획수립하기 위해 비용을 산정하는 방식.

 

- 하향식 산정방법

: 경험 전문가에 비용산정 의뢰하거나 여러 전문/조정자에 산정함. 델파이 기법(전문가의 경험적 지식을 통한 문제 해결 및 미래예측위한 기법으로 전문가 합의법이라고도 함.)

 

- 상향식 산정방법

: 세부 요구사항과 기능에 따라 필요비용 계산.

(1) 코드라인수(LoC(Lins of Code))모형: 코드라인 수의 낙관치, 중간치, 비관치를 측정해 비용산정. 측정이 쉽고 이해하기 쉬워 많이 사용함. 예측치를 이용해 생산성, 노력, 개발기간 등의 비용을 산정.

비관치: 가장 많이 측정된 코드 라인 수

중간치: 측정된 모든 코드 라인 수의 평균

낙관치: 가장 적게 측정된 코드 라인 수

- 예측치 = (낙관치+비관치+(4*중간치))/6

(2) Man Month: 1인이 1개월동안 할 일의 양을 기준으로 플젝 비용을 산정.

Man Month = LoC/프로그래머의 월간 생산성

플젝기간 = Man Month/플젝 인력

LoC3만라인이고, 개발자가 5, 월평균 300라인을 개발하면, 프로젝트 개발 기간은 20개월이다.

(3) COCOMO 모형: 보헴이 제안. 프로그램 규모에 따라 비용산정. 플젝 완성에 필요한 노력(Man-Month)으로 산정함. 비용 견적 강도 분석 및 유연성 높아 SW 개발비 견적에 널리 통용됨. 규모에 따라 유형이 조직형(=기본형, 단순형), 반 분리형, 임베디드형으로 나뉨.

    1) 조직형: 기관내부에서 개발된 중소규모의 SW로 일괄 자료처리나 과학기술 계산용, 비즈니스 자료 처리 개발에 적용. 5(50KDSI) 라인 이하의 SW개발 유형.

    2) 반분리형: 단순형과 임베디드형의 중간형. 트잭 처리 시스템/DBMS/컴파일러/인터프리터같은 유틸개발에 적용. 30(300KDSI)라인 이하의 SW 개발하는 유형.

    3) 임베디드형: 초대형 규모 트잭처리 시스템, OS, 실시간 처리 시스템 등 시스템 프로그램 개발에 적용. 30(300KDSI)라인 이상 SW를 개발하는 유형.

(4) 푸트남 모형(Putnam) = 생명주기 예측모형

: SW개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식. 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초로 함.

(5) 기능점수(FP) 모형

: 요구기능 증가시키는 인자별로 가중치 부여. 요인별 가중치를 합산해 비용산정. 경험을 바탕으로 단순, 복잡 정도에 따라 가중치를 부여.

기능점수(FP)= 총기능점수*[0.65+(0.1*총영향도)]

기능점수 가중치 부여

 

- 일정관리 모델

: 플젝이 일정기한 내 완료될 수 있도록 관리하는 모델.

(1) 주 공정법(CPM: Critical Path Mathod)

: 여러 작업의 수행순서가 얽힌 플젝의 일정 계산 기법.

자원 제약사항을 배제하고, 플젝 시작과 끝을 나타내는 노드-노드간 연결 통해 공정 계산위한 activity 표기법. 주공정(Critical Path;임계경로): 플젝 시작~종료까지 가장 긴시간이 걸리는 경로.

(2) PERT(program evaluation and review Technique): 일 순서를 계획적 정리위한 수렴 기법. 비관치, 중간치, 낙관치 3점 추정방식을 통해 일정관리.

(3) 중요 연쇄 플젝 관리(CCPM; critical chain project management): 주 공정 연쇄법. 자원제약사항 고려해 일정 작성하는 기법.

 

728x90
반응형
댓글