소프트웨어공학 관계도
이 관계도는 전체 토픽의 구조와 연결 관계를 보여줍니다. 학습 전에 전체 흐름을 파악하세요.
mindmap
root((소프트웨어공학<br/>136개 토픽))
소프트웨어공학 기초
소프트웨어공학
소프트웨어 위기
SDLC
전통적 방법론
SDLC
폭포수 모델
V-Model
나선형 모델
프로토타이핑 모델
반복적/점진적 개발
RAD
개발방법론 테일러링
애자일
애자일
애자일 선언문
스크럼
스크럼
스크럼 역할
스크럼 이벤트
스크럼 산출물
스토리 포인트
번다운 차트
Definition of Done
INVEST
칸반
XP
린 소프트웨어 개발
가치 흐름 매핑
확장 애자일 프레임워크
DevOps
DevOps
IaC
SRE
CI
CD
배포 전략
무중단 배포 전략
피처 플래그
피처 토글
DORA Metrics
Trunk-Based Development
요구공학
요구공학
요구사항 도출
요구사항 명세서
유스케이스
사용자 스토리
비기능 요구사항
요구사항 추적 매트릭스
요구사항 변경 관리
아키텍처/설계
소프트웨어 아키텍처
4+1 View
이벤트 기반 아키텍처
계층형 아키텍처
UML
UML
클래스 다이어그램
시퀀스 다이어그램
활동 다이어그램
상태 다이어그램
디자인 패턴
GoF 디자인 패턴 심화
SOLID 원칙
MVC / MVP / MVVM
DI / IoC
응집도와 결합도
Clean Architecture
아키텍처 평가 방법론
테스트
테스트 기본
소프트웨어 테스트
테스트 수준
블랙박스 테스트
경계값 분석 / 동등 분할
화이트박스 테스트
테스트 피라미드
E2E 테스트
테스트 커버리지
테스트 자동화
테스트 자동화
TDD
TDD 사이클
BDD
SIL/HIL 테스팅
고급 테스트
Property-Based Testing
계약 테스트(Contract Testing)
Mutation Testing
카오스 엔지니어링(Chaos Engineering)
소프트웨어 테스트 심화
품질
소프트웨어 품질
ISO 25010
CMMI
코드 리뷰
코드 리뷰 베스트 프랙티스
기술 부채
리팩토링
리팩토링 기법
3R
소프트웨어 영향평가
UX 설계 / 사용성 평가
Code Smell
Static Code Analysis
SW 안전성 분석
SAST/DAST
SonarQube
소프트웨어 메트릭
QC 7도구
정형 기법
형상관리
형상관리
형상 통제 위원회(CCB)
Git
Git 브랜치 전략
Monorepo vs Polyrepo
마이크로서비스/API
마이크로서비스 아키텍처
API Gateway
서킷 브레이커
API 설계
API 설계
API Versioning
OpenAPI
DDD
DDD
DDD 전략적/전술적 설계
Bounded Context / Context Map
12-Factor App
Event Storming
표준/인증
국제 표준
ISO 12207
ISO 15504
ISO 9001
IEEE 830
IEEE 1471
국내 표준/인증
소프트웨어진흥법
SW사업 대가산정 가이드
기능점수
COCOMO
GS인증
SP인증
전자정부 표준프레임워크
전자정부법
오픈소스 라이선스
프로그래밍 패러다임
프로그래밍 패러다임
객체지향 프로그래밍
함수형 프로그래밍
타입 시스템
리액티브 프로그래밍
DSL
최신 기법
페어 프로그래밍(Pair Programming)
몹 프로그래밍(Mob Programming)
기술 스파이크
로우코드/노코드
시민 개발자
조합성
내부 개발자 플랫폼(IDP)
그린 소프트웨어 엔지니어링주요 카테고리별 토픽 수
| 카테고리 | 토픽 수 | 주요 기술 |
|---|---|---|
| 소프트웨어공학 기초 | 2개 | 소프트웨어공학, 소프트웨어 위기 |
| SDLC - 전통적 방법론 | 8개 | 폭포수, V-Model, 나선형, 프로토타이핑, RAD, 테일러링 |
| SDLC - 애자일 | 14개 | 애자일, 스크럼, 칸반, XP, 린, VSM, 확장 애자일 |
| SDLC - DevOps | 11개 | DevOps, IaC, SRE, CI/CD, 배포 전략, 무중단 배포, DORA Metrics, Trunk-Based |
| 요구공학 | 8개 | 요구사항 도출, SRS, 유스케이스, 사용자 스토리, RTM, 변경 관리 |
| 아키텍처/설계 | 14개 | 아키텍처, 4+1 View, EDA, UML, 디자인 패턴, GoF, SOLID, MVC/MVP/MVVM, DI/IoC, Clean Architecture |
| 테스트 | 14개 | 테스트 수준, BVA/EP, TDD, BDD, SIL/HIL, 테스트 피라미드, E2E, 카오스 엔지니어링 |
| 품질 | 18개 | ISO 25010, CMMI, 코드 리뷰, 리팩토링, 3R, SAST/DAST, SonarQube, QC 7도구, 정형 기법 |
| 형상관리 | 5개 | Git, 브랜치 전략, CCB, Monorepo |
| 마이크로서비스/API | 10개 | MSA, API Gateway, 서킷 브레이커, DDD, 12-Factor App, Event Storming |
| 표준/인증 - 국제 | 5개 | ISO 12207, ISO 15504, IEEE 830 |
| 표준/인증 - 국내 | 9개 | GS인증, SP인증, 기능점수, COCOMO, 오픈소스 라이선스 |
| 프로그래밍 패러다임 | 6개 | OOP, FP, 타입 시스템, 리액티브, DSL |
| 최신 기법 | 8개 | 페어/몹 프로그래밍, 기술 스파이크, 로우코드/노코드, IDP, 그린 SW |
총 136개 토픽: (기존 90개 대비 46개 추가)
핵심 연관 관계
SDLC 진화
폭포수 모델 (순차적)
↓
V-Model (테스트 강조)
↓
나선형 모델 (위험 관리)
↓
반복적/점진적 개발
↓
애자일 (고객 중심, 빠른 피드백)
↓
DevOps (개발+운영 통합)
↓
SRE (신뢰성 엔지니어링)애자일 방법론
애자일 선언문 (원칙)
↓
스크럼 (프레임워크)
├─ 역할: Product Owner, Scrum Master, Dev Team
├─ 이벤트: Sprint, Daily Standup, Retrospective
└─ 산출물: Product Backlog, Sprint Backlog, Increment
칸반 (시각화, WIP 제한)
└─ 가치 흐름 매핑 (VSM)
XP (Extreme Programming)
├─ Pair Programming / Mob Programming
├─ TDD
└─ Continuous Integration
린 (낭비 제거)
└─ 가치 흐름 매핑 (VSM)
확장 애자일 (SAFe, LeSS, Nexus)DevOps 파이프라인
코드 작성
↓
CI (Continuous Integration)
├─ 자동 빌드
├─ 자동 테스트
└─ 코드 품질 검사 (SonarQube, SAST/DAST)
↓
CD (Continuous Delivery/Deployment)
├─ 배포 전략 (Blue-Green, Canary, Rolling)
├─ 무중단 배포
└─ 피처 플래그
↓
IaC (Terraform, Ansible)
↓
모니터링 / 피드백
├─ SRE (SLI/SLO/SLA)
└─ DORA Metrics요구공학 프로세스
요구사항 도출 (Elicitation)
├─ 인터뷰, 설문, 관찰
└─ 브레인스토밍
↓
요구사항 분석
├─ 유스케이스 (Use Case)
└─ 사용자 스토리 (User Story)
↓
요구사항 명세 (SRS)
└─ 비기능 요구사항
↓
요구사항 검증
└─ 요구사항 추적 매트릭스 (RTM)
↓
요구사항 변경 관리UML 다이어그램
구조 다이어그램 ├─ 클래스 다이어그램 (정적 구조) ├─ 객체 다이어그램 ├─ 컴포넌트 다이어그램 └─ 배치 다이어그램 행위 다이어그램 ├─ 시퀀스 다이어그램 (시간 순서) ├─ 유스케이스 다이어그램 ├─ 활동 다이어그램 (흐름) └─ 상태 다이어그램 (상태 전이)
아키텍처 패턴
소프트웨어 아키텍처 ├─ 4+1 View Model ├─ 계층형 아키텍처 (Layered) ├─ 이벤트 기반 아키텍처 (EDA) ├─ Clean Architecture └─ MVC / MVP / MVVM 아키텍처 평가 방법론 (ATAM, SAAM)
SOLID 원칙
S: Single Responsibility (단일 책임) O: Open-Closed (개방-폐쇄) L: Liskov Substitution (리스코프 치환) I: Interface Segregation (인터페이스 분리) D: Dependency Inversion (의존성 역전) └─ DI / IoC (의존성 주입)
테스트 레벨
단위 테스트 (Unit Test)
↓
통합 테스트 (Integration Test)
↓
시스템 테스트 (System Test)
↓
인수 테스트 (Acceptance Test)
테스트 피라미드: Unit(많음) → Integration(중간) → E2E(적음)테스트 주도 개발
TDD (Test-Driven Development) 1. Red: 실패하는 테스트 작성 2. Green: 테스트 통과하는 최소 코드 3. Refactor: 코드 개선 BDD (Behavior-Driven Development) └─ Given-When-Then (시나리오 기반)
품질 모델
ISO 25010 (SQuaRE) ├─ 기능 적합성 ├─ 성능 효율성 ├─ 호환성 ├─ 사용성 ├─ 신뢰성 ├─ 보안성 ├─ 유지보수성 └─ 이식성 SW 안전성 분석 ├─ FTA (결함 수 분석) ├─ FMEA (고장 모드 영향 분석) └─ HAZOP (위험성 및 운전 분석)
CMMI 성숙도 레벨
Level 1: Initial (초기)
↓
Level 2: Managed (관리)
↓
Level 3: Defined (정의)
↓
Level 4: Quantitatively Managed (정량 관리)
↓
Level 5: Optimizing (최적화)코드 품질 관리
기술 부채
├─ Code Smell (감지)
├─ Static Code Analysis (자동 분석)
│ ├─ SonarQube
│ └─ SAST/DAST
├─ 코드 리뷰 (수동 검토)
│ └─ 코드 리뷰 베스트 프랙티스
└─ 리팩토링 (개선)
└─ 리팩토링 기법
소프트웨어 메트릭 (정량 측정)
정형 기법 (수학적 검증)Git 브랜치 전략
Git Flow ├─ main (프로덕션) ├─ develop (개발) ├─ feature/* (기능) ├─ release/* (릴리스) └─ hotfix/* (긴급 수정) GitHub Flow (간소화) ├─ main └─ feature 브랜치 → PR → main Trunk-Based Development └─ main (짧은 수명 브랜치) Monorepo vs Polyrepo (저장소 전략)
마이크로서비스 아키텍처
모놀리식 (단일 배포 단위)
↓
마이크로서비스 (독립 배포)
├─ 서비스 분해 (Domain-Driven Design)
│ ├─ 전략적 설계 (Bounded Context, Context Map)
│ └─ 전술적 설계 (Entity, Aggregate, Repository)
├─ API Gateway
├─ 서킷 브레이커 (장애 격리)
├─ 서비스 간 통신 (REST, gRPC, 이벤트)
├─ Event Storming (도메인 발견)
└─ 12-Factor AppDDD (Domain-Driven Design)
전략적 설계 ├─ Bounded Context (경계 컨텍스트) ├─ Ubiquitous Language (공통 언어) └─ Context Map 전술적 설계 ├─ Entity, Value Object ├─ Aggregate (집합체) ├─ Repository └─ Domain Event Event Storming (도메인 이벤트 발견)
API 설계 진화
REST API
↓
API Versioning (v1, v2)
↓
OpenAPI (Swagger) - 명세 표준화
↓
API Gateway (라우팅/인증/제한)소프트웨어 표준
국제 표준 ├─ ISO 12207 (소프트웨어 생명주기) ├─ ISO 15504 (SPICE, 프로세스 평가) ├─ ISO 9001 (품질 경영) ├─ IEEE 830 (SRS 표준) └─ IEEE 1471 (아키텍처 기술) 국내 표준 ├─ GS인증 (Good Software) ├─ SP인증 (Software Process) ├─ 전자정부 표준프레임워크 └─ 전자정부법 규모 산정 ├─ 기능점수 (Function Point) └─ COCOMO (비용 산정) 오픈소스 라이선스 (GPL, MIT, Apache 등)
프로그래밍 패러다임
객체지향 프로그래밍 (OOP) ├─ 캡슐화, 상속, 다형성, 추상화 └─ SOLID 원칙 함수형 프로그래밍 (FP) ├─ 순수 함수, 불변성, 고차 함수 └─ 모나드, 펑터 리액티브 프로그래밍 └─ 비동기 스트림, 백프레셔 타입 시스템 (정적/동적, 강타입/약타입) DSL (도메인 특화 언어)
DORA Metrics
DevOps 성과 측정 4대 지표 ├─ Deployment Frequency (배포 빈도) ├─ Lead Time for Changes (변경 리드 타임) ├─ Change Failure Rate (변경 실패율) └─ Time to Restore Service (서비스 복구 시간)
최신 개발 기법
페어 프로그래밍 (2인 1조)
↓
몹 프로그래밍 (팀 전체)
기술 스파이크 (불확실성 해소)
로우코드/노코드 → 시민 개발자
조합성 (Composability)
내부 개발자 플랫폼 (IDP)
그린 소프트웨어 엔지니어링학습 순서 추천
1단계: 기초
1. 소프트웨어공학 개요
2. 소프트웨어 위기
3. SDLC
2단계: 전통적 방법론
4. 폭포수 모델
5. V-Model
6. 나선형 모델
7. 프로토타이핑 모델
8. 개발방법론 테일러링
3단계: 애자일
9. 애자일 선언문
10. 스크럼 (역할, 이벤트, 산출물)
11. 칸반
12. XP
13. 린 소프트웨어 개발, 가치 흐름 매핑
14. 확장 애자일 프레임워크 (SAFe, LeSS)
4단계: DevOps
15. DevOps 개념
16. CI/CD
17. 배포 전략, 무중단 배포
18. IaC, SRE
19. DORA Metrics, Trunk-Based Development
5단계: 요구공학
20. 요구사항 도출
21. 유스케이스, 사용자 스토리
22. SRS, 비기능 요구사항
23. 요구사항 추적 매트릭스, 변경 관리
6단계: 설계
24. 소프트웨어 아키텍처, 4+1 View
25. UML (클래스, 시퀀스, 활동, 상태)
26. 디자인 패턴, GoF 심화
27. SOLID 원칙, DI/IoC
28. 응집도와 결합도
29. MVC/MVP/MVVM
30. Clean Architecture, 계층형/이벤트 기반 아키텍처
31. 아키텍처 평가 방법론
7단계: 테스트
32. 테스트 수준, 테스트 피라미드
33. 블랙박스/화이트박스, 경계값 분석
34. TDD, BDD
35. E2E 테스트, 테스트 커버리지
36. SIL/HIL 테스팅
37. Property-Based Testing, Contract Testing, Mutation Testing
38. Chaos Engineering
8단계: 품질
39. 소프트웨어 품질, ISO 25010
40. CMMI
41. 코드 리뷰, 코드 리뷰 베스트 프랙티스
42. 기술 부채, Code Smell
43. 리팩토링, 리팩토링 기법
44. Static Code Analysis, SAST/DAST, SonarQube
45. 소프트웨어 메트릭, QC 7도구
46. SW 안전성 분석, 정형 기법
47. 3R, 소프트웨어 영향평가
48. UX 설계 / 사용성 평가
9단계: 형상관리
49. 형상관리, CCB
50. Git, Git 브랜치 전략
51. Monorepo vs Polyrepo
10단계: 마이크로서비스/API
52. 마이크로서비스 아키텍처
53. API Gateway, 서킷 브레이커
54. DDD, 전략적/전술적 설계, Bounded Context
55. 12-Factor App
56. API 설계, API Versioning, OpenAPI
57. Event Storming
11단계: 표준/인증
58. ISO 12207, ISO 15504, ISO 9001
59. IEEE 830, IEEE 1471
60. GS인증, SP인증
61. 기능점수, COCOMO
62. 전자정부 표준프레임워크, 전자정부법
63. 소프트웨어진흥법, SW사업 대가산정 가이드
64. 오픈소스 라이선스
12단계: 프로그래밍 패러다임
65. 프로그래밍 패러다임 개요
66. 객체지향 프로그래밍
67. 함수형 프로그래밍
68. 타입 시스템
69. 리액티브 프로그래밍
70. DSL
13단계: 최신 기법
71. 페어 프로그래밍, 몹 프로그래밍
72. 기술 스파이크
73. 로우코드/노코드, 시민 개발자
74. 조합성, 내부 개발자 플랫폼 (IDP)
75. 그린 소프트웨어 엔지니어링
시험 출제 포인트
고빈도 주제
- •폭포수 vs 애자일: 차이점, 장단점
- •스크럼: 역할(PO, SM, Dev Team), 이벤트(Sprint, Daily, Retrospective)
- •CI/CD: 개념, 차이점, 도구
- •유스케이스 vs 사용자 스토리: 형식, 사용 시점
- •SOLID 원칙: 5가지 원칙 의미
- •TDD: Red-Green-Refactor 사이클
- •Git 브랜치 전략: Git Flow, GitHub Flow, Trunk-Based
- •개발방법론 테일러링: 기준, 절차, 적용 사례
중요 개념
- •V-Model: 테스트와 개발 단계 매핑
- •나선형 모델: 위험 분석 중심
- •칸반: WIP 제한, 풀 시스템
- •요구사항 명세서 (SRS): IEEE 830 표준
- •요구사항 추적 매트릭스 (RTM): 추적성 확보
- •UML: 클래스, 시퀀스, 활동, 상태 다이어그램
- •테스트 레벨: 단위→통합→시스템→인수
- •CMMI: 5단계 성숙도 레벨
- •응집도와 결합도: 높은 응집도, 낮은 결합도
- •4+1 View: 논리뷰, 개발뷰, 프로세스뷰, 물리뷰, 시나리오
- •DI/IoC: 의존성 주입, 제어 역전
- •MVC/MVP/MVVM: UI 아키텍처 패턴 비교
고급 주제
- •마이크로서비스: 서비스 분해, API Gateway, 서킷 브레이커
- •DDD: Bounded Context, Aggregate, Event Storming
- •12-Factor App: 12가지 원칙
- •배포 전략: Blue-Green, Canary, Rolling, 무중단 배포
- •피처 플래그: 기능 토글, A/B 테스트
- •DORA Metrics: DevOps 성과 측정
- •Chaos Engineering: 장애 주입 테스트
- •IaC: Terraform, Ansible, 선언적 vs 명령적
- •SRE: SLI/SLO/SLA, Error Budget
- •Clean Architecture: 의존성 규칙
- •이벤트 기반 아키텍처: EDA, 이벤트 소싱
- •아키텍처 평가: ATAM, SAAM
테스트 심화
- •테스트 피라미드: Unit → Integration → E2E
- •경계값 분석 / 동등 분할: 테스트 케이스 설계
- •SIL/HIL: 시뮬레이션 기반 테스트
- •Property-Based Testing: 속성 기반 자동 테스트
- •Contract Testing: API 계약 검증
- •Mutation Testing: 테스트 품질 측정
- •테스트 커버리지: 구문, 분기, 조건 커버리지
품질/코드 관리
- •기술 부채: 원인, 관리, 상환 전략
- •Code Smell: 감지 패턴, 리팩토링 연계
- •SAST/DAST: 보안 테스트 자동화
- •SonarQube: 정적 분석 도구
- •3R: 역공학, 재공학, 재사용
- •SW 안전성 분석: FTA, FMEA, HAZOP
- •정형 기법: Z 명세, Petri Net
- •소프트웨어 메트릭: 복잡도, 크기, 품질 측정
표준/인증
- •ISO 12207: 소프트웨어 생명주기 프로세스
- •ISO 25010: 품질 특성 8가지
- •GS인증: Good Software 인증
- •기능점수: FP 기반 규모 산정
- •COCOMO: 비용 산정 모델
- •전자정부 표준프레임워크: 공통 컴포넌트
- •오픈소스 라이선스: GPL, MIT, Apache 차이
프로그래밍 패러다임
- •객체지향 vs 함수형: 패러다임 비교
- •타입 시스템: 정적/동적, 강타입/약타입
- •리액티브 프로그래밍: 비동기 스트림, 백프레셔
- •DSL: 내부/외부 DSL, 적용 사례
최신 기법
- •Trunk-Based Development: 짧은 브랜치 수명
- •페어/몹 프로그래밍: 협업 개발 기법
- •Static Code Analysis: 정적 분석 도구
- •기술 스파이크: 불확실성 해소 기법
- •로우코드/노코드: 시민 개발자, 플랫폼
- •내부 개발자 플랫폼 (IDP): 플랫폼 엔지니어링
- •그린 소프트웨어: 탄소 효율적 소프트웨어
마인드맵 활용 팁:
- •SDLC는 폭포수→애자일→DevOps→SRE 진화 관점에서 학습
- •스크럼은 역할-이벤트-산출물 3축으로 암기
- •SOLID 원칙은 예제 코드와 함께 이해
- •TDD는 실제 코드 작성으로 연습
- •Git 브랜치 전략은 프로젝트 규모별 선택 기준 파악
- •마이크로서비스는 모놀리식과 비교하여 학습
- •표준/인증은 국제(ISO/IEEE)와 국내(GS/SP) 구분
- •테스트는 레벨(단위→인수)과 피라미드(Unit→E2E) 함께 이해
- •품질 관리는 감지(Code Smell)→분석(Static Analysis)→개선(Refactoring) 흐름으로 학습
- •프로그래밍 패러다임은 OOP vs FP 비교 중심으로 정리
- •최신 기법은 기존 개념과 연계하여 출제 트렌드 파악