--- id: P-REINFORCE-WIKI-202844CD category: "10_Wiki/πŸ’‘ Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['software-architecture-recovery-(μ†Œν”„νŠΈμ›¨μ–΄-μ•„ν‚€ν…μ²˜-볡ꡬ-/-역곡학)', 'software-architecture-erosion', 'static-program-analysis', 'software-intelligence', 'architecture-conformance-checks', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Software Architecture Recovery (μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 볡ꡬ / 역곡학)]] ## πŸ“Œ Brief Summary Software Architecture Recovery(μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 볡ꡬ λ˜λŠ” μž¬κ΅¬μ„±, 역곡학)λŠ” μ‹œμŠ€ν…œμ˜ κ΅¬ν˜„λ¬Όκ³Ό λ¬Έμ„œ λ“± κ°€μš©ν•œ μ •λ³΄λ‘œλΆ€ν„° μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ˜ μ•„ν‚€ν…μ²˜λ₯Ό μ°Ύμ•„λ‚΄κ³  μž¬κ΅¬μ„±ν•˜λŠ” 방법, 기술 및 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ˜λ―Έν•œλ‹€ [1]. 이 과정은 주둜 μ•„ν‚€ν…μ²˜ 침식(Architecture Erosion)이 λ°œμƒν–ˆκ±°λ‚˜ κ΄€λ ¨ λ¬Έμ„œκ°€ λ„ˆλ¬΄ μ˜€λž˜λ˜μ–΄ μ“Έλͺ¨μ—†μ–΄μ‘Œμ„ λ•Œ 정보에 μž…κ°ν•œ μ˜μ‚¬κ²°μ •μ„ 내리기 μœ„ν•΄ ν•„μˆ˜μ μœΌλ‘œ μš”κ΅¬λœλ‹€ [1]. μ†Œν”„νŠΈμ›¨μ–΄ μΈν…”λ¦¬μ „μŠ€(Software Intelligence) μ‹€μ²œμ˜ μΌν™˜μœΌλ‘œ 닀루어지며 정적 ν”„λ‘œκ·Έλž¨ 뢄석(Static Program Analysis) λ“±μ˜ 역곡학 기법이 ν™œμš©λœλ‹€ [1]. ## πŸ“– Core κΈ°Content * **μ •μ˜ 및 λͺ©μ :** μ•„ν‚€ν…μ²˜ λ³΅κ΅¬λŠ” μ‚¬μš© κ°€λŠ₯ν•œ κ΅¬ν˜„ μ½”λ“œ 및 λ¬Έμ„œλ₯Ό 기반으둜 κΈ°μ‘΄ μ†Œν”„νŠΈμ›¨μ–΄μ˜ μ•„ν‚€ν…μ²˜ ꡬ쑰λ₯Ό λ‹€μ‹œ λ°ν˜€λ‚΄λŠ” 과정이닀 [1]. 과거의 λ¬Έμ„œκ°€ λ‚‘μ•˜κ±°λ‚˜(obsolete) μ΅œμ‹  μƒνƒœλ₯Ό λ°˜μ˜ν•˜μ§€ λͺ»ν•  λ•Œ 합리적인 μœ μ§€λ³΄μˆ˜ 및 κ΅¬ν˜„ 결정을 내리기 μœ„ν•΄ μˆ˜ν–‰λœλ‹€ [1]. * **λ°œμƒ 원인 (μ•„ν‚€ν…μ²˜ 침식):** 볡ꡬ가 ν•„μš”ν•΄μ§€λŠ” 주된 원인은 섀계 λ‹Ήμ‹œ μ˜λ„ν–ˆλ˜ μ•„ν‚€ν…μ²˜μ™€ μ‹€μ œ κ΅¬ν˜„ 및 μœ μ§€λ³΄μˆ˜ κ³Όμ •μ—μ„œ λ³€ν˜•λœ μ•„ν‚€ν…μ²˜ 사이에 점진적인 격차가 λ°œμƒν•˜λŠ” 'μ•„ν‚€ν…μ²˜ 침식(Software Architecture Erosion)' ν˜„μƒ λ•Œλ¬Έμ΄λ‹€ [1, 2]. κ΅¬ν˜„ 및 μœ μ§€λ³΄μˆ˜ 결정이 초기 섀계 λΉ„μ „μ—μ„œ λ²—μ–΄λ‚  λ•Œ μ΄λŸ¬ν•œ 침식이 κ°€μ†ν™”λœλ‹€ [1]. * **ν™œμš© 기술:** μ•„ν‚€ν…μ²˜λ₯Ό λ³΅κ΅¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” ꡬ체적인 μ‹€μ²œ 방법 쀑 ν•˜λ‚˜λ‘œ μ†ŒμŠ€ μ½”λ“œλ₯Ό ꡬ쑰적으둜 λΆ„μ„ν•˜λŠ” '정적 ν”„λ‘œκ·Έλž¨ 뢄석(Static Program Analysis)'이 μžˆλ‹€ [1]. * **μ†Œμ† μ˜μ—­:** μ΄λŸ¬ν•œ 역곡학 및 μ•„ν‚€ν…μ²˜ 볡ꡬ 과정은 더 넓은 μ˜λ―Έμ—μ„œ 'μ†Œν”„νŠΈμ›¨μ–΄ μΈν…”λ¦¬μ „μŠ€(Software Intelligence)' ν”„λž™ν‹°μŠ€κ°€ λ‹€λ£¨λŠ” 주제의 μΌλΆ€λ‘œ ν¬ν•¨λœλ‹€ [1]. ## βš–οΈ Trade-offs & Caveats μ†ŒμŠ€μ— μ•„ν‚€ν…μ²˜ 볡ꡬ κ³Όμ • μžμ²΄μ— λŒ€ν•œ ꡬ체적인 기술적 μ œμ•½μ΄λ‚˜ λ°˜λŒ€ κΈ‰λΆ€(Trade-off)에 λŒ€ν•œ μƒμ„Έν•œ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. λ‹€λ§Œ, μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό μœ λ°œν•˜λŠ” κ·Όλ³Έ 원인인 'μ•„ν‚€ν…μ²˜ 침식(Erosion)'κ³Ό κ΄€λ ¨ν•˜μ—¬, 이λ₯Ό λ°©μΉ˜ν•  경우 μ†Œν”„νŠΈμ›¨μ–΄ μ„±λŠ₯ μ €ν•˜, μ§„ν™” λΉ„μš©(Evolutionary Costs)의 μƒλ‹Ήν•œ 증가, 그리고 μ „λ°˜μ μΈ μ†Œν”„νŠΈμ›¨μ–΄ ν’ˆμ§ˆμ˜ ν•˜λ½μ΄λΌλŠ” μ‹¬κ°ν•œ λΆ€μž‘μš©μ΄ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. λ”°λΌμ„œ 였래된 λ¬Έμ„œμ™€ λ³€μ§ˆλœ μ•„ν‚€ν…μ²˜λ₯Ό κ·ΈλŒ€λ‘œ μœ μ§€ν•˜λŠ” 것과 역곡학을 톡해 이λ₯Ό 볡ꡬ 및 λ¦¬νŒ©ν† λ§ν•˜λŠ” 데 λ“œλŠ” λΉ„μš©(수고) μ‚¬μ΄μ˜ νŠΈλ ˆμ΄λ“œμ˜€ν”„λ₯Ό κ³ λ €ν•˜μ—¬ μ‹ μ†ν•˜κ²Œ 볡ꡬ와 μž¬μ„€κ³„λ₯Ό μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€ [1, 3]. ## πŸ”— Knowledge Connections ### Related Concepts #### [μ•„ν‚€ν…μ²˜ 뢄석 및 진단 기술] - [[Software Architecture Erosion]] - μ—°κ²° 이유: μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό μˆ˜ν–‰ν•΄μ•Όλ§Œ ν•˜λŠ” 핡심 μ›μΈμœΌλ‘œ, μ‹œκ°„μ΄ μ§€λ‚˜λ©΄μ„œ μ˜λ„λœ 섀계와 μ‹€μ œ κ΅¬ν˜„ 간에 λ°œμƒν•˜λŠ” 격차 ν˜„μƒμ΄λ‹€ [1, 2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ‹œμŠ€ν…œμ΄ 처음 섀계와 λ‹€λ₯΄κ²Œ μ™œ λ³€μ§ˆλ˜λŠ”μ§€, 그리고 λ¬Έμ„œμ™€ κ΅¬ν˜„μ΄ μ–΄κΈ‹λ‚˜λŠ” μƒν™©μ—μ„œ μ–Έμ œ 역곡학을 ν†΅ν•œ μ•„ν‚€ν…μ²˜ 볡ꡬ가 ν•„μš”ν•œμ§€ κ·Έ 타이밍과 λ‹Ήμœ„μ„±μ„ 이해할 수 μžˆλ‹€ [1, 2]. #### [κ΅¬ν˜„/ν™œμš© 도ꡬ] - [[Static Program Analysis]] - μ—°κ²° 이유: μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό μœ„ν•΄ μ½”λ“œ λ ˆλ²¨μ—μ„œ ꡬ쑰λ₯Ό 역좔적할 λ•Œ μ‚¬μš©λ˜λŠ” μ‹€μ§ˆμ μΈ 뢄석 기법이닀 [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 섀계 λ¬Έμ„œκ°€ μœ μ‹€λ˜μ—ˆκ±°λ‚˜ λΆ€μ •ν™•ν•œ μƒν™©μ—μ„œ μ‹€μ œ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ΄μš©ν•΄ μ–΄λ–»κ²Œ μ‹œμŠ€ν…œμ˜ μ•„ν‚€ν…μ²˜λ₯Ό 기술적으둜 μž¬κ΅¬μ„±ν•  수 μžˆλŠ”μ§€ 방법둠을 νŒŒμ•…ν•  수 μžˆλ‹€ [1]. - [[Software Intelligence]] - μ—°κ²° 이유: 정적 ν”„λ‘œκ·Έλž¨ 뢄석 및 μ•„ν‚€ν…μ²˜ 볡ꡬ 과정을 ν¬κ΄„ν•˜λŠ” 더 넓은 κ°œλ…μ˜ μ‹€μ²œ μ˜μ—­μ΄λ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ•„ν‚€ν…μ²˜ 볡ꡬ가 λ‹¨μˆœν•œ μ½”λ“œ 뢄석에 κ·ΈμΉ˜μ§€ μ•Šκ³ , μ†Œν”„νŠΈμ›¨μ–΄ μžμ‚°μ˜ κ°€μΉ˜μ™€ ꡬ쑰적 건강 μƒνƒœλ₯Ό νŒŒμ•…ν•˜λŠ” μ§€λŠ₯적 관리 ν™œλ™κ³Ό μ–΄λ–»κ²Œ λ§žλ‹Ώμ•„ μžˆλŠ”μ§€ 이해할 수 μžˆλ‹€ [1]. ### Deeper Research Questions - 정적 ν”„λ‘œκ·Έλž¨ 뢄석(Static Program Analysis) 외에 μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό 효과적으둜 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ ν™œμš©ν•  수 μžˆλŠ” 동적 뢄석 κΈ°λ²•μ΄λ‚˜ 기타 역곡학 λ„κ΅¬λŠ” 무엇이 μžˆλŠ”κ°€? - μ•„ν‚€ν…μ²˜ 침식(Architecture Erosion)이 μ‹¬κ°ν•˜κ²Œ μ§„ν–‰λœ λ ˆκ±°μ‹œ μ‹œμŠ€ν…œμ—μ„œ 볡ꡬ된 μ•„ν‚€ν…μ²˜λ₯Ό λ°”νƒ•μœΌλ‘œ λ¦¬νŒ©ν† λ§μ„ μˆ˜ν–‰ν•  λ•Œ, κ°€μž₯ λ¨Όμ € κ°œμ„ ν•΄μ•Ό ν•  μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ€ 무엇인가? - 낑은 λ¬Έμ„œμ™€ μ‹€μ œ κ΅¬ν˜„μ΄ 크게 λ‹€λ₯Ό λ•Œ, μ•„ν‚€ν…μ²˜ 볡ꡬ κ³Όμ •μ—μ„œ μ΄ν•΄κ΄€κ³„μž(Stakeholder) κ°„μ˜ μ˜μ‚¬κ²°μ • 뢈일치λ₯Ό ν•΄κ²°ν•˜λŠ” 방법은 무엇인가? - μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό μ™„λ£Œν•œ ν›„ μ‹œμŠ€ν…œμ˜ ꡬ쑰적 무결성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ μžλ™ν™”λœ 'Architecture Conformance Checks'λ₯Ό 지속적 톡합(CI) ν™˜κ²½μ— λ„μž…ν•˜λŠ” μ ˆμ°¨λŠ” μ–΄λ– ν•œκ°€? - μ†Œν”„νŠΈμ›¨μ–΄ μΈν…”λ¦¬μ „μŠ€(Software Intelligence) ν”„λž™ν‹°μŠ€λŠ” μ—­κ³΅ν•™μœΌλ‘œ 볡ꡬ된 μ•„ν‚€ν…μ²˜ 데이터λ₯Ό ν™œμš©ν•΄ ν–₯ν›„ μ‹œμŠ€ν…œ μœ μ§€λ³΄μˆ˜ λΉ„μš©μ„ μ–΄λ–»κ²Œ μ˜ˆμΈ‘ν•˜λŠ”κ°€? ### Practical Application Contexts - **Implementation:** μ½”λ“œ μœ μ§€λ³΄μˆ˜ 쀑 κΈ°μ‘΄ 섀계 원칙을 μœ„λ°˜ν•œ 뢀뢄을 νŒŒμ•…ν•˜κ±°λ‚˜, λ¬Έμ„œλ₯Ό λŒ€μ²΄ν•˜κΈ° μœ„ν•΄ ν˜„μž¬ κ΅¬ν˜„λœ μ‹€μ œ ꡬ쑰λ₯Ό λ„μΆœν•΄λ‚΄λŠ” 데 μ μš©λœλ‹€ [1, 2]. - **System Design:** λ…Έν›„ν™”λœ μ‹œμŠ€ν…œ(예: λͺ¨λ†€λ¦¬μ‹ μ•„ν‚€ν…μ²˜)을 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ λ“± ν˜„λŒ€μ μΈ μ•„ν‚€ν…μ²˜λ‘œ μ „ν™˜ν•˜κΈ° μ „, κΈ°μ‘΄ μ‹œμŠ€ν…œμ˜ μ–½νžŒ μ˜μ‘΄μ„±κ³Ό μ•„ν‚€ν…μ²˜ μƒνƒœλ₯Ό μ •ν™•νžˆ μ§„λ‹¨ν•˜λŠ” κΈ°μ€€μ μœΌλ‘œ ν™œμš©λœλ‹€ [1]. - **Operation / Maintenance:** μ‹œμŠ€ν…œ λ¬Έμ„œκ°€ μ΅œμ‹  μ—…λ°μ΄νŠΈλ₯Ό λ°˜μ˜ν•˜μ§€ λͺ»ν•΄ λ¬΄μš©μ§€λ¬Όμ΄ λ˜μ—ˆμ„ λ•Œ, μ •ν™•ν•˜κ³  μ•ˆμ „ν•œ μœ μ§€λ³΄μˆ˜ 결정을 내리기 μœ„ν•œ ν•„μˆ˜μ μΈ 뢄석 λ‹¨κ³„λ‘œ μž‘μš©ν•œλ‹€ [1]. - **Learning Path:** μ‹œμŠ€ν…œμ„ μ²˜μŒλΆ€ν„° μ„€κ³„ν•˜λŠ” κ²ƒλΏλ§Œ μ•„λ‹ˆλΌ, 이미 λ§Œλ“€μ–΄μ§„ λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ˜ ꡬ쑰λ₯Ό νŒŒμ•…ν•˜κ³  μΉ¨μ‹λœ μ•„ν‚€ν…μ²˜λ₯Ό 평가 및 λ³΅μ›ν•˜λŠ” κ³ κΈ‰ μ•„ν‚€ν…νŠΈμ˜ 뢄석 μ—­λŸ‰ ν•™μŠ΅μœΌλ‘œ 이어진닀 [1, 4]. - **My Project Relevance:** λ¬Έμ„œν™”κ°€ λΆ€μ‘±ν•˜κ±°λ‚˜ μ½”λ“œμ™€ 섀계가 μ‹¬κ°ν•˜κ²Œ λΆˆμΌμΉ˜ν•˜λŠ” λ ˆκ±°μ‹œ ν”„λ‘œμ νŠΈλ₯Ό μΈμˆ˜ν•˜μ—¬ κ°œμ„ ν•΄μ•Ό ν•  λ•Œ, 정적 뢄석을 μ΄μš©ν•΄ ꡬ쑰λ₯Ό μ‹œκ°ν™”ν•˜κ³  μ‹œμŠ€ν…œμ„ νŒŒμ•…ν•˜λŠ” 데 μ§μ ‘μ μœΌλ‘œ μ μš©ν•  수 μžˆλ‹€ [1]. ### Adjacent Topics - [[Architecture Conformance Checks]] - ν™•μž₯ λ°©ν–₯: μ•„ν‚€ν…μ²˜ 볡ꡬ가 사후 처리적 성격을 띀닀면, Conformance ChecksλŠ” μ•„ν‚€ν…μ²˜κ°€ μΉ¨μ‹λ˜κΈ° 전에 μ‹€μ œ κ΅¬ν˜„μ΄ μ˜λ„ν•œ 섀계와 μΌμΉ˜ν•˜λŠ”μ§€ 정적 μ½”λ“œ 뢄석 도ꡬ λ“±μœΌλ‘œ μžλ™ κ²€μ‚¬ν•˜λŠ” 사전 예방 κΈ°λ²•μœΌλ‘œ 연ꡬλ₯Ό ν™•μž₯ν•  수 μžˆλ‹€ [3]. - [[Technical Debt]] - ν™•μž₯ λ°©ν–₯: μ•„ν‚€ν…μ²˜ μΉ¨μ‹μœΌλ‘œ 인해 λ°œμƒν•œ 섀계와 κ΅¬ν˜„ κ°„μ˜ κ²©μ°¨λŠ” μ΅œμ ν™”λ˜μ§€ μ•Šμ€ μ•„ν‚€ν…μ²˜ κ²°μ •μœΌλ‘œ λ§‰λŒ€ν•œ 기술 뢀채(Technical Debt)λ₯Ό μΆ•μ ν•˜κ²Œ ν•˜λ―€λ‘œ, μ•„ν‚€ν…μ²˜ 볡ꡬ ν›„ 이λ₯Ό μ–΄λ–»κ²Œ κ΄€λ¦¬ν•˜κ³  μƒν™˜ν•  것인지에 λŒ€ν•œ μ—°κ΅¬λ‘œ ν™•μž₯ κ°€λŠ₯ν•˜λ‹€ [2, 5]. --- *Last updated: 2026-05-02*