본문 바로가기
CS-SQL-DB

[정보처리기사] 소프트웨어 개발방법론의 종류와 특징

by Jann 2022. 4. 18.
728x90

소프트웨어 개발방법론

[정보처리기사] 소프트웨어 개발방법론의 종류와 특징

SDLC : 시스템의 요구분석부터 유지보수(고도화)까지 전 공정을 체계화한 절차

  • SDLC 프로세스 : 요구사항 분석 → 설계(도메인분석, DB, 아키텍처 등) → 구현 → 테스트 → 유지보수(환경에 맞게 소프트웨어 수정 및 관리) #요설구테유

 

소프트웨어 개발방법과 종류

1. 폭포수 모델 Waterfall Model :

가장 오래된 모델로 선형 순차적 모형으로 고전적 생명주기 모형이라고도 한다. 모형의 적용 경험과 성공 사례가 많으며 단계별 정의화 산출물이 명확하나 요구사항 변경이 어렵다.

2. 프로토타이핑 모델 Prototyping Model :

고객이 요구한 주요 기능을 프로토타입(시제품)으로 구현하여, 고객의 피드백을 반영해 소프트웨어를 만들어가는 모델이다. 발주자나 개발자 모두에게 공동의 참조 모델을 제공하고, 구현 단계의 구현 골격을 만드는 과정이다.

3. 나선형 모델 Spiral Model :

시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델로 → 계획 및 정의 - 위험 분석 - 개발 - 고객 평가의 절차를 가진다. #계위개고

4. 반복적 모델 :

구축 대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 SDLC 모델로 사용자 요구사항 일부분 혹은 제품 일부분을 반복적으로 개발해 최종 시스템으로 완성한다.

 

소프트웨어 개발방법론

1. 구조적 방법론 :

전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론으로 프로세스 중심의 하향식 방법론이다. 구조적 프로그래밍 표현을 위해 나씨-슈나이더만 차트를 사용한다.

*나씨-슈나이더만 차트 :

순차처리구조, 선택구조, 반복구조 등 논리 기술에 중점을 둔 도형식 표현 방법으로 시각적으로 명확히 식별하는데 적합하다.

 

2. 정보공학 방법론:

정보시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론이다.

 

3. 객체지향(OOA : Object Oriented Analysis) 방법론 :

객체라는 기본 단위로 시스템을 분석 및 설계하며 복잡한 현실 세계를 사람이 이해하는 방식으로 시스템에 적용하는 방법론이다. 객체, 클래스, 메시지를 사용하며 요구사항을 분석해 요구된 문제와 관련된 모든 클래스(객체), 속성과 연상, 관계를 정의하여 모델링하는 기법이다.

3-1) OOSE (Object Oriented SW Engineering) by 야콥슨 : 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용하는 방법론이다. 분석 - 설계 - 구현 단계로 구성되며 기능적 요구사항 중심의 시스템이다.

3-2) OMT(Object Modeling Technology) by 럼바우 : 그래픽 표기법을 이용해 소프트웨서 구성요소를 모델링하는 방법론으로 분석 절차는 객체모델링 - 동적모델링 - 기능모델링 순서로 진행된다. 

 

OMT모델링 #객동기

-객체모델링 Object Modeling : 정보모델링이라고도 하며 시스템에서 요구하는 객체를 찾고, 객체들 간의 관계를 정의하여 ER 다이어그램을 만드는 과정까지의 모델링으로 객체 다이어그램을 활용하여 표현한다.

-동적모델링 Dynamic Modeling : 시간의 흐름에 따라 객체를 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현하는 모델링으로 상태 다이어그램을 활용하여 표현한다.

-기능모델링 Functional Modeling : 프로세스들의 자료 흐름 중심으로 처리 과정을 표현하는 모델링으로 자료흐름도(DFD)를 활용하여 표현한다.

 

3-3) OOD(Object Oriented Design) by 부치 : 설계 문서화를 강조해 다이어그램 중심으로 개발하는 방법론으로 분석과 설계의 분리가 불가능하고, 분석하는데 이용된 객체 모델의 설계 시 적용한다.

 

4. 컴포넌트기반 방법론 CBD :

컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론으로 개발 기간 단축으로 인한 생산성 향상과 새로운 기능 추가가 쉽고, 소프트웨어 재사용이 가능하다.

5. 애자일 방법론 :

절차보다 사람 중심으로 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발방법론이다.

기존 개발방법론의 한계 극복하기 위해 등장했으며, 개발과 함께 즉시 피드백을 받아 유동적으로 개발한다.

- 프로젝트 요구사항은 기능 중심으로 정의하고, 절차와 도구보다 개인과 소통을 중요하게 생각한다.

- 작업 계획을 짧게 세워 요구 변화에 유연하고 신속하게 대응할 수 있으며 소프트웨어가 잘 실행되는데 가치를 둔다.

- 고객과의 피드백을 중요하게 생각한다.

 

5-1) XP(엑스피) 익스트림 프로그래밍 :eXtreme Programming, XP)

1-3주의 반복(Iteration) 개발 주기를 가지는 소프트웨어 개발 방법론

 

- XP의 5가지 가치 : 용기, 단순성, 피드백, 존중 #용단의피존

- XP의 12가지 기본원리

(1). 짝(pair) 프로그래밍 : 개발자 둘이서 짝으로 코딩하는 원리

(2). 공동 코드 소유 : 시스템에 있는 코드는 누구든지 언제라도 수정 가능하다는 원리

(3). 지속적 통합(CI) : 매일 여러번씩 소프트웨어를 통합하고 빌드해야한다는 원리

(4). 계획 세우기 : 고객이 요구하는 비즈니스 가치 정의, 개발자가 필요한 것은 무엇이며 지연될 수 있는지를 알려주어야 한다는 원리

(5). 작은 릴리즈 : 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다는 원리

(6). 메타포어 : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리

(7). 간단한 디자인 : 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리

(8). 테스트 기반 개발 TDD : 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리

(9). 리팩토링 : 프로그램의 기능을 바꾸지 않으면서 중복제거, 단수화 등을 위해 시스템을 재구성한다는 원리

(10). 40시간 작업 : 개발자가 피곤으로 인해 실수하지 않도록 일주일에 40시간 이상 일하지 말아야 한다는 원리

(11). 고객상주 : 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀타임으로 상주시켜야 한다는 원리

(12). 코드표준 : 효과적인 공동 작업을 위해 모든 코드에 대한 코딩 표준을 정의해야 한다는 원리

 

5-2) 스크럼 :

매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론으로 백로그(요구사항), 스프린트(반복기간), 스크럼미팅(데일리미팅), 스크럼마스터(관리자), 스프린트 회고 등이 주요 요소다.

 

5-3) 린 :

도요타 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해 낭비 요소를 제거하여 품질을 향상기킨 방법론

 

6. 제품 계열 방법론 :

특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법론으로 임베디드 소프트웨어를 작성하는데 유용하다. 영역(Domain) 공학과 응용(Application) 공학으로 구분된다.

728x90

댓글