(A-SPICE 16ํšŒ์ฐจ) SWE.3: ์„ค๊ณ„ ์—†์ด ๊ตฌํ˜„? ๊ทธ๊ฑด ๋งˆ๋ฒ•์ด ์•„๋‹ˆ๋ผ ์žฌ์•™์ž…๋‹ˆ๋‹ค!

๐Ÿงฑ 16ํšŒ์ฐจ: SWE.3-์„ค๊ณ„ ์—†์ด ๊ตฌํ˜„? ๊ทธ๊ฑด ๋งˆ๋ฒ•์ด ์•„๋‹ˆ๋ผ ์žฌ์•™์ž…๋‹ˆ๋‹ค!

SWE.3 – ์†Œํ”„ํŠธ์›จ์–ด ์ƒ์„ธ ์„ค๊ณ„ & ๊ตฌํ˜„, ๊ฐ™์ด ๊ฐ‘์‹œ๋‹ค!

๐Ÿง™‍โ™‚๏ธ “์„ค๊ณ„๋Š” ๊ท€์ฐฎ๊ณ , ์ฝ”๋”ฉ์ด ์ง„์งœ ์‹ค๋ ฅ ์•„๋‹Œ๊ฐ€์š”?”
๐Ÿง  “์„ค๊ณ„ ์—†์ด ์‹œ์ž‘ํ•˜๋Š” ์ฝ”๋”ฉ์€... ์„คํƒ• ์—†๋Š” ์ผ€์ดํฌ์˜ˆ์š”. ๋ณด๊ธฐ์—” ๊ดœ์ฐฎ์€๋ฐ, ๋จน์œผ๋ฉด ์ž…์•ˆ ๊ฐ€๋“ ์–ด์ƒ‰ํ•จ๋งŒ ๋‚จ์Šต๋‹ˆ๋‹ค.”


๐ŸŽฏ SWE.3, ๋„๋Œ€์ฒด ๋ญ”๊ฐ€์š”?

SWE.3 – ์†Œํ”„ํŠธ์›จ์–ด ์ƒ์„ธ ์„ค๊ณ„ & ๊ตฌํ˜„์€
์•„์ฃผ ์ค‘์š”ํ•œ ์ด์ค‘์ž„๋ฌด๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค:

  1. ๐Ÿ’ก ์ƒ์„ธ ์„ค๊ณ„: ์‹œ์Šคํ…œ/์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ฐ์ดํ„ฐ ํ๋ฆ„, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌ์ฒด์ ์œผ๋กœ ์ •์˜
  2. ๐Ÿ”ง ๊ตฌํ˜„(์ฝ”๋”ฉ): ์ƒ์„ธ ์„ค๊ณ„์— ๋”ฐ๋ผ ์ฝ”๋“œ๋กœ ์‹ค์ œ ๊ตฌํ˜„!

๐Ÿงฉ ์ปจ์…‰ ์„ค๊ณ„ vs. ์ƒ์„ธ ์„ค๊ณ„ vs. ๊ตฌํ˜„

๊ตฌ๋ถ„ ์„ค๋ช… ์˜ˆ์‹œ
์ปจ์…‰ ์„ค๊ณ„ ๊ตฌ์กฐ ๋ฐ ๋ชจ๋“ˆ ์ •์˜ "์„ผ์„œ → ํ•„ํ„ฐ๋ง → ์ œ์–ด ๋กœ์ง"
์ƒ์„ธ ์„ค๊ณ„ ๊ฐ ์š”์†Œ์˜ ์„ธ๋ถ€ ์ •์˜ filterData(float* input, int size)
๊ตฌํ˜„ ์ฝ”๋“œ ์ž‘์„ฑ for(int i=0; i<size; i++){ ... }

๐Ÿ›  SWE.3์—์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋Š” ์ผ

1. ์„ค๊ณ„ ํ™œ๋™

  • ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ๋Šฅ ๋‹จ์œ„ ์ •์˜
  • ํ•จ์ˆ˜, ๋ณ€์ˆ˜, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์„ค๊ณ„
  • ์˜ˆ์™ธ ์ƒํ™ฉ ์ •์˜ ๋ฐ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ์ž‘์„ฑ
  • ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ธ ๋ช…์„ธ(JSON, ๊ตฌ์กฐ์ฒด ๋“ฑ)

2. ๊ตฌํ˜„ ํ™œ๋™

  • ์ฝ”๋”ฉ ํ‘œ์ค€์— ๋”ฐ๋ผ ์‹ค์ œ ๊ตฌํ˜„!
  • ์ •์  ๋ถ„์„ ํˆด ์ ์šฉ (MISRA, SonarQube ๋“ฑ)
  • ์ปดํŒŒ์ผ & ๋นŒ๋“œ
  • ๋ฆฌ๋ทฐ & ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

๐Ÿ’ก ๊ตฌํ˜„๋„ SWE.3์˜ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค! SWE.4๋Š” ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ์— ๊ฐ€๊นŒ์›Œ์š”.


๐Ÿง‘‍๐Ÿ’ป ๊ฐœ๋ฐœ์ž ๋“ฑ๊ธ‰๋ณ„ ์—ญํ• ? ์ด๋ ‡๊ฒŒ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค!

๊ฐœ๋ฐœ์ž ์ˆ˜์ค€ SWE.3์—์„œ์˜ ์—ญํ• 
์ฃผ๋‹ˆ์–ด ์ƒ์„ธ ์„ค๊ณ„๋œ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ ์ˆ˜ํ–‰, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ผ๋ถ€
๋ฏธ๋“ค ์ƒ์„ธ ์„ค๊ณ„ ์ž‘์„ฑ + ๊ตฌํ˜„, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๊ณ„ํš๊นŒ์ง€ ์ˆ˜ํ–‰
์‹œ๋‹ˆ์–ด ์„ค๊ณ„ ์ „๋žต ์ˆ˜๋ฆฝ, ์•„ํ‚คํ…์ฒ˜ ์—ฐ๊ณ„ ๊ณ ๋ ค, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ฃผ๋„

โš”๏ธ ์‹ค์ „! ๋ฆฌ์†Œ์Šค ๋ถ€์กฑํ•œ ํšŒ์‚ฌ์—์„œ์˜ ๋Œ€์‘๋ฒ•

ํ˜„์‹ค: “์„ค๊ณ„ ๋”ฐ์œ„ ์‹œ๊ฐ„ ์—†์–ด! ๊ทธ๋ƒฅ ์งœ!”

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ?

  1. ๊ฐ„์†Œํ™”๋œ ์„ค๊ณ„ ์–‘์‹ ํ™œ์šฉ
    • ์—‘์…€ ๊ธฐ๋ฐ˜ ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜์„œ + ํ๋ฆ„๋„ 1์žฅ ์„ค๊ณ„
  2. ์ปจ์…‰+์ƒ์„ธ ์„ค๊ณ„๋ฅผ ํ†ตํ•ฉ
    • ์„ค๊ณ„์„œ๋ฅผ ๊ฐ„๋‹จํ•œ ๊ตฌ๊ธ€ ๋ฌธ์„œ์— ๊ฐ™์ด ์ •๋ฆฌํ•ด์„œ ์ค‘๋ณต ๋ฐฉ์ง€
  3. ๋ฆฌ๋ทฐ ์ค‘์‹ฌ ๊ฐœ๋ฐœ ๋ฌธํ™”
    • ๋ฌธ์„œ ์ž‘์„ฑ๋ณด๋‹ค ๋ฆฌ๋ทฐ ๊ธฐ๋ก ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„์˜ ํ”์  ๋‚จ๊ธฐ๊ธฐ
  4. ๊ตฌํ˜„ ๊ธฐ์ค€ ์ •๋ฆฝ
    • ์ตœ์†Œํ•œ ํ•จ์ˆ˜ ํ—ค๋”, ์˜ˆ์™ธ์ฒ˜๋ฆฌ, ๋ณ€์ˆ˜ ๋„ค์ด๋ฐ ๊ทœ์น™์€ ํ†ต์ผ!

๐Ÿ› SWE.3์ด ์•ฝํ•˜๋ฉด ์ด๋Ÿฐ ์ผ์ด…

  • ๐Ÿ’ฅ ๊ธฐ๋Šฅ์€ ๋˜์ง€๋งŒ ์œ ์ง€๋ณด์ˆ˜ ๋ถˆ๊ฐ€๋Šฅ
  • ๐Ÿž ์˜ˆ์™ธ์ฒ˜๋ฆฌ ๋ˆ„๋ฝ์œผ๋กœ ํ˜„์žฅ ๋ถˆ๋Ÿ‰ ๋ฐœ์ƒ
  • ๐Ÿคน‍โ™‚๏ธ ๊ฐœ๋ฐœ์ž๋งˆ๋‹ค ์ฝ”๋“œ ์Šคํƒ€์ผ ์ฒœ์ฐจ๋งŒ๋ณ„ (ํ˜‘์—… ์ง€์˜ฅ)
  • ๐Ÿงฉ ์„ค๊ณ„์ž์™€ ๊ตฌํ˜„์ž๊ฐ€ ๋‹ฌ๋ผ์„œ ์˜คํ•ด ๋Œ€ํญ๋ฐœ

โœ… SWE.3 Best Practice

  • UML ๋˜๋Š” ํ๋ฆ„๋„ ๊ธฐ๋ฐ˜์˜ ์ƒ์„ธ ์„ค๊ณ„
  • ํ•จ์ˆ˜๋ณ„ ์ž…์ถœ๋ ฅ ์ •์˜
  • ์ •์  ๋ถ„์„ & ๋นŒ๋“œ ์ž๋™ํ™” ์ ์šฉ
  • ๊ตฌํ˜„ ํ›„ ๋ฆฌ๋ทฐ ํ•„์ˆ˜!
  • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ํฌํ•จํ•ด์„œ pull request

๐Ÿ” SWE.3, ์š”์•ฝํ•˜๋ฉด?

ํ•ญ๋ชฉ ๋‚ด์šฉ
์—ญํ•  ์ƒ์„ธ ์„ค๊ณ„ + ๊ตฌํ˜„
์„ค๊ณ„ ๋ฒ”์œ„ ํ•จ์ˆ˜, ๋ชจ๋“ˆ, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ์ธํ„ฐํŽ˜์ด์Šค
๊ตฌํ˜„ ๋ฒ”์œ„ ํ‘œ์ค€ ๊ธฐ๋ฐ˜ ์ฝ”๋”ฉ + ๋ฆฌ๋ทฐ + ์ •์  ๋ถ„์„
ํ•ต์‹ฌ ํฌ์ธํŠธ ์„ค๊ณ„๊ฐ€ ์ข‹์•„์•ผ ๊ตฌํ˜„์ด ํƒ„ํƒ„ํ•˜๋‹ค!

๐Ÿ”ฎ ๋‹ค์Œ ํšŒ์ฐจ ์˜ˆ๊ณ : 17ํšŒ์ฐจ – SWE.4, ๋‹จ์œ„ ์‹œํ—˜!

๋“œ๋””์–ด ์ฝ”๋“œ๊ฐ€ ์งœ์กŒ๋‹ค๋ฉด... ์ด์ œ๋Š” ์‹œํ—˜์˜ ์‹œ๊ฐ„!
๋‹จ์œ„ ํ…Œ์ŠคํŠธ, ์ปค๋ฒ„๋ฆฌ์ง€, ์ž๋™ํ™”, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ์ „๋žต๊นŒ์ง€!
ํ˜„์—…์—์„œ ์ œ์ผ ํ”ผํ•˜๊ณ  ์‹ถ์€ SWE.4, ์šฐ๋ฆฌ๊ฐ€ ์žฌ๋ฐŒ๊ฒŒ ํ’€์–ด๋“œ๋ฆด๊ฒŒ์š” ๐Ÿ˜Ž

“์ฝ”๋“œ๋Š” ๊ฑฐ์ง“๋ง ์•ˆ ํ•ฉ๋‹ˆ๋‹ค... ํ…Œ์ŠคํŠธ๊ฐ€ ์ง„์‹ค์„ ๋ณด์—ฌ์ค„ ๋ฟ!”

๋ฐ˜์‘ํ˜•