본문 바로가기
카테고리 없음

소프트웨어 개발 프로세스 종류와 분석

by bazz 2022. 11. 12.
반응형

노트북으로 개발하는 중

1. 재사용 모델

사용자 요구 변화에 신속하고 유연한 대처 가능하고 다음과 같이 두 가지 분류가 된다. 컴포넌트 자체를 개발하고 도메인 분석 활동이 중요한 CD 모델, 컴포넌트 기반으로 시스템 개발하고 필요에 따라 특화하고 조립하여 시스템 개발하는 CBSD 모델이 있습니다. 특징 및 장점으로 컴포넌트 재사용에 의해 시스템 개발 기간을 단축할 수 있는 잠재성을 갖는다. 재사용 컴포넌트는 이미 검증되었기 때문에 이들을 적용하여 시스템을 개발하는 것은 궁극적으로 품질을 향상할 수 있다. 단점으로는 완벽하게 일치하는 재사용 컴포넌트가 없는 경우에 컴포넌트를 특화하거나 요구를 변경하는 것은 최종 시스템이 사용자 요구를 만족하지 않는 결과를 보일 수 있다. 재사용 컴포넌트 라이브러리(레퍼지토리)를 생성하고 관리하는 것은 어렵다. 그래서 적절한 컴포넌트를 검색하고 이해한 후 수정하기 위한 추가 비용이 필요하다. 좋은 예시로 요즘 프론트엔드에서 리액터, 뷰 라이브러리에서 재사용 모델을 많이 사용한다.

2. UP 모델

UP(RUP) 방법론으로 1990년대 객체지향 방법들의 통합 노력의 결과물이다. ‘3명의 친구들’이 제시한 객체지향 방법중 중요한 특징만
결합했다. UP(RUP) 프로세스과 UML을 합친 것으로 볼 수 있다. UP 프로세스로 반복/점증 개발과 사용자 상호작용 강조하며 시간 경과에
따라 시스템이 어떻게 진화하는지 묘사한다. 전통적인 폭포수 모델의 계획 활동에 해당된다. 주로 비즈니스 모델링과 요구 추출 작업을 수행하며 약간의 분석을 수행한다. 사용자 요구가 명확하지 않거나 기술적인 어려움이 존재할 경우 폐기 프로토타입을 개발할 수 있기 때문에 약간의 설계, 구현, 테스트 작업이 수행될 수 있다. 환경 작업은 시작 단계에서 수행하는 주요 지원 작업이다. 시작 단계의 목적은 시스템 개발이 가능한지, 개발 가치가 있는지 충분히 조사하여 결정하는 것이다. 폭포수 모델의 분석 단계가 아니며 대부분의 분석은 정제 단계에서 수행된다. 적용되는 개발 방법(구조적, 객체지향)과 무관하게 수행될 수 있는 단계이다. 적용되는 개발 방법(구조적, 객체지향)과 관련이 깊다. 시작 단계의 결과물을 계속해서 정제하여 구체화된다. 정제 단계의 목적은 시작 단계의 기본 요구들을 반복 정제하여 대부분의 요구를 파악하고 이러한 요구들을 안정화시키는 단계이다. 폭포수 모델의 설계 단계가 아니고 주로 분석과 설계를 위한 모델링 작업을 수행한다. 배치 작업을 제외한 모든 작업이 수행된다. 폐기 프로토타입을 개발하는 것이 아니라 최종 시스템의 부분이 되는 점증을 생성한다. 그다음 구추긍로 주현 구현 작업을 수행하고 분석과 설계 모델들이 완성된다. 형상과 변경 관리 작업은 구축 단계의 주요 지원 작업이다. 

3. Agile 모델

전에 살펴본 폭포수 모델은 엄격한 순서 강요에 의해 무겁고, 변화가 없으므로 예측할 수 있는 프로세스였다. 애자일 모델은 변경에 신속하고 유연하게 대처할 수 있는 가볍고, 적응할 수 있는 프로세스이다. 2001년 17명의 애자일 지지자들 모여 애자일 특징 정리하여 발표했고 세부적으로는 개발철학을 보여주는 애자일 선언문, 세부 지침을 보여주는 애자일 원리도 있었다. 프로세스나 도구 보다 개인 능력(특성)과 상호작용이 더욱 중요하다. 방법이나 프로세스에 지나치게 집중하는 것보다 개발자, 사용자, 관리자와 같은 사람들 개인의 능력과 그들 사이의 상호작용이 더욱 중요하다. 문서화에 집중하기보다 동작하는 실행 소프트웨어가 더욱 중요하다. 계약 협상보다 고객과의 지속적인 협력이 더욱 중요하다. 개발 초기 계약에 의해 사용자 요구가 고정되는 것 보다 개발 동안 사용자와 지속적인 상호 협력이 중요하다. 계획을 준수하는 것보다 변경에 대응하는 것이 더욱 중요하다. 수립된 계획을 준수하는 것보다 개발 과정 동안 발생하는 변화를 수용하는 것이 더욱 중요하다. 빠른 시간에 지속해서 유용한 소프트웨어를 인도하여 고객을 만족시킨다. 요구에 대한 변경은 물론 개발 후반부의 변경을 수용하는 자세를 취한다. 짧은 주기로 빈번하게 실행 소프트웨어를 인도한다. 프로젝트 전반에 걸쳐 사용자와 개발자는 함께 협력하는 것이 필요하다. 의욕적인 사람들 위주로 프로젝트를 진행하고, 그들에게 필요한 환경을 지원한다. 그들이 업무를 완수할 것이라고 믿는다. 하지만 전통적인 모델과 다르게 애자일 모델에도 단점은 존재한다. 보통 사용자의 지속적인 참여 어렵고 코드 중심에 의한 유지보수는 더더욱 어렵다. 그리고 사용자의 지속적인 참여 자체가 비용 증가로 이어지게 된다. 




 

반응형

댓글