Computer Sceience

    TDD (Test Driven Development) - 테스트 주도 개발

    TDD (Test Driven Development) - 테스트 주도 개발

    1. TDD 는? Test-Driven-Development의 약어로서 소프트웨어를 개발하는 여러 방법론 중 하나 TDD의 핵심은 기존에는 테스트 코드를 먼저 작성하고, 그 후에 실제 코드를 작성하는 것 일반적인 개발 흐름은 코드작성 → 테스트코드 작성의 흐름을 따르지만, TDD는 실제 코드를 작성하기도 전에 테스트 코드부터 작성을 시작한다. 2. TDD의 Red-Green-Blue 3가지 단계 Red : 실제 구현을 하기 전에, 먼저 실패하는 테스트 코드를 작성한다. 그 후 테스트를 실행한다. 실제 코드가 작성되지 않았기에 테스트 코드는 당연히 실패한다. Green : 테스트를 통과하기 위해 가장 간단한 형태로 코드를 작성한다. 그 후 테스트를 실행한다. 테스트는 실제 구현이 되었기에 통과한다. Blu..

    소프트웨어 테스트와 종류

    소프트웨어 테스트와 종류

    1. 소프트웨어 테스트 1-1. 소프트웨어 테스트란? 소프트웨어가 의도한대로 동작하는지를 테스트하는 행위를 의미 옛날에는 소프트웨어가 올바르게 동작하는지를 확인하는 테스트팀이 별도로 존재하며, 개발자는 테스팅 과정에 대해서는 큰 관여를 하지 않았다. 최근에는 개발자가 자동화 할 수 있는 소프트웨어 테스트를 구현하고 실행하는것이 보편화고 있다. 자동화 된 테스트란 사람이 아닌 컴퓨터를 통해서 소프트웨어를 테스트하는 것을 의미한다. 1-2. 소프트웨어를 통한 자동화 된 테스트의 이점 컴퓨터를 통해서 실행하기에 사람이 실행하는 것보다 빠르다. 정해진 스크립트에 따라 일관성있게 동작하기에 사람이 테스트 할 경우 발생할 수 있는 휴먼에러를 기피할 수 있다. 가장 큰 이점은 “피드백을 빠른 주기로 개발 중에 받을 ..

    Design Pattern (MVC & Flux)

    Design Pattern (MVC & Flux)

    1. Design Pattern 소프트웨어를 설계하면서 자주 발생하는 문제에 대한 모범답안 (설계 노하우를 패턴으로 정리) 일부 코드를 해결하기 위한 비교적 작은 범위를 다루는 것들도 존재, 애플리케이션 전체를 설계할 때 사용하는 큰 범위를 다루는 것들도 존재 2. MVC 애플리케이션 전체를 다루기 위한 디자인 패턴들은 통상 여러 작은 범위의 디자인 패턴들을 함께 사용해서 만들어지기에 복합패턴이라고도 부른다. 시간이 흐름에 따라 애플리케이션의 규모는 점점 다양하고 거대해지며 이를 해결하기 위한 여러가지 디자인 패턴들도 많이 나오게 되었다. 그 중 모든 복합 패턴의 근간이라고 부를 수 있는 패턴이 MVC 패턴이다. MVC 패턴은 애플리케이션을 Model, View, Controller 세가지 구성요소로 나..

    의존성 / DIP / 의존성 주입

    의존성 / DIP / 의존성 주입

    1. 의존성 (Dependency) 이란? 의존성이란 특정한 모듈이 동작하기 위해서 다른 모듈을 필요로 하는 것 2. 의존성 역전 원칙(DIP) “유연성이 극대화된 시스템"을 만들기 위한 원칙이다. 이 말은 곧 소스 코드 의존성이 추상에 의존하며 구체에는 의존하지 않는 것을 의미한다. 추상 - 구체적인 구현 방법이 포함되어 있지 않은 형태를 의미 - 쉽게 말하면, 그 내부가 어떻게 구현되어있는지 신경쓰지 않고 그냥 내가 “해줘야 하는 일”과 “결과"만 신경쓸 수 있게 된다는 것 구체 - 실질적으로 해당 동작을 하기 위해서 수행해야 하는 구체적인 일련의 동작과 흐름을 의미 - 구체적인 동작들은 굉장히 빈번하게 변경될 여지가 많다. - 이러한 구체에 애플리케이션이 점점 의존하게 된다면 결국 구체가 변할 때 ..

    횡단 관심사 (Cross-cutting-concerns)

    횡단 관심사 (Cross-cutting-concerns)

    1. 횡단 관심사 (Cross-cutting-concerns) 란? 횡단 관심사의 의미 - 횡단 관심사란 여러 서비스에 걸쳐서 동작해야 하는 코드 - 관심사란 코드가 하고자 하는 목적, 동작을 의미한다고 하면 확장해서 횡단 관심사란 애플리케이션 내 여러 핵심 비지니스 로직들에 걸쳐서 실행되어야 하는 동작들 횡단 관심사의 대표적인 예시 인증 & 인가 로깅 트랜잭션 처리 에러처리 횡단 관심사는 여러 비지니스 로직들에 걸쳐서 실행되어야 하기 때문에 횡단 관심사를 잘 처리하는 것은 애플리케이션의 유지보수에서 중요하다. 만약, 핵심 비지니스 로직과 횡단 관심사가 혼재되어 버리면, 추후 비지니스 로직, 횡단 관심사 모두를 수정하기 힘들어지는 상황이 발생한다. 예를 들어 인증 로직이 핵심 비지니스 로직 안에 혼재된다..

    양방향 바인딩(2 way data-binding)

    양방향 바인딩(2 way data-binding)

    1. 데이터 바인딩(Data-Binding) 이란? 양방향 바인딩을 알아보기전에 먼저 데이터 바인딩이란 '화면에 있는 객체'와 '데이터'를 일치시켜주는 것으로 쉽게 말해 JS 데이터를 HTML 데이터와 같도록 해주는 것이다! 사용자가 입력한 정보를 얻어와 찾아온 데이터를 갱신하는 것이 기본적인 웹 기술의 데이터 바인딩이다. 2. 양방향 바인딩(2 way data-binding) 이란? - 말 그대로 백단과 프론트의 뷰 양쪽 방향으로 데이터 일치가 가능한 것이 양방향 데이터 바인딩입니다. HTML JS 양쪽으로 데이터 갱신이 가능합니다. - 장점 : 코드의 사용면에서 코드량을 크게 줄일 수 있습니다. - 단점 : 변화에 따라 DOM 객체 전체를 랜더링 해주거나 데이터를 바꿔주므로 성능이 감소되는 경우가 있..