[Clean Architecture] 4장 :: 구조적 프로그래밍

Jihyoung·2022년 3월 20일
1

Clean Architecture

목록 보기
4/23
post-thumbnail

📕 증명

데이크스트라가 초기에 인식한 문제는 다음과 같다.

  • 프로그래밍은 어렵다.
  • 프로그래머는 프로그래밍을 잘하지 못한다.

데이크스트라는 증명(proof)이라는 수학적인 원리를 적용하여 이 문제를 해결하고자 했다.

  1. 순차 구문
  2. 분기
  3. 반복

데이크스트는 프로그래머가 위의 세가지 방법을 이용하여 코드를 증명하고, 프로그램에도 유클리드 계층구조로 만들 수 있을거라고 생각했다.


📗 해로운 증명서

그는 goto 문이 좋지 못하다는 사실을 알렸으며, 이는 실제로 해로웠고 goto 문은 거의 사용되지 않게 되었다.


📙 기능적 분해

구조적 프로그래밍을 통해 작은 단위로 재귀적 분해가 가능하며, 모듈은 기능적으로 분해가 가능하다.


📘 엄밀한 증명은 없었다

데이크스트라의 바람처럼 증명은 이루어지지 않았다.
대신 과학적 방법으로 접근이 가능하다.


📒 과학이 구출하다

수학과 달리 과학적 방법은 반증은 가능하지만 증명은 불가능하다. 즉, 서술된 내용이 틀렸음을 증명하는 방식으로 동작한다.


📕 테스트

프로그램이 잘못되었음을 테스트를 통해 증명할 수는 있지만, 프로그램이 맞다고 증명할 수는 없다.

테스트에 충분한 노력을 들였다면 테스트가 보장할 수 있는 것은 프로그램이 목표에 부합할 만큼은 충분히 참이라고 여길 수 있게 해주는 것이 전부다.

이는 소프트웨어 개발이 과학과 같음을 말한다.


📚 Reference

  • Clean Architecture : 소프트웨어 구조와 설계의 원칙
profile
로그를 생활화

0개의 댓글