전체 글 137

소프트웨어 요구사항 명세서

소프트웨어 요구사항 명세서란?소프트웨어 요구사항 명세서(SRS)는“이 소프트웨어가 무엇을 해야 하는가”를 문서로 정리한 것이다.개발자가 마음대로 상상해서 만드는 게 아니라,사용자·기획자·발주처가 원하는 기능과 조건을 정확히 문서로 고정해두는 역할을 한다.쉽게 말하면“이 프로그램은 이렇게 만들어야 한다”를 모두가 같은 기준으로 이해하기 위한 설계 전 계약서 같은 문서다.왜 필요한가?요구사항을 말로만 주고받으면 이런 문제가 생긴다.“그런 기능 말한 적 없는데요?”“난 이렇게 이해했는데?”개발 다 끝났는데 처음 의도랑 다름그래서 SRS는요구사항 오해 방지범위(scope) 고정일정·비용 산정 기준개발·테스트 기준 문서역할을 한다.소프트웨어 요구사항의 종류요구사항은 크게 두 가지로 나뉜다.기능 요구사항시스템이 “..

STUDY 2026.01.11

npm을 이용해 오픈소스 배포하기

1. 준비물Node.js 설치npm 계정Git 저장소(선택이지만 사실상 필수)2. 프로젝트 초기화빈 프로젝트라면 아래부터 시작한다.npm init -ypackage.json이 생성되고, 이 파일이 배포의 핵심이다.3. package.json에서 꼭 확인할 것{ "name": "my-awesome-lib", "version": "0.1.0", "main": "dist/index.js", "license": "MIT"}중요한 필드name: npm에서 유일해야 함version: 배포할 때마다 반드시 증가main: 패키지 진입 파일license: 오픈소스라면 명시 필수4. 배포할 파일만 남기기보통은 빌드 결과물만 배포한다.{ "files": ["dist"]}또는 .npmignore를 사용해 제외할 파일..

STUDY/[ NodeJs ] 2026.01.10

오픈소스

오픈소스 프로젝트 수업 정리오늘 수업에서는 오픈소스 프로젝트를 하나 만든다고 가정하고전체적인 흐름을 한 번 쭉 훑는 식으로 진행했다. --- intro이번 챕터는 오픈소스 프로젝트를 어떻게 시작하고 관리하는지에 대한 기본적인 구조를 다루는 내용이었다.깃허브를 사용하는 전반적인 흐름을 먼저 잡는 느낌이었다. --- 오픈소스 프로젝트 주제 설정프로젝트를 만들기 전에 주제를 정하는 단계가 있었고,너무 복잡하지 않으면서도 프로젝트 형태를 갖출 수 있는 주제를 기준으로 잡았다. --- 오픈소스 저장소 생성 및 설정GitHub에서 저장소를 생성하고기본적인 설정들을 해두는 과정이었다. 공개 저장소 기준으로 작업했고,이후 작업과 PR을 염두에 둔 구조로 세팅했다. --- 오픈소스 문서 템플릿 및 REA..

STUDY 2026.01.09

Zod 라이브러리와 React-Hook-Form

Zod에서 React Hook Form1. 처음 질문 — Zod는 왜 쓰는 거지?처음 질문은 단순했다.TypeScript로 타입을 다 적어두는데, 왜 Zod 같은 라이브러리가 필요하지?여기서의 전제는 이거였다.TS에 string이라고 적어두면들어오는 값도 string일 거라고 믿어도 되는 거 아닌가?하지만 이 전제는 컴파일 타임과 런타임의 차이를 아직 분리하지 못한 상태였다.2. 첫 번째 오해 — “TS는 null을 몰라서 Zod가 필요한 거야?”이해 과정에서 이런 생각이 나왔다.TS는 백엔드에서 오는 데이터가null인지, "null" 문자열인지 알 수 없어서Zod로 다시 검증하는 거 아닌가?여기서 중요한 정정이 필요하다.TS는 모르는 게 아니다TS는 검증을 하지 않는다즉,알 수 없어서가 아니라애초에 런..

STUDY/[ React ] 2026.01.07

React, ReactDOM, Virtual DOM, State 관계 정리

1. 시작 질문 — 왜 이게 가볍다는 거지?처음 의문은 이것이었다.React는 Virtual DOM을 써서 가볍다는데,정확히 뭐가 다르길래 더 가벼운 거지?이 질문의 핵심은 사실 React / ReactDOM / Virtual DOM / state의 관계가 분리되어 있지 않다는 데 있었다.2. 잘못 이해하기 쉬운 지점많이 하는 오해 중 하나는 이거다.Virtual DOM이 useState로 값을 관리하게 해주는 거 아니야?혹은useState로 관리한 값을 다시 input value에 넣어주는 역할이 Virtual DOM 아니야?이 생각은 절반만 맞고 절반은 틀렸다.3. 개념부터 정확히 분리하기3.1 React상태(state)를 기반으로 UI를 선언적으로 작성하는 라이브러리핵심 철학:UI는 상태의 결과다R..

STUDY/[ React ] 2026.01.07

프로그래밍 패러다임

프로그래밍 패러다임1. 선언형 프로그래밍 & 함수형 프로그래밍선언형 프로그래밍 (Declarative)특징어떻게가 아니라 무엇을 할지 표현내부 동작은 시스템에 위임예시SQL (SELECT ...)React JSXArray 메서드 (map, filter, reduce)장점코드 가독성 좋음의도가 명확단점내부 동작을 제어하기 어려움성능 튜닝이 제한적일 수 있음함수형 프로그래밍 (Functional)핵심 개념순수 함수고차 함수불변성부수 효과 최소화순수 함수같은 입력 → 항상 같은 출력외부 상태 변경 없음고차 함수함수를 인자로 받거나 함수를 반환map, filter, reduce장점테스트 용이예측 가능병렬 처리에 유리단점러닝 커브상태 관리가 직관적이지 않을 수 있음연관React hooks, Redux선언형 UI와..

STUDY 2026.01.06

디자인 패턴

더보기 1. 싱글톤 패턴(singleton pattern)하나의 클래스당 하나의 인스턴스만 만듦(데이터베이스 연결 모듈) DB.instance라는 하나의 인스턴스를 기반으로a,b를 생성할 수 있음(인스턴스 생성 비용! 아낀다!) 예) Node.js MongoDB 연결할 때 쓰는 mongoose 모듈 connect() 함수Node.js에서 MySQLDB 연결할 때도 싱글톤 패턴이 쓰임 단점)1. TDD(Test Driven Development)할 때 걸림돌 TDD는 단위테스트를 주로 하는데, 단위테스트는 서로 '독립적'이어야하며 어떤 순서로든 실행할 수 있어야함싱글톤 패턴은 미리 생성된 하나의 인스턴스를 기반으로 구현하기 때문에 '독립적인' 인스턴스를 만들기가 어렵다. 2. 의존성(종속..

STUDY 2026.01.06