소프트웨어 공학은 인류 이익 위해 소프트웨어 원리, 지식, 도구 활용해 제품 만드는 거임. IEEE 정의로는 개발, 운용, 유지보수 전체 생명주기 체계적으로 다루는 학문.
| 과정 | 설명 |
|---|---|
| 계획 | 문제 정의(무엇 개발할지), 법적/경제적/기술적 타당성 조사, 일정 계획(WBS 대표적) |
| 요구사항 정의 | 사용자 요구사항 문서화, 고객-개발사 계약서 역할 |
| 설계 | 시스템/소프트웨어 아키텍처, 클래스/DB/컴포넌트 설계 |
| 구현 | 실제 프로그래밍(전체 기간 20%) |
| 테스팅 | 요구사항 맞는지 점검(전체 기간 40%), 유닛/통합/시스템/인수 테스트 |
| 유지보수 | 사용 중 변경 적응, 프로그램 수정 |
전통적 순차 개발: 계획 → 요구분석 → 설계 → 구현 → 테스트 → 유지보수. 하향식 접근으로 대규모 모놀리식 시스템에 적합함.
장점
단점
경량화된 반복 개발: 분석-설계-구현-시험 순환, 1-2주 스프린트로 MVP 만들어 고객 피드백. 요구사항 변화 잦은 중소 프로젝트 적합. 스크럼 대표적
스크럼 참여자: PO, PM, 기획자, 개발자, 디자이너
- 폭포수 : 기획 → 설계 → 개발 → 테스트 → 유지보수 (대규모 모놀리식 시스템의 개발에 용이)
- 애자일 : 기획 → 설계 → 개발 → 기획 → 설계 → 개발 (운영 상황에 용이)
애자일+MSA가 트렌드. 모놀리식은 단일 코드베이스라 수정/배포 복잡함
| 비교 | 모놀리식 | MSA |
|---|---|---|
| 구조 | 모든 기능 하나의 큰 앱 | 독립 작은 서비스들(느슨한 결합) |
| 장점 | 통합 개발 쉬움 | 독립 개발/배포, 장애 격리, 스케일 아웃 |
| 단점 | 상호 영향 크고 배포 어려움(새벽/공휴일) | 복잡한 통신 관리 |
| 통신 | - | API(동기), 이벤트(비동기/Event Driven) |
MSA + 컨테이너(K8s)
애자일이 실전에서 아주 야무집니다 따봉