본문 바로가기
발전로그/책장로그-개발

클린 아키텍처 - 소프트웨어 구조와 설계의 원칙 02 4장

by 4lleycat 2022. 6. 5.

구조적 프로그래밍

데이스크트라에 의해 등장

증명 (proof)

데이스크트라는 유클리드 계층구조를 만드는 것을 비전으로 설정하고 프로그래머는 입증된 구조를 이용, 이들 구조를 코드와 결합하여 코드가 올바르다는 것을 증명하겠을 목표로 하였다.

연구 중에 goto문이 모듈을 더 작은 단위 재귀적 분해하는 과정에서 방해가 되는 경우와 그렇지 않은 경우를 발견하고

그중 방해가 되지 않는 좋은 경우인 if/then/else, do/while 같은 분기와 반복이라는 단순 제어 구조만 사용하는 모듈이라면 증명 가능한 단위까지 세분화될 것이라 생각했다

이는 2년 앞서 발견된 뵘, 야코 피니가 증명한 모든 프로그램은 순차, 분기, 반복의 제어구조와 동일했고 모듈의 증명을 가능하게 했다.

이로써 구조적 프로그래밍이 탄생하게 된다.

 

결론

구조적 프로그래밍이 오늘날까지 가치 있는 이유는 반증 가능한 단위를 만들어 낼 수 있는 능력 때문이다.

또한 현대적 언어가 아무런 제약 없는 goto문을 지원하지 않는 이유이면서 아키텍처 관전에서 기능적 분해를 최고의 실천법 중 하나로 여기는 이유이기도 하다.

소프트웨어 아키텍트는 모듈, 컴포넌트, 서비스가 쉽게 반증 즉 테스트가 쉽도록 노력해야 한다.