μ€ν°λ/μ€λΈμ νΈ
[μ€λΈμ νΈ] λΆλ‘ A 'κ³μ½μ μν μ€κ³'
moon101
2023. 2. 3. 17:03
λΆλ‘ Aμμλ μ¬μ 쑰건, μ¬ν쑰건, λΆλ³μμ μμλ³΄κ³ λ€νμ±μ μΈ‘λ©΄μμ μνΌνμ κ³Ό μλΈνμ μ΄ μ€μν΄μΌ νλ μ μ½μ‘°κ±΄μ κ³μ½μ κ΄μ μμ μ€λͺ νλ€.
κ³μ½μ μν μ€κ³(Design by Contract, DBC)λ₯Ό μ¬μ©νλ©΄ νλ ₯μ νμν λ€μν μ μ½κ³Ό λΆμν¨κ³Όλ₯Ό λͺ μμ μΌλ‘ μ μνκ³ λ¬Έμνν μ μλ€(p.535).
κ³μ½μ μν μ€κ³ ꡬμ±μμ
- μ¬μ 쑰건 (precondition): λ©μλκ° νΈμΆλκΈ° μν΄ λ§μ‘±λΌμΌ νλ 쑰건. μꡬμ¬ν(requires)μ λͺ μνλ©°, μ¬μ 쑰건μ λ§μ‘±μν€λ κ²μ λ©μλλ₯Ό μ€ννλ ν΄λΌμ΄μΈνΈμ μ무λ€.
- μ¬ν쑰건 (postcondition): λ©μλκ° μ€νλ νμ ν΄λΌμ΄μΈνΈμκ² λ³΄μ₯ν΄μΌ νλ 쑰건. μ¬ν쑰건(effects)μ μλ²κ° λ§μ‘±μν€μ§ λͺ»νλ©΄ ν΄λΌμ΄μΈνΈμκ² μμΈλ₯Ό λμ Έμ€μΌ νλ©°, μ΄κ²μ μλ²μ μ무μ΄λ€.
- λΆλ³μ (invariant): νμ μ°Έμ΄λΌκ³ 보μ₯λλ μλ²μ 쑰건. λ©μλ μ€ν μ€μλ λΆλ³μμ λ§μ‘±μν€μ§ λͺ»ν μλ μμ§λ§ λ©μλλ₯Ό μ€ννκΈ° μ μ΄λ νμλ λΆλ³μμ΄ νμ μ°Έμ΄μ΄μΌ νλ€. λΆλ³μμ μΈμ€ν΄μ€ μλͺ μ£ΌκΈ° μ λ°μ κ±Έμ³ μ§μΌμ ΈμΌ νλ κ·μΉμ λͺ μΈνλ€. ν΄λμ€μ λͺ¨λ λ©μλμ μ¬μ 쑰건과 μ¬ν쑰건μ μΆκ°λλ 곡ν΅μ 쑰건μΌλ‘ μκ°ν μ μλ€.
μ§μ ν μλΈνμ΄ν κ΄κ³λ₯Ό λ§λ€κ³ μ νλ€λ©΄, μλΈνμ μ
1. λ κ°λ ₯ν μ¬μ 쑰건μ΄λ
2. λ μνλ μ¬ν쑰건
μ μ μν΄μλ μ λλ€. μνΌνμ μ λΆλ³μμ μ μ§ν΄μΌ νκ³ μλΈνμ μμ μνΌνμ μμ μ μνμ§ μμ μμΈλ₯Ό λμ Έμλ μ λλ€(p.572).