본문 바로가기

전체 글196

2장. 두 가지 가치에 대한 이야기 모든 소프트웨어 시스템은 클라이언트에게 행위와 구조의 두 가지 가치를 제공한다. 개발자는 두 가치를 모두 반드시 높게 유지해야 하는 책임을 진다. 행위 소프트웨어의 첫 번째 가치는 행위(기능)이다. 개발자라면, 클라이언트의 요구사항을 만족하는 코드를 작성해야한다. 만일 코드가 원하는대로 작동하지 않는다면, 프로그래머는 디버깅을 해야한다. 행위는 분명 중요한 가치이다. 그러나, 많은 프로그래머들이 요구사항을 구현하고 디버깅하는데 지나치게 매몰되곤 한다. 아키텍처 소프트웨어의 두 번째 가치는 구조(아키텍처)다. 소프트웨어라는 단어는 'soft'(부드러운) 와 'ware'(제품)이라는 단어의 합성어다. 다시 말해, 소프트웨어는 근본적으로 부드러워야한다. 소프트웨어를 만든 이유는 기계의 행위를 쉽게 변경할 수 .. 2023. 10. 11.
2장. 의미 있는 이름 들어가면서 소프트웨어의 모든 구성요소는 이름을 가지고 있다. 클래스, 메서드, 변수, 인자, 패키지, 파일 이름 등 모든 것들이 이름을 지니고 있다. 즉, 코드의 어느 부분을 읽어도 이름을 읽을 수 있다. 그렇다면, 좋은 이름을 짓는다면 코드를 읽는 행위 자체가 편리해지지 않을까? 좋은 이름을 짓는 것은 그래서 중요하다. 그릇된 정보를 피하라 이름에는 그릇된 정보가 담기면 안 된다. 이름은 그 이름에 담긴 코드들을 대표하는 정보다. 초등학생들이 다니는 학교 이름이 ㅇㅇ 고등학교이면, 당연히 혼란이 오기 마련이다. 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하면 안 된다. 읽는 사람이 단어의 의미가 자기가 알고 있는 의미인지, 새로운 의미인지 헷갈린다. 서로 흡사한 이름을 사용하지 말자. 비슷한 이름.. 2023. 10. 7.
1장. 설계와 아키텍처란? 설계와 아키텍처 결론부터 말하자면, 설계와 아키텍처는 같다. 둘의 차이는 없다. 흔히 '아키텍처'는 고수준의 무언가를 가리킬 때, '설계'는 저수준의 구조 또는 결정사항 등을 의미할 때가 많다. 하지만, 이러한 구분은 실제로는 무의미하다. 하나의 아키텍트에서는 모든 고수준의 결정사항을 지탱하는 모든 세부사항을 자세하게 확인할 수 있다. 소프트웨어 설계도 마찬가지다. 저수준의 세부사항과 고수준의 구조는 모두 소프트웨어 전체 설계의 구성요소다. 이들은 개별로는 존재할 수 없고, 실제로 이 둘을 구분 짓는 경계도 뚜렷하지 않다. 고수준에서 저수준으로 향하는 의사결정의 연속성만이 있을 뿐이다. 목표는? 소프트웨어 아키텍처의 목표는 필요한 시스템을 만들고 유지보수하는 데 투입되는 인력을 최소화하는 데 있다. 잘못.. 2023. 10. 5.
0장. 들어가며 소프트웨어 아키텍처의 규칙이란 프로그램의 구성요소를 정렬하고 조립하는 방법에 관한 규칙이다. 그리고 이 구성요소가 보편적이며 변하지 않았으므로, 이들을 정렬하는 규칙 역시도 보편적이며 변한 것이 없다. 그리고 이 책은 바로 이 규칙, 세월이 흘러도 변치 않는 그 규칙에 관한 것이다. 해당 카테고리는 로버트 마틴의 서적인 클린 아키텍처를 읽고 학습한 바를 정리하고자 만든 카테고리입니다. 클린 아키텍처 서적을 공부하는 이유는 다음과 같습니다. 잘 설계된 아키텍처는 좋은 코드를 만들어냅니다. 개발 입문자들이 흔히 하는 착각은 '코드를 잘 짜면 아키텍처는 따라온다' 입니다. 그러나 이는 잘못된 생각입니다. 일단 좋은 아키텍처가 기반이 되어야 좋은 코드, 다시 말해 유지보수하기 좋고 변화와 확장에 용이한 코드를 .. 2023. 10. 5.
Pull Request 002 - 기술 스택 정리 - Build Tool Gradle Maven의 pom.xml과 비교하여 build.gradle의 가독성이 더욱 좋음 Maven보다 빌드 속도가 빠름 Gradle | Gradle vs Maven Comparison High-level performance and feature comparison between Gradle and Maven gradle.org - Language & Framework JAVA & Spring Boot JAVA는 Javascript나 python보다 강력한 규약과 정책을 바탕으로 프로그래밍 언어 자체로서 견고함을 지니고 있음. Node.js나 Django이 Spring에 비해 지닌 가장 큰 장점은 프로그래밍 언어에 대한 접근이 쉽다는 점임, 그러나 필자는 이미 JAVA언어에.. 2023. 10. 3.
Pull Request 001 - 요구 사항 분석 [요구 사항은 언제든 추가, 삭제 및 수정 될 수 있습니다.] 회원 가입이 가능해야 한다. 이메일, 비밀번호, 닉네임, 전화번호, 성별, 나이, 역할(바버 / 고객)은 반드시 입력해야 하며, (역할을 바버로 선택한 경우) 근무 중인 샵을 입력할 수 있어야 한다. 만일 근무 중인 샵이 등록되어 있지 않다면, 먼저 회원 가입을 하고 샵을 등록해야 한다. 만일 근무 중인 샵이 없다면, 아무 것도 입력하지 않을 수 있어야 한다. 네이버 이메일 인증 API를 이용하여 이메일 인증을 진행해야 한다. 로그인이 가능해야 한다. 이메일, 비밀번호를 입력해야 한다. OAuth 로그인이 가능해야 한다. 카카오톡, 구글을 우선 적용한다. 가능하다면 네이버 로그인도 적용한다. 회원 정보 페이지 조회 및 회원 정보 수정, 회원 .. 2023. 9. 21.
반응형