Developer, Jiyong Kim

고정 헤더 영역

글 제목

메뉴 레이어

Developer, Jiyong Kim

메뉴 리스트

  • 홈
  • 방명록
  • Categories (29)
    • Development (6)
      • Algorithm (1)
      • Frontend (5)
      • Backend (0)
    • 자격증 (1)
      • SQLD (1)
      • 리눅스마스터 (0)
    • Information Technology (19)
      • Computer Science (14)
      • 기술 트렌드 (2)
      • Articles (1)
      • etc. (2)
    • 일상 (3)
      • 개발자의 일상 (3)

검색 레이어

Developer, Jiyong Kim

검색 영역

컨텐츠 검색

Information Technology/Computer Science

  • [개발 방법론] 폭포수(Waterfall) 방법론 vs 애자일(Agile) 방법론

    2024.05.09 by Developer, Jiyong Kim

  • [개발 기법] TDD(Test-Driven Development, 테스트 주도 개발)

    2024.05.06 by Developer, Jiyong Kim

  • 프레임워크(Framework) vs 라이브러리(Library)

    2024.05.05 by Developer, Jiyong Kim

  • 재귀 함수/재귀적 호출(Recursion Function/Recursion Call)

    2024.05.05 by Developer, Jiyong Kim

  • 객체 지향 프로그래밍(Object-Oriented Programming, OOP)

    2024.05.02 by Developer, Jiyong Kim

  • 코드 리팩토링(Code Refactoring)

    2024.05.01 by Developer, Jiyong Kim

[개발 방법론] 폭포수(Waterfall) 방법론 vs 애자일(Agile) 방법론

개발 방법론은 다양하다. 그 중 가장 흔히 사용하는 폭포수 방법론과 애자일 방법론에 대해 알아보자. 폭포수 방법론은 "탑다운"방식으로, 순차적이고 단계적인 프로세스를 따른다. 요구사항 정의, 설계 및 디자인, 개발 및 구현, 테스트, 배포 및 관리 등의 단계를 차례대로 진행하는 것이다. 주요 특징으로는 (1) 각 단계가 완료되어야 다음 단계로 넘어갈 수 있고, (2) 프로젝트 초기에 요구사항이 명확히 정의되어야 한다. 그러다보니 변경 사항을 수용하기 어렵고 유연성이 부족하다. 폭포수 방법론은 대규모 프로젝트에 적합하며, 예측가능한 결과물을 예측 가능한 시간에 내는 데에 중점을 두는 방법론이다. 애자일 방법론은 점진적인 개발 프로세스를 따른다. 폭포수 방법론을 짧은 주기(스프린트)로 나누어 개발하는 방법이..

Information Technology/Computer Science 2024. 5. 9. 21:31

[개발 기법] TDD(Test-Driven Development, 테스트 주도 개발)

TDD란 Test-Driven Development의 약자로, 테스트 주도 개발을 말한다. 개발을 할 때, 기능을 작은 단위로 쪼개고, 해당 단위의 테스트 케이스를 만든 후에 코드를 작성하는 방식의 개발방법론이다. TDD방식은 우선 코드가 깨끗하고, 디버깅에 드는 시간과 노력을 줄일 수 있다. 또한 개발자가 요구사항을 명확하게 이해하도록 도와 더 좋은 설계와 개발을 할 수 있도록 하며, 추후 기능 변경이나 코드 구조 변경(리팩토링)이 용이해진다는 장점이 있다. 아래는 파이썬의 unittest 라이브러리를 사용한 TDD 방법론의 간단한 예시이다. 우선 필요한 코드를 작성한다.class Calculator: def add(self, a, b): return a + b이후 아래와 같이 테스트..

Information Technology/Computer Science 2024. 5. 6. 13:11

프레임워크(Framework) vs 라이브러리(Library)

프레임워크와 라이브러리는 둘 다 소프트웨어 개발을 돕기 위해 사용되는 개발 도구이다. 둘의 차이점은 사용 방식과 제어 흐름의 권한을 누가 가지고 있느냐에 있다. 쉽게 비유하자면 집을 짓는다고 했을 때, 프레임워크는 설계도와 구조도를 제공하는 것이고, 라이브러리는 공구나 자재를 제공하는 것과 비슷하다고 할 수 있다. 프레임워크는 사용자가 그들이 규정한 규칙과 방식을 따르며 정해진 틀에 맞게 개발을 진행한다. 즉, 프레임워크가 전체 흐름을 제어하며 개발자는 프레임워크가 요구하는 대로 코드를 작성하여 채워 나가는 방식으로 작업을 한다. 개발자가 아닌 프레임워크가 프로그램의 흐름을 제어한다는 점에서 "Inversion of Control(제어의 역흐름)"이라고도 한다. 라이브러리는 특정 기능을 수행하는 코드의 ..

Information Technology/Computer Science 2024. 5. 5. 13:04

재귀 함수/재귀적 호출(Recursion Function/Recursion Call)

프로그래밍을 하거나, 알고리즘을 공부하다보면 꼭 만나게 되는 것이 재귀 함수이다. 재귀는 한 번 이해하면 쉬운 개념이지만, 한번에 이해가 샤라락 되는 난이도는 아니다. 적어도 나는 그렇다. 재귀는 말 그대로 반복 혹은 되풀이를 뜻하며 재귀 함수, 재귀적 호출 모두 같은 말이다. 영어로는 Recursive Call 혹은 Recursive Fucntion이라고 한다. 함수 내에서 자기 자신을 계속 재호출하는 형태를 말한다. 보통 재귀 함수는 원하는 결과값을 얻기까지 반복해서 이루어진다. 가장 대표적인 재귀 함수의 예로 팩토리얼(Factorial)이 있다. 아래는 재귀 함수를 코드로 구현한 예시이다. 자기 자신을 호출하여 n-1을 계산하고, 이 값에 n을 곱하는 과정을 n이 1이 될 때까지 반복하여 최종 값을..

Information Technology/Computer Science 2024. 5. 5. 00:05

객체 지향 프로그래밍(Object-Oriented Programming, OOP)

객체 지향 프로그래밍이란 독립적으로 기능하는 각각의 객체들을 통해 프로그래밍하는 방식을 말한다. 다양한 레고 블록을 모아서 하나의 레고 완성품을 조립하는 것을 생각하면 된다. 예를 들어 프로그램 내에서 '사람'을 객체로 다룬다면, '사람' 객체는 '이름', '나이' 등의 데이터를 속성으로 가지며, '말하기', '걷기' 등의 행동을 메서드로 가진다. 이러한 객체들이 각자 독립적으로 작동하며 필요할 때 서로 상호작용 하는 것이다.  객체 지향 프로그래밍의 특징 중의 하나는 '관심사의 분리(Seperation of Concerns)'이다. 이는 큰 문제를 작은 부분으로 나누어 각 부분이 자신의 관심사만을 처리하도록 설계하는 것을 말한다. 예를 들어, '데이터베이스 관리' 객체는 데이터베이스 연결과 데이터 조작..

Information Technology/Computer Science 2024. 5. 2. 22:28

코드 리팩토링(Code Refactoring)

코드 리팩토링이란 코드의 중복을 지우고, 로직을 깨끗하고 이해하기 쉽게 재구성하는 것을 말한다.  리팩토링의 판단 기준은 확장성, 가동성, 유지보수성이 있으며, 이는 종종 코드 최적화, 디버깅, 방어 코드 추가와 같은 행위와 혼동될 수 있다. 리팩토링은 당연하게도 중간에 하는 작업이 아니라 코드 작성을 마친 후에 진행되어야 한다. 기능 구현이 우선이고, 정상 작동되는지 확인한 후에 리팩토링을 진행한다. 리팩토링을 할 때에는 한 번에 하나의 작업에만 집중하고, 동시에 여러 작업을 진행하지 않는다. 물론 리팩토링을 하면서 지속적으로 코드가 정상적으로 동작하는지 확인해야 하고, 리팩토링 작업이 동작에 영향을 주어서는 안된다. 리팩토링은 크게 두 가지로 나뉜다. 하나는 신규 기능 추가를 대비한 "준비를 위한 리..

Information Technology/Computer Science 2024. 5. 1. 10:58

추가 정보

인기글

최신글

페이징

이전
1 2
다음
TISTORY
Developer, Jiyong Kim © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바