๊ตญ๋น์ง์ D+69
- ์๋ฒํ๋ก๊ทธ๋จ๊ตฌํ -
๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ
• ๊ฐ๋ฐํ๊ฒฝ ์ค๋น
๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ์ ์ดํด
๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌ์ถํ๊ธฐ ์ํด์๋, ํ๋ก์ ํธ์ ๋ชฉ์ ๊ณผ ๊ตฌ์ถ ์ค๊ณ์ ๋ํ ๋ช ํํ ์ดํด๊ฐ ํ์ํ๋ฉฐ, ์ด์ ๋ง๋ ํ๋์จ์ด, ์ํํธ์จ์ด์ ์ ์ ์ด ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
๋ํ ๊ฐ๋ฐ์ ์ฌ์ฉ๋๋ ์ ํ๋ค์ ์ฑ๋ฅ๊ณผ ๋ผ์ด์ ์ค ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ ํธ์์ฑ ๋ฑ์ ๋ํ ๋ด์ฉ๋ ํ์ ํด์ผ ํ๋ค.
๊ฐ๋ฐ์ ์ํด ์ฌ์ฉ๋๋ ์ํํธ์จ์ด์ ์ข ๋ฅ์ ํน์ฑ
- ๊ตฌํ ๋๊ตฌ : ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋๊ตฌ๋ก ์ฝ๋์ ์์ฑ ๋ฐ ํธ์ง, ๋๋ฒ๊น ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ ์์ ์ด ๊ฐ๋ฅํ๋ฉฐ Eclipse, Visual Studio Code, IntelliJ ๋ฑ์ด ์๋ค.
- ํ ์คํธ ๋๊ตฌ : ์ํํธ์จ์ด์ ํ์ง์ ๋์ด๊ธฐ ์ํด ํ ์คํธ์ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ๋๊ตฌ๋ค๋ก xUnit, Spring Test ๋ฑ์ด ์๋ค.
๊ฐ๋ฐ์ธ์ด์ ์ ์ ๊ธฐ์ค
- ์ ์ ์ฑ : ๊ฐ๋ฐํ๊ณ ์ ํ๋ ์์คํ ์ด๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ชฉ์ ์ ์ ํฉํด์ผ ํ๋ค.
- ํจ์จ์ฑ : ํ๋ก๊ทธ๋๋ฐ์ ํจ์จ์ฑ์ด ๊ณ ๋ ค๋์ด์ผ ํ๋ค.
- ์ด์์ฑ : ์ผ๋ฐ์ ์ธ PC ๋ฐ OS์ ๊ฐ๋ฐํ๊ฒฝ์ด ์ค์น ๊ฐ๋ฅํด์ผ ํ๋ค.
- ์น๋ฐ์ฑ : ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ทธ ์ธ์ด๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค.
- ๋ฒ์ฉ์ฑ : ๋ค์ํ ๊ณผ๊ฑฐ ๊ฐ๋ฐ ์ค์ ์ด๋ ์ฌ๋ก๊ฐ ์กด์ฌํ๊ณ , ๊ด๋ฒ์ํ ๋ถ์ผ์ ์ฌ์ฉ๋๊ณ ์์ด์ผ ํ๋ค.
ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ์ํ ๋น๋(Build)๋๊ตฌ์ ํน์ง
- Gradle : ๊ธฐ๊ตฌํ๋ Goal ์ํ, ํ๋ก์ ํธ ์ ์ฒด ์ ๋ณด๋ฅผ ์ ์, Multi ํ๋ก์ ํธ ๋น๋ ์ง์, ์คํฌ๋ฆฝํธ ๊ท๋ชจ๊ฐ ์๊ณ ์ฝ๊ธฐ ์ฌ์
- Maven : ๊ธฐ๊ตฌํ๋ Goal ์ํ, ํ๋ก์ ํธ ์ ์ฒด ์ ๋ณด๋ฅผ ์ ์, ๋น๋ ์๋ช ์ฃผ๊ธฐ, ํ์คํ๋ ๋๋ ํฐ๋ฆฌ ๋ ์ด์์, ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํ๋ฌ๊ทธ์ธ ๋ฐ ์ ์ฅ์
ํ์๊ด๋ฆฌ ๋๊ตฌ
- Git
๋ผ์ด์ ์ค : GNU GPL v2.0
์ ์ฉ์ธ์ด : ๋ฌด๊ด
OS : Windosw/Linux/Max
์คํํ๊ฒฝ : Command Line Interface
GUI : ๋ฒ๋ค๋ก ์ ๊ณต Source Tree, Git Eye ๋ฑ
• ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ
ํด๋ผ์ด์ธํธ(Client) ํ๊ฒฝ ๊ตฌ์ฑ
- ์๋ฒ ์์คํ ์์ ์ ๊ณตํ๋ ์๋น์ค๋ฅผ ํ์ฉํ๊ธฐ ์ํ ์ฌ์ฉ์์์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํ๋์จ์ด
- PC, ์น ๋ธ๋ผ์ฐ์ ํ๋ฉด, ํธ๋ํฐ ๋ฑ
์๋ฒ(Server) ํ๊ฒฝ ๊ตฌ์ฑ
- ์น(Web) ์๋ฒ : ํด๋ผ์ด์ธํธ์์ ์์ฒญํ๋ ์๋น์ค์ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํด ์ ์ ํ์ผ๋ค์ ์ ๊ณตํ๋ ์น ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์น๋๋ ํ๋์จ์ด
- ์น ์ ํ๋ฆฌ์ผ์ด์ (Application) ์๋ฒ : ๋์ ์น ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด Tomcat, Undertow, IIS ๋ฑ ๋ฏธ๋ค์จ์ด์ธ WAS(Web Application Server)์ ์๋น์ค์ ๊ด๋ จ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์น๋๋ ํ๋์จ์ด
- ๋ฐ์ดํฐ๋ฒ ์ด์ค(Database) ์๋ฒ : MySql, Oracle, MS-SQL๋ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ค์น๋๋ ํ๋์จ์ด
- ํ์ผ(File) ์๋ฒ : ์๋น์ค ์ ๊ณต์ ์ํด ํ์ผ์ ์ ์ฅํ๊ณ , ๊ณต์ ํ๊ธฐ ์ํ ํ์ผ ์ ์ฅ ํ๋์จ์ด
๊ฐ๋ฐ ์ํํธ์จ์ด
- ์๊ตฌ ์ฌํญ ๊ด๋ฆฌ๋๊ตฌ : ๊ณ ๊ฐ์ ์๊ตฌ์ฌํญ์ ์์ง, ๋ถ์, ์ถ์ ์ ์ฝ๊ฒ ํ ์ ์๊ฒ ์ง์ํ๋ค
ex) JFeature, JRequisite, OSRMT, Trello ๋ฑ
- ์ค๊ณ/๋ชจ๋ธ๋ง ๋๊ตฌ : ๊ธฐ๋ฅ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ฒฐ์ ํ๊ธฐ ์ํด ๋ํฉ ๋ชจ๋ธ๋ง ์ธ์ด ์ง์, Database ์ค๊ณ ์ง์ ๋ฑ ์ค๊ณ ๋ฐ ๋ชจ๋ธ๋ง์ ์ง์ํ๋ค.
ex) ArgoUML, DB Designer, StarUML ๋ฑ
- ๊ตฌํ ๋๊ตฌ : ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ํํธ์จ์ด ์ธ์ด๋ฅผ ํตํด ๊ตฌํ ๋ฐ ๊ฐ๋ฐ์ ์ง์ํ๋ ๋๊ตฌ์ด๋ค.
ex) Eclipse, IntelliJ, Visual Studio ๋ฑ
- ํ ์คํธ ๋๊ตฌ : ๊ตฌํ ๋ฐ ๊ฐ๋ฐ๋ ๋ชจ๋๋ค์ ๋ํ์ฌ ์๊ตฌ ์ฌํญ์ ์ ํฉํ๊ฒ ๊ตฌํ๋์ด ์๋์ง ํ ์คํธ๋ฅผ ์ง์ํ๋ ๋๊ตฌ์ด๋ค.
ex) JUnit, CppUnit, JMeter SpringTest ๋ฑ
- ํ์๊ด๋ฆฌ ๋๊ตฌ : ์ฐ์ถ๋ฌผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฒ์ ๋ณ๋ก ๊ด๋ฆฌํ์ฌ ๋ชฉํ ์์คํ ์ ํ์ง ํฅ์์ ์ง์ํ๋ ๋๊ตฌ์ด๋ค.
ex) Git, SVN ๋ฑ
ํ์๊ด๋ฆฌ
Software Configuration Management๋ ์ํํธ์จ์ด์ ๊ฐ๋ฐ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ฐ์ถ๋ฌผ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฒ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ผ๋ จ์ ํ๋์ด๋ค.
ํ์๊ด๋ฆฌ ์ ์ฐจ
(1) ํ์ ์๋ณ
(2) ํ์ํต์
(3) ํ์ ๊ฐ์ฌ
(4) ํ์ ๊ธฐ๋ก/๋ณด๊ณ
๊ณตํต ๋ชจ๋ ๊ตฌํํ๊ธฐ
• ๊ณตํต ๋ชจ๋ ๊ตฌํ
์ฌ์ฌ์ฉ(Reuse)
๋ชฉํ ์์คํ ์ ๊ฐ๋ฐ ์๊ฐ ๋ฐ ๋น์ฉ ์ ๊ฐ์ ์ํ์ฌ ๊ฒ์ฆ๋ ๊ธฐ๋ฅ์ ํ์ ํ๊ณ ์ฌ๊ตฌ์ฑํ์ฌ ์์คํ ์ ์์ฉํ๊ธฐ ์ํ ์ต์ ํ ์์ ์ด๋ค.
๊ณตํต ๋ชจ๋์ ์ข ๋ฅ
์ด๋ป๊ฒ ํ๋ฉด ์ข์ ํ์ง์ ์ ์งํ ์ ์์์ง์ ๋ํ ๋ชจ๋ํ ๊ด๋ จ ๋ด์ฉ
์์ง๋ ์ ํ
๋ชฉํ ์์คํ ์ ๊ธฐ์ค์ ๋ฐ๋ผ ๋ชจ๋์ ๊ตฌ์ฑํ ์ ์์ผ๋, ํ์ง ์ธก๋ฉด์์๋ ์์ง๋์ ์ ํ ์ค ๊ธฐ๋ฅ์ ์์ง๋๊ฐ ๊ฐ์ฅ ๋๊ณ ์ฐ์ฐ์ ์์ง๋๊ฐ ๊ฐ์ฅ ๋๋ค.
๊ฒฐํฉ๋ ์ ํ
๋ชฉํ ์์คํ ์ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ชจ๋ ๊ตฌ์ฑ์ ๊ฒฐํฉ ์ ๋๋ฅผ ๊ฒฐ์ ํ ์ ์์ผ๋, ํ์ง ์ธก๋ฉด์์ ๊ฒฐํฉ๋์ ์ ํ ์ค ์๋ฃ ๊ฒฐํฉ๋์ ํ์ง์ด ๊ฐ์ฅ ๋๊ณ , ๋ด์ฉ ๊ฒฐํฉ๋์ ํ์ง์ด ๊ฐ์ฅ ๋ฎ๋ค.
• ๊ณตํต ๋ชจ๋ ํ ์คํธ
ํ ์คํธ ์ผ์ด์ค ๊ตฌ์ฑ ์์
ํ ์คํธ ์ผ์ด์ค๋ ์๊ตฌ ์ฌํญ์ ์ค์ํ๋์ง ๊ฒ์ฆํ๊ธฐ ์ํ์ฌ ํ ์คํธ ์กฐ๊ฑด, ์ ๋ ฅ๊ฐ, ์์์ถ๋ ฅ๊ฐ ๋ฐ ์ํํ ๊ฒฐ๊ณผ ๋ฑ ํ ์คํธ ์กฐ๊ฑด์ ๋ช ์ธํ ๊ฒ์ด๋ค.
ํ ์คํธ ํ๋ก์ธ์ค
ํ ์คํธ ํ๋ก์ธ์ค๋ ํ ์คํธ ์ํ๊ณผ ๊ด๋ จ๋ ํ๋๋ค์ด ์๋๋ ํ ์คํธ ๋ชฉ์ ๊ณผ ์กฐ๊ฑด์ ๋ฌ์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ์ญํ ์ ํ๋ค.
์๋ฒ ํ๋ก๊ทธ๋จ ๊ตฌํํ๊ธฐ
• ์ ๋ฌด ํ๋ก์ธ์ค ํ์ธ
ํ๋ก์ธ์ค์ ๊ฐ๋
๊ฐ์ธ์ด๋ ์กฐ์ง์ด ํ ๊ฐ ์ด์์ ์ ๋ณด ์์์ ์ ๋ ฅ์ ํตํด ๊ฐ์น ์๋ ์ฐ์ถ๋ฌผ์ ์ ๊ณตํ๋ ๋ชจ๋ ๊ด๋ จ ํ๋๋ค์ ์งํฉ์ด๋ค.
• ์๋ฒ ํ๋ก๊ทธ๋จ ๊ตฌํ
ํ๋ ์์ํฌ ํน์ง
- ํจ์จ์ ์ธ ์ ๋ณด ์์คํ ๊ฐ๋ฐ์ ์ํ ์ฝ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ ํ๋ฆฌ์ผ์ด์ ์ธํฐํ์ด์ค(Application Interface), ์ค์ ์ ๋ณด ๋ฑ์ ์งํฉ์ผ๋ก์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋๋ก ์ํํธ์จ์ด ๊ตฌ์ฑ์ ํ์ํ ๊ธฐ๋ณธ ๋ผ๋๋ฅผ ์ ๊ณตํ๋ค.
๋ฐ์ดํฐ ์ ์ฅ ๊ณ์ธต ๋๋ ์์ ๊ณ์ธต(Persistence Layer)์ ๋ํ ์ดํด
์ํํธ์จ์ด ๊ฐ๋ฐ ๋ณด์ ๊ฐ์ด๋์ ๊ตฌ์ฑ
๋จ์ํ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ ๊ฒฝ์ฐ ๋ณด์์ ์๋นํ ์ทจ์ฝํ๋ค.
์ด๋ ๊ธฐ์ ์ด ๋ฐ์ ํ๋ฉด์ ํดํน๋ ๋ฐ์ ํ๊ฒ ๋ ๊ฒ์ด ์์ธ์ด๋ค.
์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ดํ๋ฆฌ์ผ์ด์ ๋ณด์์ ์ด๋ป๊ฒ ํ๋ฉด ์ํ ์ ์์๊น์ ๋ํ ์ด์๊ฐ ์๊ธฐ๊ฒ ๋์์ผ๋ฉฐ ์ด์ ๋ํด ์๋ดํด์ฃผ๋ ๊ฐ์ด๋๋ผ์ธ์ด ์๊ฒจ๋๊ฒ ๋์๋ค.
• ์๋ฒ ํ๋ก๊ทธ๋จ ํ ์คํธ
์ํํธ์จ์ด ํ ์คํธ์ ๊ฐ๋
- ์ํํธ์จ์ด ํ ์คํธ๋ ๊ตฌํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์์คํ ์ ์ฌ์ฉ์์ ์๊ตฌ ์ฌํญ์ด ๋ง์กฑ๋์๋์ง ํ์ธํ๊ธฐ ์ํ์ฌ ๊ธฐ๋ฅ ๋ฐ ๋น๊ธฐ๋ฅ ์์์ ๊ฒฐํจ์ ์ฐพ์๋ด๋ ํ๋์ด๋ค.
์ํํธ์จ์ด ํ ์คํ ์ ์๋ฆฌ
1. ํ ์คํ ์ ๊ฒฐํจ์ด ์กด์ฌํจ์ ๋ฐํ๋ ํ๋์ด๋ค.
2. ์๋ฒฝํ ํ ์คํ ์ ๋ถ๊ฐ๋ฅํ๋ค.
3. ํ ์คํ ์ ๊ฐ๋ฐ ์ด๊ธฐ์ ์์ํ๋ค.
4. ๊ฒฐํจ์ง์ค(Defect Clustering) : ๊ฒฐํจ์ ํผ์ ธ์๋ ๊ฒ์ด ์๋๋ผ ํน์ ๋ถ๋ถ์ ์ง์ค๋์ด ์๋ค.
5. ์ด์ถฉ์ ํจ๋ฌ๋ ์ค(Pesticide paradox) : ๋์ผํ ํ ์คํธ๊ฒ์ด์ค์ ์ํ ๋ฐ๋ณต์ ์ธ ํ ์คํธ๋ ์๋ก์ด ๋ฒ๊ทธ๋ฅผ ์ฐพ์ง ๋ชปํ๋ค.
6. ํ ์คํ ์ ์ ํฉ(Context)์ ์์กด์ ์ด๋ค.
7.์ค๋ฅ-๋ถ์ฌ์ ๊ถค๋ณ : ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ์์ผ์ฃผ์ง ๋ชปํ ๊ฒฝ์ฐ ๊ฒฐํจ์ด ์๋ค๊ณ ํด๋ ๋์ ํ์ง์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
๋๊ธ