
소프트웨어 설계와 구현 실행 가능한 소프트웨어 시스템이 개발되는 소프트웨어 공학 프로세스 단계 간단한 시스템 소프트웨어 설계와 구현을 의미 다른 모든 소프트웨어 공학 활동들은 이 프로세스에 병합 큰 시스템 많은 소프트웨어 공학 프로세스들 중 하나 설계 고객의 요구사항을 기반으로 소프트웨어 컴포넌트들과 그들 간의 관계를 식별하는 창의적인 활동 구현 설계를 프로그램으로 실현하는 프로세스 설계 방식 때때로 분리된 설계 단계가 있어 설계가 모델링되고 문서화됨 프로그래머의 머리에 있거나 화이트보드나 종이에 개략적으로 스케치 → 항상 프로세스가 있는 것은 아님 설계 시 구현 이슈 설계 문서화를 위해 UML를 사용하는 것 객체 지향 언어로 프로그래밍 → 적절 동적 타입 언어 → 부적절 애자일 방법 사용 설계할 때 대..

애플리케이션 아키텍처 개발/도입 이유 비즈니스 또는 조직의 필요를 만족시키기 위해 비즈니스들은 해당 영역에 특화된 공통 애플리케이션 사용 → 이런 공통점으로 인해 아키텍처 도입 애플리케이션 아키텍처 시스템 클래스의 주요 특성 포함 예: 실시간 시스템 - 데이터 수집 시스템 또는 모니터링 시스템 같은 유형의 시스템을 개발 시 공통적인 아키텍처 구조를 재사용 비즈니스 시스템에서 애플리케이션 아키텍처 재사용을 함 애플리케이션 아키텍처 모델 사용법 아키텍처 설계 프로세스의 시작점 개발하는 애플리케이션 유형에 익숙하지 않은 경우에 해당 초기 설계를 일반 애플리케이션 아키텍처에 기반을 두고 시작 추후 개발할 특정 시스템을 위해 설계를 특화 설계 점검표 애플리케이션 시스템을 위한 설계가 일반적인 아키텍처와 일치하는지..
패턴과 아키텍처 패턴 패턴 소프트웨어 시스템에 대한 지식을 표현하고 공유하고 재사용하는 방법 객체지향 설계 패턴, 구조 설계를 위한 패턴, 사용성 패턴, 형상관리 패턴 등 아키텍처 패턴 서로 다른 시스템과 환경에서 시도되고 시험된 바람직한 사례를 양식화하고 추상화한 기술 설명 기술과 다이어그램을 섞어서 사용하는 표준 방법으로 기술 가능 패턴에 관련된 상세한 내용 포함 모델 뷰 제어기(MVC) 패턴의 구성 웹 기반 시스템에서 상호 작용 관리의 기반 대부분의 언어 프레임 워크에서 지원 예 : 런타임 시스템 아키텍처 아키텍처 설계의 기본 분리와 독립의 개념 변경에 의해 영향받는 범위를 작게 만듦 MVC 패턴 시스템의 요소들을 분리하여 독립적으로 변경될 수 있도록 함 계층 아키텍처 패턴 분리와 독립을 이루는 또..

아키텍처 설계 소프트웨어 설계 프로세스의 첫 단계 시스템의 전체 설계를 이해하는 것 주요 구조 컴포넌트들과 그들 간의 관계 식별 설계와 요구공학 사이의 중요한 연결 결과물 → 아키텍처 모델 시스템이 상호작용하는 컴포넌트들의 집합으로 어떻게 구성되었는지 설명 애자일 프로세스 아키텍처 설계 초기 단계에서 전체 시스템 아키텍처 설계에 초점 맞춤 아키텍처의 점진적 개발은 보통 성공적이지 않음 변화에 대응하여 컴포넌트를 리팩토리항 하는 것이 상대적으로 쉬움 시스템 아키텍처를 리팩터링 하는 것은 비용이 많이 듦 아키텍처 변화에 따라 시스템 컴포넌트들은 수정해야 함 아키텍처 설계의 현실적 측면 주요 아키텍처 컴포넌트들이 시스템의 상위 수준 특징 반영 → 컴포넌트 식별 필요 이상적으로는 시스템 명세에는 설계 정보가 포..

CLI와 Git 내부의 폴더와 파일을 분석하여 Git 명령어들이 어떻게 동작하는지 살펴본다. Git init 내부 분석 Git Bash에서 임의의 빈 폴더에 git init을 통해. git을 만든다.(로컬저장소 생성) ls -al. git를 통해. git 폴더 내부를 살펴보면 다양한 폴더들이 생성된 것을 확인할 수 있다. ls -al 명령의 각 칼럼의 의미 -rw-r--r-- 1 파일과 권한과 상태를 의미하는 것인데, Git 내부 명령을 이해하는데 중요한 것은 _맨 앞이 ‘-’로 시작하면 파일 ‘d’로 시작하면 폴더_라는 것 junpyohong 파일 소유자의 아이디 staff 파일이 속한 그룹(파일 소유자가 속한 그룹) 73 파일의 크기, 바이트 표시로 표시 Dec 27 13:36 파일 생성 시간 des..

Mac 자격증명(Credential) 관리 계정 정보를 입력 및 삭제하는 방법 SourceTree에서 직접 입력하기 옵션 - 계정에서 사용자 계정 정보를 Remove로 삭제 CLI에서 git Push 명령어 사용 사용자 계정이 없는 상태에서 git push 로그인 정보 입력 후 자격 증면 관리자를 보면 GitHub 정보가 오늘 날짜로 자동으로 추가됨 Mac에서 Git 인증 관리 git config --local credential.helper git config --global credential.helper git config --system credential.helper 기본적으로 맥에서 사용자 인증을 관리해 주는 osxkeychain이 git의 인증 관리에도 사용 키체인 접근이라는 앱이나 소스트리..
그래프 객체 간의 연결 관계를 표현하는 자료구조 → 매우 일반적인 자료구조 오일러 문제 모든 다리를 한 번만 건너서 처음 출발했던 장소로 돌아오는 문제 용어 표현 위치 → 정점(node) 다리 → 간선(edge) 오일러 정리 모든 정점에 연결된 간선의 수가 짝수이면 오일러 경로 존재 그래프 정의 수학적 표현 : G = (V, E) V는 정점(vertex)들의 집합 E는 간선(edge)들의 집합 정점들 간의 관계를 의미 → 정점들과 간선들의 각 유한집합의 자료구조 그래프의 종류 간선의 종류 무방향 간선 : 간선을 통해 양방향으로 갈 수 있음 (A, B) (A, B) = (B, A) 방향 간선 : 한쪽 방향으로만 갈 수 있음 ≠ 그래프 종류 무방향 그래프 방향 그래프 가중치 그래프, 네트워크 간선에 비용이나..
우선순위 큐 우선순위를 가진 항목들을 저장하는 큐 우선순위큐 ADT 객체 n개의 element형의 우선순위를 가진 요소들의 모임 연산 create() ::= 우선순위 큐를 생성 init(q) ::= 우선순위 큐 q를 초기화 is_empty(q) ::= 우선순 큐 q가 비어있는지를 검사 is_full(q) ::= 우선순위 큐 q가 가득 찼는가를 검사 insert(q, x) ::= 우선순위 큐 q에 요소 x를 추가 delete(q) : = 우선순위 큐 q로부터 가장 우선순위가 높은 요소를 삭제 및 반환 find(q) ::= 우선순위가 가장 높은 요소를 반환 우선순위 큐는 2가지로 구분 최솟값 우선수위 큐 작을수록 우선순위가 높음 최댓값 우선순위 큐 높을수록 우선순위가 높음 우선순위 큐 구현방법 배열로 구현 ..