Topcit

[ํƒ‘์‹ฏ ๋Œ€๋น„ ๋ฌธ์ œํ’€์ด] 01. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ

ํด๋กœ์ด๐Ÿ“ 2023. 10. 17. 16:34

๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ์žˆ๋Š” 2020 ์ „๋ฌธ๊ฐ€ ํŠน๊ฐ•์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ํƒ‘์‹ฏ ๋Œ€๋น„

 

๋Œ€์ถฉ ํ™ˆํŽ˜์ด์ง€ ๋กœ๊ณ  ์บก์ณ

 

1๋ฒˆ. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ

  • ๊ฐ ๋…ธ๋“œ์—๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” key๊ฐ€ ์žˆ๋‹ค. 
  • ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š” ํ•ด๋‹น ๋…ธ๋“œ์˜ key๋ณด๋‹ค ์ž‘์€ key๋ฅผ ๊ฐ–๋Š” ๋…ธ๋“œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  • ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š”ํ•ด๋‹น ๋…ธ๋“œ์˜ key๋ณด๋‹ค ํฐ key๋ฅผ ๊ฐ–๋Š” ๋…ธ๋“œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  • ์ขŒ์šฐ ์„œ๋ธŒํŠธ๋ฆฌ๋„ ๋ชจ๋‘ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์ด๋‹ค.

 

+ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

  • ๋ชจ๋“  ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ ˆ๋ฒจ์ด ๊ฐ™๊ณ , ๋ชจ๋“  ๋…ธ๋“œ๋“ค์ด ๋ ˆ๋ฒจ๋ณ„๋กœ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ์ ธ์žˆ๋Š” ๊ฒฝ์šฐ

 

 

2๋ฒˆ. ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ, ์ถ”์ƒ ํด๋ž˜์Šค ์ œ์‹œ (JAVA)

<<abstract>>
Book
- Title : String
- Author : String
+ setTitle (title : String): void (abtract)
+ setAuthor (author : String): void (abtract)

์œ„์˜ ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์„ JAVA๋กœ ์ž‘์„ฑํ•œ๋‹ค๋ฉด? โฌ‡๏ธโฌ‡๏ธ

public abstract class Book{
	private String title;
	private String author;
    
	public abstract void setTitle(String title);
	public abstract void setAuthor(String author);
}

 

 

์ถ”๊ฐ€์ ์ธ JAVA์˜ ๊ฐœ๋…๋“ค

์ƒ์†

  • ๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง„๊ฒƒ์„ ์ž์‹์—๊ฒŒ ๋ฌผ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํžŒ๋‹ค. ๋ถ€๋ชจ๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์ž์‹์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Is - a  ๊ด€๊ณ„ ํ˜น์€ kind of ๊ด€๊ณ„
// Bus๋Š” Car์ด๋‹ค.
public class Bus extends Car {
	public void windows(){
		Syetem.out.println("์ฐฝ๋ฌธ");
    }
}

์ž๋ฐ”๋Š” ํด๋ž˜์Šค ์ด๋ฆ„ ๋’ค์— extends ํ‚ค์›Œ๋“œ๋ฅผ ์ ๊ณ  ๋ถ€๋ชจ ํด๋ž˜์Šค ์ด๋ฆ„์„ ์ ์œผ๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์ƒ์†๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•  ๋•Œ, ์ด๋ฏธ ๊ตฌํ˜„๋œ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ์†์„ฑ์ด๋‚˜ ๊ธฐ๋Šฅ์ด ํ™•์žฅ๋œ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. -> ํ™•์žฅ ๊ฐ€๋Šฅ

 

์ ‘๊ทผ ์ œํ•œ์ž

ํด๋ž˜์Šค ๋‚ด์—์„œ ๋ฉค๋ฒ„์˜ ์ ‘๊ทผ์„ ์ œํ•œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

public (+) ์–ด๋–ค ํด๋ž˜์Šค์˜ ๊ฐ์ฒด์—์„œ๋“  ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
protected (#) ํ•ดํƒ• ํด๋ž˜์Šค์™€ ๋™์ผํ•œ ํŒจํ‚ค์ง€์— ์žˆ๊ฑฐ๋‚˜ ์ƒ์† ๊ด€๊ณ„์— ์žˆ๋Š” ํ•˜์œ„ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋“ค๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.
private (-) ํ•ด๋‹น ํด๋ž˜์Šค์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋งŒ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š๋Š” default ์ ‘๊ทผ ์ง€์ •์ž, ์ž๊ธฐ ์ž์‹ ๊ณผ ๊ฐ™์€ ํŒจํ‚ค์ง€์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ

 

์ถ”์ƒํด๋ž˜์Šค

๊ตฌ์ฒด์ ์ด์ง€ ์•Š๊ณ  ๊ฐœ๋…๋งŒ ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

  • ๋…์ˆ˜๋ฆฌ, ํƒ€์กฐ : ๊ตฌ์ฒด์ ์ธ ์ƒˆ๋ฅผ ์ง€์นญ but ํฌ์œ ๋ฅ˜๋Š” ๊ตฌ์ฒด์ ์ด์ง€ ์•Š๋‹ค.

์ถ”์ƒ ํด๋ž˜์Šค ์ •์˜ํ•˜๊ธฐ

  • ํด๋ž˜์Šค ์•ž์— abstract ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์ •์˜ํ•œ๋‹ค.
  • ๋ฏธ์™„์„ฑ์˜ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‚ด์šฉ์ด ์—†๋Š” ๋ฉ”์†Œ๋“œ, ์ฆ‰ ๊ตฌํ˜„์ด ๋˜์ง€ ์•Š์€ ๋ฉ”์†Œ๋“œ์ด๋‹ค.
  • return ํƒ€์ž… ์•ž์— abtract๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์–ด์•ผ ํ•œ๋‹ค.
  • ์ถ”์ƒ ํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๋‹ค ↔ ๊ฐ์ฒด๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค. newํ™” ํ•  ์ˆ˜ ์—†๋‹ค.
public abtract class Bird{
	public abstract void sing();
    
	public void fly(){
		System.out.println("๋‚ ๋‹ค.");
    }
}

์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค ์ƒ์„ฑํ•˜๊ธฐ

  • ์ถ”์ƒ ํด๋ž˜์Šค ๋‚ด๋ถ€์—๋Š” ์ผ๋ฐ˜ ๋ฉ”์†Œ๋“œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ๊ฐ–๊ณ  ์ž‡๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค.
  • ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ณ , ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ๊ฐ–๊ณ ์ž‡๋Š” ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๋„ ์ถ”์ƒ ํด๋ž˜์Šค๊ฐ€ ๋œ๋‹ค.
public class Duck extends Bird{
	@Override
	public void sing(){
		System.out.println("๊ฝฅ๊ฝฅ!!");
    }
}

๊ตฌํ˜„์„ ํ•˜์ง€ ์•Š๊ณ  ์„ ์–ธ๋งŒ ํ•˜๋ ค๋ฉด abstract๋ฅผ ๋ถ™์—ฌ์„œ ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๊ตฌํ˜„ํ•œ๊ฒƒ์ด ์—†๋‹ค๊ณ  ์ถ”์ƒ๋ฉ”์†Œ๋“œ๊ฐ€ ์•„๋‹ˆ๋‹ค.

 

 

ํด๋ž˜์Šคํ˜•๋ณ€ํ™˜

  • ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ์ž์‹ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๋ฉด ๋ถ€๋ชจ๊ฐ€ ๊ฐ€์ง„ ๋ฉ”์†Œ๋“œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ž์‹ ๊ฐ์ฒด๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋‚˜ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ํ˜•๋ณ€ํ™˜์„ ํ•ด์•ผํ•œ๋‹ค.
public class Car{
	public void run(){
		System.out.println("Car์˜ run๋ฉ”์†Œ๋“œ")
    }
}


// ์ƒ์†์˜ is a ๊ด€๊ณ„, Bus๋Š” Car๋‹ค.
public class Bus extends Car{ 
	public void ppangppang(){
		System.out.println("๋นต๋นต!!")
    }
}

 

  • ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ์ž์‹ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ์ž์‹ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๋ฉด ๋ถ€๋ชจ๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
public class BusExam{
	public static void maind(String args[]){
		Car car = new Bus();
		car.run();
		car.ppangppang(); // ์ปดํŒŒ์ผ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
    }
}
  • ppangppang() ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, Bus ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•ด์•ผ ํ•œ๋‹ค.
public class BusExam{
	public static void main(String args[]){
		Car car = new Bus();
		car.run();
		// car.ppangppang();  // ์ปดํŒŒ์ผ ์˜ค๋ฅ˜ ๋ฐœ์ƒ!
        
		Bus bus = (Bus)car;  // ๋ถ€๋ชจ ํƒ€์ž…์„ ์ž์‹ ํƒ€์ž…์œผ๋กœ ํ˜•๋ณ€ํ™˜
		bus.run();
		bus.ppangppang();
    }
}
  • ๊ฐ์ฒด๋“ค๋ผ๋ฆฌ๋„ ํ˜•๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ, ์ƒ์† ๊ด€๊ณ„์— ์žˆ์—ˆ์„ ๋•Œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ์ž์‹ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ๋•Œ๋Š” ๋ฌต์‹œ์ ์œผ๋กœ ํ˜•๋ณ€ํ™˜์ด ์ผ์–ด๋‚œ๋‹ค.
  • ๋ถ€๋ชจํƒ€์ž… ๊ฐ์ฒด๋ฅผ ์ž์‹ ํƒ€์ž…์œผ๋กœ ์ฐธ์กฐํ•˜๊ฒŒ ํ•  ๋•Œ, ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.
  • ๋‹จ, ์ด๋ ‡๊ฒŒ ํ˜•๋ณ€ํ™˜์„ ์‹œ๋„ํ•  ๋•, ๋ถ€๋ชจ๊ฐ€ ์ฐธ์กฐํ•˜๋Š” ์ธ์Šคํ„ด์Šค๊ฐ€ ํ˜•๋ณ€ํ™˜ํ•˜๋ ค๋Š” ์ž์‹ ํƒ€์ž…์ผ ๋•Œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

3๋ฒˆ. Data Flow Diagram (DFD)

  • ๋ฐ์ดํ„ฐ์˜ ํ”„๋กœ์„ธ์Šค ํ๋ฆ„ ํ‘œํ˜„, ์ž๋ฃŒ์˜ ์ถœ๋ฐœ์ง€์™€ ๋ชฉ์ ์ง€๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ํ‘œ์‹œํ•œ ๊ฒƒ์ด๋‹ค.
  • ์†Œํ”„ํŠธ์›จ์–ด์˜ ์„ค๊ณ„ ๋ฐ ์ •๋ณด์‹œ์Šคํ…œ์˜ ๋ถ„์„์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ
  • ๋ฐ์ดํ„ฐ ํ๋ฆ„๋„ or ์ž๋ฃŒ ํ๋ฆ„๋„ ๋ผ๊ณ ๋„ ํ•œ๋‹ค.

 

 

๊ตฌ์„ฑ์š”์†Œ

  1. ํ”„๋กœ์„ธ์Šค (Process), โ—‹ ์› (Bubble) 
    - ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•ด ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •์ด๋‹ค.
    - ๋„ํ˜•์  ํ‘œ๊ธฐ ํ˜•ํƒœ๋Š” ์›๊ณผ ์› ์•ˆ์˜ ์ด๋ฆ„์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
    - ์›์•ˆ์— ๊ธฐ๋กํ•˜๋Š” ์ด๋ฆ„์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ํ–‰์œ„์ž๋ฅผ ๊ธฐ์ˆ ํ•œ๋‹ค.
    - ์ž์ฒด์ ์œผ๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๊ณ  ํ•ญ์ƒ ์ž…๋ ฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    - ํ•ญ์ƒ ์ƒˆ๋กœ์šด ๊ฐ€์น˜๋ฅผ ๋ถ€๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.

  2. ๋ฐ์ดํ„ฐ ํ๋ฆ„ (Data Flow), ↔ ํ™”์‚ดํ‘œ
    - DFD์˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    - ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ์ดํ„ฐํ๋ฆ„์€ ํ”„๋กœ์„ธ์Šค ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ๋ถ€ํ„ฐ์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๋‚˜ํƒ€๋‚ด๊ธฐ๋„ ํ•œ๋‹ค.
    - ๋ช…์นญ์ด ๋ถ€์—ฌ๋˜๊ฑฐ๋‚˜ ๋ถ€์—ฌ๋˜์ง€ ์•Š์€ ํ™”์‚ดํ‘œ๋กœ ํ‘œ์‹œํ•œ๋‹ค. ํ›„์†์ž‘์—…์˜ ์ฐธ์กฐ๋ฅผ ์œ„ํ•ด ๋˜๋„๋ก ๋ช…์นญ์ด ๋ถ€์—ฌ๋˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.
    - ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์—๋Š” ๋™์ผํ•œ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

  3. ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ (Data Store), = ๋‘ ํ‰ํ–‰์„ 
    - ์ถ”ํ›„ ์—‘์„ธ์Šค๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ˆ˜๋™์  ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค.
    - ์•กํ„ฐ์™€ ๋‹ฌ๋ฆฌ ์ž์‹ ์˜ ์•ก์…˜์„ ์ทจํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ์ €์žฅ์ด๋‚˜ ์—‘์„ธ์Šค ์š”๊ตฌ์— ๋ฐ˜์‘ํ•  ๋ฟ์ด๋‹ค.
    - ์ €์žฅ๋˜์–ด์žˆ๋Š” ์ •๋ณด์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.
    - ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด์ง€ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๋™์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
    - ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ํ‘œ์‹œํ•จ์œผ๋กœ์„œ ๋ฐ์ดํ„ฐ์˜ ์ž…์ถœ๋ ฅ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    - ๋‘ ๊ฐœ์˜ ํ‰ํ–‰ํ•œ ์ง์„ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ณ , ํ‰ํ–‰์„  ์•ˆ์— ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์˜ ๋ช…์นญ์„ ๋ถ€์—ฌํ•œ๋‹ค.

  4. ์™ธ๋ถ€์—”ํ‹ฐํ‹ฐ (External Entity), โ–ก
    - ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ๊ณผ์ •์˜ ๋ฐ์ดํ„ฐ๋ฐœ์ƒ์˜ ์‹œ์ž‘ ๋ฐ ์ข…๋ฃŒ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    - ๊ธฐ์—… ๋‚ด์ ์ธ(inside) ์—”ํ‹ฐํ‹ฐ๋Š” ๊ด€๋ฆฌ, ๋ถ€์„œ, ๊ธฐ๋Šฅ, ์‹œ์Šคํ…œ๋“ฑ์„ ํฌํ•จํ•˜๋ฉฐ, ๊ธฐ์—… ์™ธ์ ์ธ(outside) ์—”ํ‹ฐํ‹ฐ๋Š” ๊ณ ๊ฐ, ๊ฑฐ๋ž˜์ฒ˜, ๊ณต๊ณต๊ธฐ๊ด€, ์™ธ๋ถ€์‹œ์Šคํ…œ ๋“ฑ์„ ํฌํ•จํ•œ๋‹ค.
    - ๋ฐ์ดํ„ฐ ํ๋ฆ„๋„์ƒ์—์„œ ํ”„๋กœ์„ธ์Šค์™€์˜ ์ƒํ˜ธ ๊ด€๋ จ์„ฑ์„ ํ‘œ์‹œํ•˜๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ DFD ๋ฒ”์œ„ ๋ฐ–์—์„œ ์‚ฌ๊ฐํ˜•์˜ ํ˜•ํƒœ๋กœ ํ‘œ์‹œํ•œ๋‹ค.
    - ์•กํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ, ์†Œ๋น„ ํ•จ์œผ๋กœ์„œ ๋ฐ์ดํ„ฐ ํ๋ฆ„๋„๋ฅผ ์ฃผ๋„ํ•˜๋Š” ํ™œ์„ฑ ๊ฐ์ฒด์ด๋‹ค.
    - ์•กํ„ฐ๋Š” ๋ฐ์ดํ„ฐ ํ๋ฆ„๋„์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์— ๋ถ™๋Š”๋‹ค. ํ๋ฆ„๋„์˜ ๊ฒฝ๊ณ„์— ๋†“์ด๊ฒŒ ๋˜๋ฉฐ ์†Œ์Šค(source)๋‚˜ ์‹ฑํฌ(sink)๋กœ์„œ ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„์„ ์ค‘๋‹จ์‹œํ‚จ๋‹ค.

 

DFD ์ž‘์„ฑ ๋ฐฉ๋ฒ•

  1. ์—…๋ฌด๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ์ž…์ถœ๋ ฅ ๋ฐ์ดํ„ฐํ๋ฆ„์„ ์‹๋ณ„ํ•œ๋‹ค.
  2. ํ๋ฆ„์ƒ ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์ œ๊ณต๋˜์–ด์•ผ ํ•  ์™ธ๋ถ€์—”ํ‹ฐํ‹ฐ๋ฅผ ์ •์˜ํ•œ๋‹ค.
  3. ์ž…๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ์ถœ๋ ฅ์œผ๋กœ, ์ถœ๋ ฅ์œผ๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์œผ๋กœ, ๋˜๋Š” ์ค‘๊ฐ„ ์ง€์ ๋ถ€ํ„ฐ์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์‹๋ณ„ํ•œ๋‹ค.
  4. ๋ชจ๋“  ์ ‘์†๊ด€๊ณ„ ๋ฐ์ดํ„ฐํ๋ฆ„์— ์ฃผ์˜๊นŠ๊ฒŒ ๋ช…์นญ(ํ˜น์€ ์ž๋ฃŒ๋‚ด์—ญ)์„ ๋ถ€์—ฌํ•œ๋‹ค.
  5. ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์ž…์ถœ๋ ฅ ๋ฐ์ดํ„ฐํ๋ฆ„์˜ ๋ช…์นญ์— ๋”ฐ๋ผ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•œ๋‹ค.
  6. ํ”„๋กœ์„ธ์Šค์— ๊ด€๋ จ๋œ ๋ฐ์ดํ„ฐ์ €์žฅ์†Œ๋ฅผ ์ •์˜ํ•œ๋‹ค.
  7. ๊ฒ€ํ† ํ•˜๊ณ  ๋ณด์™„ํ•œ๋‹ค.
  8. ์ƒ์œ„๋ ˆ๋ฒจ DFD ์™„์„ฑ ํ›„ ํ•˜์œ„๋ ˆ๋ฒจ์˜ DFD๋กœ ๋ถ„ํ• ํ•ด ์ตœํ•˜์œ„ ๋ ˆ๋ฒจ๊นŒ์ง€ ๊ทธ๋ฆฌ๋Š”๋ฐ ์ผ๋ฐ˜์ ์œผ๋กœ 3๋ฒˆ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

4๋ฒˆ. ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฒฐํ•ฉ๋„(coupling), ์‘์ง‘๋„(cohension)

๋ชจ๋“ˆํ™”(Modularization)

  • ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐ ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ
  • ํ”„๋กœ๊ทธ๋žจ์ด ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ์„ ๋ถ„ํ•ดํ•˜๊ณ  ์ถ”์ƒํ™”ํ•จ์œผ๋กœ์จ ์†Œํ”„ํŠธ์›จ์–ด ์ œํ’ˆ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์˜ ์ˆ˜์ • ๋ฐ ์žฌ์‚ฌ์šฉ, ์œ ์ง€ ๊ด€๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋ฒ•

 

๋ชจ๋“ˆ(Module)

  • ๊ธฐ๋Šฅ๋ณ„๋กœ ๋‚˜๋ˆ ์ง„ ๋ชจ๋“ˆํ™”์˜ ๊ฒฐ๊ณผ
  • ์†Œํ”„ํŠธ์›จ์–ด ๋‚ด์˜ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ์ž‘์—… ๋‹จ์œ„, ์ผ์ข…์˜ ์„œ๋ธŒ๋ฃจํ‹ด(subroutine)

 

๋…๋ฆฝ์„ฑ

  • ๋ชจ๋“ˆ์€ ์ฃผ์–ด์ง„ ๊ธฐ๋Šฅ๋งŒ์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“ˆ๊ณผ ์ ๊ฒŒ ์—ฐ๊ด€๋˜์–ด์•ผ ํ•จ.
  • ๋ชจ๋“ˆ์˜ ๊ฒฐํ•ฉ๋„์™€ ์‘์ง‘๋„๋กœ ๋…๋ฆฝ์„ฑ์„ ์ธก์ •ํ•œ๋‹ค.
  • ๋…๋ฆฝ์„ฑ์ด ๋†’์„ ์ˆ˜๋ก ์ข‹์€ ๋ชจ๋“ˆ์ด๋‹ค -> ํ•ด๋‹น ๋ชจ๋“ˆ ์ˆ˜์ • ์‹œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์ด ๋ฏธ์น˜๋Š” ์˜ํ–ฅ ๊ฐ์†Œ
์ด์ƒ์ ์ธ ๋ชจ๋“ˆํ™”
๊ฒฐํ•ฉ๋„๋Š” ์•ฝํ•˜๊ฒŒ, ์‘์ง‘๋„๋Š” ๊ฐ•ํ•˜๊ฒŒ, ๋ชจ๋“ˆ์˜ ํฌ๊ธฐ๋Š” ์ž‘๊ฒŒ

 

๊ฒฐํ•ฉ๋„

  • ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“ˆ ๊ฐ„ ์ƒํ˜ธ ์˜์กดํ•˜๋Š” ์ •๋„, ๋‚ฎ์„ ์ˆ˜๋ก ์ข‹๋‹ค.

์ž๋ฃŒ

๋ชจ๋“ˆ๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ „๋‹ฌ๋˜๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ํ†ต์‹ .
๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์ตœ์†Œํ™” ํ•˜๋Š”๊ฒƒ์ด ์ข‹๋‹ค.
์ˆœ์ˆ˜ํ•œ ์ž๋ฃŒํ˜• ์š”์†Œ
Void main(){
    Local (int x, int y):
}
์Šคํƒฌํ”„

๋ชจ๋“ˆ ๊ฐ„ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์ง€์ •.
๊ตฌ์กฐ์ฒด๋ฅผ ๋ณ€์ˆ˜ํ™”.
์ž๋ฃŒ๊ตฌ์กฐ์˜ ํ˜•ํƒœ ๋ณ€๊ฒฝ ์‹œ ์ฐธ์กฐํ•˜๋Š” ๋ชจ๋“  ๋ชจ๋“ˆ์— ์˜ํ–ฅ
Struct ์ขŒํ‘œ (int x, int y);

Void main()
{local(์ขŒํ‘œ x y)}
์ œ์–ด

์ œ์–ด๋ฌธ์„ ์ด์šฉ, ํƒ€ ๋ชจ๋“ˆ์˜ ๋‚ด๋ถ€ ์ œ์–ด.
๋ณ€๊ฒฝ์ด ๋ฐœ์ƒ๋˜๋ฉด caller, callee ๋ชจ๋‘ ๋ณ€๊ฒฝ.
๋‹คํ˜•์„ฑ ์ ์šฉ์œผ๋กœ ํ•ด๊ฒฐ
Void main(){
    local(1);
}
Void local(isExec){
    if(isExec){}
    else{}
}
์™ธ๋ถ€

๋ชจ๋“ˆ์ด ๋‹ค์ˆ˜์˜ ๊ธฐ๋Šฅ์„ ๊ฐ€์งˆ ๋•Œ ๋ชจ๋“ˆ ์•ˆ์˜ ๊ตฌ์„ฑ์ด ๊ทธ ๊ธฐ๋Šฅ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰.
ํŠน์ˆ˜ํ•œ ์™ธ๋ถ€ ํ™˜๊ฒฝ์— ์ข…์†๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ
์ฐธ์กฐ๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๊ฐ€ ๊ฐ ๋ชจ๋“ˆ์—์„œ ์ œํ•œ (look up table)
Void main(){
# include config data
}
Void local(){
# include config data
}
๊ณตํ†ต

์ „์—ญ๋ณ€์ˆ˜ ๋“ฑ ๋ชจ๋“ˆ๊ฐ„ ํ†ต์ผ ์ž๋ฃŒ์˜์—ญ ๊ณตํ†ต ์กฐํšŒ
์ „์—ญ๋ณ€์ˆ˜๋ฅผ ์บก์Šํ™”ํ•˜์—ฌ ๋ชจ๋“ˆ์—์„œ ์ œ๊ณต (์‹ฑ๊ธ€ํ†ค ๋””์ž์ธํŒจํ„ด)
Static in t A;

Void main(){ A=1; }
Void local(){ A=2; }
๋‚ด์šฉ

๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ
๋ณ€์ˆ˜๋ฅผ  ์บก์Šํ™”ํ•˜์—ฌ ๋ฐฉ์ง€
Void main(){
Go To Local;
}
Void local(int x int y){
    LOCAL
}

 

์‘์ง‘๋„

  • ๋ชจ๋“ˆ ๋‚ด๋ถ€์—์„œ ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์— ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ ์žˆ๋Š” ์ •๋„, ๋†’์„์ˆ˜๋ก ์ข‹๋‹ค.

๊ธฐ๋Šฅ

๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ๋‹จ์ผํ•œ ๋ชฉ์ ์„ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ๊ฒฝ์šฐ
ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ, ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰
NA
์ˆœ์ฐจ

๋ชจ๋“ˆ ๋‚ด์—์„œ ํ•œ ํ™œ๋™์œผ๋กœ๋ถ€ํ„ฐ ๋‚˜์˜จ ์ถœ๋ ฅ๊ฐ’์„ ๋‹ค์‹œ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ
A = update();
Delete(A)
ํ†ต์‹ 

๋™์ผํ•œ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ™œ๋™๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ๊ฒฝ์šฐ
DB์— ์ €์žฅ๋œ name
Print(name);
Select(name)
์ ˆ์ฐจ

๋ชจ๋“ˆ์ด ๋‹ค์ˆ˜์˜ ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ๊ฐ€์งˆ ๋•Œ, ๋ชจ๋“ˆ ์•ˆ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ๊ทธ ๊ธฐ๋Šฅ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ
Init()
Listen()
Request()
์‹œ๊ฐ„

์—ฐ๊ด€๋œ ๊ธฐ๋Šฅ์ด๋ผ๊ธฐ๋ณด๋‹ค ํŠน์ • ์‹œ์ ์— ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ํ™œ๋™๋“ค์„ ํ•œ ๋ชจ๋“ˆ์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ
Init()
Memset()
๋…ผ๋ฆฌ

์œ ์‚ฌํ•œ ์„ฑ๊ฒฉ์„ ๊ฐ–๊ฑฐ๋‚˜ ํŠน์ • ํ˜•ํƒœ๋กœ ๋ถ„๋ฅ˜๋˜๋Š” ์ฒ˜๋ฆฌ ์š”์†Œ๋“ค์ด ํ•œ ๋ชจ๋“ˆ์—์„œ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ
๋ฐ€์ ‘ํ•œ ๊ด€๋ จ์€ ์—†์Œ
Switch(1):
Case 1:
Case 2:
Case 3:
์šฐ์—ฐ

๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ์—ฐ๊ด€์ด ์—†๋Š” ๊ฒฝ์šฐ
 

 

 

5๋ฒˆ. ์•กํ‹ฐ๋น„ํ‹ฐ ๋‹ค์ด์–ด๊ทธ๋žจ

  • ์‚ฌ์šฉ์ž์˜ ๊ด€์ ์—์„œ ์‹œ์Šคํ…œ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ฒ˜๋ฆฌ ๊ณผ์ •์— ๋”ฐ๋ผ ๋‹จ๊ณ„์ ์œผ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ
  • ํ•˜๋‚˜์˜ ์œ ์Šค์ผ€์ด์Šค ์•ˆ์—์„œ ํ˜น์€ ์œ ์Šค์ผ€์ด์Šค ์‚ฌ์ด์— ๋ฐœ์ƒํ•˜๋Š” ๋ณต์žกํ•œ ์ฒ˜๋ฆฌ์˜ ํ๋ฆ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„
  • ์ž๋ฃŒ ํ๋ฆ„๋„์™€ ์œ ์‚ฌ

 

6๋ฒˆ. ํŒŒ์ด์ฌ์˜ ์žฌ๊ท€

  • ํŒŒ์ด์ฌ์€ ๊ธฐ๋ณธ ์„ค์ •๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด recursion ํšŸ์ˆ˜๋ฅผ 1000๋ฒˆ์œผ๋กœ ์ œํ•œํ•˜๊ณ  ์žˆ๋‹ค.

 

7๋ฒˆ. ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€, ์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€

ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€

  • ์‹œ์Šคํ…œ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํžˆ ํ…Œ์ŠคํŠธ๊ฐ€ ๋˜์—ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •๋„์ด๋‹ค.
  • ์ˆ˜ํ–‰ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ํ…Œ์ŠคํŠธ ๋Œ€๋ฐฉ์„ ์ปค๋ฒ„ํ–ˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

์ฝ”ํŠธ ์ปค๋ฒ„๋ฆฌ์ง€

  • ํ…Œ์ŠคํŠธ์— ์˜ํ•ด ์‹คํ–‰๋œ ์†Œ์Šค ์ฝ”๋“œ์˜ ์–‘์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค.
  • ํ…Œ์ŠคํŠธ๋กœ ์ฝ”๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ covered๋˜์—ˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.
  • ํ™”์ดํŠธ ๋ฐ•์Šค ํ…Œ์ŠคํŠธ (์†Œํ”„ํŠธ์›จ์–ด ๋‚ด๋ถ€ ์†Œ์Šค ์ฝ”๋“œ์˜ ๋…ผ๋ฆฌ์ ์ธ ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ํ…Œ์ŠคํŠธํ•˜์—ฌ ๋ชจ๋“ˆ ๋‚ด๋ถ€์˜ ์ž‘๋™์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ, ๋ชจ๋“ˆ์„ ํ•œ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•˜๋ฏ€๋กœ์จ ์ˆ˜ํ–‰) ๋ฅผ ํ†ตํ•ด ์ธก์ •๋˜๊ณ  % ๋‹จ์œ„๋กœ ํ‘œ์‹œ๋œ๋‹ค.
  • but, ์ปค๋ฒ„๋ฆฌ์ง€๊ฐ€ 100%๋ผ๊ณ  ํ•ด์„œ ๋ฒ„๊ทธ์—†๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋Œ€์ค‘์ ์œผ๋กœ ๊ตฌ๋ฌธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

 

์ฝ”๋“œ ์ปค๋ฒ„๋ฆฌ์ง€ ๊ธฐ์ค€

๊ตฌ๋ฌธ ์ปค๋ฒ„๋ฆฌ์ง€ (Statement Coverage)

  • ๋ผ์ธ ์ปค๋ฒ„๋ฆฌ์ง€๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ์ฝ”๋“œ ํ•œ์ค„์ด ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰๋œ๋‹ค๋ฉด ์ถฉ์กฑ๋œ๋‹ค.
  • ๋กœ์ง์„ ํ™•์ธํ•˜๊ธฐ ๋ณด๋‹ค, ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค.
  • ์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ a๊ฐ€ ์Œ์ˆ˜๋ผ๋ฉด if๋ฌธ์˜ ๋‚ด๋ถ€ ๋กœ์ง์ด ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. 4๊ฐœ ์ค‘ 3๊ฐœ์˜ ๊ตฌ๋ฌธ๋งŒ ์‹คํ–‰๋˜์—ˆ์œผ๋ฏ€๋กœ ์ปค๋ฒ„๋ฆฌ์ง€๋Š” 3/4 = 75%
def foo(a:int):
	print("--function start--")  # 1๋ฒˆ
	if a>0:  # 2๋ฒˆ
		a //= 2  # 3๋ฒˆ
	print("--function end--")  # 4๋ฒˆ

 

๊ฒฐ์ • ์ปค๋ฒ„๋ฆฌ์ง€ (Decision Coverage)

  • ๋ธŒ๋žœ์น˜ ์ปค๋ฒ„๋ฆฌ์ง€๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ์กฐ๊ฑด์‹์ด True/False๋ฅผ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ ์ถฉ์กฑ๋œ๋‹ค.
  • ์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ foo(1,1), foo(1,0)์˜ ๊ฒฝ์šฐ ์กฐ๊ฑด๋ฌธ์— ๋Œ€ํ•ด ์ฐธ/๊ฑฐ์ง“์„ ๋งŒ์กฑํ•˜๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ๋˜์–ด ๊ฒฐ์ • ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋งŒ์กฑํ•œ๋‹ค.
def foo(a: int, b: int):
	if a>0 and b>0:
		print("processing")

 

์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€ (Condition Coverage)

  • ๋ชจ๋“  ๋‚ด๋ถ€ ์กฐ๊ฑด์— ๋Œ€ํ•ด True/False๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉด ์ถฉ์กฑ๋œ๋‹ค.
  • ๋‚ด๋ถ€์กฐ๊ฑด์ด๋ž€ if๋ฌธ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ์กฐ๊ฑด๋“ค์„ ์˜๋ฏธํ•œ๋‹ค.
  • ์•„๋ž˜์˜ ์ฝ”๋“œ์—์„œ a>0, b>0๊ฐ€ ๋‚ด๋ถ€ ์กฐ๊ฑด์ด ๋˜๋ฉฐ ๊ฐ๊ฐ์— ๋Œ€ํ•ด True/False๋ฅผ ๊ฐ€์ง€๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ถฉ์กฑ๋œ๋‹ค.
  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ foo(1,0), foo(0,1) ์ผ ๋•Œ ์•„๋ž˜์˜ a>0, b>0 ์˜ True/False ์˜ ์ผ€์ด์Šค๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋งŒ์กฑํ•œ๋‹ค. ํ•˜์ง€๋งŒ a>0 and b>0์˜ ์กฐ๊ฑด์—์„œ๋Š” False ์ด๋ฏ€๋กœ ์กฐ๊ฑด๋ฌธ ๋‚ด๋ถ€์˜ ์ฝ”๋“œ๋Š” ํ…Œ์ŠคํŠธํ•˜์ง€ ๋ชปํ•œ๋‹ค.
  • ์กฐ๊ฑด ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋งŒ์กฑํ•œ๋‹ค๊ณ  ํ•ด๋„ ๊ตฌ๋ฌธ ์ปค๋ฒ„๋ฆฌ์ง€ ๋˜๋Š” ๊ฒฐ์ • ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ๋‹ค.
def foo(a: int, b: int):
	if a>0 and b>0:
		print("processing")

 

 

MC/DC

  • ๊ฐ ๊ฐœ๋ณ„ ์กฐ๊ฑด์‹์ด ๋‹ค๋ฅธ ๊ฐœ๋ณ„ ์กฐ๊ฑด์‹์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ  ์ „์ฒด ์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ์— ๋…๋ฆฝ์ ์œผ๋กœ ์˜ํ–ฅ์„ ์ฃผ๋„๋กํ•จ
  • ์กฐ๊ฑด/๊ฒฐ์ • ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋„์ถœ ๊ธฐ๋ฒ•
  • ํ•ด๋‹น ๊ฐœ๋ณ„ ์กฐ๊ฑด์‹์ด ์ „์ฒด ์กฐ๊ฑด์‹์˜ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์กฐ๊ฑด ์กฐํ•ฉ์„ ์ฐพ์•„์„œ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•

 

MC/DC ๊ฒฐ์ • ํ…Œ์ด๋ธ” ์ž‘์„ฑ

 

MC/DC ๊ฒฐ์ • ํ…Œ์ด๋ธ”

  • ์ „์ฒด ์กฐ๊ฑด์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„, ์ธ๋ ฅ, ๋น„์šฉ ๋“ฑ์˜ ๋ฌธ์ œ๋กœ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜์—ฌ ์˜๋ฏธ์žˆ๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋„์ถœํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰์ด ๋ชฉ์ 

 

 

ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ํฌํ•จ๊ด€๊ณ„