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

[์‹ค๊ธฐ] ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ• - ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„

by ๐Ÿณ Laboon 2024. 7. 25.

์š”๊ตฌ์‚ฌํ•ญ

์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์กฐ๊ฑด, ์ œ์•ฝ์‚ฌํ•ญ์„ ์š”๊ตฌ

SW ๊ฐœ๋ฐœ/์œ ์ง€ ๋ณด์ˆ˜ ๊ณผ์ •์— ํ•„์š”ํ•œ ๊ธฐ์ค€๊ณผ ๊ทผ๊ฑฐ๋ฅผ ์ œ๊ณต

 

  • ์š”๊ตฌ์‚ฌํ•ญ์˜ ์œ ํ˜•
    • ๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ
    • ๋น„๊ธฐ๋Šฅ์  ์š”๊ตฌ์‚ฌํ•ญ: ์„ฑ๋Šฅ, ๋ณด์•ˆ, ํ’ˆ์งˆ, ์•ˆ์ •์„ฑ ๋“ฑ ๊ธฐ๋Šฅ์˜ ๋ถ€๊ฐ€์ ์ธ ๊ฒƒ
  • ์š”๊ตฌ์‚ฌํ•ญ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค
    • ๋„์ถœ/์ถ”์ถœ : ์ดํ•ด๊ด€๊ณ„์ž ๊ฐ„ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ •์˜ (์‹๋ณ„ ๋ฐ ์ดํ•ด)
      • ์ธํ„ฐ๋ทฐ, ์„ค๋ฌธ, ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ, ์ฒญ์ทจ, ํ”„๋กœํ† ํƒ€์ดํ•‘, ์œ ์Šค์ผ€์ด์Šค
    • ๋ถ„์„: ์‚ฌ์šฉ์ž ์š”๊ตฌ์‚ฌํ•ญ์— ํƒ€๋‹น์„ฑ ์กฐ์‚ฌ ๋ฐ ๋น„์šฉ ๋ฐ ์ผ์ •์— ๋Œ€ํ•œ ์ œ์•ฝ ์„ค์ •
      • ๊ด€์ฐฐ, ๊ฐœ๋… ๋ชจ๋ธ๋ง, ์ •ํ˜• ๋ถ„์„, ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜ ๋ฌธ์„œํ™”
    • ๋ช…์„ธ: ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ ํ›„ '์Šน์ธ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ฌธ์„œํ™”'
    • ํ™•์ธ/๊ฒ€์ฆ : ๋ช…์„ธ์„œ๋ฅผ ๊ฒ€ํ† 
  • ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ ๋„๊ตฌ
    • ์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ CASE(Computer Aided SW Engineering)
      • SADT : ๊ตฌ์กฐ์  ๋ถ„์„ ๋ฐ ์„ค๊ณ„ ๋ถ„์„, ๋ธ”๋ก ๋‹ค์ด์–ด ๊ทธ๋žจ
      • SREM : ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ธฐ์ˆ 
      • PSL/PSA : ๋ฌธ์ œ ๊ธฐ์ˆ ์–ธ์–ด/์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ ๋ณด๊ณ ์„œ ์ถœ๋ ฅ
      • TAGS: ์‹œ์Šคํ…œ ๊ณตํ•™ ๋ฐฉ๋ฒ• ์‘์šฉ์— ๋Œ€ํ•œ ์ž๋™ ์ ‘๊ทผ, ๊ฐœ๋ฐœ ์ฃผ๊ธฐ ์ „ ๊ณผ์ •์— ์ด์šฉ ๊ฐ€๋Šฅ

๊ตฌ์กฐ์  ๋ถ„์„ ๋ชจ๋ธ

  • ๋ฐ์ดํ„ฐ/์ž๋ฃŒ ํ๋ฆ„๋„ (DFD, Data Flow Diagram)
    • ์› - ํ”„๋กœ์„ธ์Šค
    • ํ™”์‚ดํ‘œ - ํ๋ฆ„
    • ํ‰ํ–‰์„  - ์ž๋ฃŒ ์ €์žฅ์†Œ (DB, Memory)
    • ๋‹จ๋ง - Terminator (done)
    • ์‹œ๊ฐ„ ํ๋ฆ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†์Œ ๋ฒ„๋ธ” ์ฐจํŠธ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.
+-----------------+     +-----------------+
| External Entity |-->--|     Process     |-->--[Data Store]
+-----------------+     +-----------------+
       ^
       |
+-----------------+
| Data Flow       |
+-----------------+
  • ์ž๋ฃŒ ์‚ฌ์ „ (DD, Data Dictionary)
    • ์ž๋ฃŒ ํ๋ฆ„๋„์˜ ๋‚ด์šฉ์„ ์ƒ์„ธ ์ •์˜/์ƒ์„ธ ์„ค๋ช…
    • [] : ์„ ํƒ
    • () : ์ƒ๋žต
    • {} : ๋ฐ˜๋ณต
    • + : ๊ตฌ์„ฑ
    • = : ์ •์˜
    • ** : ์ฃผ์„
    • DFD์˜ ์†Œ๋‹จ์œ„ ๋ช…์„ธ์„œ์ด๋ฉฐ ERD์™€ STD์™€ ๊ฐ™์ด ์‚ฌ์šฉ๋œ๋‹ค.
External Entity: ๊ณ ๊ฐ(Customer)
Process: ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ(Order Processing)
Data Store: ์ฃผ๋ฌธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Order Database)
Data Flow: ์ฃผ๋ฌธ ์š”์ฒญ(Order Request)
  • ERD
+----------------+     +----------------+
|     Customer   |-----|      Order     |
|----------------|  1  |----------------|
| CustomerID     |     | OrderID        |
| Name           |     | CustomerID     |
| Address        |     | OrderDate      |
+----------------+     +----------------+
  • STD
+-------------+     +-------------+     +-------------+
|  ์ƒํƒœ: ๋Œ€๊ธฐ  |----|  ์ด๋ฒคํŠธ: ์ฃผ๋ฌธ  |----|  ์ƒํƒœ: ์ฒ˜๋ฆฌ ์ค‘ |
+-------------+     +-------------+     +-------------+
                         |
                    +-------------+
                    |  ์ด๋ฒคํŠธ: ์ทจ์†Œ  |
                    +-------------+
                         |
                    +-------------+
                    |  ์ƒํƒœ: ์ทจ์†Œ๋จ  |
                    +-------------+

 


๊ฐ์ฒด์ง€ํ–ฅ ๋ถ„์„ ๋ชจ๋ธ

  • Booch(๋ถ€์น˜) : ๋ฏธ์‹œ์ , ๊ฑฐ์‹œ์  ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์„œ ํด๋ž˜์Šค ๋ถ„์„ ๋ฐ ์‹๋ณ„ ๊ฑฐ์‹œ์ 

๊ฑฐ์‹œ์ 
+---------------------------+
|  ์˜จ๋ผ์ธ ๋„์„œ ํŒ๋งค ์‹œ์Šคํ…œ   |
+---------------------------+
|  ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค         |
|  ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ          |
|  ๊ฒฐ์ œ ์‹œ์Šคํ…œ               |
|  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค              |
+---------------------------+
๋ฏธ์‹œ์ 
Class: User
Attributes: userID, name, email, password
Methods: register(), login(), updateProfile()

Class: Book
Attributes: bookID, title, author, price
Methods: addBook(), updateBook(), deleteBook()

Class: Order
Attributes: orderID, userID, bookID, orderDate, status
Methods: createOrder(), updateOrder(), cancelOrder()
  • Jacobson(์ œ์ด์ฝฅ์Šจ): Use Case๋ฅผ ์‚ฌ์šฉ (์‚ฌ์šฉ์ž์™€ ์™ธ๋ถ€ ์‹œ์Šคํ…œ์ด ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ ์ž‘์šฉ)
์‚ฌ์šฉ์ž ๊ธฐ๋Šฅ ๋ช…์„ธ
+---------------------------+
|  ์˜จ๋ผ์ธ ๋„์„œ ํŒ๋งค ์‹œ์Šคํ…œ  |
+---------------------------+
| 1. ์ฑ… ๊ฒ€์ƒ‰                |
| 2. ์ฑ… ์ฃผ๋ฌธ                |
| 3. ๊ฒฐ์ œ ์ฒ˜๋ฆฌ              |
| 4. ์ฃผ๋ฌธ ํ™•์ธ              |
+---------------------------+

์œ ์Šค์ผ€์ด์Šค
          +------------+
          |  ์‚ฌ์šฉ์ž    |
          +------------+
                |
                v
  +---------------------------+
  | ์˜จ๋ผ์ธ ๋„์„œ ํŒ๋งค ์‹œ์Šคํ…œ   |
  +---------------------------+
  | 1. ์ฑ… ๊ฒ€์ƒ‰                |
  | 2. ์ฑ… ์ฃผ๋ฌธ                |
  | 3. ๊ฒฐ์ œ ์ฒ˜๋ฆฌ              |
  | 4. ์ฃผ๋ฌธ ํ™•์ธ              |
  +---------------------------+
  • Coad-Yourdon : E-R ๋‹ค์ด์–ด๊ทธ๋žจ, ๊ฐ์ฒด์˜ ํ–‰์œ„
E-R ๋‹ค์ด์–ด๊ทธ๋žจ
+------------+            +------------+          +------------+
|    User    |            |    Book    |          |   Order    |
+------------+            +------------+          +------------+
| userID     | <--------- | bookID     | <--------|  orderID   |
| name       | 1 : M      | title      | N : M    |  userID    |
| email      |            | author     |          |  bookID    |
| password   |            | price      |          |  orderDate |
+------------+            +------------+          |  status    |
                                                  +------------+
  • Wirfs-Brock : ๋ถ„์„, ์„ค๊ณ„ ๊ฐ„ ๊ตฌ๋ถ„์ด ์—†๋‹ค. ๊ณ ๊ฐ ๋ช…์„ธ์„œ ํ‰๊ฐ€ ํ›„ ์„ค๊ณ„ ์ž‘์—…๊นŒ์ง€ ์ˆ˜ํ–‰
+---------------------------+
|  ๊ณ ๊ฐ ๋ช…์„ธ์„œ ํ‰๊ฐ€ ํ›„ ์„ค๊ณ„ |
+---------------------------+
| - ์ฑ… ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ            |
| - ์ฑ… ์ฃผ๋ฌธ ๊ธฐ๋Šฅ            |
| - ๊ฒฐ์ œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ          |
| - ์ฃผ๋ฌธ ํ™•์ธ ๊ธฐ๋Šฅ          |
+---------------------------+
  • Rumbaugh (๋Ÿผ๋ฐ”์šฐ) : ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ์ฒด/๋™์ /๊ธฐ๋Šฅ ๋ชจ๋ธ
    • ๊ฐ์ฒด ๋ชจ๋ธ๋ง -> Object Diagram ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„
    • ๋™์  ๋ชจ๋ธ๋ง -> Dynamic, ์ƒํƒœ ๋‹ค์ด์–ด๊ทธ๋žจ / ์‹œ์Šคํ…œ์˜ ๋™์ ์ธ ํ–‰์œ„
    • ๊ธฐ๋Šฅ ๋ชจ๋ธ๋ง -> ์ž๋ฃŒ ํ๋ฆ„๋„ DFD / ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ ๊ณผ์ •
๊ฐ์ฒด ๋ชจ๋ธ๋ง
+------------+            +------------+            +------------+
|    User    |            |    Book    |            |   Order    |
+------------+            +------------+            +------------+
| userID     | <--------- | bookID     | <--------- |  orderID   |
| name       |   1 : N    | title      |   N : M    |  userID    |
| email      |            | author     |            |  bookID    |
| password   |            | price      |            |  orderDate |
+------------+            +------------+            |  status    |
                                                    +------------+
๋™์  ๋ชจ๋ธ๋ง
[Order Created] --> [Order Confirmed] --> [Order Shipped] --> [Order Delivered]
     |                      |                     |                  |
     v                      v                     v                  v
[Order Cancelled]    [Payment Failed]     [Order Returned]    [Order Completed]

๊ธฐ๋Šฅ ๋ชจ๋ธ๋ง

+-----------------+
|  Search Books   |
+-----------------+
       |
       v
+-----------------+       +-----------------+
|  Select Book    | <---> |  Add to Cart    |
+-----------------+       +-----------------+
       |
       v
+-----------------+       +-----------------+
|  Create Order   | <---> |  Payment Process |
+-----------------+       +-----------------+
       |
       v
+-----------------+
|  Confirm Order  |  --->  [ Data Stroe ]
+-----------------+

  • ์š”๊ตฌ์‚ฌํ•ญ ๋ช…์„ธ
    • ์ •ํ˜• ๋ช…์„ธ 
      • ์ˆ˜ํ•™์  ์›๋ฆฌ
      • ์ •ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์š”๊ตฌ์‚ฌํ•ญ์ด ํ‘œํ˜„ ๋จ
      • ๋Œ€์‹  ์–ด๋ ค์›Œ์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์›€
    • ๋น„์ •ํ˜• ๋ช…์„ธ
      • ์ž์—ฐ์–ด๋ž‘ ๊ทธ๋ฆผ ์ค‘์‹ฌ
      • ์˜์‚ฌ์†Œํ†ต์€ ์šฉ์ดํ•˜๋‚˜ ์ผ๊ด€์„ฑ์ด ์—†์Œ