3장 - 패러다임 개요

    3가지 패러다임에 대해서 배운다 구조적 프로그래밍 객체지향 프로그래밍 함수형 프로그래밍 구조적 프로그래밍 최초로 적용된 패러다임이다. 구조적 프로그래밍은 제어 흐름의 직접적인 전환에 대해 규칙을 부과한다. 객체지향 프로그래밍 함수 호출 스택 프레임을 heap으로 옮김으로써 함수 호출이 반환된 이후에도 함수에서 선언된 지역 변수가 오래 유지 됨을 발견 객체지향 프로그래밍은 제어흐름의 간접적인 전환에 대해 규칙을 부과함 힘수형 프로그래밍 알론조 처치라는 사람이 수학적 문제를 발견하는 과정에서 람다 계산법을 발명함 람다 계산법의 기초가 되는 개념은 ‘불변성’으로 심볼 값이 변경되지 않는다는 개념 함수형 프로그래밍은 할당문에 대해 규칙을 부과한다. 결론 패러다임의 역사로부터 얻는 교훈은 아키텍처와 모두 관련이 ..

    2장 - 두 가지 가치에 대한 이야기

    개발자가 가지는 책임 행위와 구조를 높게 유지하여야함 소프트웨어라는 단어는 개발자가 프로그램을 요구사항에 맞춰 변경을 쉽게 할 수 있도록 하는 것을 말함. 프로그램이 변경에 취약하면 변경하는데 비용이 많이 든다. 변경을 하면 할수록 변경이 어려워지는데 이는 시스템 아키텍처에 문제가 있을 확률이 높다. (시스템의 형태와 요구사항이 맞지 않음) 더 높은 가치 기능 vs 아키텍처 (나는 아키텍처가 더 높다고 생각) 업무관리자들은 소프트웨어 시스템이 동작하는 것이 중요하다고 하다. 그렇지만 이는 잘못된 태도다 완벽하게 동작하지만 수정이 불가능한 프로그램은 지금 당장은 쓸모가 있어도 요구사항이 생기면 쓸모가 없어지게 된다. 반면에 동작은 되지 않지만 변경이 쉬운 프로그램을 준다면 프로그램이 돌아가게만 만들면 되고..

    1장 - 설계와 아키텍처란?

    설계와 아키텍처 차이 아무런 차이가 없다 좋은 설계와 나쁜 설계 좋은 설계 : 수명이 다할 때 까지 낮게 유지 나쁜 설계 : 기능을 만들 때마다 비용이 증가 좋은 설계가 되지 못한다면 아무리 많은 개발자들이 투입이 되어도 스파게티 코드들만 양산될 뿐이고, 나쁜 설계 이기 때문에 기능의 수정에 많은 시간과 인력을 소모하게 되고 가면 갈수록 되돌아 갈 수 없을 만큼 되어서 차세대를 통해서 문제를 해결하고자 한다. 이러한 것을 없애고자 한다면 처음부터 많은 시간을 투자해서 최대한 타협해서 좋은 설계를 만들고 개발을 시작해야 한다.