소프트웨어 공학에서의 방법론들.

HeeSung Lee·2024년 3월 21일
0

소프트웨어 공학에서의 프로세스

소프트웨어 공학에서의 프로세스는 소프트웨어 제품을 개발하기 위한 계획, 실행, 평가 및 관리의 일련의 단계나 절차를 나타낸다. 이러한 프로세스들은 소프트웨어를 효과적으로 개발하고 유지보수하기 위한 체계적이고 구조화된 방법을 제공한다. 소프트웨어에서 프로세스는 방법은 왜 필요한걸까?

구조화된 절차

프로세스는 개발 과정을 체계적으로 관리하여 프로젝트의 효율성을 향상시키고 개발자 간의 협업을 촉진시킨다.

위험 관리

프로세스는 프로젝트 위험을 식별하고 관리하여 예상치 못한 문제를 최소화하고 프로젝트의 성공 가능성을 높인다.

품질 향상

각 단계에서의 검증과 테스트를 통해 제품의 품질을 유지하고 개선하여 최종 제품의 품 질을 보장한다.

CMMI(Capability Maturity Model Integration)

CMMI(Capability Maturity Model Integration), 통합성숙모델은 조직의 프로세스 개선 활동을 효율적으로 지원하기 위한 모델이다.조직의 개발능력이 얼마나 성숙되었는지를 평가할 수 있도록 만든 모델이라 할 수 있다. 전 세계의 여러 국가에서 도입하고 있는 산업 표준이다.

CMMI V2.0

CMMI V2.0 모델은 뷰(View), 프랙티스 영역(Model), 프랙티스 그룹(Practice Group), 프랙티스(Practice) 및 정보자료(Informative Material) 이렇게 5개의 컴포넌트로 구성되어있고 사전에 정의된 모델 뷰를 사용할 수도 있고 사용자에 의도에 따라 자체적으로 뷰를 구성하여 프로세스 개선을 진행할 수도 있다.

프로세스의 종류

이제 어떤 프로세스 방식들이 있는지 알아보자.

워터풀 모델


폭포수 모델은 전통적인 소프트웨어 개발 방법 중 하나로, 일련의 선형하고 순차적인 단계로 구성됩니다. 주요 단계는 요구 사항 분석, 설계, 구현, 테스트 및 유지보수다. 각 단계는 이전 단계의 결과물을 바탕으로 진행되며, 한 번 시작된 후에는 거의 변경되지 않습니다. 이러한 선형적인 접근은 초기에 요구 사항을 완전히 이해하고 정의하는 것을 가정하며, 변경이 발생할 경우에는 비용이나 시간이 많이 소요될 수 있다. 폭포수 모델은 간단하고 이해하기 쉽지만, 요구 사항의 변화에 적응하기 어렵고 유연성이 부족한 단점을 가지고 있다.

RAD 모델


RAD(Rapid Application Development) 모델은 빠른 프로토타입을 사용하여 소프트웨어를 빠르게 개발하는 방법론이다. 이 모델은 초기에 작은 규모의 프로토타입을 빠르게 개발하고 이를 고객에게 제공하여 피드백을 받는다. 그 후 반복적인 개발 단계를 통해 프로토타입을 확장하고 완성도를 높여 최종 제품을 만들어간다. RAD 모델은 빠른 시간 내에 시스템을 개발하고 변경에 유연하게 대처할 수 있으며, 고객의 요구사항을 적극적으로 수용할 수 있는 장점을 가지고 있다. 그러나 프로토타입에 대한 충분한 검증이 이루어지지 않을 경우 품질 문제가 발생할 수 있다.

프로토타이핑 모델


프로토타이핑 모델은 사용자의 요구사항을 수집하고 이를 기반으로 초기 버전의 소프트웨어 프로토타입을 빠르게 개발하는 방법론이다. 이 모델은 사용자와 개발자 간의 의사소통을 촉진하고 개발 초기부터 피드백을 받아 제품의 요구사항을 명확히 이해하는 데 도움이 된다. 프로토타입은 일반적으로 기능이 제한적이지만 사용자가 원하는 기능을 시연하고 테스트할 수 있는 정도의 기능을 포장한다. 이후에는 사용자 피드백을 바탕으로 프로토타입을 수정하고 개선하여 최종 제품을 개발한다.
그럼 이 방법론의 장단점은 무엇이 있을까?

장점

  1. 빠른 피드백: 초기에 프로토타입을 제공하여 사용자 피드백을 빠르게 수집할 수 있다.
  2. 요구사항 명확화: 프로토타입을 통해 요구사항을 명확히 이해하고 사용자의 요구를 충족시킬 수 있다
  3. 변경 용이성: 프로토타입은 유연하게 수정하고 변경할 수 있어 사용자의 요구사항 변화에 대응할 수 있다.

단점

  1. 품질 문제: 프로토타입은 보통 테스트되지 않은 기능이 포함되어 있을 수 있으며, 이로 인해 품질 문제가 발생할 수 있다.
  2. 범위 제한: 프로토타입은 일반적으로 제한된 기능을 포함하고 있어 실제 제품의 범위를 정확하게 파악하기 어려울 수 있다.
  3. 비용과 일정: 반복적인 프로토타입 개발 및 수정으로 인해 비용과 일정이 증가할 수 있다.

Incremental Model(증분적 모델)

증분적 모델은 전체 시스템을 여러 개의 작은 부분으로 나누어 개발하는 방법론으로, 각각의 부분은 독립적으로 개발되어 완성된 후 전체 시스템으로 통합된다. 이 모델은 전통적인 폭포수 모델의 단점을 보완하고, 초기에 기능이 제한된 버전을 빠르게 제공하여 고객의 요구사항을 더 잘 반영할 수 있다.

장점

  1. 초기 가시성: 각각의 증분은 완전히 독립적으로 개발되므로 초기에도 기능이 제한된 시스템을 빠르게 제공할 수 있다.
  2. 고객 피드백: 완성된 증분을 제공함으로써 고객이 제품의 진행 상황을 확인하고 피드백을 제공할 수 있다.
  3. 변경 용이성: 각각의 증분은 독립적으로 개발되기 때문에 변경이 필요한 경우 해당 부분만 수정하면 되므로 전체적인 변경이 쉽다.

단점

  1. 통합 문제: 각각의 증분을 통합하는 과정에서 일부 시스템 간의 호환성 문제가 발생할 수 있다.
  2. 초기 계획의 복잡성: 전체 시스템을 여러 증분으로 나누는 초기 계획이 복잡할 수 있다.
  3. 테스트 문제: 각각의 증분은 독립적으로 테스트되어야 하지만, 전체 시스템의 통합 테스트는 복잡성을 증가시킬 수 있다.

워터풀 모델 맛보기

랜덤채팅 서비스를 구현한다고 생각하고 워터풀 모델의 1단계인 요구사항 명세를 해봤다.

GG

profile
프론트엔드 개발자를 꿈꾸는 고등학생입니다⌨️💻

0개의 댓글