본문 바로가기

CS Study44

[소프트웨어 아키텍처 101] Ch.2 아키텍처 사고 아키텍트의 사고 방식 아키텍처와 설계의 차이를 이해하고 아키텍처 작업을 진행하려면 개발팀과 어떻게 협력해야 할지 아는 것 어느 정도 기술 깊이를 유지하면서 폭 넓은 기술 지식을 확보하는 것 → 그래서 아키텍트는 다른 사람들이 보지 못하는 해결책과 가능성을 떠올릴 수 있다. 다양한 솔루션과 기술 간의 트레이드오프를 이해하고, 분석하고, 조율하는 것 비즈니스 동인의 중요성을 이해하고 그것을 아키텍처 관심사로 해석할 줄 아는 것 전통적인 아키텍트의 책임과 개발자의 책임 가운데의 단방향 화살표가 아키텍처와 연관된 모든 문제의 원인! 개발팀이 아키텍처를 변경하기로 결정한 내용이 다시 아키텍트에게 전달되는 일은 거의 없다. 아키텍트가 개발팀과 완전히 단절되어있기 때문이다. 그렇기에 두 팀이 양방향으로 소통하는 관계.. 2024. 1. 4.
[소프트웨어 아키텍처 101] Ch.1 서론 소프트웨어 아키텍트의 커리어패스는 분명하지 않다. WHY? 소프트웨어 아키텍트라는 직업 자체에 대한 명확한 정의가 아직 없다. 소프트웨어 아키텍트의 역할은 실로 방대한 분야를 포괄하여 업무 범위도 계속 넓어지고 있다. 소프트웨어 개발 생태계는 워낙 빠르게 발전하는 분야이고 소프트웨어 아키텍처는 끊임없이 변한다. 소프트웨어 아키텍처에 관한 자료는 대부분 역사적인 연관성을 강조한다. p. 27 소프트웨어 아키텍트는 이렇게 끊임없이 변하는 생태계 안에서 뭔가 결정을 내리는 사람들입니다. ...... 즉, 아키텍트가 내린 결정은 대부분 그들이 그렇게 결정한 당시 환경에 기인한 것입니다. p. 28 모든 아키텍처는 그 콘텍스트의 결과물이라는 사실을 기억하세요. 소프트웨어 아키텍처의 구성 아키텍처 특성 : 시스템의.. 2024. 1. 4.
[스터디] IoC : 제어의 역전 저번 스터디에서 DI에 대해 발표했었다. 그것과 연결하여 이번에는 IoC에 대해 알아보았다. [스터디] 의존관계 주입(DI : Dependency Injection) 최근 김영한님의 Spring 핵심 원리 - 기본편 강의를 듣고 있는데 DI라는 단어가 자주 나왔다. 도대체 DI가 정확히 뭘까? 이번 기회에 한 번 알아보겠다. 의존관계란? "A가 B를 의존한다."라는 표현은 newbie-in-softengineering.tistory.com 제어의 역전 (Inversion of Control, IoC) 직장에 차를 몰고 가는 것은 내가 차를 제어하는 것이다. 직접 차를 운전하는 대신 운전 기사를 고용한다면? 이것을 제어의 역전이라고 한다.차를 직접 운전할 필요가 없고 운전자가 운전하게 함으로써 나는 본업에.. 2023. 12. 22.
[스터디] 정적 팩토리 메서드(Static Factory Method) 정적 팩토리 메서드란? 정적(Static), 팩토리(Factory), 메서드(Method) 이 중 팩토리는 GoF 디자인 패턴 중 팩토리 패턴에서 유래한 것으로 객체를 생성하는 역할을 분리하겠다는 의미가 담겨있다. 다시 말해, 정적 팩토리 메서드란 객체 생성의 역할을 하는 클래스 메서드라는 의미로 요약할 수 있다. java.time 패키지 내의 LocalTime 클래스의 정적 팩토리 메서드를 같이 살펴보자. // LocalTime.class ... public static LocalTime of(int hour, int minute) { ChronoField.HOUR_OF_DAY.checkValidValue((long)hour); if (minute == 0) { return HOURS[hour]; } .. 2023. 12. 8.
[스터디] 의존관계 주입(DI : Dependency Injection) 최근 김영한님의 Spring 핵심 원리 - 기본편 강의를 듣고 있는데 DI라는 단어가 자주 나왔다. 도대체 DI가 정확히 뭘까? 이번 기회에 한 번 알아보겠다. 의존관계란? "A가 B를 의존한다."라는 표현은 어떤 의미일까? 의존대상B가 변하면, 그것이 A에 영향을 미친다. - 이일민, 토비의 스프링 3.1, 에이콘(2012), p.113 즉, B의 기능이 추가 또는 변경되거나 형식이 바뀌면 그 영향이 A에 미친다는 뜻이다. 예시를 한 번 살펴보자. "햄버거 가게 요리사는 햄버거 레시피에 의존한다." 햄버거 레시피가 변경된다면, 변경된 레시피에 따라서 요리사는 햄버거를 만드는 방법을 수정해야 한다. 레시피의 변화가 요리사에게 영향을 미쳤기 때문에 "요리사는 레시피에 의존한다."고 말할 수 있다. clas.. 2023. 12. 8.
[스터디] getter, setter 그래서 왜 쓰면 안 되는건데?🤔 // 이 글에서의 getter 메서드는 필드의 참조값을 그대로 넘기는 getXXX 형태의 public 메서드를 뜻함 public class TodoList { private final List todos = new LinkedList(); public List getTodos() { return todos; } } 우테코 프리코스를 진행하며 정말 많이 들었던 'getter 사용 지양'. setter는 왜 쓰지 말라는 건지 대충 알겠지만... getter는 도대체 왜? 무엇이 문제일까? 잠깐 애초에 getter는 왜 쓰는거지? 그냥 필드 자체의 접근자를 public으로 하면 되잖아?? 당연히 위와 같이 접근자를 public으로 해버리면 정보 은닉이고 캡슐화고 아무것도 지켜지지 않겠죠. 어떤 객체의 필드들이.. 2023. 11. 23.