프로그램 개발 방법의 생각

  • Water Fall
  • agile
  • devOps

개발 과정은 집짓는 건축과정과 비슷하다

클라이언트의 요구사항

 

설계도

 

설계대로 지어지는지 검토

 

확인후 확정

 

테스트

 

유지보수

폭포수 개발방법의 기본원칙

1. 앞 단계가 되어야 다음 단계 이동 가능

 

2. 단계 완료후 해당 문서가 나와야 한다.

요구분석 (Requirements)

문제의 해결을 위해 시스템이 갖추어야 하는 조건과 능력

 

요구사항 명세서, 계약서에 명시

 

  • 요구사항 명세서(SRS)
    • 발주자-개발자 간의 의사소통 수단
    • 정확성, 일관성, 완전성 필요

분석(Analysis)

요구사항을 만족하려면 어떻게 설계해야하는가

 

분석하고 가늠을 잡는 단계

설계(Design)

설계도를 그리는 단계

 

요구 명세에 따라 소프트웨어의 전체 구조와 구조간의 관계, 상세 알고리즘을 설계 하는데

전체 구조를 설계 하는 것은 "기본설계" 상세 알고리즘을 설계하는 것을 "상세 설계"

구현(Implementation)

설계한대로 구현

 

코딩하는 단계이다.

검증(QA) Verification(Testing)

유지보수(Maintenance)

폭포수 방법론의 장점

  1. 프로젝트를 시작하기 전에 프로젝트에 대한 전체적인 요구사항과 디자인들이 완성되어 있으므로 프로젝트의 범위, 비용, 타임라인에 대해 자세하게 알 수 있고, 전체적 과정의 이해가 쉽다.
  2.  
  3. 단계별로 진행되기 때문에 현재 단계에 대한 이해가 빠르고 쉽다.
  4. 단계별로 정형화된 접근방식을 이용하기 때문에 기술적인 위험요소가 적다.
  5.  
  6. 고전적 방법론으로써 적용 사례가 풍부하므로 벤치마킹하기 쉽다.
  7. 까다로운 계획 때문에 각각의 개발자들이 다른 부분에서 일하므로 더 쉽게 프로젝트 관리를 할 수 있습니다.
  8. 빠듯한 기한이 없거나, 필수 조건들이 적은 프로젝트에 적용하기 적합하다.

폭포수 방법론의 단점

  1. 실제 현실에서는 개발 프로젝트에서 요구사항이 변경될 가능성이 커, 각 단계가 반복될 수 있으므로 다소 현실적이지 못한 개발 방법론이 될 수 있습니다.
  2.  
  3. 실제 작동하는 소프트웨어는 개발 후반부에 확인할 수 있다.
  4. 각 단계가 진행된 뒤에 요구사항이 변경되거나 설계 등이 변경되면 나중에 커다란 문제가 발생할 수 있습니다.
  5.  
  6. 고객 요구사항에 대한 즉각적인 피드백이 어렵다.
  7.  
  8. 전 단계가 종결되어야 다음 단계를 수행할 수 있다.

재미로 보고가기

애자일 방법론이란?

 

 애자일 방법론은 앞서 잠시 설명한 '폭포수형 모델'에 반대되는 개념으로 탄생한 방법론이다. 즉 폭포수 모델은 소프트웨어 개발 계획을 정해두고 각각의 단계별로 개발을 진행하는 형태의 개발 방법론이다. 때문에 중간에 문제가 생긴다면 처음부터 다시 각각의 단계를 진행해야 한다.

 

 애자일 방법론은 앞서 잠시 설명한 '폭포수형 모델'에 반대되는 개념으로 탄생한 방법론이다. 즉 폭포수 모델은 소프트웨어 개발 계획을 정해두고 각각의 단계별로 개발을 진행하는 형태의 개발 방법론이다. 때문에 중간에 문제가 생긴다면 처음부터 다시 각각의 단계를 진행해야 한다.

 

위사진을 보면 폭포수 방법론의 구조랑 크게 다르지 않다.

 

하지만..

단위를 쪼개서

여러번 수행되는 모습을 볼수 있습니다.

Agile은 주로 소프트웨어 개발에 사용되는 프로젝트 관리 방법론으로, 전체 작업을 여러 개의 작은 작업으로 나누고이를 스프린트라고하는 짧고 점진적인 작업 단계와 함께 첨부합니다.

애자일의 가치

  • 개인과 개인 간의 상호작용이 프로세스 및 툴보다 우선
  •  
  • 작동하는 소프트웨어가 포괄적인 문서보다 우선
  •  
  • 고객과의 협업이 계약 협상보다 우선
  •  
  • 변화에 대응하는 것이 계획을 따르는 것보다 우선

Development + Operation

개발담당자와 운영담당자가 연계하여 협력하는 개발 방법론

데브옵스

 Agile software development

 

애자일 개발 프로세스

 

익스트림 프로그래밍, 스크럼, 크리스털 패밀리, 익스트림 모델링

계획과 문서를 기반으로 개발 모형이나 모델에 따라 앞을 예측하며 개발하는 것이 아니라, 실질적인 코딩을 기반으로 일정한 주기에 따라 계속적으로 프로토타입을 형성하고 필요한 요구사항을 파악하며 이에 따라 즉시 수정사항을 적용하여 결과적으로 하나의 큰 소프트웨어를 개발하는 적응형 개발 방법

여기 애자일에서

자동화 빌드, 테스트, 등 동적으로 자동화 시스템을 적용한 것이

데브옵스라고 보면 됩니다.

데브옵스 DevOps는 쉽게 말해 개발부서와 운영부서 간의 원활한 소통을 기반으로 합니다.

개발 부서에서 웹사이트 개발, 앱 개발, 그리고 알고리즘 개발을 한다면 운영 부서에서는 개발된 아이템이 고객에게 잘 전달되도록 하는 부서입니다. 운영팀에서 고객의 수요에 맞춰 서버와 데이터베이스를 관리하는 일을 통해 서비스가 제대로 돌아갈 수 있는 환경을 개발팀에게 제공할 수 있는 것입니다.

CI/CD(지속적 통합/지속적 제공)

애자일 도구 리스트

https://ko.myservername.com/top-10-best-agile-project-management-tools-2021#5_Wrike

deck

By Beom lee