--- id: P-REINFORCE-WIKI-037A8774 category: "10_Wiki/πŸ’‘ Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['software-architecture-recovery-(μ†Œν”„νŠΈμ›¨μ–΄-μ•„ν‚€ν…μ²˜-볡ꡬ)', 'software-architecture-erosion-(μ†Œν”„νŠΈμ›¨μ–΄-μ•„ν‚€ν…μ²˜-침식)', 'static-program-analysis-(정적-ν”„λ‘œκ·Έλž¨-뢄석)', 'software-intelligence-(μ†Œν”„νŠΈμ›¨μ–΄-μΈν…”λ¦¬μ „μŠ€)', 'reverse-engineering-(역곡학)', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Software Architecture Recovery (μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 볡ꡬ)]] ## πŸ“Œ Brief Summary Software Architecture Recovery(μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 볡ꡬ)λŠ” μ‹œμŠ€ν…œμ˜ κ΅¬ν˜„μ²΄λ‚˜ λ¬Έμ„œ λ“± κ°€μš©ν•œ 정보λ₯Ό λ°”νƒ•μœΌλ‘œ μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ˜ μ•„ν‚€ν…μ²˜λ₯Ό λ°ν˜€λ‚΄λŠ” 역곡학(Reverse Engineering) 및 μž¬κ΅¬μ„± ν”„λ‘œμ„ΈμŠ€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€ [1]. μ΄λŠ” λ¬Έμ„œκ°€ ꡬ식이 λ˜μ—ˆκ±°λ‚˜ μœ μ§€λ³΄μˆ˜ κ³Όμ •μ—μ„œ μ›λž˜μ˜ μ„€κ³„μ—μ„œ λ²—μ–΄λ‚˜λŠ” μ•„ν‚€ν…μ²˜ 침식(Architecture Erosion)이 λ°œμƒν–ˆμ„ λ•Œ 정보에 μž…κ°ν•œ 결정을 내리기 μœ„ν•΄ ν•„μˆ˜μ μœΌλ‘œ μš”κ΅¬λ©λ‹ˆλ‹€ [1]. 주둜 정적 ν”„λ‘œκ·Έλž¨ 뢄석(Static Program Analysis) λ“±μ˜ 기법을 톡해 μˆ˜ν–‰λ˜λ©°, μ†Œν”„νŠΈμ›¨μ–΄ μΈν…”λ¦¬μ „μŠ€(Software Intelligence) μ˜μ—­μ— ν¬ν•¨λ˜λŠ” κ°œλ…μž…λ‹ˆλ‹€ [1]. ## πŸ“– Core Content * **κ°œλ… 및 λ™μ˜μ–΄:** μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ λ³΅κ΅¬λŠ” 'μž¬κ΅¬μ„±(Reconstruction)' λ˜λŠ” '역곡학(Reverse Engineering)'이라고도 λΆˆλ¦½λ‹ˆλ‹€. κ΅¬ν˜„λœ μ½”λ“œλ‚˜ 기쑴의 μ‚¬μš© κ°€λŠ₯ν•œ λ¬Έμ„œλ₯Ό ν¬ν•¨ν•œ λ‹€μ–‘ν•œ 정보λ₯Ό λΆ„μ„ν•˜μ—¬ μ‹œμŠ€ν…œ 내뢀에 숨겨져 μžˆκ±°λ‚˜ μžŠν˜€μ§„ μ•„ν‚€ν…μ²˜ ꡬ쑰λ₯Ό λ“œλŸ¬λ‚΄λŠ” 일련의 방법과 기술 및 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€ [1]. * **λ„μž… ν•„μš”μ„± (μ•„ν‚€ν…μ²˜ 침식에 λŒ€ν•œ λŒ€μ‘):** μ†Œν”„νŠΈμ›¨μ–΄ 개발 수λͺ… μ£ΌκΈ° μ „λ°˜μ— 걸쳐 지속적인 λ³€κ²½κ³Ό μœ μ§€λ³΄μˆ˜κ°€ 이루어지면, μ˜λ„ν–ˆλ˜ μ•„ν‚€ν…μ²˜μ™€ μ‹€μ œ κ΅¬ν˜„λœ μ•„ν‚€ν…μ²˜ 사이에 점진적인 격차가 λ°œμƒν•˜λŠ” 'μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 침식(Software Architecture Erosion)' ν˜„μƒμ΄ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2]. 이둜 인해 κ΅¬ν˜„ 및 μœ μ§€λ³΄μˆ˜ 결정이 초기 μ„€κ³„μ—μ„œ 크게 λ²—μ–΄λ‚˜κ±°λ‚˜ λ¬Έμ„œκ°€ ꡬ식이 된 상황에 μ§λ©΄ν•˜κ²Œ 되며, μ΄λ•Œ μ˜¬λ°”λ₯΄κ³  합리적인 μ˜μ‚¬κ²°μ •μ„ 내리기 μœ„ν•΄μ„œλŠ” μ•„ν‚€ν…μ²˜ 볡ꡬ 과정이 ν•„μˆ˜μ μœΌλ‘œ μš”κ΅¬λ©λ‹ˆλ‹€ [1]. * **μ£Όμš” ν™œμš© 기법:** μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜λ₯Ό λ³΅κ΅¬ν•˜κΈ° μœ„ν•œ κ΄€ν–‰ 쀑 ν•˜λ‚˜λ‘œ '정적 ν”„λ‘œκ·Έλž¨ 뢄석(Static Program Analysis)' 기법이 μ‘΄μž¬ν•©λ‹ˆλ‹€ [1]. 이 기법을 ν™œμš©ν•œ μ•„ν‚€ν…μ²˜ λ³΅κ΅¬λŠ” 'μ†Œν”„νŠΈμ›¨μ–΄ μΈν…”λ¦¬μ „μŠ€(Software Intelligence)' μ‹€λ¬΄μ—μ„œ λ‹€λ£¨λŠ” 핡심 주제 쀑 ν•˜λ‚˜λ‘œ λΆ„λ₯˜λ©λ‹ˆλ‹€ [1]. ## βš–οΈ Trade-offs & Caveats μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. (제곡된 μ†ŒμŠ€ λ°μ΄ν„°μ—λŠ” μ•„ν‚€ν…μ²˜ 볡ꡬ μžμ²΄μ— λŒ€ν•œ λΉ„μš©, ν•œκ³„μ , λΆ€μž‘μš© λ“±μ˜ λͺ…μ‹œμ μΈ Trade-off 정보가 ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.) ## πŸ”— 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) ν˜„μƒμ„ λ°”λ‘œμž‘κΈ° μœ„ν•œ λ¦¬νŒ©ν† λ§μ΄λ‚˜ μž¬μ„€κ³„ μž‘μ—…μ€ ꡬ체적으둜 μ–΄λ–»κ²Œ μ—°κ³„λ˜λŠ”κ°€? - ν˜„λŒ€μ μΈ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄(예: λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€, 이벀트 기반 μ•„ν‚€ν…μ²˜)으둜 κ΅¬μΆ•λœ λΆ„μ‚° μ‹œμŠ€ν…œμ—μ„œ μ•„ν‚€ν…μ²˜ λ³΅κ΅¬λŠ” λͺ¨λ†€λ¦¬μ‹ μ‹œμŠ€ν…œκ³Ό λΉ„κ΅ν•˜μ—¬ μ–΄λ–€ λ‹€λ₯Έ 접근법이 ν•„μš”ν•œκ°€? - 지속적인 μ§„ν™” κ³Όμ •μ—μ„œ μ•„ν‚€ν…μ²˜ 침식을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ μž‘μ„±ν•˜λŠ” μ•„ν‚€ν…μ²˜ κ²°μ • 기둝(ADR)은 ν–₯ν›„ μ‹œμŠ€ν…œμ˜ μ•„ν‚€ν…μ²˜ 볡ꡬ μž‘μ—… λ‚œμ΄λ„μ— μ–΄λŠ μ •λ„μ˜ 영ν–₯을 λ―ΈμΉ˜λŠ”κ°€? ### Practical Application Contexts - **Implementation:** λ¬Έμ„œκ°€ μ†Œμ‹€λ˜κ±°λ‚˜ ꡬ식이 된 λ ˆκ±°μ‹œ μ‹œμŠ€ν…œμ„ μΈμˆ˜μΈκ³„λ°›μ•˜μ„ λ•Œ, 정적 뢄석 도ꡬλ₯Ό μ‚¬μš©ν•΄ μ½”λ“œλ² μ΄μŠ€λ₯Ό λΆ„μ„ν•˜κ³  μ‹œμŠ€ν…œμ˜ ꡬ쑰적 λΌˆλŒ€λ₯Ό λ‹€μ‹œ μΆ”μΆœν•΄λ‚΄λŠ” 데 ν™œμš©λ©λ‹ˆλ‹€ [1]. - **System Design:** μ•„ν‚€ν…μ²˜ μΉ¨μ‹μœΌλ‘œ 인해 본래의 섀계 μ˜λ„λ₯Ό μžƒμ–΄λ²„λ¦° μ‹œμŠ€ν…œμ„ μ΅œμ‹  μ•„ν‚€ν…μ²˜ νŒ¨ν„΄(예: λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ λ“±)으둜 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•˜κΈ° μ „, ν˜„μž¬ μ‹œμŠ€ν…œμ˜ μ •ν™•ν•œ μƒνƒœ(As-Is)λ₯Ό νŒŒμ•…ν•˜κΈ° μœ„ν•œ 섀계 진단 κ³Όμ •μœΌλ‘œ μ μš©λ©λ‹ˆλ‹€ [1]. - **Operation / Maintenance:** 운영 쀑인 μ‹œμŠ€ν…œμ—μ„œ λ°œμƒν•œ λ³΅μž‘ν•œ μž₯μ• λ₯Ό ν•΄κ²°ν•˜κ±°λ‚˜ μœ μ§€λ³΄μˆ˜λ₯Ό μˆ˜ν–‰ν•΄μ•Ό ν•  λ•Œ, μ΅œμ‹ ν™”λ˜μ§€ μ•Šμ€ λ¬Έμ„œ λŒ€μ‹  볡ꡬ된 μ•„ν‚€ν…μ²˜ ꡬ쑰λ₯Ό λ°”νƒ•μœΌλ‘œ μ •ν™•ν•˜κ³  μ•ˆμ „ν•œ λ³€κ²½ 결정을 λ‚΄λ¦¬λŠ” 데 ν•„μˆ˜μ μž…λ‹ˆλ‹€ [1]. - **Learning Path:** λ‹€μ–‘ν•œ μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ„ ν•™μŠ΅ν•œ ν›„, μ‹€μ œ 라이브 ν™˜κ²½μ—μ„œ μ‹œμŠ€ν…œμ΄ μ–΄λ–»κ²Œ λ³€ν˜•λ˜κ³  μΉ¨μ‹λ˜λŠ”μ§€ μ΄ν•΄ν•˜κ³ , 이λ₯Ό λ‹€μ‹œ μ›ν˜•μ— κ°€κΉκ²Œ 좔적(역곡학)ν•΄ λ‚΄λŠ” μ•„ν‚€ν…μ²˜ κ΄€λ¦¬μ˜ 심화 κ³Όμ •μœΌλ‘œ μ—°κ²°λ©λ‹ˆλ‹€ [1, 2]. - **My Project Relevance:** ν˜„μž¬ μ§„ν–‰ 쀑인 ν”„λ‘œμ νŠΈμ˜ 규λͺ¨κ°€ 컀지고 κΈ°λŠ₯이 μΆ”κ°€λ˜λ©΄μ„œ μ΄ˆκΈ°μ— ν•©μ˜ν•œ μ•„ν‚€ν…μ²˜ νŒ¨ν„΄μ΄ λ¬΄λ„ˆμ§€κ³  μžˆλŠ”μ§€ μ§„λ‹¨ν•˜κ³ , 정보에 μž…κ°ν•œ 기술적 μ˜μ‚¬κ²°μ •μ„ 내리기 μœ„ν•œ μ½”λ“œλ² μ΄μŠ€ 및 ꡬ쑰 μž¬ν‰κ°€ μ „λž΅μœΌλ‘œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1]. ### Adjacent Topics - [[Reverse Engineering (역곡학)]] - ν™•μž₯ λ°©ν–₯: μ•„ν‚€ν…μ²˜ 볡ꡬ의 근간이 λ˜λŠ” 포괄적인 기술적 λ°©λ²•λ‘ μœΌλ‘œ, μ†Œν”„νŠΈμ›¨μ–΄μ˜ κ΅¬ν˜„μ²΄λ‘œλΆ€ν„° μƒμœ„ μˆ˜μ€€μ˜ 섀계 사양을 μ—­μœΌλ‘œ μΆ”μΆœν•΄λ‚΄λŠ” 기법 μ „λ°˜μ„ 깊이 있게 탐ꡬ할 수 μžˆμŠ΅λ‹ˆλ‹€ [1]. - [[Technical Debt (기술 뢀채)]] - ν™•μž₯ λ°©ν–₯: μ•„ν‚€ν…μ²˜ 침식을 μœ λ°œν•˜λŠ” μ£Όμš” 원인 쀑 ν•˜λ‚˜λ‘œ, 개발 κ³Όμ •μ—μ„œ 편의λ₯Ό μœ„ν•΄ νƒ€ν˜‘ν•œ μš”μ†Œλ“€μ΄ μΆ•μ λ˜μ–΄ μΆ”ν›„ μ•„ν‚€ν…μ²˜ 볡ꡬ와 μœ μ§€λ³΄μˆ˜ λΉ„μš©μ„ κΈ°ν•˜κΈ‰μˆ˜μ μœΌλ‘œ λŠ˜λ¦¬λŠ” ꡬ쑰적 문제λ₯Ό 연ꡬ할 수 μžˆμŠ΅λ‹ˆλ‹€ [2]. --- *Last updated: 2026-05-02*