--- id: P-REINFORCE-WIKI-CB6B434C category: Dev confidence_score: 0.95 tags: ['software-architecture-recovery', 'software-architecture-erosion', 'technical-debt', 'static-program-analysis', 'software-intelligence', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Software Architecture Recovery]] ## πŸ“Œ Brief Summary μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 볡ꡬ(Software Architecture Recovery)λŠ” κ°€μš©ν•œ κ΅¬ν˜„μ²΄(μ½”λ“œ) 및 λ¬Έμ„œλ₯Ό λ°”νƒ•μœΌλ‘œ μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ˜ μ‹€μ œ μ•„ν‚€ν…μ²˜λ₯Ό λ°ν˜€λ‚΄λŠ” 방법, 기술 및 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€ [1]. μ•„ν‚€ν…μ²˜ μž¬κ΅¬μ„±(reconstruction)μ΄λ‚˜ λ¦¬λ²„μŠ€ μ—”μ§€λ‹ˆμ–΄λ§(reverse engineering)μœΌλ‘œλ„ λΆˆλ¦½λ‹ˆλ‹€ [1]. 주둜 λ¬Έμ„œκ°€ κ΅¬μ‹μ΄κ±°λ‚˜, μ‹€μ œ κ΅¬ν˜„μ΄ μ˜λ„λœ μ•„ν‚€ν…μ²˜μ—μ„œ λ²—μ–΄λ‚˜λŠ” ν˜„μƒμΈ μ•„ν‚€ν…μ²˜ 침식(Architecture erosion) μƒν™©μ—μ„œ μ˜¬λ°”λ₯Έ μ˜μ‚¬κ²°μ •μ„ 내리기 μœ„ν•΄ ν•„μˆ˜μ μœΌλ‘œ μš”κ΅¬λ©λ‹ˆλ‹€ [1]. ## πŸ“– Core Content * **볡ꡬ의 ν•„μš”μ„±:** μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ€ μ‹œκ°„μ΄ 지남에 따라 μ μ§„μ μœΌλ‘œ μ›λž˜ μ˜λ„λœ μ•„ν‚€ν…μ²˜μ™€ μ‹€μ œ κ΅¬ν˜„ 간에 격차가 λ°œμƒν•˜λŠ” μ•„ν‚€ν…μ²˜ 침식 ν˜„μƒμ„ κ²ͺ게 λ©λ‹ˆλ‹€ [2]. 이둜 인해 κ΅¬ν˜„ 및 μœ μ§€λ³΄μˆ˜ λ°©ν–₯이 초기 섀계와 μ–΄κΈ‹λ‚˜κ±°λ‚˜ λ¬Έμ„œκ°€ 더 이상 μœ νš¨ν•˜μ§€ μ•Šκ²Œ 될 λ•Œ, 정보에 μž…κ°ν•œ μ •ν™•ν•œ μ˜μ‚¬κ²°μ •μ„ 내리기 μœ„ν•΄ μ•„ν‚€ν…μ²˜ 볡ꡬ ν”„λ‘œμ„ΈμŠ€κ°€ ν•„μš”ν•©λ‹ˆλ‹€ [1]. * **μ‚¬μš©λ˜λŠ” 기술:** μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό μœ„ν•΄ 주둜 정적 ν”„λ‘œκ·Έλž¨ 뢄석(Static program analysis)κ³Ό 같은 기법듀이 ν™œμš©λ˜μ–΄ μ‹œμŠ€ν…œμ˜ ꡬ쑰λ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€ [1]. * **포함 μ˜μ—­:** 이 과정은 μ†Œν”„νŠΈμ›¨μ–΄ μΈν…”λ¦¬μ „μŠ€(Software intelligence) ν”„λž™ν‹°μŠ€μ—μ„œ λ‹€λ£¨λŠ” 주제 μ˜μ—­μ— ν¬ν•¨λ©λ‹ˆλ‹€ [1]. * *μ†ŒμŠ€μ— μ•„ν‚€ν…μ²˜ 볡ꡬ μˆ˜ν–‰μ˜ ꡬ체적인 절차, μ•Œκ³ λ¦¬μ¦˜, μ‚¬μš© 도ꡬ에 λŒ€ν•œ 더 μƒμ„Έν•œ κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€.* ## βš–οΈ Trade-offs & Caveats μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. (제곡된 μ†ŒμŠ€μ—λŠ” μ•„ν‚€ν…μ²˜ 볡ꡬ 기법을 μ μš©ν•  λ•Œ λ°œμƒν•˜λŠ” λΉ„μš©, μ‹œκ°„, 정확도 ν•œκ³„ λ“±μ˜ 기술적 λ°˜λŒ€ κΈ‰λΆ€λ‚˜ μ œμ•½ 사항에 λŒ€ν•œ μ„€λͺ…이 λͺ…μ‹œλ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.) ## πŸ”— Knowledge Connections ### Related Concepts #### [μ•„ν‚€ν…μ²˜ 문제 및 원인 (Architectural Issues & Causes)] - [[Software Architecture Erosion]] - μ—°κ²° 이유: μ•„ν‚€ν…μ²˜ 침식은 μ˜λ„λœ μ•„ν‚€ν…μ²˜μ™€ κ΅¬ν˜„λœ μ•„ν‚€ν…μ²˜ κ°„μ˜ 점진적인 격차λ₯Ό μ˜λ―Έν•˜λ©°, μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό μˆ˜ν–‰ν•΄μ•Όλ§Œ ν•˜λŠ” 핡심적인 λ°°κ²½ 원인이 λ©λ‹ˆλ‹€ [1, 2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ¬Έμ„œμ™€ κ΅¬ν˜„μ΄ μ™œ μΌμΉ˜ν•˜μ§€ μ•Šκ²Œ λ˜λŠ”μ§€, 그리고 볡ꡬ μž‘μ—…μ„ 톡해 κ·Ήλ³΅ν•˜κ³ μž ν•˜λŠ” μ‹œμŠ€ν…œμ˜ ꡬ쑰적 λΆ•κ΄΄ μƒνƒœλ₯Ό λͺ…ν™•νžˆ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [1, 2]. - [[Technical Debt]] - μ—°κ²° 이유: 기술 λΆ€μ±„μ˜ 좕적은 μ•„ν‚€ν…μ²˜ 침식을 μœ λ°œν•˜λŠ” μ£Όμš” 원인 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€ [2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ•„ν‚€ν…μ²˜ 볡ꡬ κ³Όμ •μ—μ„œ 마주치게 λ˜λŠ” κΈ°μ‘΄ μ½”λ“œλ² μ΄μŠ€μ˜ λ³΅μž‘μ„±κ³Ό μœ μ§€λ³΄μˆ˜ μ–΄λ €μ›€μ˜ κ·Όλ³Έ 원인을 νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2]. #### [볡ꡬ 및 뢄석 ν”„λž™ν‹°μŠ€ (Recovery & Analysis Practices)] - [[Static Program Analysis]] - μ—°κ²° 이유: μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μ‹€λ¬΄μ μœΌλ‘œ ν™œμš©λ˜λŠ” ꡬ체적인 역곡학(Reverse Engineering) κΈ°λ²•μž…λ‹ˆλ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ†ŒμŠ€ μ½”λ“œλ‚˜ λ°”μ΄λ„ˆλ¦¬μ™€ 같은 κ΅¬ν˜„μ²΄ μ •λ³΄λ‘œλΆ€ν„° μ–΄λ–»κ²Œ ꡬ쑰적 정보λ₯Ό μžλ™μœΌλ‘œ μΆ”μΆœν•˜κ³  μž¬κ΅¬μ„±ν•˜λŠ”μ§€ κ·Έ 기술적 원리λ₯Ό 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [1]. - [[Software Intelligence]] - μ—°κ²° 이유: μ•„ν‚€ν…μ²˜ 볡ꡬ ν™œλ™μ΄ 속해 μžˆλŠ” 더 넓은 λ²”μœ„μ˜ μ†Œν”„νŠΈμ›¨μ–΄ 뢄석 및 이해 ν”„λž™ν‹°μŠ€μž…λ‹ˆλ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 볡ꡬ된 μ•„ν‚€ν…μ²˜ 데이터가 μ†Œν”„νŠΈμ›¨μ–΄μ˜ κ°€μ‹œμ„± 확보 및 μžμ‚° κ°€μΉ˜ 평가 λ“± κ±°μ‹œμ μΈ κ΄€μ μ—μ„œ μ–΄λ–»κ²Œ ν™œμš©λ˜λŠ”μ§€ 이해λ₯Ό ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1]. ### Deeper Research Questions - 정적 ν”„λ‘œκ·Έλž¨ 뢄석(Static program analysis) 외에 동적 뢄석(Dynamic analysis) 기법은 μ•„ν‚€ν…μ²˜ 볡ꡬ κ³Όμ •μ—μ„œ μ–΄λ–»κ²Œ κ²°ν•©ν•˜μ—¬ ν™œμš©λ  수 μžˆλŠ”κ°€? - 볡ꡬ된 μ‹œμŠ€ν…œμ˜ μ‹€μ œ μ•„ν‚€ν…μ²˜μ™€ μ΄ˆκΈ°μ— μ˜λ„λœ μ•„ν‚€ν…μ²˜(Intended architecture) κ°„μ˜ 차이λ₯Ό μ •λŸ‰μ μœΌλ‘œ μΈ‘μ •ν•˜κ³  ν‰κ°€ν•˜λŠ” 방법둠은 무엇인가? - λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€(Microservices)와 같이 κ³ λ„λ‘œ λΆ„μ‚°λœ μ•„ν‚€ν…μ²˜μ—μ„œ μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό μˆ˜ν–‰ν•  λ•Œ λͺ¨λ†€λ¦¬μ‹ μ‹œμŠ€ν…œ λŒ€λΉ„ λ°œμƒν•˜λŠ” 기술적 어렀움은 무엇인가? - μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό 톡해 μ‹λ³„λœ μ•„ν‚€ν…μ²˜ 침식 및 기술 뢀채λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄, μ–΄λ–€ λ¦¬νŒ©ν† λ§ μ „λž΅μ„ λ„μž…ν•˜λŠ” 것이 μ‹œμŠ€ν…œ μ„±λŠ₯ 및 μœ μ§€λ³΄μˆ˜μ„±μ— κ°€μž₯ νš¨κ³Όμ μΈκ°€? - μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό μžλ™ν™”ν•˜λŠ” 도ꡬ듀은 λ‹€κ΅­μ–΄(Polyglot) 기반의 λ³΅μž‘ν•œ μ†Œν”„νŠΈμ›¨μ–΄ ν™˜κ²½μ—μ„œ λ¬Έλ§₯적 의미λ₯Ό μ–΄λ–»κ²Œ λ³΄μ‘΄ν•˜λ©° 역곡학을 μˆ˜ν–‰ν•˜λŠ”κ°€? ### Practical Application Contexts - **Implementation:** μ†ŒμŠ€ μ½”λ“œμ™€ 배포 ꡬ쑰에 정적 ν”„λ‘œκ·Έλž¨ 뢄석을 μ μš©ν•˜μ—¬, ν˜„μž¬ μ‹€μ œ 운영 쀑인 μ‹œμŠ€ν…œμ˜ ꡬ쑰(As-Is Architecture)λ₯Ό μ‹œκ°ν™”ν•˜κ³  낑은 λ¬Έμ„œλ₯Ό κ°±μ‹ ν•˜λŠ” μž‘μ—…μ— μ‚¬μš©λ©λ‹ˆλ‹€ [1]. - **System Design:** μ•„ν‚€ν…μ²˜ μΉ¨μ‹μœΌλ‘œ 인해 μœ μ§€λ³΄μˆ˜ ν•œκ³„μ— λ‹€λ‹€λ₯Έ λ ˆκ±°μ‹œ μ‹œμŠ€ν…œ(예: Netscape λΈŒλΌμš°μ € μ‹€νŒ¨ 사둀)을 μž¬μ„€κ³„ν•˜κ±°λ‚˜ ν˜„λŒ€ν™”ν•˜κΈ° μ „, κΈ°μ‘΄ ꡬ쑰의 결함을 νŒŒμ•…ν•˜λŠ” 핡심 기초 자료둜 ν™œμš©λ©λ‹ˆλ‹€ [1, 2]. - **Operation / Maintenance:** 운영 쀑인 μ‹œμŠ€ν…œμ˜ ꡬ쑰가 지속적인 λ³€κ²½μœΌλ‘œ 인해 μ›λž˜ μ„€κ³„μ—μ„œ μ΄νƒˆν•˜λŠ” ν˜„μƒμ„ νƒμ§€ν•˜κ³ , μœ μ§€λ³΄μˆ˜ λΉ„μš©μ„ ν†΅μ œ κ°€λŠ₯ν•œ μˆ˜μ€€μœΌλ‘œ 되돌리기 μœ„ν•œ 진단 λ„κ΅¬λ‘œ μž‘μš©ν•©λ‹ˆλ‹€ [1, 2]. - **Learning Path:** λ¦¬λ²„μŠ€ μ—”μ§€λ‹ˆμ–΄λ§ 및 μ†Œν”„νŠΈμ›¨μ–΄ μΈν…”λ¦¬μ „μŠ€ λΆ„μ•Όλ₯Ό ν•™μŠ΅ν•˜λ©΄μ„œ, 였래된 μ‹œμŠ€ν…œ μ½”λ“œλ₯Ό ν•΄λ…ν•˜κ³  μ•„ν‚€ν…μ²˜λ₯Ό μž¬κ΅¬μ„±ν•˜λŠ” μ—­λŸ‰μ„ κΈ°λ₯΄λŠ” 싀무 ν›ˆλ ¨μ— μ μš©λ©λ‹ˆλ‹€ [1]. - **My Project Relevance:** λ‹΄λ‹Ήμžκ°€ λΆ€μž¬ν•˜κ±°λ‚˜ λ¬Έμ„œκ°€ μ œλŒ€λ‘œ κ΄€λ¦¬λ˜μ§€ μ•Šμ€ λ ˆκ±°μ‹œ ν”„λ‘œμ νŠΈλ₯Ό μΈμˆ˜μΈκ³„λ°›μ•˜μ„ λ•Œ, μ½”λ“œλ₯Ό 기반으둜 μ‹œμŠ€ν…œμ˜ λΌˆλŒ€μ™€ μ˜μ‘΄μ„±μ„ νŒŒμ•…ν•˜μ—¬ μ•ˆμ „ν•œ λ¦¬νŒ©ν† λ§ 및 κΈ°λŠ₯ μΆ”κ°€ κ³„νšμ„ μˆ˜λ¦½ν•˜λŠ” 데 μ§μ ‘μ μœΌλ‘œ μ μš©λ©λ‹ˆλ‹€ [1]. ### Adjacent Topics - [[Automated Architecture Conformance Checks]] - ν™•μž₯ λ°©ν–₯: μ•„ν‚€ν…μ²˜ 볡ꡬλ₯Ό 톡해 ν˜„μž¬ μƒνƒœλ₯Ό νŒŒμ•…ν•œ 이후, ν–₯ν›„ 개발 κ³Όμ •μ—μ„œ κ΅¬ν˜„ μ½”λ“œκ°€ μ˜λ„ν•œ μ•„ν‚€ν…μ²˜ 섀계 κ·œμΉ™μ„ μ€€μˆ˜ν•˜λŠ”μ§€ μžλ™μœΌλ‘œ κ²€μ‚¬ν•˜μ—¬ μ•„ν‚€ν…μ²˜ 침식을 μ„ μ œμ μœΌλ‘œ μ˜ˆλ°©ν•˜λŠ” λ°©μ•ˆμœΌλ‘œ 연ꡬλ₯Ό ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. - [[Refactoring Techniques]] - ν™•μž₯ λ°©ν–₯: 볡ꡬ된 μ•„ν‚€ν…μ²˜λ₯Ό 톡해 발견된 결함과 ꡬ쑰적 침식 μš”μ†Œ(Defect-based, Evolution-based erosion)λ₯Ό μ–΄λ–»κ²Œ μ‹€μ§ˆμ μœΌλ‘œ μˆ˜μ •ν•˜κ³  κ°œμ„ ν•  것인지에 λŒ€ν•œ 섀계 κ°œμ„  κΈ°λ²•μœΌλ‘œ 지식을 ν™•μž₯ν•©λ‹ˆλ‹€ [3]. --- *Last updated: 2026-05-02*