Post

[개발 방법론] - 개발 방법론의 종류

0. 들어가기에 앞서


소프트웨어 개발 방법론은 다양한 이론적 배경에 기반하여 분류될 수 있습니다. 우리가 말하는 폭포수, 애자일 모두 이러한 이론적 배경에 기반한 방법론중 한개입니다. 이번 포스팅에서는 다양한 소프트웨어 개발 방법론에대해 설명드리도록 하겠습니다.


1. 소프트웨어 개발 방법론의 종류


1.1) 구조론적 방법론(Structured Development)

  • 문제를 계층적으로 분할하여 체계적으로 접근하는 방식이며 이를 위해서 소프트웨어를 모듈화 한 후 시스템을 구성합니다.
  • 프로세스 중심의 하향식 방법론(TOP-down)입니다.
  • 명확한 단계별 개발(분석-설계-구현)을 진행합니다.
  • 이를 요약하면 아래와 같습니다.
장점단점
체계적이고 명확한 구조로 분석과 설계가 용이합니다.복잡한 소프트웨어에 적용할 경우 비효율적 입니다.
각 모듈이 독립적이여서 디버깅이 쉽습니다.즉각적인 대응이 어렵습니다.

1.2) 정보공학적 방법론(Information Engineering)

  • 게이터 중심으로 시스템 개발을 하며, 정보처리 요구사항을 체계적으로 분석하여 설계합니다.
  • 주로 대규모 시스템 개발할때 사용하는 방법론입니다.
  • 데이터 모델링에 중점을 둡니다.
  • 이를 요약하면 아래와 같습니다.
장점단점
대규모 시스템에 적합합니다.소규모 시스템에 비효율적
시스템과 데이터의 일관성을 보장합니다.초기 분석과 설계에 시간이 많이 소요될 수 있음
데이터를 구조적으로 관리-

1.3) 객체지향 방법론(Object-Oriented)

  • 소프트웨어를 객체의 집합으로 보고, 객체간의 상호작용을 통해 시스템이 동작하도록 설계합니다.
  • 상속, 다향성, 캡슐화를 통하여 재사용성과 확장성을 높일 수 있습니다.
  • 클래스, 객체, 메시지 기반입니다.
  • 이를 요약하면 아래와 같습니다.
장점단점
유지보수가 용이합니다.관계가 복잡할 경우 설계가 어려울 수 있습니다.
코드 재사용성이 높습니다.초기 설계에 많은 시간과 노력이 필요합니다.
복잡한 시스템을 단순화하고 유연하게 설계할 수 있습니다.-

1.4) 컴포넌트 기반 방법론(Component-Based Development, CBD)

  • 소프트웨어를 구성하는 컴포넌트를 독립적이고 재사용 가능하게 나누어 개발합니다.
  • 컴포넌트 재사용으로 개발속도가 빠릅니다.
  • 각 컴포넌트를 독립적으로 컨트롤할 수 있습니다.
  • 이를 요약하면 아래와 같습니다.
장점단점
컴포넌트 재사용을 통해 개발 속도를 크게 향상시킬 수 있습니다.컴포넌트 간의 상호작용이 복잡할 수 있습니다.
유지보수와 확장이 용이합니다.새로운 컴포넌트를 개발할 때 시간과 노력이 소요됩니다.
시스템 전체를 수정하지 않고, 특정 컴포넌트를 수정할 수 있습니다.상호 호환성과 표준화된 인터페이스가 중요합니다.

1.5) 애자일 방법론(Agile Development)

  • 신속한 처리를 요하는 방법론입니다.
  • 현재 가장 많은 기업에서 도입을 하려고 준비중인 방법론 중 하나입니다.
  • 이를 요약하면 아래와 같습니다.
장점단점
변화에 빠르게 대응 가능명확한 계획이 없을 경우 혼란 발생
짧은 주기(스프린트)로 신속한 제품 배포 가능프로젝트가 계속 확장될 위험
피드백을 바탕으로 지속적인 제품 개선 가능문서화가 부족할 수 있음
요구사항 변화에 유연하게 대처경험이 부족한 팀에게는 어려울 수 있음
제품 출시가 빨라 고객 만족도 상승반복적인 변경으로 인해 개발 일정이 지연될 가능성 있음

-이 외에도 다양한 장단점이 있을 수 있으나 이에대해서는 추후 Agile포스팅만을 다루는 게시글에서 보다 자세히 설명해드리도록 하겠습니다.


3. 소프트웨어 개발론 정리

  • 구조론적 방법론 : 체계적이고 단계적인 방법론이나 그 구조가 단순하여 복잡한 시스템에는 제한이 있습니다.
  • 정보공학적 방법론 : 데이터를 중심으로 대규모 정보 시스템을 개발하는 방법으로, 주로 대규모 프로젝트를 다루는 기업에서 사용합니다.
  • 객체지향 방법론 : 객체 개념을 바탕으로 복잡한 시스템을 단순화하고 재사용성을 높이는 방법론입니다.
  • 컴포넌트 기반 방법론 : 독립적인 컴포넌트를 통해 시스템을 구축하여 재사용성과 유지보수 효율성을 극대화하는 방법론입니다.
  • 애자일 방법론 : 반복적이고 점진적인 방법론으로 고객의 요청에 유연한 대처와 품질에대한 향상과 지속적인 개선이 가능하나 개발속도 지연, 문서화 부족등의 문제가 발생할 수 있습니다.


글을 마무리하며


이번 포스팅에서는 다양한 소프트웨어 개발 방법론에대해서 알아보았습니다. 다양한 개발방법론을 알고있으면 추후 프로그램을 개발할때 보다 체계적인 개발을 할 수 있을것이라고 생각합니다. 혹시 궁금하신점 혹은 잘못된점이 있으면 댓글 달아주시면 감사드리겠습니다! 다음 포스팅에서는 폭포수 모델에대해서 설명해드리도록 하겠습니다.

이만 가보겠습니다!

This post is licensed under CC BY 4.0 by the author.