본문 바로가기

Dev.

(341)
[개발상식] 22. 테스트 주도 개발에 대하여 - TDD와 BDD 그리고 DDD TDD Test-Driven Development(TDD)는 매우 짧은 개발 서클의 반복에 의존하는 소프트웨어 개발 프로세스이다. 우선 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 케스트를 통과하는 가장 짧고 가독성이 좋고 유지보수성이 뛰어난 코드를 작성한다. 일단 테스트 통과하는 코드를 작성하고 상황에 맞게 리팩토링하는 과정을 거치는 것이다. 말 그대로 테스트가 코드 작성을 주도하는 개발방식인 것이다. Add a test 테스트 주도형 개발에선, 새로운 기능을 추가하기 전 테스트를 먼저 작성한다. 테스트를 작성하기 위해서, 개발자는 해당 기능의 요구사항과 명세를 분명히 이해하고 있어야 한다. 이는 사용자 케이스와 사용자 스토리 등으로 이해할 수 있으며, 이는 개발자가 코드..
#SLiPP Spring Boot, JPA 강의 - 반복주기 2 이 포스팅은 다음 강의를 바탕으로 작성되었습니다.>> SLiPP 자바 웹 애플리케이션 개발 >>반복주기2 학습내용 동적인 HTML 웹 페이지 개발할 수 있다. Spring MVC의 Model, View, Controller 에 대한 이해를 한다. + 강의 상 약간의 오타! form.html에서 E-mail을 입력받을 수 있는 input 태그를 추가하면서 로 해줘야 한다! 지난 번 강의와 html이 약간 차이가 난다. 이러한 부분이 신경쓰인다면 강의 github에 가서 clone 으로 내려받은 다음 이번 반복주기를 들어가자. 강의들을 때는 몰랐는데, 혼자 복습 과정 중 '삽질'했던 부분강의를 들을 때는 ‘음, 당연하지, 그렇지.' 하면서 쉽다고 느껴졌던 부분이 혼자 새하얀 에디터에서 부터 시작하려니 막막한..
[개발] 스위프트로 시작하는 아이폰 앱 개발 교과서 / 모리 요시나오 / 위키북스 스위프트로 시작하는 아이폰 앱 개발 교과서 Intro책을 소개할 때는 일단 필자의 베이스부터 소개하는 것이 맞다고 생각한다. 웹 개발을 공부하다가 iOS 애플리케이션 개발에 관심이 생겨서 공부를 시작했다. iOS 개발의 전통 언어인 Objective-C에 대해서는 어떻게 생겼는지 아는 정도이며, HeadFirst iPhone/iPad 책으로 따라하기 식 iOS 개발 공부를 조금 한 상태였다. 요즘 핫한 Swift 관련 도서를 찾던 도중 가장 최근에 나온 책이며 최신 Swift 문법과 최신 Xcode 버전으로 쓰여진 책이라고 해서 설레는 마음으로 바로 구매를 했다. 그 결과는 참담했다. 초보 입문용이 프로그래밍 초보 입문자라는 뜻이였기 때문이다. 참담했던 이유 1. 너무 기초다.초보 입문용이라고 나와있긴 ..
개발 입문자를 위한 짤막한 안내서 - Hello Coding World 이 글은 Coding의 C자도 모르는 분들을 위한 안내서입니다. 독자적으로 작성한게 아닌, 여러 선배 개발자분들의 글들을 읽어가면서 현재 상황에 맞게 ‘새로고침’도 하고, 제 개인적인 의견도 붙이면서 작성했습니다. 최대한 비 개발적인 언어를 사용하기 위해 노력했으며, 소프트웨어 개발에 대해 조금이라도 알아가게 되는 글이 되었으면 합니다. 0. Intro 1. 어떤 분야가 존재하는가 2. 무엇을 공부해야 하는가 3. 어떻게 공부해야 하는가 #0. Intro 막연하게 '난 소프트웨어 개발을 해야지' 하고 시작하는 사람은 없을 것이라고 생각한다. 스마트폰 보급이 대중화되면서 자주 사용하는 모바일 앱을 보고, 앱을 만들고 싶어져서 개발을 하고 싶을 수도 있고, 나만의 웹 사이트를 만들고 싶거나 커뮤니티를 기반으..
#SLiPP Spring Boot, JPA 강의 - 반복주기 1 이 포스팅은 다음 강의를 바탕으로 작성되었습니다.>> SLiPP 자바 웹 애플리케이션 개발 >> 반복주기 1Spring boot에 대해서초기 스프링은 구성에 필요한 XML 코드가 많았다. 이를 극복하기 위한 수 많은 노력들이 있었다. 그러나 스프링 고유의 복잡한 구성에서 벗어나지 못했다. 모든 구성 작업은 개발 저항으로 타나난다. 애플리케이션 로직 작성 대신 구성 작업에 쓰는 시간은 모두 낭비다. 스프링 기능 구성에 신경을 쓰게 되면 비즈니스 로직을 설계하는데 방해가 되기 때문이다. 스프링은 많은 일을 대신 처리하지만, 개발자가 해야 할 부분도 함께 늘어나는 것이다. 게다가 어떤 라이브러리를 프로젝트 비륻에 포함해야 하는지 결정하는 일은 까다롭다. 의존성 관리는 중요한 문제지만, 또 다른 저항이 된다. ..
[Objective-C] 6. 블록(block)에 대해서 Chapter 6. 블록(Block)에 대해서애플이 추가한 것으로 표준 ANSI C 정의에는 포함되지 않았다. 블록은 함수와 비슷하게 생겼고 동작도 유사하다. 함수에서처럼 인수를 넘길 수 있고, 블록에서 결과 값을 받는 것도 가능하다. 블록은 함수와 달리 정의한 함수나 메서드 안에서 정의할 수 있고, 자신과 동일한 범위에 있다면, 블록 바깥에서 정의된 변수에도 접근이 가능하다. ( 단, 값의 변경은 불가능 하다. ) 특별한 경우로 __block 변수를 통해서 변수의 값을 수정할 수 있긴 하다. 하지만 일부 변수는 __block으로 선언될 수 없는데, 가변 길이의 배열, 가변 길이의 배열을 포함하는 구조체가 해당된다. 블록은 함수와 메서드에 인수로 넘겨질 수도 있다. 블록의 장점 중 하나는 시스템이 블록을..
[Objective-C] 5. 메모리 관리와 ARC에 대해서 Chapter 5. 메모리 관리와 ARC Objective-C에서 개발자가 사용 가능한 메모리 관리 모델은 세 가지가 존재한다. 1. 자동 가비지 컬렉션 2. 수동 레퍼런스 카운팅 및 오토릴리즈 풀 3. 자동 레퍼런스 카운팅(ARC) 1. 자동 가비지 컬렉션 가비지 컬렉션을 사용하면, 시스템이 자동으로 어떤 객체가 어떤 객체를 소유하는지에 대한 정보를 지속적으로 파악하고, 프로그램이 실행되는 동안 메모리 공간이 필요하면 더는 참조되지 않는 객체들을 자동으로 메모리에서 해제한다. 하지만 iOS 런타임 환경에서는 가비지 컬렉션이 지원되지 않는다. Mac OS 프로그램을 개발할 때만 가비지 컬렉션을 사용할 수 있다. 2. 수동 레퍼런스 카운팅 및 오토릴리즈 풀 수동 레퍼런스 카운팅은 기존의 코드를 ARC로 이..
[Objective-C] 4. Objective-C 동작하는 방식에 대해서 Chapter 4. Objective - C가 동작하는 방식Objective-C의 대표적인 특징은 동적인 언어(dynamic language)라는 것이다. 정적인 언어(static language)들의 경우 컴파일/링크 시점에서 이미 어떤 코드가 어떻게 실행될지 모든것이 결정된다. 하지만 런타임을 지닌 동적인 언어의 경우 이러한 결정을 실제 그 코드가 실행되는 순간까지 미룰 수가 있는 특징을 지닌다. 이러한 특징을 덕분에 실제 코드가 실행중인 런타임 상황에서 Objective-C 런타임에의해 원하는 객체로 메시지를 리다이렉트 한다던지, 메서드 자체를 바꿔치기 한다던지 등의 유연한 동작이 가능해진다. 이 대표적인 특징 때문에 자바스크립트와 유사한 느낌을 많이 받게 된다. 1. 인스턴스 변수는 구조체에 저장..