소프트웨어 프로세스에 대해 알아보자

우빈·2024년 3월 14일
0
post-thumbnail

소프트웨어 프로세스가 어떻게 진행되는지에 대해서 알아보자.

소프트웨어 프로세스 3단계

1. 뭘 만들지 정의해야한다

첫 번째로는 무엇을 만들지 정의를 해야한다.

다음과 같은 정의를 함으로 핵심 요구사항을 파악할 수 있다.

  • 시스템 또는 정보 엔지니어링
  • 프로젝트 관리 - 계획 및 스케줄링
  • 요구 사항 분석

2. 어떻게 만들지 정의해야한다

두 번째는, 어떻게 만들지 정의를 해야한다.

다음과 같은 정의를 해야한다.

  • 소프트웨어 설계
  • 코드 생성
  • 소프트웨어 테스트

3. 유지하고 관리한다

세 번째는, 유지하고 관리하는 것이다.

다음과 같은 정의를 함으로 변경사항을 파악할 수 있다.

  • 결함 수정
  • 외부 환경 및 비즈니스 규칙에 대한 적응
  • 추가 기능 향상

Umbrella Activities


Work Product를 어떻게 만들지 의논하고 양식을 결정하는 방식.

주요 작업

  • 프로젝트 관리 - 추적 및 제어
  • 공식적인 기술 검토
  • 품질 보증
  • 구성 관리
  • 제품 준비 및 생산(예: 문서화)
  • 재사용성 관리
  • 측정
  • 위험 관리

CMMI


CMMI는 능력 성숙도 통합 모델로,
이 수치를 측정하여 회사를 평가할 수 있다.

  1. 조직의 현재 프로세스 성숙도 결정하기
  2. 효과적인 소프트웨어 프로세스의 핵심 요소를 설명하는 프레임워크
  3. 임시적이고 미성숙한 프로세스에서 성숙하고 규율 있는 프로세스로 진화하는 개선 경로
  4. 소프트웨어 개발 및 유지 관리를 계획, 공학 및 관리하는 관행

CMMI 단계 :

Initial -> Repeatable -> Defined -> Managed -> Optimizing

Initial

  • 프로세스가 정의되어있지 않아 성공 여부가 개인의 노력에 달려 있는 단계.

Repeatable

  • 기본적인 프로젝트 관리 프로세스가 정의되어 있는 단계.
  • 유사한 애플리케이션을 사용하는 프로젝트에서 이전 성공을 반복함.

Defined

  • 관리 및 엔지니어링 활동이 모두 정의된 단계.
  • 모든 프로젝트는 문서화되고 승인된 프로세스를 사용함.

Managed

  • 프로세스 및 제품 품질에 대한 자세한 측정과 공정과 제품 모두 정량적으로 측정하고 관리함.

Optimizing

  • 정량적 피드백을 통해 지속적인 프로세스 개선이 가능함.
  • 혁신적인 아이디어와 기술을 테스트함.

프로세스 모델 (cont)

  • 인간의 이해와 의사소통을 촉진하기 위함
  • 프로세스 개선 및 관리 지원
  • 기술 및 절차 통합을 위한 프레임워크
  • 프로세스 모델은 프로젝트나 애플리케이션, 팀의 상황에 따라 잘 선택해야함

소프트웨어 수명 주기

소프트웨어 제품이 구상되고 사용되지 않을 때까지의 기간.

Build-and-Fix model

  • 주로 한 사람의 작업
  • 명세 없이 구성되어있음
  • 애플리케이션의 사이즈가 클 경우 부적합한 모델
  • 엄격한 신뢰성이 요구됨.

선형 순차 모델 (워터폴 모델)

  • 소프트웨어 개발에서의 선형 순차적 접근법
  • 한 단계의 출력이 다음 단계의 입력이 됨
  • 여러 변형이 존재함 (스프린트 등등)

워터폴 모델 예시

친구와 함께 시나리오를 작성하여 클라이언트와 대화하듯 처리하여 간단히
만든 스프레드 시트이다. 요구사항명세서를 작성하고, 개발 기간과 비용을 정했다.

타당성 조사

  • 제안된 솔루션의 비용과 이점을 평가해야 한다.
  • 적어도 글로벌 수준에서 문제를 분석합니다
  • 문제를 정의하고 대체 솔루션은 무엇이 있는지를 분석합니다.
  • 각각 필요한 리소스와 비용 및 납기일은 언제인지를 분석합니다.

코딩 및 모듈 테스트

  • 디자인을 코드로 이상적으로 변환하고, 각 모듈을 테스트한다.

배송 및 유지 관리

유지보수 유형은 다음과 같다.

  • 수정 : 20%
  • 적응형 : 20%
  • 완벽 : 60%
  • 요구사항 분석은 문제의 심각한 원인이다.
  • 많은 오류는 시스템이 제공될 때까지 제거되지 않는다.
  • 제품에 변경 사항을 반영하기 어렵다.

RAD 모델

매우 빠르고 신속하게 어플리케이션을 개발하는 것을 말한다. RAD 모델은 속도와 유연성을 중시하여 빠르게 변화하는 요구 사항에 대응할 수 있는 현대적인 접근 방식을 제공한다.

프로토타이핑 모델의 정의와 장단점

프로토타이핑 모델은 소프트웨어 개발 방법론 중 하나로, 실제 개발 시작 전에 소프트웨어 요구 사항을 이해하고 검증하기 위해 초기 모형(프로토타입)을 만들어 사용자 피드백을 받는 과정을 포함합니다. 이를 통해 최종 제품의 설계와 요구 사항을 더 명확히 할 수 있습니다.

장점:
요구사항 도출이 용이하여 시스템의 이해와 품질을 향상시킬 수 있습니다.
개발자와 사용자 간의 의사소통이 원활하게 이루어집니다.
사용자의 명확한 요구사항 파악으로 인한 개발 위험을 감소시킵니다.

단점:
의사소통과 문서 관리의 어려움이 있습니다.
프로토타입을 너무 실제 제품처럼 다듬으려 하면 비용과 시간이 증가할 수 있습니다.

그 외의 모델 정의와 장단점

정의: 소프트웨어 개발을 순서대로 진행하는 단계적 접근 방식. 각 단계가 완료되어야 다음 단계로 넘어갈 수 있습니다.

장점: 단계별 명확한 구분과 문서화로 이해하기 쉽습니다.

단점: 변화에 유연하게 대응하기 어렵고, 초기 단계에서 요구사항을 모두 정확히 파악해야 합니다.

애자일 모델(Agile Model)

정의: 유연하고 반복적인 개발 방법론으로, 짧은 주기의 반복 과정(스프린트)을 통해 계속해서 개선해 나갑니다.

장점: 변화에 빠르게 대응할 수 있으며, 고객과의 지속적인 소통이 가능합니다.

단점: 끊임없는 고객 피드백 및 변경 요구에 따라 프로젝트 범위가 불명확해질 수 있습니다.

스파이럴 모델(Spiral Model)

정의: 위험 관리에 초점을 두고 프로토타이핑과 워터폴 모델의 접근 방식을 결합한 모델입니다.

장점: 위험을 최소화하며 단계적으로 진행할 수 있습니다.

단점: 관리가 복잡하고, 비용과 시간이 많이 소모될 수 있습니다.

진화적 모델(Evolutionary Model)

정의: 프로토타입을 폐기하지 않고 지속적으로 개발하고 개선해 나가는 모델입니다.

장점: 점진적 개선을 통해 사용자의 요구 사항을 반영할 수 있습니다.

단점: 초기에 프로토타입을 만드는 데 많은 노력이 필요하며, 전체적으로 높은 비용이 발생할 수 있습니다.
각 소프트웨어 개발 모델은 장단점을 가지고 있으며, 이를 잘 이해하고 프로젝트의 특성에 맞게 선택하는 것이 중요합니다. 프로젝트 요구사항, 기한, 예산 그리고 팀의 특성을 고려하여 가장 적합한 모델을 선택해 보세요!

profile
프론트엔드 공부중

0개의 댓글