본문 바로가기

소프트웨어공학

개발 목적에 따른 분류 & SDLC

개발 목적에 따른 분류


- 프로토타입 : 사용자의 요구를 정확히 받아들일 수 있도록 한 것 ; 시제품 

- 프로젝트 : 주문형 SW ; 단말의 사용자를 대상으로 개발 

- 프로덕트 : 상품형 SW ; 다수의 사용자를 대상으로 개발 


(프로젝트 : 프로젝트 요구자 <-> 개발자 [ 1:1관계 ] )

(프로덕트 : 개발자 <-> 사용자 [ 1:다 관계 ] )





소프트웨어 생명주기 (SDLC : Software Development Life Cycle)



1. 정의단계 


- 타당성 검토

- 프로젝트 계획

- 요구분석



2. 개발단계


- 설계

- 구현

- 검사



3. 유지보수 단계




<정의단계>


타당성 

: 법적으로 개발이 가능한 부분인지?
 경제적으로 타당한지? (예 : 4천만원 이상 받아야 개발하는건데 턱도 안되는 돈으로 요구 받았는지?)

 기술적으로 타당한지? (내가 구현 가능한 SW인지??)


프로젝트 계획 

: SW 개발을 위해 준비 


요구분석

:  개발에 필요한 정보 수집 / 사용자 요구 파악





여기서 중요한 것은 요구 분석이며 요구 분석을 위해 자료를 만든다.

이를 토대로 설계와 구현을 진행한다.

요구 분석은 사용자가 참여하는 단계이다보니, 개발 관련된 내용과 사용자의 의견 모두 수용할 줄 아는 사람이 

컨트롤 타워 역할을 한다.




<개발단계>


설계 단계 

1. 절차구조, 알고리즘, 자료구조, 구조도 등 작성 

2. 자연 언어, 프로그래밍 설계 언어(PDL) (pseudo code)

3. 전체 생명주기 중 가장 오류가 많은 단계 (--> 설계 이전의 요구분석 단계에서 오류가 발생한 경우가 대부분)


구현 

: 사용자 분석에 맞게 설계된대로 코드를 직접 짜서 구현한다. --> 문서화 작업은 필수


검사

: 오류를 찾아서 수정하는 부분 (단위검사,통합검사,검증검사,시스템검사) (단위검사 : 세부적으로는 BLACK BOX , WHITE BOX)



<유지보수>


비용, 시간이 많이든다.

최신 상태를 유지하기 위함. 

기존의 틀에다가 보수를 하는 것


- 하자보수

- 기능개선 

- 예방조치 

- 환경적응 




<생명주기 흐름도 유형>



1. WaterFall 모형


- 한 단계에서 문제가 될 것 같으면 거기서 멈추고 최대한 완벽하게 할 때까지 하고 넘어가기 (폭포는 회귀할 수 없음)

[타당성 검토 -> 계획단계 -> 요구분석 -> 설계 -> 구현 -> 검사 -> 유지보수 + 운용]


ㄱ. 모델 적용사례가 많으며 성공사레도 많다.

ㄴ. 각 단계를 병행할 수 없고 선형 순차적이며 단계 순서대로 진행된다.

ㄷ. 전통적 방식이며 단계별 오류가 없이 완벽하게 구현되어야 한다.

ㄹ. 계획대로 해야하므로 개발 과정에서 새로운 요구나 경험은 설계에 반영되기 힘들다.



2. 프로토타입 모형


- 요구분석 단계 이 후 프로토타입을 만들어서 설계 단계 이전에 요구사항만을 정리할 원형 타입을 만든다.

[ 요구수정 -> 빠른 설계 -> 프로토타입 구축 -> 고객평가 -> 프로토타입 조정]

이 과정을 요구 분석 이 후에 지속적으로 하면서 가장 실제 프로덕트와 비슷한 상태로 만든 뒤, 

본 설계 단계로 진행한다.




사용자 요구사항은 100% 수용하기 힘들기 때문에 프로토타입을 만들어서 요구사항을 최대한 수용할 수 있도록 

구현하는 것이다. 

이를 바탕으로 다시 설계하고 구현을 한다면 전체 성능이 좋아질 것이다.

다만, 프로토타입은 사용자의 요구사항만을 분석해서 수용한 원형이기에, 구조적인 부분은 

개발 단계의 설계 부분에서 진행된다.



프로토타입에는 3가지 유형이 있다.


- Working Prototype : 주요 기능을 만들어서 사용자의 요구를 받아들이는 작업

- Program Prototype : 모델 하우스

- Paper Prototype : 사용자 요구를 문서화하는 작업.



[Brooks 이론 feat. 프로토타입]

: 개발 일정이 지연된다고해서 말기에 새로운 인원을 투입하면 일정이 더욱 지연된다.

프로토타입은 폐기처분하는 첫 번째 시스템이다. 

즉, 프로토타입을 통해 사용자의 요구사항을 응집한 틀을 만들었다면, 이는 개발 단계로 넘어갈 때 더이상 사용하지 않고, 

틀에 의한 데이터들만 사용하여 개발한다.




3. 나선현 모형

: [계획 -> 유형분석 -> 개발 -> 고객 검토 (계획으로 회귀)]

 Boehm이 제안한 대규모 프로젝트 개발에 적당하며 소프트웨어 개발에 가장 현실적이고 바람직한 모형

폭포수 모형과 프로토타입 모형의 장점들을 수용한 방법론 


사용자의 초기 요구사항에 근거한 위험 요소들을 관리 기술을 통해 해소한다.

특히 위험 분석에 중점을 두어 프로토타입을 발전시킬 때마다 집중적으로 소프트웨어를 개발하는 방법이다.

단!! 유지보수라는 개념은 포함되어 있지않다!!



계획수립 -> 위험분석 -> 개발 -> 고객평가(10%) 

계획수립 -> 위험분석 -> 개발 -> 고객평가(34%)

계획수립 -> 위험분석 -> 개발 -> 고객평가(50%) 

계획수립 -> 위험분석 -> 개발 -> 고객평가(72%) 

계획수립 -> 위험분석 -> 개발 -> 고객평가(94%) 



위험요소를 분석하여 집중적으로 개발함으로써 정확성을 최대로 높일 수 있다.

다음과 같은 과정을 거쳐 구현된 프로그램이 설계 단계로 넘어가고, 구현 이 후에 검사와 유지보수를 거치는 것이지 

이 단계에서는 유지보수의 개념이 들어가지 않는다.


다만, 오류를 100% 해결하는 것은 없으므로 고객평가가 최대한 100%에 근사치가 될 즈음에 개발과정으로 들어간다.

마치 도박하는 느낌..? 더 투자하면 정확도는 높일 것 같고,, 그러기엔 정확도를 높이는 정도보다 비용이 더 들어가는 것 같아서 하지 않아도 될 것 같고.... 

따라서 적당한 수준에서 개발단계로 들어가는 것이 좋다.

비용이 많이들거나 시간이 많이 소요되는 대규모 프로젝트에서 용이하다.




4. 4세대 모형

: 설계 화면과 코딩(개발)이 동시에 진행되는 것.

요구 분석 이 후 설계 단계에서 모형을 직접 그리면서 바로 개발 단계읜 코딩(구현)이 가능한 시스템으로 

설계 단계를 축소하는 효과가 있다.

(여러 컴퓨터 툴들을 이용해서 . ex:) 안드로이드 디자인 툴)


다만, 대규모 프로젝트에서는 수많은 Form을 일일이 그려야하므로 시간과 비용이 많이든다는 단점이 있다.







다음 포스팅에서는 프로젝트 계획 수립과 형상관리 부분을 다루겠습니다. 

감사합니다.

반응형

'소프트웨어공학' 카테고리의 다른 글

소프트웨어 공학 개념  (0) 2018.12.10