λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“–CS/πŸ“™Software Design

[μ†Œν”„νŠΈμ›¨μ–΄ 섀계] 1μž₯. Introduction to Systems Analysis and Design

by goguma.dev 2024. 10. 18.

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

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

<ν•™μŠ΅ λͺ©μ°¨>

  • Systems development life cycle (SDLC) μ‹œμŠ€ν…œ 개발 생λͺ… μ£ΌκΈ°
    • μ‹œμŠ€ν…œ 개발 생λͺ… 주기의 일반적인 λ„€ 단계(κ³„νš, 뢄석, 섀계, κ΅¬ν˜„)에 λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€.
    • μ‹œμŠ€ν…œ 개발 생λͺ… 주기에 λ”°λ₯Έ λ‹€μ–‘ν•œ 개발 방법둠에 λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€.

Introduction

μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“œλŠ”λ° μ™œ 곡식적인 ν”„λ‘œμ„ΈμŠ€(formal process)κ°€ ν•„μš”ν• κΉŒμš”?

  • μ‹€νŒ¨κ°€ 자주 λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ˜ˆμ‚° 초과, 일정 지연 λ“±μ˜ 이유둜 μ’…μ’… μ†Œν”„νŠΈμ›¨μ–΄κ°€ 덜 μ™„μ„±λœ 채 개발이 마무리될 수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“œλŠ” 것은 μ§κ΄€λ§ŒμœΌλ‘œ ν•΄κ²°ν•˜κΈ° μ–΄λ ΅κ³  λ³΅μž‘ν•œ 과정이 μˆ˜λ°˜λ©λ‹ˆλ‹€.
  • 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ν”„λ‘œμ νŠΈμ— λŒ€ν•œ λͺ…ν™•ν•œ ν”„λ‘œμ„ΈμŠ€μ™€ κ³„νšμ΄ ν•„μš”ν•©λ‹ˆλ‹€.

μ‹œμŠ€ν…œ λΆ„μ„κ°€λŠ” 핡심 역할을 ν•©λ‹ˆλ‹€.

  • μ‹œμŠ€ν…œ λΆ„μ„κ°€λŠ” μ‹œμŠ€ν…œμ„ μ„€κ³„ν•˜κ³ , λΉ„μ¦ˆλ‹ˆμŠ€ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ΄ν•΄ν•˜μ—¬ 그에 λ§žλŠ” μ†”λ£¨μ…˜μ„ μ œκ³΅ν•˜λŠ” μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.
  • 이λ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄μ„œλŠ” λΉ„μ¦ˆλ‹ˆμŠ€ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ μ΄ν•΄λΏλ§Œ μ•„λ‹ˆλΌ, 기술적 μ—­λŸ‰κ³Ό 뢄석 λŠ₯λ ₯ λ˜ν•œ ν•„μš”ν•©λ‹ˆλ‹€.

Software Development Life Cycle (SDLC)

 

  • SDLCλŠ” λ„€ 가지 μ£Όμš” 단계(κ³„νš, 뢄석, 섀계, κ΅¬ν˜„)둜 κ΅¬μ„±λ˜λ©°, 각 λ‹¨κ³„λŠ” μ†Œν”„νŠΈμ›¨μ–΄ 개발 κ³Όμ •μ—μ„œ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.
  • 각 μ£Όμš” λ‹¨κ³„λŠ” μ—¬λŸ¬ ν•˜μœ„ λ‹¨κ³„λ‘œ λ‚˜λ‰˜λ©°, 각 λ‹¨κ³„λ§ˆλ‹€ 결과물을 λ¬Έμ„œλ‘œ κΈ°λ‘ν•˜μ—¬ ν”„λ‘œμ νŠΈμ˜ 진행 상황을 μΆ”μ ν•˜κ³  κ²€ν† ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. λ¬Έμ„œλ‘œ 기둝된 결과물을 μ‚°μΆœλ¬Ό(deliverables)라고 ν•©λ‹ˆλ‹€.
  • SLDC의 각 λ‹¨κ³„λŠ” 순차적, 점진적, 반볡적 λ“± λ‹€λ₯Έ νŒ¨ν„΄μœΌλ‘œ 싀행될 수 μžˆμŠ΅λ‹ˆλ‹€.

 

SDLC: 1. Planning κ³„νš (λ§Œλ“œλŠ” 이유? μ™œ 이 μ‹œμŠ€ν…œμ„ λ§Œλ“€μ–΄μ•Ό ν•˜λŠ”κ°€?)

1. ν”„λ‘œμ νŠΈ κ°œμ‹œ (project initiation)

  • Develop/receive a system request: μƒˆλ‘œμš΄ μ‹œμŠ€ν…œμ— λŒ€ν•œ μš”μ²­μœΌλ‘œ ν”„λ‘œμ νŠΈκ°€ μ‹œμž‘λ©λ‹ˆλ‹€.
  • conduct a feasibility analysis: ν”„λ‘œμ νŠΈκ°€ ν˜„μ‹€μ μœΌλ‘œ μ‹€ν–‰ κ°€λŠ₯ν•œμ§€ λΆ„μ„ν•΄μ•Όν•©λ‹ˆλ‹€. (λΉ„μš©, μ‹œκ°„, 기술적 κ°€λŠ₯μ„±, μ‹œμž₯ μš”κ΅¬λ“±μ„ 평가)

2. ν”„λ‘œμ νŠΈ 관리 (project management)

  • Develop the work plan: ν”„λ‘œμ νŠΈλ₯Ό 효율적으둜 μ§„ν–‰ν•˜κΈ° μœ„ν•œ κ³„νšμ„ μˆ˜λ¦½ν•©λ‹ˆλ‹€.
  • staff the project: ν”„λ‘œμ νŠΈλ₯Ό 진행할 νŒ€μ„ κ΅¬μ„±ν•˜κ³ , ν•„μš”ν•œ 기술과 κ²½ν—˜μ„ 가진 인λ ₯을 λ°°μ •ν•©λ‹ˆλ‹€.

 

SDLC: 2. Analysis 뢄석 (무엇을 λ§Œλ“œλŠ”κ°€? μ‹œμŠ€ν…œμ΄ μ–΄λ–€ κΈ°λŠ₯을 ν•΄μ•Ό ν•˜λŠ”κ°€?)

1. 뢄석 μ „λž΅ 개발 (Develop an analysis strategy)

  • ν˜„μž¬ μ‚¬μš© 쀑인 μ‹œμŠ€ν…œμ„ λΆ„μ„ν•˜μ—¬ 문제점과 κ°œμ„ μ μ„ λ°œκ²¬ν•˜κ³ , ν–₯후에 개발될 μƒˆλ‘œμš΄ μ‹œμŠ€ν…œμ˜ 섀계λ₯Ό κ΅¬μƒν•©λ‹ˆλ‹€.

2. μš”κ΅¬μ‚¬ν•­ μˆ˜μ§‘ (Gather the requirements)

  • μ‹œμŠ€ν…œμ΄ μ œκ³΅ν•΄μ•Ό ν•˜λŠ” κΈ°λŠ₯κ³Ό μ„œλΉ„μŠ€λ₯Ό μ •μ˜ν•˜λŠ” μ‹œμŠ€ν…œ κ°œλ…μ„ κ°œλ°œν•©λ‹ˆλ‹€.
  • λΉ„μ¦ˆλ‹ˆμŠ€ 데이터λ₯Ό μ²˜λ¦¬ν•˜κ³  λΉ„μ¦ˆλ‹ˆμŠ€ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ§€μ›ν•˜λŠ” λͺ¨λΈμ„ κ°œλ°œν•©λ‹ˆλ‹€.

3. μ‹œμŠ€ν…œ μ œμ•ˆμ„œ 개발 (Develop a system proposal)

  • μ‹œμŠ€ν…œ μ œμ•ˆμ„œλŠ” μš”κ΅¬μ‚¬ν•­ λͺ…ν™•νžˆ μ •μ˜ν•œ λ¬Έμ„œλ‘œ, κ°œλ°œν•  μ‹œμŠ€ν…œμ˜ ꡬ체적인 λ‚΄μš©κ³Ό κΈ°λŠ₯을 ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  • 이 μ œμ•ˆμ„œλŠ” μš”κ΅¬μ‚¬ν•­ λͺ…μ„Έμ„œ(Requirement Specification)와 같은 역할을 ν•˜λ©°, μ‹œμŠ€ν…œ 개발의 κ°€μ΄λ“œλΌμΈμ΄ λ©λ‹ˆλ‹€.

 

SDLC: 3. Design 섀계 (μ–΄λ–»κ²Œ λ§Œλ“€κΉŒ?)

1. 섀계 μ „λž΅ 개발 (Develop a design strategy): μ‹œμŠ€ν…œμ„ μ„€κ³„ν•˜κΈ° μœ„ν•œ 전체적인 μ „λž΅μ„ μˆ˜λ¦½ν•©λ‹ˆλ‹€.

2. μ•„ν‚€ν…μ²˜μ™€ μΈν„°νŽ˜μ΄μŠ€ 섀계 (Design architecture and interfaces): μ‹œμŠ€ν…œμ˜ 전체적인 ꡬ쑰λ₯Ό μ •μ˜ν•˜κ³ , μ‹œμŠ€ν…œ λ‚΄λΆ€ 및 외뢀와 μƒν˜Έμž‘μš©ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ„€κ³„ν•©λ‹ˆλ‹€.

3. λ°μ΄ν„°λ² μ΄μŠ€ 및 파일 사양 개발 (Develop databases and file specifications): μ‹œμŠ€ν…œμ΄ 데이터λ₯Ό μ–΄λ–»κ²Œ μ €μž₯ν•˜κ³  관리할지 μ„€κ³„ν•©λ‹ˆλ‹€.

4. ν”„λ‘œκ·Έλž¨ 섀계 (Develop the program design): μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•˜κΈ° μœ„ν•΄ μ–΄λ–€ ν”„λ‘œκ·Έλž¨λ“€μ΄ ν•„μš”ν•œμ§€, μ–΄λ–€ μž‘μ—…μ„ μˆ˜ν–‰ν•  것인지, 섀계 λͺ…μ„Έμ„œλ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.

 

SDLC: 4.  Implementation κ΅¬ν˜„

1. μ‹œμŠ€ν…œ ꡬ좕(Construct the system): μ„€κ³„λœ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ μ‹€μ œ μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ‹œμŠ€ν…œμ„ κ°œλ°œν•©λ‹ˆλ‹€. 개발된 μ‹œμŠ€ν…œμ΄ μ œλŒ€λ‘œ μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ” ν…ŒμŠ€νŠΈ 과정이 ν•„μš”ν•©λ‹ˆλ‹€.

2. μ‹œμŠ€ν…œ μ„€μΉ˜(Install system): μ™„μ„±λœ μ‹œμŠ€ν…œμ„ μ‚¬μš©μžλ“€μ—κ²Œ μ„€μΉ˜ν•˜κ³ , μ‚¬μš©λ²•μ„ μ•Œλ €μ€λ‹ˆλ‹€.

3. μ‹œμŠ€ν…œ 지원(Support the system): μ‹œμŠ€ν…œμ΄ μš΄μ˜λ˜λ©΄μ„œ λ°œμƒν•  수 μžˆλŠ” 문제λ₯Ό ν•΄κ²°ν•˜κ³ , 좔가적인 μš”κ΅¬μ‚¬ν•­μ„ λ°˜μ˜ν•˜λŠ” μœ μ§€λ³΄μˆ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

 


SDLC: Methodologies

 

  • ν”„λ‘œμ„ΈμŠ€ 지ν–₯ (Process oriented – Structured 방법둠): 이 방법둠은 μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ„ 일련의 순차적 λ‹¨κ³„λ‘œ κ΅¬λΆ„ν•˜μ—¬ μ²΄κ³„μ μœΌλ‘œ μ§„ν–‰ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. κ΅¬μ‘°ν™”λœ λ°©μ‹μœΌλ‘œ ν”„λ‘œμ„ΈμŠ€μ˜ 흐름을 μ€‘μ‹œν•˜λ©°, 예λ₯Ό λ“€μ–΄ 폭포수(Waterfall) λͺ¨λΈμ΄ 여기에 μ†ν•©λ‹ˆλ‹€.
  • 데이터 쀑심 (Data centered – DB): 데이터 쀑심 방법둠은 μ‹œμŠ€ν…œμ΄ μ²˜λ¦¬ν•  λ°μ΄ν„°μ˜ ꡬ쑰와 관계λ₯Ό μ€‘μ‹¬μœΌλ‘œ μ„€κ³„ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€(DB) 섀계λ₯Ό 기반으둜 μ‹œμŠ€ν…œμ΄ κ΅¬ν˜„λ˜λ©°, λ°μ΄ν„°μ˜ 무결성과 νš¨μœ¨μ„±μ„ μ€‘μš”ν•˜κ²Œ μƒκ°ν•©λ‹ˆλ‹€.
  • 객체 지ν–₯ (Object-oriented – OO 방법둠): 객체 지ν–₯ 방법둠은 μ‹œμŠ€ν…œμ„ 객체(Object)λΌλŠ” λ…λ¦½λœ λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ μ„€κ³„ν•˜κ³  κ΅¬ν˜„ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. 객체 지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)의 κ°œλ…μ„ μ‚¬μš©ν•˜μ—¬ μž¬μ‚¬μš© κ°€λŠ₯ν•˜κ³  ν™•μž₯성이 높은 μ‹œμŠ€ν…œμ„ κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

기타 방법둠

 

  • λΉ λ₯Έ 개발 방법둠 (Rapid Action Development): RADλŠ” μ‹ μ†ν•œ κ°œλ°œμ„ λͺ©ν‘œλ‘œ ν•˜λ©°, λΉ λ₯΄κ²Œ ν”„λ‘œν† νƒ€μž…μ„ λ§Œλ“€κ³  μ‚¬μš©μž ν”Όλ“œλ°±μ„ λ°˜μ˜ν•˜μ—¬ μ‹œμŠ€ν…œμ„ μ μ§„μ μœΌλ‘œ κ°œμ„ ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.
  • μ• μžμΌ 개발 (Agile Development): μ• μžμΌμ€ 반볡적이고 점진적인 μ ‘κ·Ό 방식을 κ°•μ‘°ν•˜λ©°, 개발 κ³Όμ •μ—μ„œ μœ μ—°ν•˜κ²Œ μš”κ΅¬μ‚¬ν•­μ„ λ³€κ²½ν•˜κ³  지속적인 ν”Όλ“œλ°±μ„ λ°˜μ˜ν•  수 μžˆλŠ” λ°©λ²•λ‘ μž…λ‹ˆλ‹€. λΉ λ₯Έ 주기둜 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ°°ν¬ν•˜μ—¬ 개발 속도와 ν’ˆμ§ˆμ„ λ†’μ΄λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.