Skip to the content.

- Application Architecture 소개

- 실습 프로젝트 : mini-pms(프로젝트 관리 시스템)

- 1-a 단계: 자바 프로젝트 폴더 준비

1-프로젝트 폴더를 생성한다.

mkdir bitcamp-project//해당 폴더에 들어가서 생성
cd bitcamp-project//해당 폴더에 들어간다.

2.gradle을 사용하여 자바 애플리케이션 프로젝트에 필요한 설정 파일과 폴더를 준비한다.

$ gradle init--------gradle에 대한 명령을 내린다.
Starting a Gradle Daemon (subsequent builds will be faster)

Select type of project to generate:
  1: basic
  2: application  <== 프로젝트 유형을 '일반 애플리케이션 개발' 선정한다.
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4] 2

Select implementation language:
  1: C++
  2: Groovy
  3: Java  <== 프로그래밍에 사용할 언어를 '자바' 선정한다.
  4: Kotlin
  5: Swift
Enter selection (default: Java) [1..5] 3

Select build script DSL:
  1: Groovy  <== 빌드 스크립트 파일을 작성할  사용할 언어를 'Groovy' 선정한다.
  2: Kotlin
Enter selection (default: Groovy) [1..2] 1

Select test framework:
  1: JUnit 4  <== 단위 테스트로 사용할 프레임워크를 'JUnit'으로 선정한다.
  2: TestNG
  3: Spock
  4: JUnit Jupiter
Enter selection (default: JUnit 4) [1..4] 1

Project name (default: java-project): <== 그냥 엔터치면 현재 디렉토리명을 프로젝트 이름으로 사용한다.
Source package (default: eomcs.java.project): com.eomcs.pms  <== 기본 자바 패키지를 설정한다.

3.프로젝트의 디렉토리 구조 확인한다.

tree명령어를 이용하여 확인하는데 맥의 경우엔

brew install tree

로 tree 명령어를 설치하고 tree를 입력하여 디렉토리를 한눈에 보이도록 출력한다.

tree -a//숨겨진 파일과 폴더를 tree형태로 출력
$ gradle run
Starting a Gradle Daemon (subsequent builds will be faster)

> Task :run
Hello world.     <== 실행 결과

BUILD SUCCESSFUL in 16s
3 actionable tasks: 3 executed

Gradle을 사용하여 일반 사용자에게 배포할 파일을 만든다.

[~/mini-pms]$ gradle build

build 절차

프로젝트 빌드를 통해 생성된 파일과 폴더는 build 디렉토리 아래에 놓인다.

```java
배포 파일을 받은 일반 사용자는 보통 다음의 절차에 따라 애플리케이션을 실행한다.

적당한 폴더에 배포 파일(.tar 또는 .zip)의 압축을 푼다.
배포 파일을 `Downloads` 폴더에 다운로드 받았다고 가정하자.  

```console
[~/Downloads]$ tar -xvf mini-pms.tar  <== 압축 파일을 푼다.
[~/Downloads]$ tree  <== 압축판 폴더의 구조를 확인한다. tree 가 없으면 따로 설치해야 한다.

배포 파일에 들어 있는 스크립트 파일을 실행한다.

Windows OS:

```console
[~/Downloads]$ ./mini-pms/bin/mini-pms.bat
Hello world.

macOS/Linux/Unix OS:

[~/Downloads]$ ./mini-pms/bin/mini-pms
Hello world.

#### 

```java
plugins {
    id 'java'
    id 'application'
    id 'eclipse'   <== 이 코드를 추가한다.
}

2.이클립스 IDE용 설정 파일 생성한다.(터미널)

gradle eclipse

3.이클립스 IDE로 프로젝트를 import한다.

- 1-c 단계: 프로젝트에 버전 관리 시스템 Git을 적용하기

1.프로젝트 폴터를 깃 저장소로 만든다.(터미널)

git init

2.버전 관리 대상에서 제외할 항목을 지정한다.

.gitignore파일로 제외할 항목들을 기재한다.

- **gitignore.io** 사이트에 접속한다.
  - 제외 대상 목록을 생성한다.
    - java,linux,macos,gradle,windows,eclipse,java-web,visualstudiocode,node 으로 검색.
- `.gitignore` 파일 변경
  - `~/bitcamp-project/.gitignore` 파일에 위에서 준비한 대상 목록을 복사한다.

주의!

.gitignore 작성시 주의사항이다.

빨간원의 내용들이 활성화 및 추가되있는지 확인한다.

——————–추가예정——————–

- [] 시스템 소프트웨어와 애플리케이션 소프트웨어를 설명할 수 있는가?

시스템 소프트웨어:응용 소프트웨어를 실행하기 위한 플랫폼을 제공하고

컴퓨터 하드웨어를 동작/접근할 수 있도록 설계된 컴퓨터 소프트웨어이다.

애플리케이션 소프트웨어:운영체제에서 실행되는 모든 소프트웨어를 뜻한다.

- [] 애플리케이션 아키텍처의 종류와 특징을 설명할 수 있는가?(참조)

주어진 상황의 소프트웨어 구조에서 발생하는 문제점을 해결하기 위한 일반화된 재사용 가능한 솔루션이다.

- [] gradle 빌드 도구를 사용하여 자바 애플리케이션 프로젝트를 구성할 수 있는가?

상단 참조

- [] gradle을 사용하여 애플리케이션을 실행(run)하고 빌드(build) 할 수 있는가?(터미널)

gradle run//해당 디렉토리에 들어가서 실행

- [] gradle을 사용하여 Eclipse IDE 프로젝트로 전환할 수 있는가?(터미널)

gradle build//해당 디렉토리에 들어가서 build

- [] 형상 관리 시스템이 무엇인지 알고 있는가?

줄여서 SCM(Software Configure Management)으로 불리며 소프트웨어 소스 코드 뿐 아니라 개발 환경,빌드 구조 등

전반적인 환경,내역에 대한 관리 체계를 정의한다.

- [] CSV, Subversion, Git 버전 관리 시스템의 차이점 이해하고 있는가?

CSV

CSV특징:파일을 통째로 업로드한다.

1.프로젝트를 가져온다->2.프로젝트를 편집->3.해당 파일만 업로드->4.저장소에 있던 해당파일은 백업을 하고

편집된 해당파일은 변경되서 저장된다

SVN

SVN특징:변경 내용만 업로드한다.

1.서버에서 가져온다->2.프로젝트를 편집한다->3.편집된 부분만 업로드한다->4.이전 파일은 백업한다->5.변경된 파일을 저장한다

Git

Git특징:여러명의 사용자들 간에 해당 파일들의 작업을 조율하기위한 분산 버전 관리 시스템이며 소스코드 관리에 주로 사용되지만

어떠한 집합의 파일을 변경사항을 지속적으로 추적하기 위해 사용 될 수 있다.

1.서버에서 clone->2.프로젝트 편집->3.로컬에 변경된 파일들을 push전에 백업한다->4.서버에 push

반대로

저장소에 레포지토리 생성->로컬로 clone 할 수 있다.

다른 사용자가 clone을 이용하여 파일들을 업로드 할 수 있다.

- [] 프로젝트를 git 저장소로 설정할 수 있는가?(터미널)

git init//해당 디렉토리에서 실행

그러면 숨겨진 디렉토리로 .git이라는 폴더가 생기는데

여기는 저장소로 commit으로 명령하여 해당 디렉토리의 모든 변경 내용을 저장하는 곳으로 절대 삭제하면 안된다.

지우게 되면 더 이상 깃으로 폴더의 변경사항을 추적할 수 없다.

   
설명 코드
git init git으로 초기화
git add . 변경된 파일을 목록화
git commit -m “기록할 메시지” 백업 명단을 로컬 저장소에 백업
git push 로컬 저장소의 변경된 내용을 서버 저장소에 업로드
git clone 원격 저장소 주소 해당 주소의 파일들을 다운로드
git pull 해당 디렉토리의 서버 저장소에서 파일들을 다운로드