์๊ตฌ์ฌํญ ํ์ธ
์ํํธ์จ์ด ๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก ์ข ๋ฅ
- ๊ตฌ์กฐ์ ๋ฐฉ๋ฒ๋ก - ์ ์ฒด ์์คํ ์ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋๋์ด ๊ฐ๋ฐํ๊ณ , ์ด๋ฅผ ํตํฉํ๋ ๋ถํ ๊ณผ ์ ๋ณต ์ ๊ทผ ๋ฐฉ์์ ๋ฐฉ๋ฒ๋ก
- ์ ๋ณด๊ณตํ ๋ฐฉ๋ฒ๋ก - ์ ๋ณด์์คํ ๊ฐ๋ฐ์ ํ์ํ ๊ด๋ฆฌ ์ ์ฐจ์ ์์ ๊ธฐ๋ฐ์ ์ฒด๊ณํํ ๋ฐฉ๋ฒ๋ก
- ๊ฐ์ฒด ์งํฅ ๋ฐฉ๋ฒ๋ก - ‘๊ฐ์ฒด’๋ผ๋ ๊ธฐ๋ณธ ๋จ์๋ก ์์คํ ์ ๋ถ์ ๋ฐ ์ค๊ณํ๋ ๋ฐฉ๋ฒ๋ก
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ๋ฐฉ๋ฒ๋ก - ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ฑํ๋ ์ปดํฌ๋ํธ๋ฅผ ์กฐ๋ฆฝํด์ ํ๋์ ์๋ก์ด ์์ฉ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฐฉ๋ฒ๋ก
- ์ ์์ผ ๋ฐฉ๋ฒ๋ก - ์ ์ฐจ๋ณด๋ค ์ฌ๋์ด ์ค์ฌ์ด ๋์ด ๋ณํ์ ์ ์ฐํ๊ณ ์ ์ํ๊ฒ ์ ์ฉํ๋ฉด์ ํจ์จ์ ์ผ๋ก ์์คํ ์ ๊ฐ๋ฐํ ์ ์๋ ๋ฐฉ๋ฒ๋ก
- ์ ํ ๊ณ์ด ๋ฐฉ๋ฒ๋ก - ํน์ ์ ํ์ ์ ์ฉํ๊ณ ์ถ์ ๊ณตํต๋ ๊ธฐ๋ฅ์ ์ ์ํ์ฌ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ๋ก
- SDLC (์ํํธ์จ์ด ์๋ช
์ฃผ๊ธฐ)SDLC ๋ชจ๋ธ ์ข
๋ฅ
- ํญํฌ์ ๋ชจ๋ธ Waterfall Model
- ๋ง๋ฌด๋ฆฌ ์ง์ ํ ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ ๋ชจ๋ธ
- ํ๋กํ ํ์ดํ ๋ชจ๋ธ Prototype Model
- ๊ณ ๊ฐ์ ํผ๋๋ฐฑ์ ๋ฐ์ํ์ฌ ์ํํธ์จ์ด๋ฅผ ๋ง๋ค์ด๊ฐ๋ ๋ชจ๋ธ
- ๋์ ํ ๋ชจ๋ธ Spiral Model
- ์ํ์ ์ต์ํ, ์ ์ง์ ๋ชจํ
- ๊ณํ ์๋ฆฝ → ์ํ ๋ถ์ → ๊ฐ๋ฐ → ๊ณ ๊ฐ ํ๊ฐ (๊ณ์๊ฐ๊ณ )
- ์ ์์ผ ๋ชจ๋ธ Agile Model
- ์๊ตฌ ์ฌํญ ๋ณํ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์๋๋ก ์ผ์ ํ ์ฃผ๊ธฐ๋ฅผ ๋ฐ๋ณตํ๋ฉด์ ๊ฐ๋ฐํ๋ ๋ชจ๋ธ
- ํญํฌ์ ๋ชจ๋ธ Waterfall Model
- ์์คํ ์๊ตฌ๋ถ์๋ถํฐ ์ ์ง๋ณด์๊น์ง ์ ๊ณต์ ์ ์ฒด๊ณํํ ์ ์ฐจ
- ์ ์์ผ ๋ฐฉ๋ฒ๋ก
- ์์ฌ์ํต, ์ฉ๊ธฐ, ๋จ์์ฑ, ์กด์ค, ํผ๋๋ฐฑ
- ์คํฌ๋ผ Scrum
- ํ์๋ค์ด ์ค์ค๋ก ํ์ ๊ตฌ์ฑ
- 2~4์ฃผ ๊ธฐ๊ฐ
- ๊ฐ๋ฐ์ ํ์ํ ์๊ตฌ์ฌํญ์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ ์ ํ๊ธฐ๋ฅ ๋ชฉ๋ก(Product Backlog)์ ์์ฑ
- ์คํ๋ฆฐํธ ๊ณํ ํ์ → ์คํ๋ฆฐํธ → ์ผ์ผ ์คํฌ๋ผ ํ์ → ์คํ๋ฆฐํธ ๊ฒํ ํ์ → ์คํ๋ฆฐํธ ํ๊ณ
- ์ ํ ์ฑ ์์(Product Owner)๊ฐ Backlog ์์ฑ
- ์คํฌ๋ผ ๋ง์คํฐ(SM; Scrum Master): ๊ฐ์ด๋ ์ญํ
- XP (eXtreme Programming)
- Pair Programming ์ง ํ๋ก๊ทธ๋๋ฐ: ํจ๊ป ํ๋ก๊ทธ๋๋ฐ์ ์ํํจ์ผ๋ก์จ ๊ฐ๋ฐ์ ๋ํ ์ฑ ์์ ๊ณต๋์ผ๋ก ๋๋ ๊ฐ๋ ํ๊ฒฝ์ ์กฐ์ฑ
- Collective Ownership ๊ณต๋ ์ฝ๋ ์์ : ๊ฐ๋ฐ ์ฝ๋์ ๋ํ ์ฑ ์์ ๊ณต๋์ผ๋ก ์์
- Test-Driven Development ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ: ๊ฐ๋ฐ์๊ฐ ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋จผ์ ์์ฑํ๋ฏ๋ก ๋ฌด์์ ํด์ผํ๋์ง ์ ํํ ํ์ , ํ ์คํธ๊ฐ ์ง์์ ์ผ๋ก ์งํ๋ ์ ์๋๋ก ์๋ํ๋ ํ ์คํ ๋๊ตฌ๋ฅผ ์ฌ์ฉ
- Whole Team ์ ์ฒด ํ: ๊ฐ๋ฐ์ ์ฐธ์ฌํ๋ ๋ชจ๋ ๊ตฌ์ฑ์ (๊ณ ๊ฐ ํฌํจ)๋ค์ ๊ฐ์ ์์ ์ ์ญํ ์ด ์๊ณ ๊ทธ ์ญํ ์๋ํ ์ฑ ์์ ๊ฐ์ ธ์ผํจ
- Continuous Integration ๊ณ์์ ์ธ ํตํฉ: ๋ชจ๋ ๋จ์๋ก ๋๋ ๊ฐ๋ฐ๋ ์ฝ๋๋ค์ ํ๋์ ์์ ์ด ๋ง๋ฌด๋ฆฌ ๋ ๋๋ง๋ค ์ง์์ ์ผ๋ก ํตํฉ ๋จ
- Refactoring ๋ฆฌํฉํ ๋ง: ํ๋ก๊ทธ๋จ์ ์ฝ๊ฒ ์ดํดํ๊ณ ์์ ํ์ฌ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๊ธฐ ์ํจ, ํ๋ก๊ทธ๋จ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝ ์์ด ์์คํ ์ ์ฌ๊ตฌ์ฑํจ
- Small Releases ์๊ท๋ชจ ๋ฆด๋ฆฌ์ฆ: ๋ฆด๋ฆฌ์ฆ ๊ธฐ๊ฐ์ ์งง๊ฒ ๋ฐ๋ณตํจ์ผ๋ก์จ ๊ณ ๊ฐ ์๊ตฌ ๋ณํ์ ์ ์ํ ๋์ ๊ฐ๋ฅ
- ๋ฆด๋ฆฌ์ฆ ํ ์คํธ๋ง๋ค ๊ณ ๊ฐ์ ์ง์ ์ฐธ์ฌ์ํด์ผ๋ก์จ ์๊ตฌํ ๊ธฐ๋ฅ์ด ์ ๋๋ก ์๋ํ๋์ง ๊ณ ๊ฐ์ด ์ง์ ํ์ธํ ์ ์๋ ๋ชจํ
- ๋ฆด๋ฆฌ์ฆ ๊ณํ ์๋ฆฝ → ์ดํฐ๋ ์ด์ → ์น์ธ ๊ฒ์ฌ → ์๊ท๋ชจ ๋ฆด๋ฆฌ์ฆ
DB ์ค๊ณ ์ ์ฐจ
๊ฐ์ฒด์งํฅ ์ค๊ณ ์์น SOLID
- SRP ๋จ์ผ์ฑ ์ (Single Responsibility Principle)
์์ฑ๋ ํด๋์ค๋ ํ๋์ ๊ธฐ๋ฅ๋ง ๊ฐ์ง๋ฉฐ ํด๋์ค๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ์๋น์ค๋ ๊ทธ ํ๋์ ์ฑ ์์ ์ํํ๋๋ฐ ์ง์ค๋์ด์์ด์ผ ํจ
- OCP ๊ฐ๋ฐฉํ์ (Open Close Principle)
ํ์ฅ์๋ ์ด๋ ค์๊ณ , ๋ณ๊ฒฝ์๋ ๋ซํ์์ด์ผ ํ๋ค
- LSP ๋ฆฌ์ค์ฝ๋ธ ์นํ (The Liskov Substitution Principle)
์๋ธ ํ์ ์ ์ธ์ ๋ ๊ธฐ๋ฐ ํ์ ๊ณผ ํธํ๊ฐ๋ฅํด์ผํจ
- ISP ์ธํฐํ์ด์ค ๋ถ๋ฆฌ (Interface Segregation Principle)
์์ ์ด ์ฌ์ฉํ์ง ์์ ์ธํฐํ์ด์ค๋ ๊ตฌํํ์ง ์์์ผํจ
- DIP ์์กด์ฑ ์ญ์ (Dependency Inversion Principle)
ํ์ ๋ชจ๋์ ๋ณ๊ฒฝ์ด ์์ ๋ชจ๋์ด ๋ณ๊ฒฝ์ ์๊ตฌํ๋ ์๊ณ๊ด๊ณ๋ฅผ ๋๋ ์๋ฏธ์ ์ญ์
๋ฆฌํฉํ ๋ง Refactoring
์ํํธ์จ์ด๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ์ดํดํ๊ณ ์์ ํ ์ ์๋๋ก ๊ฐ์ ํ๊ธฐ ์ํจ
์ํํธ์จ์ด ๋ชจ๋์ ์ธ๋ถ์ ๊ธฐ๋ฅ์ ์์ ํ์ง ์๊ณ ๋ด๋ถ์ ์ผ๋ก ๊ตฌ์กฐ, ๊ด๊ณ ๋ฑ์ ๋จ์ํํ์ฌ ์ํํธ์จ์ด์ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๊ธฐ๋ฒ
์ ์ง๋ณด์์ฑ ํฅ์ | ๋ณต์กํ ์ฝ๋์ ๋จ์ํ, ์์ค์ ๊ฐ๋ ์ฑ ํฅ์ |
์ ์ฐํ ์์คํ | ์ํํธ์จ์ด ์๊ตฌ ์ฌํญ ๋ณ๊ฒฝ์ ์ ์ฐํ ๋์ |
์์ฐ์ฑ ํฅ์ | ์ ์ ๋ฐ ์ต์ ํ๋ ์์ค์ ์ฌ์ฌ์ฉ |
ํ์ง ํฅ์ | ์ํํธ์จ์ด ์ค๋ฅ ๋ฐ๊ฒฌ์ด ์ฉ์ดํ์ฌ ํ์ง ํฅ์ |
UML (Unified Modeling Language)
๊ฐ๋ฐ ๊ณผ์ ์์ ์์ฌ์ํต์ ์ํํ๊ฒ ์ด๋ฃจ์ด์ง๋๋ก ํ์คํํ ๋ํ์ ์ธ ๊ฐ์ฒด์งํฅ ๋ชจ๋ธ๋ง ์ธ์ด
Diagram
์ฌ๋ฌผ๊ณผ ๊ด๊ณ๋ฅผ ๋ํ์ผ๋ก ํํํ ๊ฒ
- ๊ตฌ์กฐ์ ๋ค์ด์ด๊ทธ๋จ - ์ ์ ๋ชจ๋ธ๋ง
- ํด๋์ค ****(Class) ๋ค์ด์ด๊ทธ๋จ : ํด๋์ค์ ํด๋์ค๊ฐ ๊ฐ์ง๋ ์์ฑ
- ๊ฐ์ฒด ****(Object) ๋ค์ด์ด๊ทธ๋จ : ํน์ ์์ ์ ๊ฐ์ฒด์ ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ๋ก ํํ, ๋ผ๋ฐ์ฐ ๊ฐ์ฒด์งํฅ ๊ฐ์ฒด ๋ชจ๋ธ๋ง
- ์ปดํฌ๋ํธ(Component) ๋ค์ด์ด๊ทธ๋จ : ์ปดํฌ๋ํธ ๊ฐ์ ๊ด๊ณ / ๊ตฌํ ๋จ๊ณ
- ๋ฐฐ์น (Deployment) ๋ค์ด์ด๊ทธ๋จ : ๊ฒฐ๊ณผ๋ฌผ, ํ๋ก์ธ์ค, ์ปดํฌ๋ํธ ๋ฑ ๋ฌผ๋ฆฌ์ ์์๋ค์ ์์น๋ฅผ ํํ / ๊ตฌํ ๋จ๊ณ
- ๋ณตํฉ์ฒด ๊ตฌ์กฐ(Composite Structure) ๋ค์ด์ด๊ทธ๋จ : ๋ณตํฉ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ ํด๋์ค๋ ์ปดํฌ๋ํธ์ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ํํ
- ํจํค์ง(Package) ๋ค์ด์ด๊ทธ๋จ : ์ ์ค์ผ์ด์ค๋ ํด๋์ค ๋ฑ์ ์์๋ค์ ๊ทธ๋ฃนํํ ํจํค์ง๋ค์ ์์กด ๊ด๊ณ๋ฅผ ํํ
- ํ์ ๋ค์ด์ด๊ทธ๋จ - ๋์ ๋ชจ๋ธ๋ง
- ์ ์ค์ผ์ด์ค(UseCase) : ์ฌ์ฉ์ ์๊ตฌ ๋ถ์ / ์ฌ์ฉ์์ ๊ณต์
- ์ํ์ค(Sequence) : ์ํธ ์์ฉํ๋ ์์คํ ์ด๋ ๊ฐ์ฒด๋ค์ด ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์์ง
- ์ปค๋ฎค๋์ผ์ด์ (Communication): ๋์์ ์ฐธ์ฌํ๋ ๊ฐ์ฒด๋ค์ด ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์์ง๋ฟ๋ง ์๋๋ผ ๊ฐ์ฒด๋ค ๊ฐ์ ์ฐ๊ด ๊ด๊ณ๋ฅผ ํํ
- ์ํ(State): ์ํ๊ฐ ์ด๋ป๊ฒ ๋ณํํ๋์ง ํํ, ๋ผ๋ฐ์ฐ ๊ฐ์ฒด์งํฅ ๋์ ๋ชจ๋ธ๋ง
- ํ๋(Activity): ๊ฐ์ฒด์ ์ฒ๋ฆฌ ๋ก์ง, ์ฒ๋ฆฌ์ ํ๋ฆ์ ์์๋๋ก ํํ / ์ฌ์ฉ์์ ๊ณต์
- ์ํธ์์ฉ ๊ฐ์(Interaction Overview): ์ ์ด ํ๋ฆ ํํ
- ํ์ด๋ฐ(Timing): ๊ฐ์ฒด ์ํ ๋ณํ์ ์๊ฐ ์ ์ฝ์ ๋ช ์์ ์ผ๋ก ํํ
- ์คํ
๋ ์ค ํ์
- <<include>> ํฌํจ
- <<extends>> ํ์ฅ
- <<interface>> ์ธํฐํ์ด์ค ์ ์
- <<exception>> ์์ธ ์ ์
- <<constructor>> ์์ฑ์
- UML์์ ํํํ๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ธ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ํํ
- ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ ์์ํฌํน์ฑ
- ๋ชจ๋ํ Modularity
- ์ฌ์ฌ์ฉ์ฑ Reusability
- ํ์ฅ์ฑ Extensibility
- ์ ์ด์ ์ญํ๋ฆ Inversion Of Control
- ์คํ๋ง ํ๋ ์์ํฌ
- ์ ์์ ๋ถ ํ๋ ์์ํฌ
- ๋ท๋ท ํ๋ ์์ํฌ
- ๋ผ๋ฐ์ฐ ๊ฐ์ฒด์งํฅ ๋ถ์
'#6 ์๊ฒฉ์ฆ ๐๏ธ > 5-1 ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 3. ๋ฐ์ดํฐ ์ ์ถ๋ ฅ ๊ตฌํ (0) | 2022.11.03 |
---|---|
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์ค๊ธฐ] 2. ํ๋ฉด ์ค๊ณ (0) | 2022.11.03 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ์ ๋ณด์์คํ ๊ตฌ์ถ๊ด๋ฆฌ (0) | 2022.11.03 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ฉ (0) | 2022.10.24 |
[์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์ถ (0) | 2022.10.24 |