KOSTA 교육 46일차(Git, Software Develope Process, Semi-Project)
19. 1. 9(수)
배운 내용
- Git
- Software Develope Process
- Semi-Project
1. Git
여러명이 공유할 소스코드를 버전 관리를 통하여 보다 쉽게 관리하기 위하여 만들어진 시스템
- 소스 코드가 변경된 이력을 쉽게 확인할 수 있다.
- 특정 시점에 저장된 코드와 비교하거나 특정 시점으로 돌아갈 수도 있다.
- 또 내가 올리려는 파일이 누군가 편집한 내용과 충돌한다면, 서버에 업로드 할 때 경고 메시지가 발생하여 중복을 방지한다.
- 여러사람과 collaboration을 할 때엔 누군가 Push를 하면 항상 Pull하여 오류를 방지한다.
- 원격 저장소(Remote Repository): 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소
- 로컬 저장소(Local Repository): 내 PC에 파일이 저장되는 개인 전용 저장소
파일의 이동 순서
- 먼저 자신의 workspace에 있는 파일을 로컬저장소로 commit한다. 그리고 로컬저장소에서는 원격저장소로 push한다.
- push된 파일은 원격저장소에서 변경된 사항을 반영하여 fetch하여 로컬저장소로 이동하고 로컬저장소에서는 pull하여 변경사항이 최종 반영된다.
Branch
- 위는 하나의 master인 Branch이다.
- 하나의 Branch에서는 하나의 공간만에서 작업한다고 보면 쉽다.
- 하지만 Branch가 2개 이상이 된다면 master는 하나의 공간이지만 나머지 공간들이 있어서 maset Branch에는 직접적인 영향을 미치진 않고 push, pull을하여 merge를 통해 접근한다.
Github 생성부터 실습까지
회원가입이 되어있고 로그인이 되어있다는 전제하에 진행한다.
툴은 이클립스(eclipse)를 기준으로 사용하겠다.
- 초록버튼을 선택하여 생성한다.
- Repository name을 선언해주고 파일이 없으면 생성이 되지 않기 때문에README 파일을 체크하여 주고 Create한다.
- 위의 화면은 생성완료된 모습이다.
- 여기서 툴과 연동해주기 위하여 Clone버튼을 클릭하여 해당 주소를 복사한다.
- 우측키를 눌러 import로 들어간다.
- 위의 선택된 것을 클릭하고 Next를 누른다.
- 위에서 Clone했던 Git을 붙여넣기 한다.
- 아래에 Git 생성시 만들었던 아이디와 패스워드를 입력하면 연동이 되어 다음 작업시 다시 묻지 않는다.
- 위는 master Branch를 생성할 것이기 때문에 Next
- 새로운 project에 import하기 때문에 두 번째 박스 클릭후 Finish
- 이후 자연스럽게 프로젝트를 생성해준다.
- GIT를 클릭하면 생성한 Git이 추가 되었을 것이다.
- Branch를 생성하는 방법으로 Git된 프로젝트에 New Branch를 클릭한다.
- 새로운 Branch를 선언하고 Finish한다.
- 여기서 나오는 에러는 필자가 미리 동일한 Branch를 생성해놨기 때문
- 생성하면 동일하게 switch to로 들어가면 master, server 이 두개의 Branch가 있을 것이다.
- 위는 java 하나의 클래스이고 밑은 commit and Push를 하는 기능이다.
- 위의 코드를 수정하면 Unstaged Changes에서 수정된 파일이 하나 생성될 것이다.
- 수정을 하면 밑에 파일이 하나 추가되고 +를 누르면 밑으로 내려가서 Push 준비를 한다.
- 추가적으로 Message를 입력하고 Commit and Push를 누르면 바로 Push가 된다.
- 완료되었다는 알림문이다.
- 완료 되었는지 GitHub로 확인해보자
- 생성된 repository로 들어오면 server Branch에서 하나의 Push가 온 것을 확인할 수 있다.
- 초록버튼을 눌러 request 요청을 한다.
- request에 대한 코멘트를 넣고 Create한다.
- 위에 base는 master, compare은 server인데 저 의미는 server Branch에서 master Branch로 가겠다는 의미이다. 추가 Branch가 있다면 달라질 수 있다.
- 버튼을 클릭하여 Merge를한다.
- 위의 표시는 Merge가 되었다는 뜻으로 master에 내가 수정한 코드가 수정되었다는 의미이다.
- 위처럼 수정된 내역이 나온다.
2. Software Develope Process
소프트웨어를 개발할 때의 과정을 말하며 개발을 할 때에 진행하는 일련의 절차를 말한다.
- SW를 어떻게 개발할 것인가에 대한 전체적인 흐름의 개념
- 계획 수립부터 폐기 까지의 전 과정
주먹구구식 모델
가이드라인 없이 결과만을 생각하여 개발을 하는 형태
- 극소규모의 경우에 적합하다.
- 관리 및 유지보수가 어렵다.
선형 순차적 모델
대표적으로 폭포수 모델이 있으며 단계별로 진행하는 형태
- 관리가 용이하다.
- 문서화되어 체계적이다.
- 요구사항이 적은 프로젝트에 적합하다.
- 앞 단계가 완성되지 않으면 진행이 되지 않는다.
V 모델
폭포수 모델 + 테스트 단계를 추가 확장한 형태
- 각 단위별 테스트를 통해 검증을 한다.
프로토타입 모델
대량 생산에 앞서 미리 제작해보는 원형 또는 시제품
- 완전히 동작하는 완제품을 개발하는 것이 아닌 고객의 니즈를 반영하여 최종 제품을 구현
- 하지만 지속되는 고객의 니즈 반영으로 프로젝트의 기간이 명료하지 않음
- 과정의 관리가 어려움
통합 프로세스 모델
반복적 개발을 통해 단계화하는 진행하는 형태
애자일 프로세스 모델
날렵한, 민첩한의 뜻으로 고객의 요구에 민첩하게 대응하고 그때 그때 주어지는 문제를 풀어나가는 방법론
- 프로세스와 도구 중심이 아닌 개개인과의 상호 소통 중시
- 문서 중심이 아닌 실행 가능한 소프트웨어 중시
- 계약과 협상 중심이 아닌 고객과의 협력 중시
- 계획 중심이 아닌 변화에 대한 민첩한 대응 중시
스크럼 개발 프로세스
- 소프트웨어 개발보다는 팀의 개선과 프로젝트 관리를 위한 애자일 방법론
- 경험적 관리 기법 중 하나
- 구체적인 프로세스를 명확하게 제시하지 않음
- 개발 팀(조직)을 운영하는 효율적인 운영 방식(지침)
사용자 스토리 및 포인트 작성
- 사용자 스토리: 메모지 한 장에 구현할 기능을 사용자 관점에서 사용자 언어로 작성한 사 용자 요구 사항
- 스토리 포인트: 사용자 스토리를 수행하는데 걸리는 상대적인 개발 기간(시간)
스프린트 회의
- 말그대로 빠르게 개발하여 높은 순위 항목을 시작으로 개발한다.
- 작업 수행 소요 시간을 추정한다.
- 위의 현황판처럼 개발 현황을 나타낸다.
일일 스크럼 회의
- 매일, 서서, 짧게(15분 정도) 한다.
- 진행 상황만 점검한다.
- 한 사람씩 돌아가면서 어제 한 일, 오늘 할 일, 문제점을 브리핑한다.
오늘 교육 간 느낀점
오늘은 프로젝트 때 우리가 해야할 Git과 프로젝트 프로세스를 배웠다.
프로그래밍과 관련된 언어를 배우는게 아닌 프로젝트에 사용 되는 것들을 배우니 정말 내가 벌써 이정도 왔구나 라는 것을 체감할 수 있었다.
이 와중에 정말 Git은 지옥이 따로 없었다. 혼자 해도 이렇게 헷갈리는데 조원 7명이 모여서 한다면 정말 불지옥이 되지 않을까 싶다.
애자일 모델을 통해 효율적이고 고객 중심적인 작업프로세스를 보면서 개발자 뿐만 아니라 다른 업무에서도 적용한다면 정말 효율적인 업무가 되지 않을까 생각했다.
내일부터 프로젝트가 시작이다.
우리 조는 전공자 하나없는 비전공만 있는 유일한 조인데 큰거 바라지 않고 똑같이 카피할 수 있는 능력을 가지는 것과 팀원들과의 의사소통, 경험이 지금으로선 가장 중요하지 않을까 싶다. 결과물에 집착하지 않고 자신의 성장을 바라보는 기회가 되었으면 좋겠다.
내일부터 2주 동안 화이팅!