클린 아키텍처(Clean Architecture)38 클린 아키텍처:소프트웨어 구조와 설계의 원칙(Clean Architecture) - 3부 : 설계 원칙 좋은 소프트웨어 시스템은 깔끔한 코드로부터 시작한다. 좋은 벽돌로 좋은 아키텍처를 정의하는 원칙이 필요한데, 그게 바로 SOLID다. SOLID 원칙은 함수와 데이터 구조를 클래스로 배치하는 방법, 그리고 이들 클래스를 서로 결합하는 방법을 설명해준다. 여기에서 클래스는 단순히 함수와 데이터를 결합한 집합을 가리킨다. SOLID 원칙의 목적은 중간 수준의 소프트웨어 구조가 아래와 같도록 만드는 데 있다. -변경에 유연하다. -이해하기 쉽다. -컴포넌트의 기반이 된다. ‘중간 수준’이라 함은 프로그래머가 이들 원칙을 모듈 수준에서 작업할 때 적용할 수 있다는 뜻이다. -SRP:단일 책임 원칙 (Single Responsibility Principle) 각 소프트웨어 모듈은 변경의 이유가 단 하나여야만 한다.. 2020. 2. 29. 클린 아키텍처:소프트웨어 구조와 설계의 원칙(Clean Architecture) - 2부 : 벽돌부터 시작하기: 프로그래밍 패러다임 (6장) [6장] 함수형 프로그래밍 클로저 프로그램에서는 이러한 가변 변수가 전혀 없다. 클로저에서는 x와 같은 변수가 한 번 초기화되면 절대로 변하지 않는다. 함수형 언어에서는 변수는 변경되지 않는다. 아키텍트는 왜 변수의 가변성을 염려하는가? 경합(race) 조건, 교착상태(deadlock) 조건, 동시 업데이트(concurrent update) 문제가 모두 가변 변수로 인해 발생하기 때문이다. 동시성 애플리케이션에서 마주치는 모든 문제, 즉 다수의 스레드와 프로세스를 사용하는 애플리케이션에서 마주치는 모든 문제는 가변 변수가 없다면 절대로 생기지 않는다. 아키텍트라면 동시성(concurrency) 문제에 지대한 관심을 가져야만 한다. 불변성과 관련하여 가장 주요한 타협 중 하나는 가변 컴포넌트와 불변 컴포넌.. 2020. 2. 28. 클린 아키텍처:소프트웨어 구조와 설계의 원칙(Clean Architecture) - 2부 : 벽돌부터 시작하기: 프로그래밍 패러다임 (5장) [5장] 객체 지향 프로그래밍 좋은 아키텍처를 만드는 일은 객체 지향(Object-Oriented,oo) 설계 원칙을 이해하고 응용하는 데서 출발한다. oo란? 데이터와 함수의 조합, 실제 세계를 모델링하는 새로운 방법 OO의 본질을 설명하기 위해 세 가지 주문에 기대는 부류도 있는데, 캡슐화(encapsulation), 상속(inheritance), 다형성(polymorphism)이 바로 그 주문이다. 이들은 oo가 이 세 가지 개념을 적절하게 조합한 것이거나, 또는 oo 언어는 최소한 세 가지 요소를 반드시 지원해야 한다고 말한다. 이를 통해 데이터와 함수가 응집력 있게 구성된 집단을 서로 구분 짓는 선을 그을 수 있다. 구분선 바깥에서 데이터는 은닉되고, 일부 함수만이 외부에 노출된다. 이 개념들이.. 2020. 2. 27. 클린 아키텍처:소프트웨어 구조와 설계의 원칙(Clean Architecture) - 2부 : 벽돌부터 시작하기: 프로그래밍 패러다임 (4장) [4장] 구조적 프로그래밍 데이크스트라는 증명이라는 수학적인 원리를 적용하여 이 문제를 해결하고자 했다. 그의 비전은 공리, 정리, 다름정리, 보조정리로 구성되는 유클리드 계층구조를 만드는 것이었다. 다시 말해 프로그래머는 입증된 구조를 이용하고, 이들 구조를 코드와 결합시키며, 그래서 코드가 올바르다는 사실을 스스로 증명하게 되는 방식이었다. 데이크스트라는 이런 goto문의 ‘좋은’ 사용 방식은 if/then/else와 do/while과 같은 분기와 반복이라는 단순한 제어 구조에 해당한다는 사실을 발견했다. 모듈이 이러한 종류의 제어 구조만을 사용한다면 증명 가능한 단위로까지 모듈을 재귀적으로 세분화하는 것이 가능해 보였다. 모든 프로그램을 순차(sequence), 분기(selection), 반복(it.. 2020. 2. 26. 클린 아키텍처:소프트웨어 구조와 설계의 원칙(Clean Architecture) - 2부 : 벽돌부터 시작하기: 프로그래밍 패러다임 (3장) 패러다임이란 프로그래밍을 하는 방법으로, 대체로 언어에는 독립적이다. 패러다임은 어떤 프로그래밍 구조를 사용할지, 그리고 언제 이 구조를 사용해야 하는지를 결정한다. [3장] 패러다임 개요 구조적 프로그래밍(structured programming) 객체지향 프로그래밍(object-oriented programming) 함수형 프로그래밍(functional programming) if/tehn/else와 do/while/until과 같은 구조로 goto 점프들을 대체했다. 구조적 프로그래밍은 제어흐름의 직접적인 전환에 대해 규칙을 부과한다. 알골 언어의 함수 호출 스택 프레임을 힙으로 옮기면, 함수 호출이 반환된 이후에도 함수에서 선언된 지역 변수가 오랫동안 유지될 수 있음을 발견했다. 바로 이러한 함수.. 2020. 2. 25. 클린 아키텍처:소프트웨어 구조와 설계의 원칙(Clean Architecture) - 1부 : 소개 (2장) [2장] 두 가지 가치에 대한 이야기 행위(behavior)와 구조(structure). 소프트웨어 개발자는 두 가지를 모두 반드시 높게 유지해야 하는 책임을 진다. 소프트웨어의 첫 번 째 가치는 바로 행위다. 프로그래머는 이해관계자가 기능 명세서나 요구사항 문서를 구체화할 수 있도록 돕는다. 그리고 이해관계자의 기계가 이러한 요구사항을 만족하도록 코드를 작성한다. 기계가 이러한 요구사항을 위반하면, 프로그래머는 디버거를 열고 문제를 고친다. 많은 프로그래머가 이러한 활동이 자신이 해야 할 일의 전부라고 생각한다. 슬픈 일이지만 그들은 틀렸다. 소프트웨어는 '부드러움을 지니도록' 만들어졌다. 소프트웨어를 만든 이유는 기계의 행위를 쉽게 변경할 수 있도록 하기 위해서다. 소프트웨어가 가진 본연의 목적을 추.. 2020. 2. 24. 이전 1 ··· 3 4 5 6 7 다음