바닥코딩

소프트웨어 개발방법론의 종류 본문

방법론과 DevOps/방법론&협업관리

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

개발공부개발공부 2022. 8. 30. 23:51

소프트웨어 개발방법론

  소프트웨어 개발방법론이란 소프트웨어를 개발하는 방법에 대한 이론으로서 소프트웨어 개발과정, 절차, 방법, 산출물, 기법 도구들을 체계적으로 정리하고 표준화시킨 것을 의미합니다.

 산업화가 진행되고 IT 산업이 육성이 활발하게 진행이 되면서, 소프트웨어 개발의 역사는 어느덧 1960년대를 시작으로해  현재 2020년대까지 현재진행형으로 발전하고 있습니다. 역사적으로 어떤 방법론이 유행을 했는지 그 배경이 무엇인지를 알아보기에는 학문적으로 깊이 파고들어야할 주제이기 때문에 해당 포스트 에서는 소프트웨어 개발 방법론의 종류를 알아보고 다음 포스트 부터는 현재 많은 기업들에서 채택하고 있는 개발모형인 폭포수와 애자일에 대해 다뤄보려고 합니다.

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

  개발 방법론의 종류는 크게 구조적 방법론, 정보공학 방법론, 객체지향 방법론, CBD 방법론, 애자일 방법론 으로 나눌 수 있습니다(물론 5가지 방법론의 단점을 보완하거나 각가의 방법론의 장점을 융합한 방법론도 존재하지만 해당포스트 에서는 논외로 취급)

  1.구조적 방법론 

구조적 방법론은 요구사항분석, 구조적 분석, 구조적 설계, 구조적 프로그래밍 까지 총 4가지의 단계로 이루어져 있습니다. 각각의 내용을 살표보자면 

  1. 요구사항 분석 : 고객이 원하는 요구사항을 명세화 하는 것
  2. 구조적 분석 : 고객이 원하는 기능/시스템환경/데이터를 종합하여 데이터의 흐름도(flow chart)를 작성하는 것 
  3. 구조적 설계 : 모듈 중심 설계 단계, 목적, 
  4. 구조적 프로그래밍 :순차, 선택, 반복의 논리 구조 구성으로  프로그램 복잡성을 최소화

단계별로 이러한 과정을 통해 산출물을 만들어 내는 방법론 입니다.

2. 정보공학 개발 방법론 

 정보공학 개발 방법론은 비즈니스 시스템 규모 성장과 소프트웨어 공학 발전에 따라 등장한 방법론으로 기업 또는 기업의 주요부분을 계획, 분석, 설계, 및 구축에 정형화된 기법들을  상호 연관성 있게 통합, 적용하는 데이터 중심 방법론을 의미합니다.

3.객체지향 방법론

 객체지향 개발 방법론에서는 분석, 설계, 구현의 전 과정이 객체 중심으로 진행되어 집니다.  데이터를 저장하는 테이블도 따로 설계하지 않고 데이터 객체로 설계합니다. 데이터는 결국 데이터베이스에 저장되는데 만일 데이터베이스가 객체형 DB라면 별다른 변환과정 없이 데이터 객체를 그대로 저장하면 되지만, 관계형 DB를 사용한다면 객체를 관계형 테이블로 변환하는 과정이 필요니다. 이 과정을 객체-관계 매핑(Object Relation Mapping)이라 하며 현재 대부분의 회사에서 관계형 데이터베이스를 사용하고 있기 때문에 객체-관계 매핑은 필수적인 과정이라 할 수 있겠습니다.

4.CBD 개발 방법론

CBD 개발방법론은 개발된 소프트웨어 컴포넌트를 조립, 시스템을 개발하여 객체지향 모델의 단점인 소프트웨어 재사용성을 극대화한 방법론입니다. 

이는 크게 컴포넌트를 개발하는 단계와, 개발된 컴포넌트를 사용하여 개발을 진행하는 단계로 나눌 수 있는데, 이 과정을 반복하여  컴포넌트를 개발하고 개발한 컴포넌트를 조립하는 단계를 거쳐 개발을 진행하는 방법으로 볼 수 있습니다.

5.애자일 방법론

애자일은 기존 방법론들이 너무 절차를 중요시 하기 때문에 변화에 대응하기 어려웠던 단점을 개선하기 위해 등장한 방법론 입니다

 

먼저 애자일에서는 요구사항을 분석하여 우선순위가 높은 요구사항을 먼저 개발하고, 개발된 부분에 대해 실행하는 모습을 계속 만들어 내어 고객의 평가를 받고 고객의 요구사항과 개선사항을 반영해 다음 요구사항 개발에 참고하게 됩니다 이러한 과정을 계속 반복하여 개발 범위를 점진적으로 늘려 발전하는 소프트웨어를 계속 보여주고 요구사항에 대한 변경을 적극적으로 수용한 산출물을 만들어 냅니다.

'방법론과 DevOps > 방법론&협업관리' 카테고리의 다른 글

화면설계와 프로토타이핑  (1) 2022.09.22
폭포수 vs 애자일  (0) 2022.09.05
소프트웨어 개발 방법론  (0) 2022.03.22