- ์ํํธ์จ์ด ์๋ช
์ฃผ๊ธฐ(Sofrware Development Life Cycle, SDLC)
โ ํ๋ก์ ํธ ๊ณํ โถ๏ธ โก์๊ตฌ ๋ถ์ โถ๏ธ โข์ค๊ณ โถ๏ธ โฃ๊ตฌํ โถ๏ธ โคํ ์คํธ โถ๏ธ โฅ์ ์ง ๋ณด์
ํญํฌ์ | ์ ํ ์์ฐจ์ ๊ฐ๋ฐ / ๊ณ ์ ์ , ์ ํต์ ๊ฐ๋ฐ ๋ชจํ / Step-by-Step |
ํ๋กํ ํ์ | ๊ณ ๊ฐ์ need ํ์
์ํด ๊ฒฌ๋ณธ/์์ ํ์ ํตํด ์ต์ข
๊ฒฐ๊ณผ ์์ธก ์ธํฐํ์ด์ค ์ค์ฌ / ์๊ตฌ์ฌํญ ๋ณ๊ฒฝ ์ฉ์ด |
๋์ ํ(Spiral) | ํญํฌ์ + ํ๋กํ ํ์
+ ์ํ ๋ถ์ ๊ธฐ๋ฅ ์ถ๊ฐ(์ํ ๊ด๋ฆฌ/์ต์ํ) ์ ์ง์ ๊ฐ๋ฐ ๊ณผ์ ๋ฐ๋ณต / ์ ๋ฐํ๋ฉฐ ์ ์ง๋ณด์ ๊ณผ์ ํ์ X โ ๊ณํ ์๋ฆฝ → ์ํ ๋ถ์ → ๊ฐ๋ฐ ๋ฐ ๊ฒ์ฆ → ๊ณ ๊ฐ ํ๊ฐ |
์ ์์ผ(Agile) | ์ผ์ ํ ์งง์ ์ฃผ๊ธฐ(Sprint ๋๋ Iteration) ๋ฐ๋ณตํ๋ฉฐ ๊ฐ๋ฐ ์งํ → ๊ณ ๊ฐ ์๊ตฌ์ฌํญ์ ์ ์ฐํ ๋์ (๊ณ ๊ฐ ์ํต/์ํธ์์ฉ ์ค์) Ex. XP(eXtreme Programming), Scrum, FDD(๊ธฐ๋ฅ์ค์ฌ), ๋ฆฐ(LEAN), DSDM(Dynamic System Development Method) |
ํํฅ์ ์ค๊ณ(Top-down): ์ ์ฐจ ์งํฅ (์์ฐจ์ ) / ์ต์์ ์ปดํฌ๋ํธ ์ค๊ณ ํ ํ์ ๊ธฐ๋ฅ ๋ถ์ฌ
→ ํ
์คํธ ์ด๊ธฐ๋ถํฐ ์ฌ์ฉ์์๊ฒ ์์คํ
๊ตฌ์กฐ ์ ์ ๊ฐ๋ฅ
* Component: ๋ช
๋ฐฑํ ์ญํ ์ ๊ฐ์ง๋ฉฐ ์ฌ์ฌ์ฉ๋๋ ๋ชจ๋ ๋จ์ / ์ธํฐํ์ด์ค ํตํด ์ ๊ทผ ๊ฐ๋ฅ
์ํฅ์ ์ค๊ณ(Bottom-up): ๊ฐ์ฒด ์งํฅ / ์ตํ์ ๋ชจ๋ ๋จผ์ ์ค๊ณ ํ ์ด๋ค์ ๊ฒฐํฉํ๊ณ ๊ฒ์ฌ
→ ์ธํฐํ์ด์ค ๊ตฌ์กฐ ๋ณ๊ฒฝ ์ ์์ ๋ชจ๋๋ ๊ฐ์ด ๋ณ๊ฒฝ ํ์ํ์ฌ ๊ธฐ๋ฅ ์ถ๊ฐ ์ด๋ ค์
โป ์ต์คํธ๋ฆผ ํ๋ก๊ทธ๋๋ฐ(eXtreme Programming, XP)
- ๊ณ ๊ฐ์ ์๊ตฌ์ฌํญ์ ์ ์ฐํ๊ฒ ๋์ํ๊ธฐ ์ํด ๊ณ ๊ฐ ์ฐธ์ฌ์ ์ ์ํ ๊ฐ๋ฐ ๊ณผ์ ์ ๋ฐ๋ณต
- 5๊ฐ์ง ํต์ฌ ๊ฐ์น: ์ฉ๊ธฐ / ๋จ์์ฑ / ์์ฌ์ํต / ํผ๋๋ฐฑ / ์กด์ค
- ๊ธฐ๋ณธ ์๋ฆฌ: ์ ์ฒด ํ / ์๊ท๋ชจ ๋ฆด๋ฆฌ์ฆ / ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ / ๊ณ์์ ์ธ ํตํฉ / ๊ณต๋ ์์ ๊ถ(Collective ownership) / ์ง(pair) ํ๋ก๊ทธ๋๋ฐ / ๋์์ธ ๊ฐ์ฑ(๋ฆฌํฉํ ๋ง) / ์ ์์ผ(Agile) ๋ฐฉ๋ฒ๋ก ํ์ฉ ์์์ ์๋ฆฌ ๋ฐ ๊ฒฝํ ์ถ๊ตฌ, ๊ฐ๋ฐ ๋ฌธ์๋ณด๋ค ์์ค์ฝ๋์ ์ค์ (๋ฌธ์ํ X)
โ ํ๋ก์ ํธ ๊ณํ
โถ๏ธ ํํฅ์ ๋น์ฉ ์ฐ์ ๊ธฐ๋ฒ
- ์ ๋ฌธ๊ฐ ๊ฐ์ ๊ธฐ๋ฒ: ์กฐ์ง ๋ด ๋ ๋ช
์ด์์ ์ ๋ฌธ๊ฐ์๊ฒ ๋น์ฉ ์ฐ์ ์ ์๋ขฐํ๋ ๊ธฐ๋ฒ → ๊ฐ์ธ์ / ์ฃผ๊ด์ ํ๋จ ๊ฐ๋ฅ
- ๋ธํ์ด ๊ธฐ๋ฒ: ํ ๋ช
์ ์กฐ์ ์์ ์ฌ๋ฌ ์ ๋ฌธ๊ฐ์ ์๊ฒฌ์ ์ข
ํฉํ์ฌ ์ฐ์ → '์ ๋ฌธ๊ฐ ๊ฐ์ ๊ธฐ๋ฒ'์ ์ฃผ๊ด์ ํธ๊ฒฌ ๋ณด์
โถ๏ธ ์ํฅ์ ๋น์ฉ ์ฐ์ ๊ธฐ๋ฒ
- ํ๋ก์ ํธ ์ธ๋ถ ์์
๋จ์ ๋ณ๋ก ๋น์ฉ ์ ์ฐ ํ ์ ์ฒด ๋น์ฉ์ ์ฐ์ ํ๋ ๋ฐฉ๋ฒ
[ ์ข
๋ฅ ]
• LOC(Source Line of Code): ์ฝ๋ ๋ผ์ธ ์ด ์ / ์์ฐ์ฑ / ๊ฐ๋ฐ ์ฐธ์ฌ ์ธ์ ๋ฑ์ผ๋ก ๊ณ์ฐ
→ ๋๊ด์น(a), ๋น๊ด์น(b), ๊ธฐ๋์น(c)๋ฅผ ์ธก์ /์์ธกํ์ฌ ๋น์ฉ ์ฐ์ = a + 4c + b / 6
• ๊ฐ๋ฐ ๋จ๊ณ๋ณ ์ธ์ ์(Effort Per Task): LOC ๊ธฐ๋ฒ ๋ณด์ / ์๋ช
์ฃผ๊ธฐ ๊ฐ ๋จ๊ณ๋ณ๋ก ์ฐ์
โถ๏ธ ์ํ์ ๋น์ฉ ์ฐ์
โ COCOMO(Constructive Cost Model): ๋ณดํด(Boehm) ์ ์ / ์์ ์ฝ๋ ๋ผ์ธ ์ ๊ธฐ๋ฐ
→ ๋น์ฉ ๊ฒฌ์ ๊ฐ๋ ๋ถ์ ๋ฐ ๋น์ฉ ๊ฒฌ์ ์ ์ ์ฐ์ฑ์ด ๋์ ๋๋ฆฌ ํต์ฉ๋จ
→ ๊ฐ์ ํ๋ก์ ํธ๋ผ๋ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๋น์ฉ์ด ๋ค๋ฅด๊ฒ ์ฐ์
์ ํ | ์กฐ์งํ(Organic) | ์ค, ์๊ท๋ชจ SW์ฉ / 5๋ง ๋ผ์ธ(50KDSI) ์ดํ |
๋ฐ๋ถ๋ฆฌํ(Semi-detached) | 30๋ง ๋ผ์ธ(300KDSI) ์ดํ์ ํธ๋์ญ์ ์ฒ๋ฆฌ ์์คํ | |
๋ด์ฅํ(Embedded) | 30๋ง ๋ผ์ธ(300KDSI) ์ด์์ ์ด๋ํ ๊ท๋ชจ SW ๊ด๋ฆฌ |
โก PUTNAM: SW ์๋ช
์ฃผ๊ธฐ ์ ๊ณผ์ ์ ์ฌ์ฉ๋ ๋
ธ๋ ฅ์ ๋ถํฌ๋ฅผ ์ด์ฉํ ๋น์ฉ ์ฐ์ , Rayleigh Norden ๊ณก์ ์ ๋
ธ๋ ฅ ๋ถํฌ๋๋ฅผ ๊ธฐ์ด๋ก ํจ
โ
SLIM: Rayleigh-Norden ๊ณก์ / Putnam ๋ชจํ ๊ธฐ์ด๋ก ๊ฐ๋ฐ๋ ์๋ํ ์ถ์ ๋๊ตฌ
โข Function Point(FP): SW ๊ธฐ๋ฅ ์ฆ๋ ์์ธ์ ๊ฐ์ค์น ๋ถ์ฌ ํ ํฉ์ฐํ์ฌ ๊ธฐ๋ฅ์ ์ ์ฐ์ถ
→ SW ๊ธฐ๋ฅ ์ฆ๋ ์์ธ: ์๋ฃ ์
๋ ฅ(์
๋ ฅ ์์) / ์ ๋ณด ์ถ๋ ฅ(์ถ๋ ฅ ๋ณด๊ณ ์) / ๋ช
๋ น์ด(์ฌ์ฉ์ ์ง์์) / ๋ฐ์ดํฐ ํ์ผ / ์ธํฐํ์ด์ค
โ
ESTIMACS: FP ๋ชจํ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ ๊ฐ๋ฐ๋ ์๋ํ ์ถ์ ๋๊ตฌ
โ ๊ฐ๋ฐ ์ผ์ ์ฐ์
- WBS(Work Breakdown Structure): ํ๋ก์ ํธ ๋ชฉํ ๋ฌ์ฑ์ ์ํ ํ๋๊ณผ ์
๋ฌด๋ฅผ ์ธ๋ถํ
→ ์ ์ฒด ํ๋ก์ ํธ๋ฅผ ๋ถํ / ์ํ ์
๋ฌด ์๋ณ, ์ผ์ ๋ฐ ๋น์ฉ
โถ๏ธ ๋คํธ์ํฌ ์ฐจํธ
- PERT
- ํ๋ก์ ํธ ์ง์ ์ํธ๊ด๊ณ๋ฅผ ๋คํธ์ํฌ๋ก ํํ
- ์ ๋
ธ๋(์์
)์ ๊ฐ์ (ํ์ดํ)์ผ๋ก ๊ตฌ์ฑ(@๋ถํ์คํ ์ํฉ)
→ ๊ฐ์ ์๋ ๊ฐ ์ง์ ๋ณ ๋๊ด์น / ๊ธฐ๋์น / ๋น๊ด์น๋ฅผ ๊ธฐ์ฌ
- CPM
- ๋ฏธ๊ตญ Dupont ํ์ฌ์์ ํํ๊ณต์ฅ ์ ์ง / ๊ด๋ฆฌ ์ํด ๊ฐ๋ฐ
- ๋ ธ๋(์์ ) / ๊ฐ์ (์์ ์ ํ ์์กด ๊ด๊ณ) / ๋ฐ์ค(์ด์ ํ) ๊ตฌ์ฑ
- ๊ฐ์ (ํ์ดํ)์ ํ๋ฆ์ ๋ฐ๋ผ ์ง์
์งํ(@ํ์คํ ์ํฉ)
โถ๏ธ ๊ฐํธ ์ฐจํธ
- ๊ฐ ์์
์ ์์/์ข
๋ฃ ์ผ์ ์ ๋ง๋ ๋ฐ(Bar) ๋ํ๋ฅผ ์ด์ฉํด ํํ
- ์๊ฐ์ (Time-line) ์ฐจํธ(์ํ ๋ง๋ ๊ธธ์ด = ์์
๊ธฐ๊ฐ)
- ์์
๊ฒฝ๋ก๋ ํํ ๋ถ๊ฐ / ๊ณํ ๋ณํ๋ ๋ํ ์ ์์ฑ์ด ๋ฎ์
โก ์๊ตฌ์ฌํญ ๋ถ์
โ ์๊ตฌ์ฌํญ
- ์ด๋ ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ์ํ ์กฐ๊ฑด ๋ฐ ์ ์ฝ์ฌํญ์ ์๊ตฌ
- ์ํํธ์จ์ด ๊ฐ๋ฐ/์ ์ง ๋ณด์ ๊ณผ์ ์ ํ์ํ ๊ธฐ์ค๊ณผ ๊ทผ๊ฑฐ ์ ๊ณต
โบ ์๊ตฌ์ฌํญ์ ์ ํ
- ๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ: ์ค์ ์์คํ
์ํ์ ํ์ํ ๊ธฐ๋ฅ ๊ด๋ จ ์๊ตฌ์ฌํญ
ex. ๊ธ์ต ์์คํ ์ ์กฐํ/์ธ์ถ/์ ๊ธ/์ก๊ธ ๊ธฐ๋ฅ์ด ์์ด์ผ ํจ - ๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ: ์ฑ๋ฅ, ๋ณด์, ํ์ง, ์์ ์ฑ ๋ฑ ์ค์ ์ํ์ ๋ณด์กฐ์ ์ธ ์๊ตฌ์ฌํญ
ex. ๋ชจ๋ ํ๋ฉด์ด 3์ด ์ด๋ด์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ผ ํจ
โบ ์๊ตฌ์ฌํญ ๊ฐ๋ฐ ํ๋ก์ธ์ค โ
์์ ์ค์
โ ๋์ถ/์ถ์ถ: ์ดํด๊ด๊ณ์๋ค์ด ๋ชจ์ฌ ์๊ตฌ์ฌํญ ์ ์(์๋ณํ๊ณ ์ดํดํ๋ ๊ณผ์ )
ex. ์ธํฐ๋ทฐ, ์ค๋ฌธ, ๋ธ๋ ์ธ์คํ ๋ฐ, ์ฒญ์ทจ, ํ๋กํ ํ์ดํ, ์ ์ค์ผ์ด์ค
โก ๋ถ์: ์ฌ์ฉ์ ์๊ตฌ์ฌํญ์ ํ๋น์ฑ ์กฐ์ฌ / ๋น์ฉ ๋ฐ ์ผ์ ์ ๋ํ ์ ์ฝ ์ค์
ex. ๊ด์ฐฐ, ๊ฐ๋
๋
ธ๋ธ๋ง, ์ ํ ๋ถ์, ์๊ตฌ์ฌํญ ์ ์ ๋ฌธ์ํ
โข ๋ช
์ธ: ์๊ตฌ์ฌํญ ์ณ๊ณ์ ๋ถ์ ํ ์น์ธ๊ฐ๋ฅํ๋๋ก ๋ฌธ์ํ
โฃ ํ์ธ/๊ฒ์ฆ: ์๊ตฌ์ฌํญ ๋ช
์ธ์๊ฐ ์ ํํ๊ณ ์์ ํ๊ฒ ์์ฑ๋์๋์ง ๊ฒํ
โบ ์๊ตฌ์ฌํญ ๋ถ์ ๋๊ตฌ
- ์๊ตฌ์ฌํญ ๋ถ์ CASE
- SADT: SoftTech ์ฌ์์ ๊ฐ๋ฐ / ๊ตฌ์กฐ์ ๋ถ์ ๋ฐ ์ค๊ณ ๋ถ์
- SREM: ์ค์๊ฐ ์ฒ๋ฆฌ SW ์์คํ ์์ ์๊ตฌ์ฌํญ ๋ช ํํ ๊ธฐ์ ๋ชฉ์
- PSL/PSA: ๋ฌธ์ ๊ธฐ์ ์ธ์ด ๋ฐ ์๊ตฌ์ฌํญ ๋ถ์ ๋ณด๊ณ ์ ์ถ๋ ฅ
- TAGS: ์์คํ ๊ณตํ ๋ฐฉ๋ฒ ์์ฉ์ ๋ํ ์๋ ์ ๊ทผ ๋ฐฉ๋ฒ
- HIPO: ํํฅ์ ์ค๊ณ ๋ฐฉ์ / ๊ฐ์์ , ์ด์ฒด์ , ์ธ๋ถ์ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ / ๊ธฐ๋ฅ๊ณผ ์๋ฃ์ ์์กด ๊ด๊ณ ๋์ ํํ / ์ดํด ์ฝ๊ณ ์ ์ง๋ณด์ ๊ฐ๋จ
โบ ๊ตฌ์กฐ์ ๋ถ์ ๋ชจ๋ธ
- ๋ฐ์ดํฐ/์๋ฃ ํ๋ฆ๋(DFD, Data flow diagram):
- ํ๋ก์ธ์ค(Process), ์ / ์๋ฃ ํ๋ฆ(Flow), ํ์ดํ / ์๋ฃ ์ ์ฅ์(Data store), ํํ์ / ๋จ๋ง(Terminator), ์ฌ๊ฐํ
- → ๊ตฌ์กฐ์ ๋ถ์ ๊ธฐ๋ฒ์ ์ด์ฉ / ์๊ฐ ํ๋ฆ ๋ช ํํ ํํ ๋ถ๊ฐ / ๋ฒ๋ธ(bubble) ์ฐจํธ
- ์๋ฃ ์ฌ์ (DD, Data Dictionary): ์๋ฃ ํ๋ฆ๋์ ๊ธฐ์ฌ๋ ๋ชจ๋ ์๋ฃ์ ์์ธ ์ ์/์ค๋ช
- ์๋จ์ ๋ช ์ธ์ / ๊ฐ์ฒด ๊ด๊ณ๋(ERD, Entity Relationship Diagram) / ์ํ ์ ์ด๋
โป ๊ฐ์ฒด์งํฅ ๋ถ์ ๋ชจ๋ธ
- Booch(๋ถ์น): ๋ฏธ์์ , ๊ฑฐ์์ ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ์ฌ์ฉ(ํด๋์ค/๊ฐ์ฒด ๋ถ์ ๋ฐ ์๋ณ)
- Jacobson(์ ์ด์ฝฅ์จ): Use Case๋ฅผ ์ฌ์ฉ(์ฌ์ฉ์, ์ธ๋ถ ์์คํ ์ด ์์คํ ๊ณผ ์ํธ์์ฉ)
- Coad-Yourdom: E-R ๋ค์ด์ด๊ทธ๋จ ์ฌ์ฉ / ๊ฐ์ฒด์ ํ์ ๋ชจ๋ธ๋ง
- Wirfs-Brock: ๋ถ์๊ณผ ์ค๊ณ ๊ตฌ๋ถ ์์ผ๋ฉฐ ๊ณ ๊ฐ ๋ช ์ธ์ ํ๊ฐ ํ ์ค๊ณ ์์ ๊น์ง ์ฐ์ ์ํ
- Rumbaugh(๋ผ๋ฐ์ฐ): ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ, ๊ฐ์ฒด/๋์ /๊ธฐ๋ฅ ๋ชจ๋ธ๋ก ๊ตฌ๋ถ
- ๊ฐ์ฒด ๋ชจ๋ธ๋ง(Object) → ๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ / ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ ๊ท์ /์ ์
- ๋์ ๋ชจ๋ธ๋ง(Dynamic) → ์ํ ๋ค์ด์ด๊ทธ๋จ / ์์คํ ๋์ ์ธ ํ์ ๊ธฐ์
- ๊ธฐ๋ฅ ๋ชจ๋ธ๋ง(Function) → ์๋ฃ ํ๋ฆ๋(DFD) / ๋ค์์ ํ๋ก์ธ์ค๋ค ๊ฐ์ ์ฒ๋ฆฌ ๊ณผ์ ํํ
โบ ์๊ตฌ์ฌํญ ๋ช ์ธ
- ์ ํ ๋ช
์ธ
- ์ํ์ ์๋ฆฌ / ์ ํํ๊ณ ๊ฐ๊ฒฐํ ์๊ตฌ์ฌํญ ํํ ๊ฐ๋ฅ
- ์ด๋ ค์ด ํ๊ธฐ๋ฒ์ผ๋ก ์ฌ์ฉ์ ์ดํด ์ด๋ ค์(VDM, Z, Petri-net, CSP)
- ๋น์ ํ ๋ช
์ธ
- ์์ฐ์ด, ๊ทธ๋ฆผ ์ค์ฌ / ์ฌ์ด ์์ฐ์ด ์ฌ์ฉ์ผ๋ก ์์ฌ์ํต ์ฉ์ดํ๋
- ์์ฑ์์ ๋ฐ๋ผ ๋ชจํธํ ๋ด์ฉ์ผ๋ก ์ผ๊ด์ฑ ๋จ์ด์ง(FSM, Decision Table, E-R ๋ชจ๋ธ, State Chart)
โข ์ํํธ์จ์ด ์ค๊ณ
โ ์ํํธ์จ์ด ์ค๊ณ ์๋ฆฌ
1. ๋ถํ ๊ณผ ์ ๋ณต: ์ฌ๋ฌ ๊ฐ์ ์์ ์๋ธ์์คํ ์ผ๋ก ๋๋ ์ ๊ฐ๊ฐ์ ์์ฑ
2. ๋ชจ๋ํ(Modularity): ์์คํ
๊ธฐ๋ฅ์ ๋ชจ๋ ๋จ์๋ก ๋ถ๋ฅํ์ฌ ์ฑ๋ฅ/์ฌ์ฌ์ฉ์ฑ ํฅ์
- ๋ชจ๋ ํฌ๊ธฐ โฒ → ๋ชจ๋ ๊ฐ์ โผ → ๋ชจ๋๊ฐ ํตํฉ๋น์ฉ โผ (but, ๋ชจ๋ ๋น ๊ฐ๋ฐ ๋น์ฉ โฒ)
- ๋ชจ๋ ํฌ๊ธฐ โผ → ๋ชจ๋ ๊ฐ์ โฒ → ๋ชจ๋๊ฐ ํตํฉ๋น์ฉ โฒ
3. ์ถ์ํ(Abstraction): ๋ถํ์ํ ๋ถ๋ถ์ ์๋ตํ๊ณ ํ์ํ ๋ถ๋ถ๋ง ๊ฐ์กฐํด ๋ชจ๋ธํ
→ ๋ฌธ์ ์ ํฌ๊ด์ ์ธ ๊ฐ๋
์ ์ค๊ณ ํ ์ฐจ๋ ๋ก ์ธ๋ถํํ์ฌ ๊ตฌ์ฒดํ ์งํ
โ ๊ณผ์ ์ถ์ํ: ์์ธํ ์ํ ๊ณผ์ ์ ์ X, ์ ๋ฐ์ ์ธ ํ๋ฆ๋ง ํ์
๊ฐ๋ฅํ๊ฒ ์ค๊ณ
โก ๋ฐ์ดํฐ(์๋ฃ ์ถ์ํ): ๋ฐ์ดํฐ์ ์ธ๋ถ์ ์ธ ์์ฑ/์ฉ๋ ์ ์ X, ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํํ
โข ์ ์ด ์ถ์ํ: ์ด์ ํธ ๋ฐ์์ ์ ํํ ์ ์ฐจ/๋ฐฉ๋ฒ ์ ์ X, ๋ํ ๊ฐ๋ฅํ ํํ์ผ๋ก ๋์ฒด
4. ๋จ๊ณ์ ๋ถํด(Stepwise refinement): ํํฅ์ ์ค๊ณ ์ ๋ต
- ์ถ์ํ์ ๋ฐ๋ณต์ผ๋ก ์ํ ์ธ๋ถํ / ์ธ๋ถ ๋ด์ญ์ ๊ฐ๋ฅํ ๋ค๋ก ๋ฏธ๋ฃจ์ด ์งํ
5. ์ ๋ณด ์๋(Information Hiding)
- ํ ๋ชจ๋ ๋ด๋ถ์ ํฌํจ๋ ์ ์ฐจ/์๋ฃ ๊ด๋ จ ์ ๋ณด๊ฐ ์จ๊ฒจ์ ธ ๋ค๋ฅธ ๋ชจ๋์ ์ ๊ทผ/๋ณ๊ฒฝ ๋ถ๊ฐ
- ๋ชจ๋์ ๋
๋ฆฝ์ ์ผ๋ก ์ํํ ์ ์์ด ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์์ /์ํ/์ ์ง๋ณด์๊ฐ ์ฉ์ดํจ
โ ์ํคํ ์ฒ ํจํด
- Layer: ์์คํ ์ ๊ณ์ธต์ผ๋ก ๊ตฌ๋ถ/๊ตฌ์ฑํ๋ ๊ณ ์ ์ ๋ฐฉ์(OSI ์ฐธ์กฐ ๋ชจ๋ธ)
- Client-server
- ํ๋์ ์๋ฒ ์ปดํฌ๋ํธ์ ๋ค์์ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ์์ฒญ/์๋ต ์ ์ธ ์ ์๋ก ๋
๋ฆฝ์
* ์ปดํฌ๋ํธ(Component): ๋ ๋ฆฝ์ ์ ๋ฌด/๊ธฐ๋ฅ ์ํ ์ํ ์คํ์ฝ๋ ๊ธฐ๋ฐ ๋ชจ๋
- Pipe-Filter
- ๋ฐ์ดํฐ ์คํธ๋ฆผ ์ ์ฐจ์ ๊ฐ ๋จ๊ฒ๋ฅผ ํํฐ ์ปดํฌ๋ํธ๋ก ์บก์ํ ํ ๋ฐ์ดํฐ ์ ์ก / ์ฌ์ฌ์ฉ ๋ฐ ํ์ฅ ์ฉ์ด / ํํฐ ์ปดํฌ๋ํธ ์ฌ๋ฐฐ์น ๊ฐ๋ฅ
- ๋จ๋ฐฉํฅ์ผ๋ก ํ๋ฅด๋ฉฐ, ํํฐ ์ด๋ ์ ์ค๋ฒํค๋ ๋ฐ์
- ๋ณํ, ๋ฒํผ๋ง, ๋๊ธฐํ ์ ์ฉ(ex. UNIX ์ - Shell)
- Model-View Controller
- ๋ชจ๋ธ(Model): ์๋ธ์์คํ ์ ์ ๋ณด ํ์
- ๋ทฐ(View): ์ฌ์ฉ์์๊ฒ ์ ๋ณด ํ์
- ์ปจํธ๋กค๋ฌ(Controller): ์ฌ์ฉ์๋ก๋ถํฐ ๋ฐ์ ์
๋ ฅ ์ฒ๋ฆฌ
→ ๊ฐ ๋ถ๋ถ์ ๊ฐ๋ณ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌ๋์ด ์๋ก ์ํฅ X
→ ํ๋์ ๋ชจ๋ธ ๋์ ๋ค์ ๋ทฐ ์์ฑ โบ ๋ํํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉ
- Master-slave: ๋ง์คํฐ์์ ์ฌ๋ ์ด๋ธ ์ปดํฌ๋ํธ๋ก ์์ ๋ถํ /๋ถ๋ฆฌ/๋ฐฐํฌ ํ ์ฌ๋ ์ด๋ธ์์ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์ ๋๋ ค ๋ฐ์(๋ณ๋ ฌ ์ปดํจํ )
- Broker: ์ปดํฌ๋ํธ์ ์ฌ์ฉ์๋ฅผ ์ฐ๊ฒฐ(๋ถ์ฐ ํ๊ฒฝ ์์คํ )
- Peer-to-peer: ํผ์ด๋ฅผ ํ ์ปดํฌ๋ํธ๋ก ์ฐ์ ํ ๊ฐ ํผ์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ ์๋, ์๋ฒ๊ฐ ๋ ์๋ ์์(๋ฉํฐ์ค๋ ๋ฉ ๋ฐฉ์)
- Event-bus: ์์ค๊ฐ ํน์ ์ฑ๋์ ์ด๋ฒคํธ ๋ฉ์์ง๋ฅผ ๋ฐํ ์ ํด๋น ์ฑ๋์ ๊ตฌ๋ ํ ๋ฆฌ์ค๋๋ค์ด ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํจ
- Blackboard: ์ปดํฌ๋ํธ๋ค์ด ๊ฒ์์ ํตํด ๋ธ๋๋ณด๋์์ ์ํ๋ ๋ฐ์ดํฐ ์ฐพ์
- Interpreter: ํน์ ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ํด์ํ๋ ์ปดํฌ๋ํธ ์ค๊ณ
โ UML(Unified Modeling Language) → ๊ตฌ์ฑ์์: ์ฌ๋ฌผ, ๊ด๊ณ, ๋ค์ด์ด๊ทธ๋จ
- ๊ณ ๊ฐ/๊ฐ๋ฐ์ ๊ฐ ์ํํ ์์ฌ์ํต์ ์ํด ํ์คํํ ๋ํ์ ๊ฐ์ฒด์งํฅ ๋ชจ๋ธ๋ง ์ธ์ด
- Rumbaugh, Booch, Jacobson ๋ฑ ๊ฐ์ฒด์งํฅ ๋ฐฉ๋ฒ๋ก ์ ์ฅ์ ํตํฉ
โป ์ธํฐํ์ด์ค: ํด๋์ค/์ปดํฌ๋ํธ๊ฐ ๊ตฌํํด์ผํ๋ ์คํผ๋ ์ด์
์ธํธ๋ฅผ ์ ์ํ๋ ๋ชจ๋ธ ์์
1) ์ฌ๋ฌผ(Things): ๊ตฌ์กฐ(๊ฐ๋ , ๋ฌผ๋ฆฌ์ ์์) / ํ๋ / ๊ทธ๋ฃน / ์ฃผํด(๋ถ๊ฐ์ ์ค๋ช , ์ ์ฝ์กฐ๊ฑด)
2) ๊ด๊ณ(Relationship)
- ์ฐ๊ด๊ด๊ณ(Association): 2๊ฐ ์ด์์ ์ฌ๋ฌผ์ด ์๋ก ๊ด๋ จ
- ์งํฉ ๊ด๊ณ(Aggregation): ํ๋์ ์ฌ๋ฌผ์ด ๋ค๋ฅธ ์ฌ๋ฌผ์ ํฌํจ(์ ์ฒด-๋ถ๋ถ ๊ด๊ณ)
- ํฌํจ ๊ด๊ณ(Composition): ์งํฉ ๊ด๊ณ ๋ด ํ ์ฌ๋ฌผ์ ๋ณํ๊ฐ ๋ค๋ฅธ ์ฌ๋ฌผ์๊ฒ ์ํฅ
- ์ผ๋ฐํ ๊ด๊ณ(Generalization): ํ ์ฌ๋ฌผ์ด ๋ค๋ฅธ ์ฌ๋ฌผ์ ๋นํด ์ผ๋ฐ/๊ตฌ์ฒด์ ์ธ์ง ํํ(ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค๋ฅผ ํฌํจํ๋ ์์ ๊ฐ๋ ์ผ ๋)
- ์์กด ๊ด๊ณ(Dependency): ์ฌ๋ฌผ ๊ฐ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ๋ ๊ด๊ณ(ํ ํด๋์ค๊ฐ ๋ค๋ฅธ ํด๋์ค์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋)
- ์ค์ฒดํ ๊ด๊ณ(Realization): ํ ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์คํผ๋ ์ด์ ์ ์ํํ๋๋ก ์ง์ / ์๋ก๋ฅผ ๊ทธ๋ฃนํํ ์ ์๋ ๊ด๊ณ
3) ๋ค์ด์ด๊ทธ๋จ(Diagram)
- ๊ตฌ์กฐ, ์ ์ ๋ค์ด์ด๊ทธ๋จ(ํด๊ฐ์ปด๋ฐฐ๋ณตํจ)
- ํด๋์ค: ํด๋์ค ์ฌ์ด์ ๊ด๊ณ ๋ฐ ์์ฑ ํํ
- ๊ฐ์ฒด: ์ธ์คํด์ค๋ฅผ ๊ฐ์ฒด์ ๊ฐ์ฒด ์ฌ์ด์ ๊ด๊ณ๋ก ํํ
- ์ปดํฌ๋ํธ: ๊ตฌํ ๋ชจ๋ธ์ธ ์ปดํฌ๋ํธ ๊ฐ์ ๊ด๊ณ ํํ
- ๋ฐฐ์น: ๋ฌผ๋ฆฌ์ ์์(HW/SW)์ ์์น/๊ตฌ์กฐ ํํ
- ๋ณตํฉ์ฒด ๊ตฌ์กฐ: ํด๋์ค ๋ฐ ์ปดํฌ๋ํธ์ ๋ณตํฉ์ฒด ๋ด๋ถ ๊ตฌ์กฐ ํํ
- ํจํค์ง: UML์ ๋ค์ํ ๋ชจ๋ธ ์์๋ฅผ ๊ทธ๋ฃนํํ์ฌ ๋ฌถ์
- ํ์, ๋์ ๋ค์ด์ด๊ทธ๋จ(์ ์์ปค์ํํ์)
- ์ ์ค์ผ์ด์ค: ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ๋ถ์(์ฌ์ฉ์ ๊ด์ ) → ์ฌ์ฉ์(Actor) + ์ฌ์ฉ ์ฌ๋ก(Use Case)
- ์ํ์ค: ์์คํฌ/๊ฐ์ฒด๋ค์ด ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์์ง ํํ → ๊ตฌ์ฑํญ๋ชฉ: ์กํฐ / ๊ฐ์ฒด / ์๋ช ์ / ๋ฉ์์ง ์ ์ด ์ผ๊ฐํ
- ์ปค๋ฎค๋์ผ์ด์ : ๊ฐ์ฒด๋ค์ด ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์์ง์ ๊ฐ์ฒด ๊ฐ์ ์ฐ๊ด๊ด๊ณ๊น์ง ํํ
- ์ํ: ๋ค๋ฅธ ๊ฐ์ฒด์์ ์ํธ์์ฉ์ ๋ฐ๋ผ ์ํ๊ฐ ์ด๋ป๊ฒ ๋ณํํ๋์ง ํํ
- ํ๋: ๊ฐ์ฒด์ ์ฒ๋ฆฌ ๋ก์ง ๋ฐ ์กฐ๊ฑด์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ์ ํ๋ฆ์ ์์์ ๋ฐ๋ผ ํํ
- ํ์ด๋ฐ: ๊ฐ์ฒด ์ํ ๋ณํ์ ์๊ฐ ์ ์ฝ ๋ช ์์ ์ผ๋ก ํํ
- ์ํธ์์ฉ ๊ฐ์: ์ํธ์์ฉ ๋ค์ด์ด๊ทธ๋จ ๊ฐ ์ ์ด ํ๋ฆ ํํ
โถ๏ธ UI ์ค๊ณ: ์ง๊ด์ฑ, ์ ํจ์ฑ(์ฌ์ฉ์์ ๋ชฉ์ ๋ฌ์ฑ), ํ์ต์ฑ, ์ ์ฐ์ฑ
- ์ค๊ณ ์ง์นจ: ์ฌ์ฉ์ ์ค์ฌ / ์ผ๊ด์ฑ / ๋จ์์ฑ / ๊ฒฐ๊ณผ ์์ธก / ๊ฐ์์ฑ / ํ์คํ / ์ ๊ทผ์ฑ / ๋ช ํ์ฑ / ์ค๋ฅ ๋ฐ์ ํด๊ฒฐ
- CLI(Command Line): ํ ์คํธ, GUI(Graphical): ๊ทธ๋ํฝ, NUI(Natual): ๋ง/ํ๋, VUI(Voice):์์ฑ, OUI(Organic): ์ฌ๋ฌผ๊ณผ ์ฌ์ฉ์ ์ํธ์์ฉ
- UI ์ค๊ณ ๋๊ตฌ
- Wireframe: ๊ธฐํ ์ด๊ธฐ ๋จ๊ฒ์ ๋๋ต์ ์ธ ๋ ์ด์์์ ์ค๊ณ
- Story Board: ์ต์ข ์ ์ธ ์ฐ์ถ๋ฌธ์(์์ด์ดํ๋ ์-UI, ์ฝํ ์ธ ๊ตฌ์ฑ, ํ๋ก์ธ์ค ๋ฑ)
- Prototype: ์์ด์ดํ๋ ์ / ์คํ ๋ฆฌ๋ณด๋์ ์ธํฐ๋์ ์ ์ฉ, ์ค์ ๊ตฌํ๋ ๊ฒ์ฒ๋ผ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ ๋์ ์ธ ํํ ๋ชจํ
- MockUp: ์ค์ ํ๋ฉด๊ณผ ์ ์ฌํ ์ ์ ์ธ ํํ ๋ชจํ
- Use Case: ์ฌ์ฉ์ ์ธก๋ฉด ์๊ตฌ์ฌํญ ๋ฐ ๋ชฉํ๋ฅผ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ํํ
'Computer Science ๐ > ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ์ฒ๊ธฐ] ์ ๋ณด ๋ณด์ (0) | 2024.07.18 |
---|---|
[์ ์ฒ๊ธฐ] ๋คํธ์ํฌ (0) | 2024.07.17 |
[์ ์ฒ๊ธฐ] ์ด์์ฒด์ (0) | 2024.07.16 |
[์ ์ฒ๊ธฐ] ๋ฐ์ดํฐ ๋ฒ ์ด์ค (5) | 2024.07.15 |
[์ ์ฒ๊ธฐ] ์ํํธ์จ์ด ๊ตฌ์ถ II - ์ํํธ์จ์ด ๊ตฌํ, ์ํํธ์จ์ด ํ ์คํธ, ์ํํธ์จ์ด ์ ์ง ๋ณด์ etc. (0) | 2024.07.12 |