목록전체 글 (12)
munjji 님의 블로그
구조적 방법정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리 중심의 방법론이다.복잡한 문제를 다루기 위해 분할과 정복 원리를 적용한다.정보공학 방법론정보 시스템의 개발을 위해 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중심의 방법론이다.데이터베이스 설계를 위한 데이터 모델링으로 개체 관계도(ERD)를 사용한다.컴포넌트 기반(CBD) 방법론기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론이다.분석 단계에서 사용자 요구사항 정의서가 산출된다.소프트웨어 재사용의 이점개발 시간과 비용 단축소프트웨어 품질 향상소프트웨어 개발의 생산성 향상시스템 명세, 설계, 코드 등 문서 공유소프트웨어 재사용 방법합성 중심 : 전자 칩과 같은..
개념적 설계(정보 모델링, 개념화)정보의 구조를 얻기 위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정이다.개념 스키마 모델링과 트랜잭션 모델링을 병행 수행한다.논리적 설계(데이터 모델링)자료를 특정 DBMS가 지원하는 논리적 자료 구조로 변환시키는 과정이다.트랜잭션의 인터페이스를 설계한다.개념 스키마를 평가 및 정제한다.물리적 설계논리적 구조로 표현된 데이터를 물리적 구조의 데이터로 변환하는 과정이다.데이터베이스 파일의 저장 구조 및 액세스 경로를 결정한다.저장 레코드의 형식, 순서, 접근 경로, 조회가 집중되는 레코드와 같은 정보를 사용한다.데이터 모델에 표시할 요소구조(Structure): 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질을 표현함연산(Operatio..
자료 구조의 분리선형 구조 : 배열, 선형 리스트, 스택, 큐, 데크비선형 구조 : 트리, 그래프스택(Stack)리스트의 한쪽 끝으로만 자료의 삽입, 삭제 작업이 이루어지는 자료 구조이다.가장 나중에 삽입된 자료가 가장 먼저 삭제되는 후입선출(LIFO) 방식으로 자료를 처리한다.스택의 응용 분야인터럽트의 처리수식 계산 및 수식 표기법서브루틴 호출 및 복귀 주소 저장스택의 삽입(Push)과 삭제(Pop)PUSH : 스택에 자료를 입력하는 명령POP : 스택에서 자료를 출력하는 명령방향/무방향 그래프의 최대 간선 수무방향 그래프의 최대 간선 수 : n(n-1)/2방향 그래프의 최대 간선 수 : n(n-1)트리(Tree)정점(Node, 노드)과 선분(Branch, 가지)을 이용해 사이클을 이루지 않도록 구성한..
소프트웨어 공학의 기본 원칙현대적인 프로그래밍 기술을 계속으로 적용해야 한다.개발된 소프트웨어의 품질이 유지되도록 지속적으로 검증해야 한다.소프트웨어 개발 관련 사항 및 결과에 대한 명확한 기록을 유지해야 한다.폭포수 모형(Waterfall)이전 단계로 돌아갈 수 없다는 전제하에 각 단계를 확실히 매듭짓고 다음 단계를 진행하는 개발 방법론이다.보헴이 제시한 고전적 생명 주기 모형이다.요구사항을 반영하기 어렵다.나선형 모형(Spiral)나선을 따라 돌듯이 점진적으로 완벽한 최종 소프트웨어를 개발하는 것이다.계획 수립 -> 위험 분석 -> 개발 및 검증 -> 고객 평가 과정이 반복적으로 수행된다.애자일 모형의 주요 방법론스크럼(Scrum)XP(eXtreme Programming)기능 중심 개발(FDD; Fe..
동기와 비동기 처리의 차이에 대해서 이전 포스트에 작성해두었지만, 간략하게 회원가입 예제로 정리해보고 시작해보자.동기public String signUpSync(String email, String name) { // 모든 작업이 순서대로 끝나야 다음으로 넘어감 User user = db.save(email, name); // 1단계: DB 저장 (300ms) emailService.sendWelcome(email); // 2단계: 이메일 발송 (3000ms) imageService.setDefaultProfile(user); // 3단계: 프로필 설정 (1000ms) crmService.register(user); // 4..
비동기를 이해하기 위해 가장 먼저 이해해야 할 건 동기(Synchronous)와 비동기(Asychronous)의 차이다.동기 vs 비동기 처리동기(Synchronous)란?코드가 위에서 아래로 순서대로 실행되고, 앞 작업이 완전히 끝나야 다음 작업이 시작된다.console.log("1. 커피 주문");sleep(3000); // 3초 대기 (커피 만드는 중)console.log("2. 커피 받음");console.log("3. 자리 착석");// 출력 순서: 1 → (3초 대기) → 2 → 3 직관적이고 코드 흐름을 따라가기 쉽다. 하지만 sleep(3000) 동안 프로그램 전체가 멈춰있다. 이 상태를 블로킹(Blocking) 이라고 한다.왜 블로킹이 문제인가?혼자 쓰는 프로그램이라면 사실 큰 문제가 없..
1️⃣ 연결된 영역 찾기 (Connected Component)특징상하좌우로 연결된 것덩어리 개수 세기예시 문제백준 1012 유기농 배추백준 2667 단지번호붙이기백준 4963 섬의 개수예시 맵1 1 0 01 0 0 10 0 1 1BFS로 탐색하면덩어리 1: (0,0),(0,1),(1,0)덩어리 2: (1,3),(2,2),(2,3)➡️ 덩어리 수 = 2코드 패턴if (map[i][j] == 1 && !visited[i][j]) { bfs(i,j); count++;} 2️⃣ 최단 거리 문제 BFS는 가중치 없는 그래프에서 최단 거리를 구할 때 사용특징몇 번 이동해야 하는지최단 거리예시 문제백준 2178 미로 탐색백준 1697 숨바꼭질백준 7576 토마토예시S 0 01 1 00 0 EBFS는S →..
다익스트라 알고리즘그래프에서 하나의 시작점에서 모든 정점까지의 최단 거리를 구하는 알고리즘이다.이 과정에서 도착 정점 뿐만 아니라 모든 다른 정점까지 최단 경로로 방문하며 각 정점까지의 최단 경로를 모두 찾게 된다.매번 최단 경로의 정점을 선택해 탐색을 반복하는 것이다.동작 흐름출발 노드와 도착 노드를 설정한다.최단 거리 테이블을 초기화한다.현재 위치한 노드의 인접 노드 중, 방문하지 않은 노드를 구별하고방문하지 않은 노드 중, 거리가 가장 짧은 노드를 선택한다. 그 노드를 방문 처리한다.해당 노드를 거쳐 다른 노드로 넘어가는 간선 비용(가중치)을 계산해 최단 거리 테이블을 업데이트한다.3 ~ 4번의 과정을 반복한다.[그래프 예시 사진 추가 예정]다익스트라 알고리즘 특징다익스트라 알고리즘은 방문하지 않은..
이분 탐색 (binary search)정렬된 배열 안에서 특정 원소를 찾을 때,인덱스 i부터 j의 중간값을 비교해서 중간값이 찾는 원소가 아니라면 인덱스의 i와 j를 재정의 하는 방법으로 탐색한다.인덱스 i와 j를 정할 때 마다 탐색 범위는 반으로 줄어든다. 이분 탐색 방법처음 범위는 0부터 마지막 인덱스까지다.이때 중간 인덱스를 mid라고 한다.mid와 찾는 원소를 비교한다.찾는 원소와 mid 인덱스의 값이 같다면 탐색을 종료한다.mid 인덱스의 값 mid 인덱스의 값 > 찾는 원소일 때는 right = mid - 1로 하여 2를 반복한다.만약 left > right이 된다면 해당 배열에 찾는 원소가 없는 것이다.이분 탐색 구현 (java)1. 반복문 public static boolean BSearc..
비트와 바이트컴퓨터는 10진법이 아닌 2진법을 사용해 정보를 저장하기 떄문에 0과 1만을 저장한다.전기 신호의 전압이 일정 기준보다 높으면 1, 그렇지 않으면 0으로 변환하여 사용한다.비트(bit)비트는 0과 1을 표현할 수 있는 최소 단위여러 개의 비트를 조합하여 데이터를 표현한다.ex) 000, 001, 010, ...바이트(byte)8비트를 한 묶음으로 표현한 단위즉 1바이트 당 256(2^8)가지의 데이터 표현이 가능하다.바이트를 더 큰 단위로 묶어 1KB, 1MB, 1GB, 1TB로 표현한다.컴퓨터의 숫자 표현 - 정수음수의 표현부호 비트컴퓨터는 n비트에서 가장 왼쪽의 비트(최상위 비트)를 부호 비트로 사용하여 음수를 표현한다.부호 비트가 1이면 음수, 0이면 양수 또는 0이다.예를 들어 4비트..