πŸ“–CS/πŸ“™Software Design

[μ†Œν”„νŠΈμ›¨μ–΄ 섀계] 0μž₯. Overview

goguma.dev 2024. 10. 18. 13:42

β€» 이 μΉ΄ν…Œκ³ λ¦¬μ˜ 글듀은 knu HK.Lee κ΅μˆ˜λ‹˜μ˜ <μ†Œν”„νŠΈμ›¨μ–΄ 섀계> μˆ˜μ—…μ„ λ“£κ³  ν•„μžκ°€ λ‚˜λ¦„λŒ€λ‘œ μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€.

β€» λΆ€μ‘±ν•œ μ„€λͺ…이 μžˆκ±°λ‚˜, 잘λͺ» μ•Œκ³  μž‘μ„±ν•œ 뢀뢄이 보인닀면 λŒ“κΈ€λ‘œ μ•Œλ €μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€πŸ˜Š

μ†Œν”„νŠΈμ›¨μ–΄ 섀계가 μ™œ μ€‘μš”ν• κΉŒμš”?

κ·Έλƒ₯ μ½”λ“œλ§Œ μ•Œμ•„μ„œ 잘 짜면 λ˜λŠ” 게 μ•„λ‹κΉŒ? ꡳ이 섀계가 ν•„μš”ν• κΉŒ?

κ°œλ°œμ„ ν•˜λ‹€ 보면 이런 의문이 λ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. 이 κ³Όλͺ©μ—μ„œλŠ” μ†Œν”„νŠΈμ›¨μ–΄ 섀계가 μ™œ μ€‘μš”ν•œμ§€, μ–΄λ–»κ²Œ 섀계해야 ν•˜λŠ”μ§€λ₯Ό λ°°μ›Œλ³΄κ² μŠ΅λ‹ˆλ‹€.

 

μ†Œν”„νŠΈμ›¨μ–΄λž€?

μ†Œν”„νŠΈμ›¨μ–΄λŠ” ν”„λ‘œκ·Έλž¨κ³Ό ν”„λ‘œκ·Έλž¨μ˜ 개발, 운용, μˆ˜μ • 및 κΈ°λŠ₯ ν™•μž₯을 μœ„ν•΄ ν•„μš”ν•œ λͺ¨λ“  것이라고 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

즉, κ³„νšν•˜κ³ , λΆ„μ„ν•˜κ³ , μ„€κ³„ν•˜κ³ , κ΅¬ν˜„ν•˜κ³ , ν…ŒμŠ€νŠΈν•˜κ³ , μ μš©ν•˜κ³ , κ°œμ„ ν•˜λŠ” 과정에 κ΄€λ ¨λœ λͺ¨λ“  μ‚°μΆœλ¬Όμ΄ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ†Œν”„νŠΈμ›¨μ–΄μ˜ νŠΉμ§•

  • λΉ„κ°€μ‹œμ„±(invisibility) - κ°œλ…μ , λ¬΄ν˜•μ , ꡬ쑰가 μ½”λ“œ 내에 λ‚΄μž¬λ˜μ–΄ 있음
  • λ³΅μž‘μ„±(complexity) - 개발 과정이 λ³΅μž‘ν•¨, λŒ€μƒ 업무와 λ¬Έμ œκ°€ λ‚œν•΄ν•¨(ex. 일기예보, 무기체계...), ν”„λ‘œκ·Έλž¨ 규λͺ¨(라인 수)κ°€ λ°©λŒ€ν•¨.
  • μˆœμ‘μ„±(conformity) - μš”κ΅¬λ‚˜ ν™˜κ²½ 변화에 적절히 λ³€ν˜• κ°€λŠ₯
  • λ³€κ²½ κ°€λŠ₯μ„±(changeability)
  • ν…ŒμŠ€νŒ…μ˜ 어렀움(intestability)
  • 볡제 κ°€λŠ₯μ„±(duplicability)

 

μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ°”λΌλ³΄λŠ” 관점

의뒰자, μ„€κ³„μž(뢄석가), ν”„λ‘œκ·Έλž˜λ¨Έ(개발자), μ‚¬μš©μž(Users)

 

μ†Œν”„νŠΈμ›¨μ–΄ 개발과 μ•„νŒŒνŠΈ κ±΄μΆ•μ˜ 비ꡐ

μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ€ 뢄석, 섀계 λ‹¨κ³„μ—μ„œ 전체 λΉ„μš©μ˜ 40νΌμ„ΌνŠΈκ°€ μ†Œμš”λ©λ‹ˆλ‹€.

 

μ†Œν”„νŠΈμ›¨μ–΄μ— λŒ€ν•œ μ˜€ν•΄

κ΄€λ¦¬μžμ˜ μ˜€ν•΄

  • 쒋은 μ±…λ“€κ³Ό documentsκ°€ μžˆμœΌλ‹ˆ κ°œλ°œμžλ“€μ΄ 이걸 보고 μš°λ¦¬μ—κ²Œ ν•„μš”ν•œ λͺ¨λ“  것을 μ œκ³΅ν•  것이닀.
  • μ΅œμ‹  기술, 도ꡬ듀을 λ„μž…ν•˜λ©΄ 쒋은 μ œν’ˆμ„ κ°œλ°œμžλ“€μ΄ λΉ λ₯Έ μ‹œμΌ 내에 λ§Œλ“€ 수 μžˆμ„ 것이닀.
  • μš”κ΅¬ 뢄석은 생산적이 λͺ»ν•˜λ‹€.
  • 곡정이 지연될 경우 인λ ₯을 νˆ¬μž…ν•˜λ©΄ ν•΄κ²° ν•  수 μžˆλ‹€.

고객의 μ˜€ν•΄

  • λͺ©ν‘œμ— λŒ€ν•΄ 개랡적인 기술만 있으면 κ°œλ°œμžλ“€μ΄ μ•Œμ•„μ„œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“€ 것이닀. 세뢀적인 것은 λ‚˜μ€‘μ— 해도 λœλ‹€.
  • μ‚¬μš©μžμ˜ μš”κ΅¬μ— 따라 κ°œλ°œμžλ“€μ΄ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ‰½κ²Œ λ³€κ²½ν•  수 μžˆμ„ 것이닀.

개발자의 μ˜€ν•΄

  • 일단 μš°λ¦¬λŠ” ν”„λ‘œκ·Έλž¨λ§Œ λ§Œλ“€λ©΄ μž„λ¬΄ 끝이닀.
  • μ‹œμŠ€ν…œμ„ λ™μž‘ν•˜κΈ° μ „κΉŒμ§€ ν’ˆμ§ˆμ„ 평가할 방법이 없을 것이닀.
  • ν”„λ‘œμ νŠΈμ˜ κ²°κ³ΌλŠ” μž‘λ™ν•˜λŠ” ν”„λ‘œκ·Έλž¨λΏμ΄λ‹€.

 

μ†Œν”„νŠΈμ›¨μ–΄ 개발의 λ¬Έμ œλ“€

μ˜ˆμ‚° 초과, 개발 일정 μ§€μ—°, λΆˆμΆ©λΆ„ν•œ μ„±λŠ₯, μ‹ λ’°ν•˜κΈ° μ–΄λ €μš΄ ν’ˆμ§ˆ, μœ μ§€ 보수의 어렀움, μœ μ§€λ³΄μˆ˜ λΉ„μš© 급증

 

μ†Œν”„νŠΈμ›¨μ–΄ μœ„κΈ° software crisis

컴퓨터 ν•˜λ“œμ›¨μ–΄μ˜ κΈ‰μ†ν•œ λ°œμ „κ³Ό μ»΄ν“¨ν„°μ˜ λŒ€μ€‘ν™”λ‘œ 인해 μ†Œν”„νŠΈμ›¨μ–΄μ˜ μˆ˜μš”κ°€ κΈ‰μ¦ν•˜μ˜€μœΌλ‚˜ μ†Œν”„νŠΈμ›¨μ–΄μ˜ 생산성과 μƒμ‚°κΈ°μˆ μ€ 그에 λ―ΈμΉ˜μ§€ λͺ»ν•˜μ—¬ λ‚˜νƒ€λ‚œ ν˜„μƒ

 

μ†Œν”„νŠΈμ›¨μ–΄ κ³΅ν•™μ΄λž€?

ν’ˆμ§ˆ 쒋은 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ΅œμ†Œμ˜ λΉ„μš©μœΌλ‘œ κ³„νšλœ 일정에 λ§žμΆ”μ–΄ κ°œλ°œν•˜κΈ° μœ„ν•˜μ—¬ μ—¬λŸ¬ κ°€μ§€ 곡학적 원리와 방법을 μ²΄κ³„μ μœΌλ‘œ μ μš©ν•˜λŠ” 것