구조적 프로그래밍은 순서도에 의해 알고리즘의 참/거짓을 증명하기 쉽게 되어 있음

(알고리즘 수업 들어보면 아마 다 구조적인 증명법 다룰꺼다)

구조적 프로그래밍은 제어 흐름이 의존성 흐름하고 같음


만약 A가 B를 제어한다고 했을 때, A는 B에 의존적임



객체지향 패러다임은 신기한게 각 메소드의 참/거짓의 증명이 가능하긴 한데 ㅈㄴ 힘듦 (해보셈, 다형성때문에 ㅈ될껄)

(순서도가 개 뒤죽박죽으로 나옴)

그래서 귀납적 테스트 방법을 사용하는게 대세가 됨


다만 객체 지향은 제어 흐름이 의존성 흐름하고 같지 않을 수 있음


A가 B를 제어한다고 하더라도 A는 B의 인터페이스를 통해 B를 제어할 수 있기 때문에

결국, A는 B에 의존하지 않고, B는 A에 의존적임(인터페이스 설계가 A의 요구사항에 의해 완성되기 때문)

=> 제어흐름과 의존흐름이 서로 다르다.

=> Dependency Inversion