
Goal 오픈소스를 사용해서 개발하는 방법에 대해 설명할 수 있다. 오픈소스 라이센스를 구분할 수 있다. 오픈소스 소프트웨어 배포에 대해 설명할 수 있다. 코드 공개 프로세스에 대해 설명할 수 있다. GPL License 사용시 주의할 점에 대해 설명할 수 있다. Software(SW) 라이선스와 저작권 오픈소스 사용자는 오픈소스 라이선스 대여 규칙(의무)를 준수해야합니다. SW는 지적재산권에 의해 보호 받고 있는데, 원칙적으로 저작권자만이 해당 SW에 대한 독점 사용 권리를 가집니다. 라이선스(License)는 독점 사용 권리에 대해 대여 규칙을 정의해놓은 허가권(License) 입니다. 대여 규칙에는 저작권자(SW 개발자)와 사용자간의 이용방법 및 조건의 범위를 명시하고, 대여 방법은 유로 및 무료로..

Introduction 이번 장에서는 도메인 주도 설계(Domain Driven Design)에 대해서 알아보겠습니다. 이것이 왜 중요한지는 Domain Driven Design의 저자 Eric Evans의 말로 충분할 것 같습니다. Eric Evans, Domain-Driven Design 개발자들이 도메인에 대한 통찰을 얻기 위해 적용할 수 있는 체계적인 사고 방법이 존재한다. 무질서하게 뻗어 나가는 소프트웨어 애플리케이션에 질서를 부여할 수 있는 설계 기법 역시 존재한다. 이런 기술을 연마한다면 익숙하지 않은 도메인을 접하게 될 경우에도 더 가치 있는 개발자로 발전할 수 있게 될 것이다. Domain 도메인 주도 설계에 대해 알기 위해서는 먼저 도메인에 대해서 알아야합니다. 도메인의 사전적 의미는 ..
써드 파티(3rd party)란? 간혹 써드 파티라는 말을 종종 볼 수 있다. 경제 용어가 IT에서 쓰이는 부분이다. 3rd party 하드웨어 생산자와 소프트웨어 개발자의 관계를 나타낼 때 사용한다. 그 중에서 서드파티는, 프로그래밍을 도와주는 라이브러리를 만드는 외부 생산자를 뜻한다. ex) 게임제조사와 소비자를 연결해주는 게임회사(퍼플리싱) 스마일게이트와 같은 회사 개발자 측면으로 보면? 하드웨어 생산자가 '직접' 소프트웨어를 개발하는 경우 : 퍼스트 파티 개발자 하드웨어 생산자인 기업과 자사간의 관계(또는 하청업체)에 속한 소프트웨어 개발자 : 세컨드 파티 개발자 아무 관련없는 제3자 소프트웨어 개발자 : 서드 파티 개발자 주로 편한 개발을 위해 플러그인이나 라이브러리 혹은 프레임워크를 사용하는데..
데브옵스(DevOps) Development + Operations의 합성어 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화를 의미한다. 목적 : 소프트웨어 제품과 서비스를 빠른 시간에 개발 및 배포하는 것 결국, 소프트웨어 제품이나 서비스를 알맞은 시기에 출시하기 위해 개발과 운영이 상호 의존적으로 대응해야 한다는 의미로 많이 사용하고 있다. 데브옵스의 개념은 애자일 기법과 지속적 통합의 개념과도 관련이 있다. 애자일 기법 실질적인 코딩을 기반으로 일정한 주기에 따라 지속적으로 프로토타입을 형성하고, 필요한 요구사항을 파악하며 이에 따라 즉시 수정사항을 적용하여 결과적으로 하나의 큰 소프트웨어를 개발하는 적응형 개발 방법 지속적 통합 통합 작업을 초기부터 계..

애자일(Agile) 소프트웨어 개발 기법으로 많이 들어본 단어다. 특히 소프트웨어 공학 수업을 들을 때 분명 배웠다. (근데 기억이 안남..) 폭포수 모델, 애자일 기법 등등.. 무엇인지 알아보자 등장배경 초기 소프트웨어 개발 방법은 계획 중심의 프로세스였다. 마치 도시 계획으로 건축에서 사용하는 방법과 유사하며, 당시에는 이런 프로세스를 활용하는 프로젝트가 대부분이었다. 하지만 지금은? 90년대 이후, 소프트웨어 분야가 넓어지면서 소프트웨어 사용자들이 '일반 대중들'로 바뀌지 시작했다. 이제 모든 사람들이 소프트웨어 사용자들의 대상으로 되면서 트렌드가 급격하게 빨리 변화하는 시대가 도달했다. 이로써 비즈니스 사이클(제품 수명)이 짧아졌고, SW 개발의 불확실성이 높아지게 되었다. 새로운 개발 방법 등장..

함수형 프로그래밍 순수 함수를 조합하고 공유 상태, 변경 가능한 데이터 및 부작용을 피해 소프트웨어를 만드는 프로세스 '선언형' 프로그래밍으로, 애플리케이션의 상태는 순수 함수를 통해 전달된다. 애플리케이션의 상태가 일반적으로 공유되고 객체의 메서드와 함께 배치되는 OOP와는 대조되는 프로그래밍 방식 명령형 프로그래밍(절차지향, 객체지향) 상태와 상태를 변경시키는 관점에서 연산을 설명하는 방식 알고리즘을 명시하고, 목표는 명시하지 않음 선언형 프로그래밍 How보다는 What을 설명하는 방식 (어떻게보단 무엇을) 알고리즘을 명시하지 않고 목표만 명시함 명령형 프로그래밍은 어떻게 할지 표현하고, 선언형 프로그래밍은 무엇을 할 건지 표현한다. 함수형 코드는 명령형 프로그래밍이나 OOP 코드보다 더 간결하고 예..
보통 OOP라고 많이 부른다. 객체지향은 수 없이 많이 들어왔지만, 이게 뭔지 설명해달라고 하면 어디서부터 해야할 지 막막해진다.. 개념을 잡아보자 객체지향 패러다임이 나오기 이전의 패러다임들부터 간단하게 살펴보자. 패러다임의 발전 과정을 보면 점점 개발자들이 편하게 개발할 수 있도록 개선되는 방식으로 나아가고 있는 걸 확인할 수 있다. 가장 먼저 순차적, 비구조적 프로그래밍이 있다. 말 그대로 순차적으로 코딩해나가는 것! 필요한 게 있으면 계속 순서대로 추가해가며 구현하는 방식이다. 직관적일 것처럼 생각되지만, 점점 규모가 커지게 되면 어떻게 될까? 이런 비구조적 프로그래밍에서는 goto문을 활용한다. 만약 이전에 작성했던 코드가 다시 필요하면 그 곳으로 이동하기 위한 것이다. 점점 규모가 커지면 go..
전문가들이 표현한 '클린코드' 한 가지를 제대로 한다. 단순하고 직접적이다. 특정 목적을 달성하는 방법은 하나만 제공한다. 중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기 이 세가지가 비결 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행하는 것 클린코드란? 코드를 작성하는 의도와 목적이 명확하며, 다른 사람이 쉽게 읽을 수 있어야 함 즉, 가독성이 좋아야 한다. 가독성을 높인다는 것은? 다른 사람이 코드를 봐도, 자유롭게 수정이 가능하고 버그를 찾고 변경된 내용이 어떻게 상호작용하는지 이해하는 시간을 최소화 시키는 것... 클린코드를 만들기 위한 규칙이 있다. 1.네이밍(Naming) 변수, 클래스, 메소드에 의도가 분명한 이름을 사용한다. int elapsedTimeInDays; ..
클린코드와 리팩토링은 의미만 보면 비슷하다고 느껴진다. 어떤 차이점이 있을지 생각해보자 클린코드 클린코드란, 가독성이 높은 코드를 말한다. 가독성을 높이려면 다음과 같이 구현해야 한다. 네이밍이 잘 되어야 함 오류가 없어야 함 중복이 없어야 함 의존성을 최대한 줄여야 함 클래스 혹은 메소드가 한가지 일만 처리해야 함 얼마나 코드가 잘 읽히는 지, 코드가 지저분하지 않고 정리된 코드인지를 나타내는 것이 바로 '클린 코드' public int AAA(int a, int b){ return a+b; } public int BBB(int a, int b){ return a-b; } 두 가지 문제점이 있다. public int sum(int a, int b){ return a+b; } public int sub(..

1. UML UML이란 Unified Modeling Language의 약자로 1997년 OMG(Object Management Group)에서 표준으로 채택한 통합모델링언어 입니다. 즉, 모델을 만드는 표준언어인 것입니다. 모델이란 것은 어떤 것을 실제로 만들 때 이렇게 만들면 잘 작동할지 미리 검증해 보는 것이며 실제 물건을 만드는 비용보다 비용이 훨씬 적을 경우에 모델을 만들어 설계를 검사합니다. 소프트웨어에서의 모델은 건축, 항공 등의 모델과는 좀 다른 면이 있습니다. 건물을 짓고, 항공기를 만드는 것과 설계를 그리고 만드는 것은 비용의 엄청난 차이가 있습니다. 하지만 UML 다이어그램을 그리며 모델을 만드는 일은 개발보다 비용이 적긴 하지만 훨씬 적게 드는 것이 아니며 때로는 오히려 개발보다 비..
- Total
- Today
- Yesterday