건물을 지을 때 설계도가 가장 중요하듯, 소프트웨어 개발에서도 아키텍처 설계는 시스템의 성패를 좌우하는 핵심 단계입니다. 이번 포스팅에서는 아키텍처 설계의 정의와 중요성, 그리고 실무에서 자주 쓰이는 주요 아키텍처 패턴들을 정리해 봅니다.1. 아키텍처 설계란? (Architectural Design)아키텍처 설계는 소프트웨어 시스템을 어떻게 조직할지 이해하고, 그 전체적인 구조(Overall structure)를 설계하는 과정입니다.역할: 디자인과 요구사항 공학 사이의 결정적인 연결 고리(Critical link) 역할을 합니다핵심 활동: 시스템의 주요 구조적 컴포넌트와 그들 간의 관계를 식별합니다애자일(Agile)에서의 위치: 일반적으로 애자일 프로세스에서도 초기 단계에 전체적인 시스템 아키텍처를 설계..
이번 포스팅에서 다룰 주제는 소프트웨어 개발 프로젝트의 성패를 가르는 가장 기초적이면서도 중요한 단계, 바로 '요구사항 공학(Requirements Engineering)'입니다."고객이 원하는 것이 무엇인가?"를 정확히 파악하지 못하면, 아무리 코드를 잘 짜도 결국 실패한 프로젝트가 됩니다. 따라서 이번 글에서는 요구사항의 정의와 종류부터, 제대로 작성하는 법(가이드라인), 그리고 확실하게 검증하는 기법까지 상세하게 정리합니다.1. 요구사항 공학이란? (What is Requirements Engineering?)요구사항 공학은 고객이 시스템에 요구하는 서비스와 시스템이 운영되고 개발될 때의 제약조건을 확립하는 과정입니다.요구사항(Requirement): 서비스에 대한 고수준의 추상적인 진술부터 상세한..
이번 포스팅에서는 현대 개발 방법론의 핵심인 애자일의 철학부터, 구체적인 실천 방법인 XP(Extreme Programming)와 스크럼(Scrum), 그리고 애자일 방식의 계획 수립(Planning)까지 실무에서 많이 사용하는 아주 중요한 내용들을 다루어 보겠습니다. 비즈니스 환경은 급변하고 있습니다. 완벽한 계획을 세우고 개발하기엔 시간이 너무 부족하죠. 그래서 등장한 것이 바로 '애자일(Agile, 기민한)' 개발 방법론입니다.1. 급변하는 환경과 애자일의 등장1) 왜 애자일인가?오늘날 비즈니스 요구사항은 매우 빠르게 변화하며, 안정적인 요구사항 세트를 미리 확정하는 것은 사실상 불가능합니다.전통적인 '계획 주도(Plan-driven)' 방식은 이런 빠른 변화를 따라가기 어렵습니다.애자일의 목표: ..
소프트웨어 개발은 단순히 코드를 작성하는 행위가 아닙니다. 거대한 건물을 지을 때 설계도와 공사 순서가 필요하듯, 소프트웨어 역시 체계적인 활동의 집합이 필요합니다.이번 포스팅에서는 소프트웨어 공학의 핵심인 '소프트웨어 프로세스(Software Processes)'를 정리합니다. 고전적인 폭포수 모델부터 최신 트렌드인 LLM(거대언어모델)을 활용한 개발 방식까지, 개발자라면 꼭 알아야 할 개발의 뼈대를 잡아봅시다.1. 소프트웨어 프로세스란? (The Software Process)소프트웨어 프로세스는 소프트웨어 시스템을 개발하기 위해 요구되는 구조화된 활동들의 집합입니다. 모든 프로세스는 다음 4가지 핵심 활동을 포함합니다명세 (Specification): 시스템이 무엇을 해야 하는지 정의합니다 (요구사..
이번 포스팅에서는 소프트웨어 프로젝트 관리와 최신 트렌드인 LLM(거대언어모델)을 활용한 개발 방법에 대해 정리해 봅니다.1. 소프트웨어 프로젝트 관리란? (Software Project Management)정의: 소프트웨어가 정해진 시간 내에(on time), 일정에 맞춰(on schedule), 그리고 소프트웨어를 개발하고 조달하는 조직의 요구사항에 맞춰 전달되도록 보장하는 활동입니다필요성: 소프트웨어 개발은 항상 개발 조직이 설정한 예산과 일정의 제약을 받기 때문에 프로젝트 관리가 필수적입니다1) 프로젝트 성공 기준 (Success Criteria)성공적인 프로젝트 관리를 위해서는 다음 네 가지 기준을 충족해야 합니다.고객과 합의한 시간에 소프트웨어를 인도해야 합니다전체 비용을 예산 범위 내로 유지..
맨날 코드를 짜면서도 가끔은 이런 생각이 듭니다. "그냥 돌아가는 코드 말고, 진짜 '좋은' 소프트웨어란 뭘까?"https://dn790001.ca.archive.org/0/items/bme-vik-konyvek/Software%20Engineering%20-%20Ian%20Sommerville.pdfhttps://product.kyobobook.co.kr/detail/S000001000960 소프트웨어 공학 | Ian Sommerville - 교보문고소프트웨어 공학 | ▶ 이 책은 소프트웨어 공학에 대해 다룬 이론서입니다. 소프트웨어 공학의 기초적이고 전반적인 내용을 학습할 수 있도록 구성했습니다.product.kyobobook.co.kr 이번 SW Engineering 시리즈에서는 위 책을 바탕으로 ..
MySQLExecute를 눌러줍니다. 다음과 같이 ‘TypeandNetworking’설정 창이 나타납니다.기본 옵션 그대로 진행하면 됩니다. 만약 컴퓨터에 MariaDB가 이미 설치 되어 있다면 포트 번호 3306를 이미 사용하고 있을 수 있습니다.이런 경우 다른 포트로 변경해줘야 합니다.‘Next’버튼을 클릭해서 다음 단계로 넘어갑니다. https://blog.naver.com/cjs0308cjs/223369860906 윈도우에 MYSQL 서버 설치 & 기초 쿼리 사용법 따라하기안녕하세요. 개발자 준생입니다. 이번 시간에는 윈도우에 MYSQL 서버 설치를 진행해보겠습니다. 누구...blog.naver.com 윈도우에 MYSQL 서버 설치 & 기초 쿼리 사용..
0. 도입최근 간단한 사이드 프로젝트를 진행하던 중 데이터 베이스 선택 문제를 겪었습니다. 간단한 서비스인데 DB 설정 때문에 프로젝트 시간이 오래 걸려 의문이 생겼습니다.간단한 프로젝트나 테스트를 할 때, DB 설정 시간을 최소한으로 줄일 수는 없을까? 이처럼 사용자가 적은 서비스 이거나 간단한 단위 테스트만 필요한데 DB때문에 시간이 길어지는 불편함이 생길 수 있습니다. 흔히 겪는 불편한 점은 다음과 같습니다.여러 개발자들이 사용하는 경우 의도치 않게 DB가 변경될 수 있다.운영 DB와 마찬가지로 보안 문제로 외부 접속이 어렵다.테스트를 실행할 때마다 DB를 켜고 설정해야 한다.이렇게 테스트를 위한 작업들이 많아지면 결국 테스트 시간이 지연되고 개발 전체 시간이 길어집니다. 또한 사용자가 많지 않아서..