728x90
8์ฅ. ์ค๊ณ ๊ฐ๋
- Design Process (์ค๊ณ ํ๋ก์ธ์ค)
- SW ์ค๊ณ๋ ์๊ตฌ์ฌํญ์ด SW๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ์ฒญ์ฌ์ง์ผ๋ก ๋ณํ๋๋ ๋ฐ๋ณต์ ์ธ ๊ณผ์ ์ด๋ค.
- ์ข์ ๋์์ธ์ ์ํ 3๊ฐ์ง ํน์ฑ
- ๋ถ์๋ชจ๋ธ์ ํฌํจ๋ ๋ชจ๋ ๋ช ์์ ์๊ตฌ์ฌํญ์ ๊ตฌํํด์ผ ํ๋ฉฐ, ๊ณ ๊ฐ์ด ์ํ๋ ๋ชจ๋ ์๋ฌต์ ์๊ตฌ์ฌํญ์ ์์ฉํด์ผ ํจ.
- ๊ฐ๋ฐ์์ ํ ์คํฐ ๋ฑ์ ์ํด ์ดํดํ๊ธฐ ์ฌ์ด ๊ฐ์ด๋๊ฐ ๋์ด์ผ ํจ.
- ๊ตฌํ ๊ด์ ์์ ๋ฐ์ดํฐ, ๊ธฐ๋ฅ ๋ฐ ํ๋ ์์ญ์ ๋ค๋ฃจ๋ฉด์ SW์ ์ ์ฒด์ ์ธ ๊ทธ๋ฆผ์ ์ ๊ณตํด์ผ ํจ.
๐ก Fundamental Design Concepts (๊ธฐ๋ณธ ์ค๊ณ ๊ฐ๋ )
- Abstraction - ์ถ์ํ (๋ฐ์ดํฐ,์ ์ฐจ,๋์)
- Architecture - ์ํคํ ์ฒ (SW์ ์ ๋ฐ์ ๊ตฌ์กฐ)
- Patterns - ํจํด (๊ฒ์ฆ๋ ์ค๊ณ ์๋ฃจ์ ์ ๋ณธ์ง ์ ๋ฌ)
- Modularity - ๋ชจ๋ํ (๋ฐ์ดํฐ ๋ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ) : divide & conquer
- Information hiding - ์จ๊ธฐ๋ ์ ๋ณด (์ ์ด๋ ์ธํฐํ์ด์ค) : error propagation
- Functional independence - ๊ธฐ๋ฅ ๋ ๋ฆฝ์ฑ (high cohesion, low coupling)
- Refinement - ์ ๊ตํจ/๊ฐ์ (๋ชจ๋ ์ถ์ํ์ ๋ํ ์ธ๋ถ์ฌํญ) : elaboration
- Refactoring - ๋ฆฌํฉํฐ๋ง (์ค๊ณ๋ฅผ ๋จ์ํํ๋ ์ฌ๊ตฌ์ฑ) : re-organization
- Design class - ์ค๊ณ ํด๋์ค (๊ตฌํ๋ ์ธ๋ถ ํด๋์ค)
- ๋์์ธ ์ปจ์
: ์ถ์ํ (Abstraction)
- ์ถ์ํ ๋ ๋ฒจ
- ๊ฐ์ฅ ๋์ ๋ ๋ฒจ์์, ํด๊ฒฐ์ฑ ์ ๋ฌธ์ ํ๊ฒฝ์ ์ธ์ด๋ฅผ ์ฐ๋ ๊ด๋ฒ์ํ ์ฉ์ด๋ก ๋ช ์๋จ.
- ๋ ๋ฎ์ ๋ ๋ฒจ์์๋ ์๋ฃจ์ ์ ๋ํด ๋ณด๋ค ์์ธํ ์ค๋ช ์ ๊ณต
- ์ ์ฐจ์ ์ถ์ํ(Procedural abstaction)๋ ํน์ /์ ํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ์ผ๋ จ์ ๋ช ๋ น์ด
- ๋ฐ์ดํฐ ์ถ์ํ๋ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ์ค๋ช ํ๋ ๋ฐ์ดํฐ์ ๋ชจ์.
- ํ๋ ์ถ์ํ = ์ ์ฐจ์ ์ถ์ํ + ๋ฐ์ดํฐ ์ถ์ํ
- ๋์์ธ ์ปจ์
: ์ค๊ณ (Architecture)
- SW ์ํคํ ์ฒ๋ ๊ตฌ์ฑ์์์ ๊ตฌ์กฐ, ์ํธ์์ฉํ๋ ๋ฐฉ์, ๊ทธ๋ฆฌ๊ณ ๊ตฌ์ฑ์์๊ฐ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๋ค.
- ๋์์ธ ์ปจ์
: ํจํด (Patterns)
- ํจํด์ด ์ ์ฉ๋๋ ๋ฐฉ์์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ์ด๋ค ๋งฅ๋ฝ์ด๋ ํ ์์์ ํน์ ํ design ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ค๊ณ ๊ตฌ์กฐ
- ํจํด์ด ํ์ฌ ์์ ์ ์ ์ฉ ๊ฐ๋ฅํ์ง?
- ํจํด์ ์ฌ์ฌ์ฉํ ์ ์๋์ง?
- ์ ์ฌํ์ง๋ง ๊ธฐ๋ฅ์ ๋๋ ๊ตฌ์กฐ์ ์ผ๋ก ๋ค๋ฅธ ํจํด์ ๊ฐ๋ฐํ๊ธฐ ์ํ ์ง์นจ์ผ๋ก ํจํด์ด ์ฌ์ฉ๋ ์ ์๋์ง?
- ๋์์ธ ์ปจ์
: ๋ชจ๋ํ (Modularity)
- SW ์ํคํ ์ฒ ๋ฐ ์ค๊ณ ํจํด์ ๋ชจ๋์ฑ์ ๊ตฌํํจ.
- SW๋ ์ฃผ์์ง์ ๊ฐ๋ฅํ ๊ตฌ์ฑ ์์๋ก ๋๋๋ฉฐ, ๋ฌธ์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด ํตํฉ๋ ๋ชจ๋์ด๋ค.
- “Devide & Conquer” : ๋ถํ ๋ฐ ์ ๋ณต
- ๋์์ธ ๊ฐ๋
: ์ ๋ณด ์จ๊ธฐ๊ธฐ (Information hiding)
- ๋ชจ๋์ ๋ค๋ฅธ ๊ฒ์ผ๋ก๋ถํฐ ์จ๊ธฐ๋ ์ค๊ณ ๊ฒฐ์ ์ผ๋ก ํน์ง๋๋ค.
- SW ๊ธฐ๋ฅ์ ๋ฌ์ฑํ๋ ๋ฐ์ ํ์ํ ์ ๋ณด๋ง ์๋ก ํต์ ํ๋ ๋ ๋ฆฝ ๋ชจ๋์งํฉ์ ์ ์ → ํจ๊ณผ์ ์ธ ๋ชจ๋ํ ๋ฌ์ฑ
- ์ ๋ณด ์๋์ ์ฌ์ฉ : ํ ์คํธ ์ค/ํ/์ ์ง๋ณด์ ์ค ์์ ์ด ํ์ํ ๋, ์์ ์ค์ ๋ฐ์ํ ์ค๋ฅ๊ฐ SW ๋ด์ ๋ค๋ฅธ ์์น๋ก ์ ํ๋ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์
- why ?
- side effect (๋ถ์์ฉ) ๊ฐ์
- ์ง์ญ ์ค๊ณ์ ์ ์ญ ์ํฅ์ ์ ํ
- ์ ์ด๋ ์ธํฐํ์ด์ค๋ฅผ ํตํ ์ํต ๊ฐ์กฐ
- ์ ์ญ ๋ฐ์ดํฐ ์ฌ์ฉ ๊ธ์ง
- ์บก์ํ๋ก ์ด์ด์ง - ๊ณ ํ์ง ์ค๊ณ์ ์์ฑ
- ๋ ๋์ ํ์ง์ SW ์ ๊ณต
- ๋์์ธ ๊ฐ๋
: ๊ธฐ๋ฅ ๋
๋ฆฝ์ฑ (Functional Independence)
- ๋ชจ๋ํ, ์ถ์ํ, ์ ๋ณด ์๋์ ์ง์ ์ ์ธ ๊ฒฐ๊ณผ
- ๋
๋ฆฝ์ฑ์ ์์ง๋ ฅ๊ณผ ๊ฒฐํฉ๋ ฅ์ด๋ผ๋ ๋ ๊ฐ์ง ์ง์ ๊ธฐ์ค์ผ๋ก ํ๊ฐ๋จ.
- Cohesion - ์์ง๋ ฅ : ๋ชจ๋์ ์๋์ ๊ธฐ๋ฅ ๊ฐ๋. ๋ชจ๋์ด ํ๋์ ๊ธฐ๋ฅ๋ง ์ํํ๋ ์ ๋
- Coupling - ๊ฒฐํฉ๋ ฅ : ๋ชจ๋ ๊ฐ์ ์๋์ ์ํธ์์กด์ฑ. ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ์ฐ๊ฒฐ๋๋ ์ ๋
- ๋์์ธ ๊ฐ๋
: ์ ๊ตํจ/๊ตฌ์ฒดํ (Refinement)
- ๋จ๊ณ์ ์ ์ : ํํฅ์(Top-down) ์ค๊ณ ์ ๋ต, ํ๋ก๊ทธ๋จ์ ์ ์ฐจ ์ธ๋ถ์ฌํญ์ ๋ ๋ฒจ์ ์์ฐจ์ ์ผ๋ก ์ธ๋ถํํ์ฌ ๊ฐ๋ฐ๋จ
- ์ ๊ตํจ์ ์ ๊ตํจ์ ๊ณผ์ ์ด๋ค
- ์ถ์ํ์ ์ ์ ๋ ์ํธ๋ณด์์ ๊ฐ๋
- ์ถ์ํ๋ฅผ ํตํด ์ค๊ณ์๋ ์ ์ฐจ/๋ฐ์ดํฐ๋ฅผ ์ง์ ํ๋ฉด์๋ ๋ฎ์ ๋ ๋ฒจ์ ์ธ๋ถ์ฌํญ์ ์ต์ ํจ.
- ๊ตฌ์ ํ๋ฅผ ํตํด ์ค๊ณ์๋ ์ค๊ณ ์งํ์ ๋ฐ๋ผ ๋ฎ์ ๋ ๋ฒจ์ ์ธ๋ถ์ฌํญ์ ํ์ํจ.
- ๋์์ธ ๊ฐ๋
: ์ฌ๊ตฌ์ฑ (Refactoring)
- ๊ธฐ๋ฅ์ด๋ ๋์ ๋ณ๊ฒฝ์์ด ๊ตฌ์ฑ์์์ ์ค๊ณ๋ฅผ ๋จ์ํํ ์ฌ๊ตฌ์ฑ ๊ธฐ๋ฒ
- ์ธ๋ถ ๋์์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ๋ ๋ฐฉ์. SW ์์คํ ๋ณ๊ฒฝ ํ๋ก์ธ์ค
- SW ๋ฆฌํฉํฐ๋ง ์ ๊ฒ์ฌ๋๋ ๋ถ๋ถ
- ์ค๋ณต
- ๋ถํ์ํ ์์
- ๋นํจ์จ์ ์ด๊ฑฐ๋ ํ์์๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ถ์คํ๊ฒ ๊ตฌ์ฑ๋๊ฑฐ๋ ๋ถ์ ์ ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ, ๋๋ ๋ ๋์ ์ค๊ณ๋ก ์์ ๋ ์ ์๋ ๋ค๋ฅธ ์ค๊ณ ์คํจ.
- ๋์์ธ ๊ฐ๋
: ํด๋์ค ์ค๊ณ (Design Classes)
- ํด๋์ค๋ฅผ ๊ตฌํํ ์ ์๋ ์ค๊ณ ์ธ๋ถ์ฌํญ์ ์ ๊ณต, ๋ถ์ ํด๋์ค ์ธ๋ถํ
- ๋น์ฆ๋์ค ์๋ฃจ์ ์ง์์ ์ํด SW์ธํ๋ผ๋ฅผ ๊ตฌํํ๋ ์๋ก์ด ์ค๊ณ ํด๋์ค ์งํฉ ์์ฑ
- ์์ ํ๊ณ ์ถฉ๋ถํจ
- ์์์ฑ
- ๋์ ์์ง๋ ฅ
- ๋ฎ์ ๊ฒฐํฉ๋ ฅ
The Design Model
- Process dimension: ํ๋ก์ธ์ค ์ฐจ์์ ์ค๊ณ ์์ ์ด SW ํ๋ก์ธ์ค์ ์ผ๋ถ๋ก ์คํ๋จ์ ๋ฐ๋ผ ๋ชจ๋ธ์ ์งํ๋ฅผ ๋ํ๋
- Abstraction dimension: ์ถ์ํ ์ฐจ์์ ๋ถ์ ๋ชจ๋ธ์ ๊ฐ ์์๊ฐ ์ค๊ณ ๋ฑ๊ฐ๋ฌผ๋ก ๋ณํ๋์ด ๋ฐ๋ณต์ ์ผ๋ก ์ ์ ๋ ๋์ ์ธ๋ถ ์์ค์ ๋ํ๋
์ค๊ณ ๋ชจ๋ธ ์์(Design Model Elements)
- ๋ฐ์ดํฐ ์์
- data model → data structures
- data model → database architecture
- ์ค๊ณ ์์
- ์์ฉํ๋ก๊ทธ๋จ ๋๋ฉ์ธ
- ๋ถ์ ํด๋์ค, ๊ด๊ณ, ํ๋ ฅ ๋ฐ ํ๋์ด ์ค๊ณ ์คํ์ผ๋ก ๋ณํ๋จ
- ํจํด๊ณผ ์คํ์ผ
- ์ธํฐํ์ด์ค ์์
- ์ฌ์ฉ์ ์ธํฐํ์ด์ค (UI)
- ๋ค๋ฅธ ์์คํ , ์ฅ์น, ๋คํธ์ํฌ ๋๋ ์ ๋ณด์ ๋ค๋ฅธ ์์ฐ์/์๋น์์ ๋ํ ์ธ๋ถ ์ธํฐํ์ด์ค
- ๋ค์ํ ์ค๊ณ ๊ตฌ์ฑ์์ ๊ฐ์ ๋ด๋ถ ์ธํฐํ์ด์ค
- ๊ตฌ์ฑ ์์ (Component)
- ๋ฐฐํฌ ์์ (Deployment)
728x90
'๐ ์ ๊ณต ๊ณต๋ถ > ์ํํธ์จ์ด๊ณตํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ํํธ์จ์ด๊ณตํ] 10์ฅ. ์ปดํฌ๋ํธ ๋ฐ UI ์ค๊ณ (0) | 2023.04.23 |
---|---|
[์ํํธ์จ์ด๊ณตํ] 9์ฅ. ์ค๊ณ ๋ชจ๋ธ๋ง (0) | 2023.04.23 |
[์ํํธ์จ์ด๊ณตํ] ์์คํ ์๊ฐ : what is system? (0) | 2023.04.23 |
[์ํํธ์จ์ด๊ณตํ] 7์ฅ. ์๊ตฌ์ฌํญ ๋ถ์ ๋ชจ๋ธ๋ง (0) | 2023.04.23 |
[์ํํธ์จ์ด๊ณตํ] 6์ฅ. ์๊ตฌ์ฌํญ ๊ฐ๋ (0) | 2022.10.20 |