๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์ž๊ฒฉ์ฆ/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

[์‹ค๊ธฐ] ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ• - SW ์„ค๊ณ„

by ๐Ÿณ Laboon 2024. 7. 25.
  • ์†Œํ”„ํŠธ์›จ์–ด ์ƒ๋ช… ์ฃผ๊ธฐ (Software Development Life Cycle, SDLC)
    • ํ”„๋กœ์ ํŠธ ๊ณ„ํš : ์–ด๋–ค ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ธ์ง€?
    • ์š”๊ตฌ๋ถ„์„ : ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ๊ธฐ๋Šฅ, ๊ธฐ์ˆ , ์ง€์‹ ๋“ฑ์ด ์–ด๋–ป๊ฒŒ ๋  ๊ฒƒ ์ธ์ง€?
    • ์„ค๊ณ„ : ๋ถ„์„ํ•œ ์‚ฌํ•ญ์„ ๋ฐ”ํƒ•์œผ๋กœ ์•„ํ‚คํ…์ณ, ๋””์ž์ธ, DB ๋“ฑ์„ ์„ค๊ณ„
    • ๊ตฌํ˜„ : ์„ค๊ณ„ํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์‹ค์ œ ๊ตฌํ˜„
    • ํ…Œ์ŠคํŠธ : ๊ธฐ๋Šฅ ๋‹จ์œ„ ํ˜น์€ ์ „์ฒด ํ”„๋กœ์ ํŠธ๋ฅผ ํ…Œ์ŠคํŠธ
    • ์œ ์ง€ ๋ณด์ˆ˜ : ๋‹ค๋ฅธ ๊ธฐ์ˆ ์˜ ๋„์ž…, ํšจ์œจ์„ฑ ์ธก๋ฉด, ๊ธฐ๋Šฅ ์ถ”๊ฐ€, ํ”ผ๋“œ๋ฐฑ ๋“ฑ์˜ ์œ ์ง€๋ณด์ˆ˜
  • ํญํฌ์ˆ˜ ๋ชจ๋ธ (Waterfall Model)
    • ๋Œ€๊ทœ๋ชจ์— ์‚ฌ์šฉ๋˜๋Š” ๊ณ ์ „์ ์ธ SDLC ๋ชจ๋ธ์ด๋‹ค.
    • SDLC์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํ˜•์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • SW ํ”„๋กœ์„ธ์Šค๋Š” ์„ ํ˜•์ ์ผ ์ˆ˜ ์—†๋‹ค. ์ˆ˜์ • ์‚ฌํ•ญ์ด ์ƒ๊ธธ ๊ฒฝ์šฐ ์ด์ „ ๋‚ด์—ญ์ด ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ํ”„๋กœํ†  ํƒ€์ž… ๋ชจ๋ธ (Prototype Model)
    • ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด๋‘”๋‹ค.
    • ์ธํ„ฐํŽ˜์ด์Šค์— ๋ช…์‹œ๋œ ๊ธฐ๋Šฅ์„ ๊ฒฌ๋ณธ/์‹œ์ œํ’ˆ์œผ๋กœ ๊ฐ ๊ตฌํ˜„ํ•œ๋‹ค.
    • ํ”„๋กœํ† ํƒ€์ž…(๊ฒฌ๋ณธ)์„ ์ œ์ถœํ•˜๋ฉด์„œ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•  ์š”๊ตฌ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Dev Class์™€ Release Class
  • ๋‚˜์„ ํ˜• ๋ชจ๋ธ (Spiral Model)
    • ํญํฌ์ˆ˜ ๋ชจ๋ธ, ํ”„๋กœํ†  ํƒ€์ž… ๋ชจ๋ธ์˜ ์ด์ ์— ์œ„ํ—˜ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.
    • ๊ณ„ํš ์ˆ˜๋ฆฝ : ํ”„๋กœ์ ํŠธ ๊ณ„ํš + ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„
    • ์œ„ํ—˜ ๋ถ„์„ : ์œ„ํ—˜์‹๋ณ„, ์ •๋Ÿ‰์ /์ •์„ฑ์  ํ‰๊ฐ€, ๊ทธ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ + ์„ค๊ณ„
    • ๊ฐœ๋ฐœ ๋ฐ ๊ฒ€์ฆ : ๊ตฌํ˜„ + ํ…Œ์ŠคํŠธ
    • ๊ณ ๊ฐ ํ‰๊ฐ€ : ์œ ์ง€๋ณด์ˆ˜
  • ์• ์ž์ผ (Agile)
    • ์ผ์ •ํ•œ ์งง์€ ์ฃผ๊ธฐ(Sprint or Iteration)๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•œ๋‹ค.
    • ๊ณ ๊ฐ๊ณผ์˜ ์†Œํ†ต์„ ์ค‘์‹œํ•ด์„œ ๊ณ ๊ฐ ์š”๊ตฌ์‚ฌํ•ญ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • XP, Scrum, Function Driven Design, Lean, Dynamic System Development Method ๋“ฑ์ด ์žˆ๋‹ค.
  • XP(eXtream Programming)
    • 5๊ฐ€์ง€์˜ ๊ฐ€์น˜์™€ 12๊ฐœ์˜ ์‹ค์ฒœ ํ•ญ๋ชฉ์ด ์žˆ๊ณ  ์˜์‚ฌ์†Œํ†ต์„ ๊ฐœ์„ ํ•˜๊ณ  ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ํ•˜๊ธฐ์œ„ํ•œ ์„ค๊ณ„ ๋ฐฉ๋ฒ•๋ก 
    • ์ฆ‰, ๊ณ ๊ฐ ์š”๊ตฌ์‚ฌํ•ญ์„ ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด 24์‹œ๊ฐ„ ์ƒ์ฃผํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ๊ฐ๊ณผ ํ•จ๊ป˜ ์‹ ์†ํ•œ ๊ฐœ๋ฐœ์„ ํ•œ๋‹ค.
    • 5๊ฐ€์ง€ ํ•ต์‹ฌ ๊ฐ€์น˜
      • ์šฉ๊ธฐ (Courage)
      • ๋‹จ์ˆœ์„ฑ (Simplicty)
      • ์˜์‚ฌ์†Œํ†ต (Commnuication)
      • ํ”ผ๋“œ๋ฐฑ (Feedback)
      • ์กด์ค‘ (Respect)
    • 12๊ฐ€์ง€ ๊ธฐ๋ณธ ์›๋ฆฌ
      • Planning Process
      • Pair Programming
      • CI
      • Refactoring
      • On Suit Customer
      • Coding standard
      • TDD
      • Simple Design
      • Small Release
      • Metaphore
      • Collective Ownership
    • ํ•˜ํ–ฅ์‹ ์„ค๊ณ„ (Top-down)
      • ์ ˆ์ฐจ ์ง€ํ–ฅ์˜ ์ˆœ์ฐจ์  ์„ค๊ณ„๋ฒ•
      • ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ -> ํ•˜์œ„ ๊ธฐ๋Šฅ ๋ถ€์—ฌ -> ํ…Œ์ŠคํŠธ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ตฌ์กฐ ์ œ์‹œ ๊ฐ€๋Šฅ
      • main ๋˜๋Š” ๊ฐ์ฒด์—์„œ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ
    • ์ƒํ–ฅ์‹ ์„ค๊ณ„ (Bottom-up)
      • ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์„ค๊ณ„
      • ์ตœํ•˜์œ„ ๋ชจ๋“ˆ ์„ค๊ณ„ -> ๊ฒฐํ•ฉ ๋ฐ ๊ฒ€์‚ฌ -> ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์‹œ ์ƒ์œ„ ๋ชจ๋“ˆ๋„ ๊ฐ™์ด ๋ณ€๊ฒฝ์ด ํ•„์š”
      • ์‚ฌ์น™์—ฐ์‚ฐ์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์ˆซ์ž 2๊ฐœ์˜ ์ž…๋ ฅ์„ ํ•„์š”๋กœ ํ•œ๋‹ค. ์ œ๊ณฑ๊ทผ์„ ๊ตฌํ•˜๋Š” ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด ์ˆซ์ž 1๊ฐœ์˜ ์ž…๋ ฅ์„ ํ•„์š”๋กœ ํ•œ๋‹ค. ์ด๋กœ ์ธํ•ด ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ƒ์œ„ ๋ชจ๋“ˆ ๋˜ํ•œ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•œ๋‹ค.
# command ์— ๋”ฐ๋ผ ์‚ฌ์น™์—ฐ์‚ฐ
def inputNum():
    a = int(input());
    b = int(input());
    return a, b;

command = input();
a, b = inputNum();
print(cal(a, b, command));

# ์œ„ ์ฝ”๋“œ์—์„œ command ์ œ๊ณฑ๊ทผ์„ ์ถ”๊ฐ€ํ–ˆ์„ ๊ฒฝ์šฐ
def inputNum(command):
    a = int(input());
    if (command == 'sqrt') return a;
    b = int(input());
    return a, b;

if command == 'sqrt':
    num = inputNum(command);
    print(cal(num, 0, command));
else:
    a, b = inputNum(command);
    print(cal(a, b, command));

์ด๋Ÿฐ์‹์œผ๋กœ ๋ง‰ ์“ธ๋ฐ ์—†๋Š” ์ฝ”๋“œ๋„ ์ถ”๊ฐ€ ๋œ๋‹ค. ์ด๋Ÿฐ ๋ถ€๋ถ„์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜ํƒ€๋‚œ๊ฒŒ ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค.