✅ 💁🏻‍♀️ 서론

소프트 웨어 공학은 타 공학과 다른점이 있습니다.
소프트웨어는 무형이기 때문에 개발의 품질 평가가 어렵습니다.
그렇다 보니, 개발 중에 다양한 상황이 발생하게 되는데요.
요구사항과 다른 경우가 발생하거나, 개발 일정 지연, 추가 비용 필요 등 여러 불안요소가 존재하게 됩니다.
실제로 이런 상황때문에 스타트업이 출시도 못하고 망해버린 경우가 많습니다.
이러한 문제를 해결하기 위해 개발 프로세스를 정형화 하게 되었는데, 이 부분에 대해 알아보도록 하겠습니다.

✅ 개발 단계

개발 단계에 대해 이해를 돕기 위해 쇼핑몰을 만든다고 가정하고 이야기 하겠습니다.

먼저 개발을 하기 전 관련된 사람을 알아보겠습니다.
1. 요청 고객 (Client)
2. 사용자 (Customer)
3. 프로젝트 관리자 (PM)
4. 개발자 (Developer)

개발을 시작하게 되면 요구사항 확인 ➡️ 요구 명세 ➡️ 요구 분석 ➡️ 설계 ➡️ 개발 ➡️ 테스트 ➡️ 배포 ➡️ 유지보수 단계를 거치게 됩니다. 이 부분에 대해 자세히 알아보도록 하겠습니다.

1️⃣ 요구사항

  • 고객이 요구하는 사항은 매우 간결하게 오게 됩니다.
    쇼핑몰을 만든다고 가정했을 때, 고객이 상품을 찾을 수 없어 판매량이 떨어집니다. 상품을 검색할 수 있게 해주세요. 라고 요구사항이 왔다면 먼저 파악해야할 것은 Pain point + Scope + Benefit 입니다.
  1. Pain point(고객이 겪는 문제) : 고객이 상품을 찾을 수 없어 구매를 하지 못한다.
  2. Scope(해결하기 위한 기능) : 전체 상품을 검색하는 기능
  3. Benefit(고객이 얻는 이익) : 고객 경험을 증대시키며, 매출을 향상 시킨다.

2️⃣ 요구명세와 요구분석

  • 요구 사항을 확인 했다면, 실제로 구현하는 사람들의 상세한 기능 분석이 필요합니다.
    (고객은 IT를 잘 모르기 때문에 기능을 어떻게 구현할 것인지를 상세히 설명할 필요가 있습니다.)
  • 쇼핑몰 상단에 검색창 기능 제공
    • 상품 타이틀, 상품 제공자 검색 기능 제공
    • 상품 타이틀, 상품 제공자, 전체 검색 옵션 제공
    • 검색 시간은 1초 내외 응답 시간 유지

위 예시처럼 요구를 분석한 뒤, 클라이언트에게 명확하게 전달한 뒤, 개발을 진행해야 추후 문제가 발생하지 않습니다.

고객 컨펌

  • 요구사항 유도 : 요청자와 토의를 통해 요구사항을 더욱 구체화 합니다.
  • 요구사항 분석 : 요구사항을 상세화해서 명확하게 만드는 작업을 진행합니다.
  • 요구사항 기록 : 요구사항을 문서화해서 요청자와 계약을 진행 합니다.

요구사항 세분화

  • 요구사항을 더 깊게 세분화하게 되면, 항목별로 세분화가 가능합니다.
    요구사항을 세분화 하게 되면, 효과적인 소통과 개발이 가능합니다.

3️⃣ 설계

  • 소프트웨어는 무형이기 때문에 설계도를 짜기 어렵습니다. 그래서 프로그래밍 언어로 나누어 제작합니다.
  • 절차지향과 객체지향으로 나누어 설계도를 작성하게 되는데, 요즘은 객체지향을 주로 사용합니다.

4️⃣ 구현

  • 각 구현과 테스트단계를 세분화 하여 출시전까지 스케줄을 관리하며 개발합니다.

5️⃣ 테스트

  • QA라고 얘기합니다.
  • 소프트웨어는 개발하다 보면 오류가 많이 나기 때문에 테스트를 하여 체크합니다.

6️⃣ 릴리즈(배포)

  • 테스트 단계를 거쳐 완벽한 버전을 공식 릴리즈 하게 됩니다.
    하지만 어떤 프로그램이든 '완벽'하게 제작하지는 못하기 때문에, 버전을 확인하여 릴리즈하게 됩니다.
  • 버전은 회사별로 다 다르기 때문에 아래 용어만 기억하시면 됩니다.
  • Pre-alpha : 핵심 기능이 동작하기 시작한 상태
  • Alpha : 소프트웨어 테스트 단계
  • Beta : 외부에 테스트 단계로 명시하고 오픈해서 내외부 테스트를 하는 단계
  • RC(Release Candidate) : 정식 Release 후보
  • Official Release : 고객이 사용하는 완벽한 버전

7️⃣ 유지보수

  • 프로그램이 릴리즈 된 후, 추가 요구사항이나 오류에 대해 유지보수를 진행해줍니다.

✅ 개발 프로세스

위 개발 단계에 4️⃣ 구현 부분에서 개발자가 소프트 웨어를 개발할 때, 효율적으로 개발을 하기 위한 개발 프로세스가 존재합니다. 이 부분에 대해 자세히 알아보도록 하겠습니다.

1️⃣ Waterfall model

  • 가장 기본적인 프로세스입니다.
  • 기간, 명칭 등을 가장 완벽하게 설계하여 제작하게 됩니다.(가장 이상적인 프로세스)
  • 단점
    • 개발 일정은 진행하다 보면 예기치 못한 오류나, 상황으로 인해 늦어집니다.
      이럴 경우에 개발자는 일정을 맞추기 위해 매번 야근을 하게 됩니다.
    • 개발 기간이 길어지면 그 사이에 소비자의 니즈가 변경되어 또 수정을 하게 되는데, 그렇게 되면 개발자는 요구를 맞추기 위해 야근을 하게 됩니다.

2️⃣ Prototype model

  • 위 모델의 단점을 보안하여 만들어진 모델이 프로토타입 모델입니다.
  • 고객이 실제로 원하는 것이 맞는지 핵심 기능만 만들어서 보여주게됩니다.
  • 단점
    • 중요한 핵심 기능만 보여주기 때문에, 세세한 세부적인 기능을 전부 확인하기 어렵습니다.

3️⃣ Spiral model

  • 프로토타입 모델을 보안하여 만들어진 모델이 Spiral model 입니다.
  • 개발 시 고객이 좋아하는지 피드백을 받으며 진행하여 점진적으로 완벽한 프로그램을 개발하는 모델입니다.
  • 리스트 최소화를 위해 위험 분석 단계가 존재합니다.
profile
#UXUI #코린이

0개의 댓글