๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ–ฅ dev-ruby

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] ๊ฐ์ฒด์ง€ํ–ฅ์„ค๊ณ„ ๋ณธ๋ฌธ

์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] ๊ฐ์ฒด์ง€ํ–ฅ์„ค๊ณ„

ruby_s 2021. 12. 12. 00:15
728x90
๋ฐ˜์‘ํ˜•
SMALL

ํด๋ž˜์Šค ๋ฐ ๋ฉ”์†Œ๋“œ ์„ค๊ณ„

ํ˜„์žฌ ๋ชจ๋ธ ๋ฆฌ๋ทฐ

1. ํด๋ž˜์Šค๊ฐ€ ๋ฌธ์ œ์— ํ•„์š”ํ•˜๊ณ  ์ถฉ๋ถ„ํ•œ์ง€ ํ™•์ธ
2. ๊ฐ ํด๋ž˜์Šค์˜ ์†์„ฑ ๋ฐ ๋ฉ”์†Œ๋“œ ๊ฐ€์‹œ์„ฑ ๋งˆ๋ฌด๋ฆฌ
3. ๊ฐ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๋ฉ”์†Œ๋“œ ์›ํ˜• ์ •์˜
4. ๊ฐ์ฒด๊ฐ€ ๋ณด์กดํ•  ์ œ์•ฝ ์กฐ๊ฑด ์ •์˜

์„ค๊ณ„ ์žฌ๊ตฌ์กฐํ™”

Factoring - ๋ฉ”์†Œ๋“œ ํด๋ž˜์Šค๋ฅผ ์ƒˆ ๋ฉ”์†Œ๋“œ ๋˜๋Š” ํด๋ž˜์Šค๋กœ ๊ตฌ๋ถ„

Normalization - ์„ค๊ณ„์—์„œ ๋ˆ„๋ฝ๋œ ์ž ์žฌ์  ํด๋ž˜์Šค ์‹๋ณ„

 

๋ฉ”์†Œ๋“œ ๋ช…์„ธ

  • ์ผ๋ฐ˜ ์ •๋ณด 
    • ๋ฉ”์†Œ๋“œ ์ด๋ฆ„, id, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • Event 
    • ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์ด๋ฒคํŠธ ๋‚˜์—ด
  • Message passing
    • ๋ฉ”์†Œ๋“œ์— ์˜ํ•ด ์–ด๋–ค ์ธ์ˆ˜๊ฐ€ ์ „๋‹ฌ๋˜๊ณ , ์ „๋‹ฌ๋˜๊ณ , ๋ฐ˜ํ™˜๋˜๋Š”๊ฐ€
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ช…์„ธ
    • ๊ตฌ์กฐํ™”๋œ ์˜์–ด
    • ์˜์‚ฌ์ฝ”๋“œ
    • UML activity diagram

 

๋„๋ฉ”์ธ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ ์–ธ์–ด์— ๋งคํ•‘

  • Single-Inheritance Language (๋‹จ์ผ ์ƒ์† ์–ธ์–ด)
    • association ๊ด€๊ณ„๋กœ ๋ฐ”๊พผ๋‹ค.
    • ์ถ”๊ฐ€ ์Šˆํผ ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ์ƒ์†์„ ํ‰ํƒ„ํ•˜๊ฒŒ ํ•œ๋‹ค.
  • Object-Based Language (๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด)
    • ๋ฌธ์ œ ๋„๋ฉ”์ธ ํด๋ž˜์Šค ์„ค๊ณ„์—์„œ ์ƒ์†์˜ ๋ชจ๋“  ์‚ฌ์šฉ์„ ๋ฐฐ์ œ
  • Traditional procedural Language (์ „ํ†ต์  ํ•จ์ˆ˜ํ˜• ์–ธ์–ด)
    • ์„ค๊ณ„์ƒ ์ƒ์† ๋ฐฐ์ œ
    • ๋‹คํ˜•์„ฑ, ๋™์  ๋ฐ”์ธ๋”ฉ, ์บก์Аํ™” ๋“ฑ์˜ ๋ชจ๋“  ์‚ฌ์šฉ์„ ๋ฐฐ์ œ

 

ํŒจํ‚ค์ง€ ๋‹ค์ด์–ด๊ทธ๋žจ

์˜์กด๊ด€๊ณ„ - ์ ์„  ๋นˆํ™”์‚ดํ‘œ

A โ€ขโ€ขโ€ข > B : A๋Š” B์— ์˜์กด์ , B์— ์žˆ๋Š” ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๊ฐ€ ์ˆ˜์ •๋˜๋ฉด A๋„ ๋ฐ”๋€Œ์–ด์•ผ ํ•จ

 

One to One (1 : 1)

  • ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ  secondary ํ‚ค๋กœ ํ•œ ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ (secondary ํ‚ค๊ฐ€ NULL์ด ์•„๋‹˜)

One to One (0...1 : 1)

  • ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ  secondary ํ‚ค๋กœ ํ•œ ํ…Œ์ด๋ธ” (0...1์ธ)์— ์ถ”๊ฐ€ (secondary ํ‚ค๊ฐ€ NULL์ด ์•„๋‹˜)

One to Many (1 : *)

  • secondary ํ‚ค๋ฅผ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค์™€ ํ•จ๊ป˜ ๋‹ค์ค‘์„ฑ์ด ๋งŽ์€ ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ (secondary ํ‚ค๋Š” NULL์ด ์•„๋‹˜)

Many to Many (* : *)

  • intersecting(๊ต์ฐจ) ํด๋ž˜์Šค๋กœ ๋งŒ๋“ ๋‹ค.
  • one-to-many๋กœ ๋ฐ”๊พผ๋‹ค.
  • ๋‘ ์˜ค๋ฆฌ์ง„ ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ต์ฐจ ํด๋ž˜์Šค์— ํ‚ค ์†์„ฑ ์ถ”๊ฐ€

T_A

Attr a { PK } Attr 2  โ€ฆ.

T_B

Attr b { PK } Attr 2  โ€ฆ.

 T_AB 

Attr a {PK, SK } Attr b {PK, SK}  โ€ฆ.

 

์ƒ์†๊ด€๊ณ„ 1

  • ์Šˆํผ ํด๋ž˜์Šค ํ…Œ์ด๋ธ”์— ํ”Œ๋ž˜๊ทธ ์†์„ฑ ์ถ”๊ฐ€
  • ์Šˆํผ ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค ํ…Œ์ด๋ธ”์— ๊ธฐ๋ณธ ํ‚ค๋กœ ์ถ”๊ฐ€ (ํ‚ค ์ƒ์†)

T_A

Attr a { PK } Attr a1  Flag

T_B

Attr a { PK, SK } Attr b1  โ€ฆ.

 T_C

Attr a {PK, SK } Attr c1  โ€ฆ.

 

์ƒ์†๊ด€๊ณ„ 2

  • ์Šˆํผ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์†์„ฑ์„ ํ•˜์œ„ ํด๋ž˜์Šค ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€
  • ํ•˜์œ„ ํด๋ž˜์Šค ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋Š” ์Šˆํผ ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ํ‚ค (ํ‚ค ์ƒ์†)

T_A

Attr a { PK } Attr a1 Attr a2

T_B

Attr a { PK } Attr a1 Attr a2  โ€ฆ.

T_C

Attr a { PK } Attr a1 Attr a2  โ€ฆ.

 

Client-Server ์•„ํ‚คํ…์ณ

  • Server-based ์•„ํ‚คํ…์ณ : Client๊ฐ€ terminal์ด๋‹ค.
    • ์„œ๋ฒ„๋Š” ๋‹ค์Œ 4๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„๋‹ค.
      • Presentation logic
      • Application logic
      • Data access logic
      • Data storage
  • Client-based ์•„ํ‚คํ…์ณ
  • Client-Server ์•„ํ‚คํ…์ณ

 

Client-Server ์•„ํ‚คํ…์ณ์˜ ๊ธฐ์ˆ  ํ™˜๊ฒฝ ํ™•์ธ

  • Object-Oriented programming language
  • User interface implementation techniques
  • Middleware
  • Database Management System

Summary

  • Architecture Design
    • Package diagram, 3-layered Architecture
  • Detail Design based on 3-Layered Architecture
    • PD layer : Class & Method Design : Restructuring, Invariants and Method Spec.
    • Data layer : Database Schema, File design
    • UI layer : Window navigation design, Interface template, UI Classes
  • Physical Architecture Design
    • Deployment diagram, Technical Emvironment Spec.
    • External Interface Specification

 

 

 

728x90
๋ฐ˜์‘ํ˜•
LIST
๐Ÿ–ฅ dev-rubyFE-Developer