본문 바로가기
[KT AIBLE SCHOOL]에이블스쿨

[KT 에이블스쿨] 05.20 온프레미스 아키텍처 - 소프트웨어

by 오동일지 2025. 5. 20.

sw 개발 방법론

 

1. 절차지향형 개발 방법론

- 문제를 해결하기 위한 절차(Flow)를 중심으로 구성

- 데이터 처리보다 기능 흐름 중심

- 입력(Input) → 처리(Process) → 출력(Output) 구조

- 유지보수 및 기능 추가의 어려움 발생

 

2. 객체지향형 개발 방법론

- 데이터와 기능을 하나의 단위로 묶어 설계하는 방식

-시스템을 독립적인 객체 간의 상호작용으로 구성

- 각 객체가 명확한 책임을 가질 수 있도록 분리

- 재사용 가능한 구조 설계 가능

 

3. 함수형 개발 방법론

- 프로그램을 상태 변화 없이 순수 함수의 조합으로 구성하는 방식

- ‘무엇을’ 할지 기술 → 선언형 접근 방식

- 불변성(Immutable): 변수 상태 변경 없이 새로운 값 반환

- 순수 함수 중심 구조 → 테스트 및 디버깅 용이

- 함수 간 결합도 낮음 → 코드 유지보수 용이


개발 프로세스 모델

 

1. 폭포수 모델(Waterfall Model)

- 선형적으로 순차 진행

- 요구사항 → 설계 → 구현 → 테스트 → 유지보수

- 문서화 중심 → 단계별 산출물과 계획이 명확

- 요구사항 변경에 취약

- 비효율적인 반복 대응


2. 애자일(Agile) 개발 방법론

- 변화에 유연하게 대응하는 반복적·점진적 개발 방식

- 소규모 단위로 나누어 빠르게 구현

- 요구사항을 개발 과정 중 지속적으로 반영

핵심 가치(4대 원칙)

- 프로세스와 도구보다 → 개개인과의 상호작용

- 방대한 문서보다 → 작동하는 소프트웨어

- 계약 협상보다 → 고객과의 협업

- 계획 수립보다 → 변화에 대한 대응

 

유형 1) 스크럼(Scrum)

- 짧은 반복 주기(Sprint)를 기반으로 기능 단위 개발과 피드백을 반복 수행

- 2~4주 단위의 짧은 개발 주기

- 계획 → 개발 → 테스트 → 회고 과정을 반복

- 매 주기마다 실행 가능한 결과물을 도출

 

유형 2) 익스트림 프로그래밍(XP: eXtreme Programming)

- 소규모 팀이 요구사항 변화에 유연하게 대응

- Pair Programming: 두 명의 개발자가 하나의 작업을 함께 진행하며 코드 품질 향상

- 테스트 주도 개발(TDD): 기능 구현 전 테스트 코드를 먼저 작성해 오류 예방

- 지속적 통합(CI): 코드 변경 사항을 즉시 통합하고 자동화된 테스트 수행

- 작은 릴리즈(Small Releases): 기능 단위의 자주 배포를 통해 고객 피드백을 빠르게 반영

- 공유 코드베이스: 모든 팀원이 코드에 접근 가능하도록 하여 협업 강화