31장 웹은 세부사항이다. UI와 애플리케이션 사이에는 추상화 가능한 또 다른 경계가 존재해야 한다. 애플리케이션의 업무 로직은 다수의 유스케이스로 구성되며, 각 유스케이스는 사용자를 대신해서 일부 함수를 수행하는 것으로 볼 수 있다. 각 유스케이스는 입력 데이터, 수행할 처리 과정, 출력 데이터를 기반으로 기술할 수 있고, 웹은 이와는 독립적으로 실행할 수 있도록 해야 한다. 32장 프레임워크는 세부사항이다. 프레임워크와 결합해서는 안된다. 결합도가 높아진다면 변경이 쉽지 않다. 적당한 거리를 두자. 프레임워크는 아키텍처의 바깥쪽 원에 속하는 세부사항으로 취급하자. 프레임워크가 아키텍처의 안쪽 원으로 들어오지 못하게 하라. 선택적으로 사용하자. 예를 들어 JAVA 스프링을 사용할 때에 @Autowire..
STEP 1 마지막 커밋에 수정할 사항들을 git add 하기 STEP 2 [option 1] git commit --amend : 커밋 메시지를 수정을 위한 에디터가 켜진다. 커밋 메시지 수정이 필요한 경우 파일을 수정하고, 아니면 에디터 창을 닫으면 된다. [option 2] git commit -m "memo" --amend : -m 옵션을 주는 경우 마지막 커밋 메세지가 쌍 따옴표 안의 문장으로 대체된다. STEP 3 : remote 브랜치로 force push 하기 [option 1] git push origin [branch-name] -f [option 2] git push origin +[branch-name] 예제 [ option 1 ] [ option 2 ]
30장 데이터베이스는 세부사항이다 소프트웨어 시스템 아키텍처 : 데이터베이스 = 건물 아키텍처 : 문 손잡이 소프트웨어 시스템의 아키텍처와 데이터베이스의 관계는 건물 아키텍처와 문 손잡이 정도이다. 아키텍처 관점에서 데이터베이스는 엔티티가 아닌 세부사항이며, 데이터에 접근할 방법을 제공하는 유틸리티(=소프트웨어) 일 뿐인 것이다. (엔티티 : 애플리케이션의 핵심적인 Business Rule을 담고 있는 객체로서 메서드/데이터 구조/함수 집합일 수 있다) 관계형 데이터베이스 디스크에서 1바이트 읽기 위해서는 Heads를 적절한 Track으로 옮기고 Sector가 돌아올 때 까지 기다린 후, 해당 섹터에서 4K를 모두 RAM으로 읽어 들여야 한다. 그리고 RAM 버퍼의 색인을 찾아서 필요한 바이트를 가져온다..