반응형

분류 전체보기 54

디미터 법칙 (Law of Demeter)

소프트웨어 개발에서 결합도를 줄이는 것은 유지보수성과 확장성을 높이는 중요한 원칙입니다. 《Pragmatic Programmer》에서는 이를 설명하기 위해 디커플링(Decoupling)과 디미터의법칙(Law of Demeter, LoD)을 강조합니다. 이번 글에서는 디미터의 법칙이 왜 중요한지, 그리고 이를 지키지 않으면 어떤 문제가 발생하는지 실제 코드와 함께 살펴보겠습니다.디미터의 법칙이란?디미터의 법칙은 객체가 직접 알지 못하는 객체의 메서드를 호출하지 말라는 원칙입니다. 즉, 한 객체의 메서드는 다음 대상에 대해서만 직접적으로 메서드를 호출해야 합니다:자기 자신 (this)메서드의 매개변수로 전달된 객체직접 생성한 객체자기 자신이 소유한 구성 요소 객체이 법칙을 따름으로써 불필요한 결합을 줄이고,..

SW 개발에서 도메인 언어

소프트웨어 개발에서 가장 중요한 요소 중 하나는 도메인 전문가와 개발자 간의 원활한 커뮤니케이션입니다. 이를 위해 도메인 언어(Domain Language)를 활용하면 복잡한 개념을 보다 직관적으로 표현할 수 있습니다. 본 글에서는 도메인 언어의 개념과 그 활용 방법에 대해 살펴보겠습니다.도메인 언어란?도메인 언어는 특정 도메인의 문제를 해결하기 위해 설계된 특수 목적의 언어입니다. 이는 개발자가 비즈니스 로직을 보다 쉽게 표현하고, 유지보수를 간편하게 하며, 비개발자도 이해할 수 있도록 돕는 역할을 합니다.도메인 언어는 크게 두 가지 유형으로 나뉩니다:도메인 특정 언어(Domain-Specific Language, DSL): 특정 도메인에서만 활용되는 맞춤형 언어로, SQL, Regular Expres..

SW 개발 일반 2025.03.13

소프트웨어 개발의 핵심 원칙: 직교성(Orthogonality)

소프트웨어 개발에서의 ‘직교성(Orthogonality)’은 모듈 간의 독립성을 유지하는 중요한 설계 원칙입니다. 이는 시스템을 더욱 유연하고 유지보수하기 쉽게 만들며, 개발 속도를 높이는 효과를 가져옵니다. 이번 글에서는 직교성의 개념, 장점, 그리고 이를 소프트웨어 개발에 적용하는 방법을 살펴보겠습니다.직교성이란 무엇인가?직교성(Orthogonality)은 두 개의 요소가 서로 독립적으로 작용하는 성질을 의미합니다. 예를 들어, 자동차에서 가속 페달과 핸들은 서로 직교적인 요소입니다. 가속 페달을 밟는 것이 핸들의 조향에 영향을 미치지 않으며, 핸들을 돌린다고 해서 속도가 변화하지 않습니다. 이와 같은 원리를 소프트웨어 개발에 적용하면, 모듈 간의 의존성을 최소화하여 한 부분의 변경이 다른 부분에 영..

SW 개발 일반 2025.03.11

엔지니어 첫 걸음: 크런치랩스(CrunchLabs) 빌드 박스

아들은 만드는 걸 좋아한다. 그래서 마크 로버를 무척 좋아한다. 나도 만드는 걸 좋아하지만, 주로 머릿속에서만 만든다. 소위 말하는 ‘입 코딩’, ‘상상 코딩’을 즐기는 타입이다. 언젠가 아들과 함께 실제로 코딩하는 날이 오길 바라는 불순한 마음으로 25년 1월달에 빌드 박스를 결제했다.빌드 박스를 시작으로 해커 박스까지 자연스럽게 이어가며, 아들에게 슬쩍 코딩을 가르쳐 주는 것이 내 작은 꿈이다. 직업 개발자가 되지 않더라도, 파이썬과 AI의 도움을 받아 원하는 것을 뚝딱 만들어낼 수 있는 능력은 앞으로 더욱 가치 있을 것이라 생각하기 때문이다. 코딩은 필수가 될 것이다.매달 새로운 박스가 도착하면, 아들은 신나게 조립하고 나서 자랑하러 온다. 요즘 환율이 치솟아 부담스럽긴 하지만, 아들이 즐거워하는 ..

남자 아이와 게임 하기

드디어 아들이 게임을 할 나이가 됐습니다. 최대한 먼 미래에 도래하길 기대했지만... 제 어린 시절을 떠올리니 불 가능한 기대였습니다. 게임을 달고 살았는데 아들에게 그러지 않기를 기대하는 건 자기모순이죠 ㅎㅎ 그래서 게임을 한다면 어떻게 하는 것이 그래도 좋은지 한 번 정리를 하면 좋을 것 같아 써봅니다.아이의 게임 사용 패턴 이해하기(1) 게임을 통한 사회적 관계 형성남자 아이들에게 게임은 단순한 놀이를 넘어 사회적 상호작용의 도구가 됩니다. 친구들과 팀을 이뤄 플레이하고, 전략을 세우며 협력하는 과정에서 팀워크와 의사소통 능력을 배울 수 있습니다. 실제로 초등학생을 대상으로 한 연구에서는 공동 게임 경험이 친구 관계 형성에 긍정적인 영향을 미친다는 결과가 나왔습니다.(2) 과몰입의 위험성반면, 게임..

2025년 3월, 4월 한국 벚꽃 개화시기 및 지역 별 개화 예상 지도

갤럭시 S25로 기기 변경을 하면서 얻은 해택 중 가장 마음에 부분 중 하나는 Gemini를 25년 9월까지 무료로 사용할 수 있는 것입니다. 심심해서 벚꽃 개화 시기를 조사해달라고 했는데 정말 알아서 리포트를 만들어 줍니다. 진짜인지 아닌지는 파악해 보지 않았지만 딥리서치 기능 자체가 외부 지식을 검색과 사유(Reasoning) 과정을 거치니 참고 자료 정도로 생각하면 되지 않을까 합니다. > Gemini는 웹사이트 39개를 조사하고 리포트를 작성했습니다.더보기보고서를 조사하는 동안 Gemini는 사용자 대신 웹을 검색하고 관련 웹사이트의 콘텐츠를 둘러봅니다. 2024 전국 벚꽃 개화 시기 및 추천 명소 - 보그 코리아 (Vogue Korea) vogue.co.kr/2024/03/15/2024-%EC%..

AI 2025.03.09

삶은 문제해결의 연속이다: SW에서의 시행 착오

과학은 문제에서 시작하며, 문제를 해결하기 위해 시행착오라는 방법을 선택합니다. 20세기 가장 위대한 철학자로 꼽히는 칼 포퍼는 모든 생물이 문제를 해결하기 위해 같은 패턴으로 움직인다고 이야기합니다. 이 글에서는 칼 포퍼의 3단계 모델을 통해 시행착오의 과정을 살펴보고, 아메바와 아인슈타인의 사례를 통해 시행착오가 갖는 의미를 살펴보고, 더 나아가, 소프트웨어 개발 분야에서 시행착오가 어떻게 적용될 수 있는지, 그리고 테스트 코드를 기반으로 코딩하는 것이 왜 효과적인 방법인지 SW 개발자의 관점에서 살짝 말해보려고 합니다.칼 포퍼의 시행착오 3단계 모델칼 포퍼는 시행착오를 통한 학습 과정을 3단계 모델로 정리했습니다.문제: 기대와 다른 결과가 나타나거나, 기존의 해결 방식이 더 이상 작동하지 않을 때 ..

SW 개발 일반 2025.03.09

빈약한 객체 (Anemic Object)

소프트웨어 개발에서 객체는 데이터를 단순히 보관하는 역할이 아니라, 의미 있는 행동을 수행하는 주체가 되어야 합니다. 하지만 많은 코드베이스에서 여전히 속성(getters/setters)만을 노출하는 빈약한 객체(Anemic Object)를 발견할 수 있습니다. 이러한 객체는 절차적 코드 스타일을 유발하고 유지보수를 어렵게 만듭니다. 이번 글에서는 빈약한 객체를 풍부한 객체(Rich Object)로 변환하는 방법을 소개합니다.빈약한 객체의 문제점빈약한 객체는 보통 다음과 같은 특징을 가집니다:데이터만 포함하고 행동이 없음: 속성 값을 설정하고 가져오는 기능만 제공합니다.절차적 코드 유발: 비즈니스 로직이 객체 외부에 존재하면서 코드의 응집도가 떨어집니다.변경에 취약: 객체가 단순한 데이터 보관소로 작동하..

소프트웨어 엔트로피 (Software Entropy)

1. 소프트웨어 엔트로피란?소프트웨어 엔트로피(Software Entropy)는 시간이 지남에 따라 소프트웨어 시스템이 점점 더 복잡해지고 유지보수가 어려워지는 현상을 의미합니다. 이는 소프트웨어가 방치될 경우 무질서해지고 붕괴할 가능성이 높아진다는 점을 강조합니다. 《실용주의 프로그래머(The Pragmatic Programmer)》에서 소개된 깨진 창(Broken Windows) 이론과 밀접한 관련이 있습니다. 즉, 하나의 작은 문제가 해결되지 않고 방치되면 점점 더 많은 문제가 발생하고, 결국 시스템 전체가 무너질 수 있습니다. 2. 소프트웨어 엔트로피의 원인1) 일관성 없는 코드와 나쁜 설계프로젝트가 진행될수록 코드의 일관성이 깨지고 유지보수가 어려워질 수 있습니다.빠른 기능 추가에 집중하면서 설..

애자일과 AI 도입의 유사점

회사에서 애자일(Agile) 방법론을 도입할 때 범했던 가장 큰 실수 중 하나는 조직 전체가 아닌, 특정 팀(주로 SW 개발팀)에만 적용했던 것이다. 애자일을 통해 빠른 피드백과 유연한 개발 프로세스를 구현하고자 하지만, 정작 기존의 회사 시스템은 그대로 유지한 채 SW 개발팀만 애자일을 따르게 한다. 문제는, 애자일이 단순한 개발 방식이 아니라 조직 문화와 프로세스 전반을 바꿔야 효과를 볼 수 있는 철학이라는 점이다. 조직 전체가 이를 받아들일 준비가 되어 있지 않다면, 애자일을 적용해도 큰 효과를 보기 어렵다. 이와 유사한 문제가 AI 도입에서도 반복되고 있다. AI는 단순한 기술 도입이 아니라, 기업의 업무 방식과 의사 결정 구조 전반에 걸쳐 영향을 미치는 변화다. 하지만 AI 도입을 임원들의 단편..

SW 개발 일반 2025.03.06
반응형