[SW공학] 개발방법론 및 아키텍쳐

이지연·2025년 12월 3일

소프트웨어 공학 정의

소프트웨어 공학은 인류 이익 위해 소프트웨어 원리, 지식, 도구 활용해 제품 만드는 거임. IEEE 정의로는 개발, 운용, 유지보수 전체 생명주기 체계적으로 다루는 학문.

과정설명
계획문제 정의(무엇 개발할지), 법적/경제적/기술적 타당성 조사, 일정 계획(WBS 대표적)
요구사항 정의사용자 요구사항 문서화, 고객-개발사 계약서 역할
설계시스템/소프트웨어 아키텍처, 클래스/DB/컴포넌트 설계
구현실제 프로그래밍(전체 기간 20%)
테스팅요구사항 맞는지 점검(전체 기간 40%), 유닛/통합/시스템/인수 테스트
유지보수사용 중 변경 적응, 프로그램 수정

폭포수 모델 (Waterfall)

전통적 순차 개발: 계획 → 요구분석 → 설계 → 구현 → 테스트 → 유지보수. 하향식 접근으로 대규모 모놀리식 시스템에 적합함.

장점

  • 프로젝트 세분화로 진척/인력 관리 쉬움
  • 경험 축적 많고 man/month 비용 산정 용이

단점

  • 초기 요구사항 구체화 어려움
  • 후반 오류 발견 시 수정 힘듦
  • 순차라 현실적이지 않음

애자일 방법론

경량화된 반복 개발: 분석-설계-구현-시험 순환, 1-2주 스프린트로 MVP 만들어 고객 피드백. 요구사항 변화 잦은 중소 프로젝트 적합. 스크럼 대표적

스크럼 참여자: PO, PM, 기획자, 개발자, 디자이너

  • 매일 스크럼 미팅으로 이슈 논의, 스프린트별 회고
  • JIRA 툴로 에픽(큰 업무), STORY(고객 가치 기능), TASK(기술 업무), 스프린트 관리
  • 진행: 에픽/작업 생성 → 스프린트 추가 → TO DO → IN PROGRESS → DONE
  • GitHub 연동: 커밋 메시지에 JIRA 번호 붙이면 자동 링크
  • 폭포수 : 기획 → 설계 → 개발 → 테스트 → 유지보수 (대규모 모놀리식 시스템의 개발에 용이)

  • 애자일 : 기획 → 설계 → 개발 → 기획 → 설계 → 개발 (운영 상황에 용이)

모놀리식 vs MSA 아키텍처

애자일+MSA가 트렌드. 모놀리식은 단일 코드베이스라 수정/배포 복잡함

비교모놀리식MSA
구조모든 기능 하나의 큰 앱독립 작은 서비스들(느슨한 결합)
장점통합 개발 쉬움독립 개발/배포, 장애 격리, 스케일 아웃
단점상호 영향 크고 배포 어려움(새벽/공휴일)복잡한 통신 관리
통신-API(동기), 이벤트(비동기/Event Driven)

MSA + 컨테이너(K8s)

  • Docker 컨테이너로 경량화
  • K8s: 자동 배포/롤아웃, 확장, health check, 서비스 디스커버리
profile
Eazy하게

3개의 댓글

comment-user-thumbnail
2025년 12월 4일

애자일이 실전에서 아주 야무집니다 따봉

1개의 답글
comment-user-thumbnail
2025년 12월 11일

이지연이 저를 괴롭힌다는 내용으로 지라 상신했습니다
기다리세요 sal in ma

답글 달기