Back to Posts
2018년 8월 11일
chap01.전제 - 프로그래밍 불변의 진실
**[프로그래밍의 정석]**를 보고 메모한 부분을 정리했습니다.
목차
1.1 프로그래밍에 은제탄환은 없다. 1.2 코드는 설계서다 1.3 코드는 반드시 변경된다.
서론
1.1 프로그래밍에 은제 탄환은 없다. ### *WHY_소프트웨어는 본질적으로 난해하다. 1. 복잡성 2.
동조성 : 실세계와 계속 동조해야한다. 3. 가변성 : 소프트웨어가 사용자의 인식에 영향을 미치며 새로운 요구사항이 생긴다. 4. 비가시성 : 추상화해서 단순한 도면으로 만드는 작업은 가능하나, 이때의 정보가 사상되므로 모든 정보를 표현할 수 없다.
*HOW_역사를 배워 복잡함에 맞선다.
소프트웨어 개발의 역사는 복잡함과 투쟁의 역사.
*소프트웨어의 우유적인 부분을 개선
-
본질 : 어떤 대상에서 그것이 없으면 대상물이라고 할 수 없는 성질
-
비본질(우유) : 부차적이고 부수적이라는 의미로 그것이 없어도 대상물이라고 할 수 있는 성질
-
소프트웨어 개발 현장에서 필요한 기술이라고 알려진 것의 대부분은 우유적인 부분 빌드 환경, 프로그래밍언어, 라이브러리, 프레임워크 등등은 우유적..
-
우유적인 부분의 개선 중에서 큰 성과는 자동화 (테스트, 빌드, 환경 설정 등을 자동화 작업 품질 향상)
-
우유적인 부분을 자동화 본질적인 부분에 시간을 할애하자.
1.2 코드는 설계서다.
*what_코드가 곧 설계서
-
설계
- 상세설계
- 프로그래밍
- 테스트
- 디버깅
-
설계서
- 코드
-
공정(제조)
- 배포
- 컴파일러, 빌드시스템
*how_우수한 설계자(프로그래머)가 필요
설계란 창조적이며 기예가 필요한 행위다. (설계 = 기본설계 + 상세설계 + 프로그래밍 + 테스트 + 디버깅) 신입에게 맡길 첫 업무가 아니라 고도로 숙련된 프로그래머의 업무여야 한다.
*로제타 스톤
장래의 유지보수 담당자에게 필요한 가이드북 : 소프트웨어 개발 환경을 이해하기 위한 정보와 : 소프트웨어 아키텍처를 이해하기 위한 정보가 담겨 있다.
소프트웨어 개발 환경을 이해하기 위한 정보
- 빌드와 테스트 프로세스를 수행하는 방법
- 소프트웨어를 파악할 때 함정에 빠지는 일을 방지해 준다.
소프트웨어 아키텍처
- 전체를 파악하기 위해 필요한 그림
- 코드로부터 파악할 수 없는 코드 전체를 부감(높은 곳에서 내려다봄)해서 본 그림을 기술한다.
1.3 코드는 반드시 변경된다.
- 최초 배포만으로 요구사항을 완전히 망라한 소프트웨어를 만들어 내는 것은 불가능하다.
- 변경에 강한 코드를 작성한다.
Related
2018년 8월 12일