- 이 과목은 3가지 목표를 지향한다. 첫째 오픈소스 소프트웨어 개발을 위한 기본 개념과 도구, 특히 소스 코드 버전 컨트롤과 패키지 관리, 프로젝트 빌드를 중점으로 배운다. 둘째, 애자일 기반 소프트웨어 개발 방법인 짝 프로그래밍, 테스트 주도 개발, 행위 주도 개발, 클라우드 기반 데브옵스를 공부한다. 셋째, 새로운/낯선 소프트웨어 개발 환경 및 도구를 스스로 배우는 태도를 배우는 것을 목적으로 한다. 새로운 추세의 컴퓨팅 환경에 빠르게 적응하며 협력적인 소프트웨어 개발을 주도할 수 있는 능력을 배운다
- 컴퓨팅사고
- 융합
- 글로컬
- 소프트웨어 응용 문제해결 능력
- 다음과 같이 플립러닝 방식으로 진행함
- 미리 동영상을 공부하고
- 매 강의 시작하면 10분 퀴즈 진행
- 요약 강의
- 연습문제 풀이 진행
- 중간고사와 기말고사 모두 지필 고사로 진행할 예정
- 개별 과제는 주로 프로그래밍 과제
- 수업참여도와 출석은 동영상 수강 여부와 퀴즈를 치렀는지 여부로 점수 부여
- GitHub에서 매년 발행하는 보고서 시리즈로, 오픈 소스 커뮤니티와 GitHub 상의 개발 활동 현황을 분석해서 보여주는 사이트
- 소프트웨어 저작권 소유자가 모든 사람에게 소스 코드를 게시, 사용, 복사, 수정 및 배포할 권리를 부여한 소프트웨어
- 오픈소스 소프트웨어의 사용, 복제, 수정, 배포 권한의 범위를 지정
EX) GPL, LGPL, MIT License, BSD License, Apache License, MPL(Mozilla Public License)
-
Commercial SW
- 개별 이용허락
- 로열티 지급
- 실행 바이너리만 제공
- 복제, 배포, 수정 불가
- 사용 기간과 목적 제한
-
Open Source SW
- 일괄 사전 이용허락
- 로열티 없음
- 소드 코드 제공
- 복제, 배포, 수정 허용
- 기간/목적 제한 없음
두 관점 모두 지적재산권에 의해 보호됨
-
Free Software
- Public domain software (with source)
- 소스코드까지 공개된 퍼블릭 도메인 소프트웨어
- Software under lax permissive license
- 매우 관대한 라이선스(소프트웨어를 가져다 쓸 때 조건이 거의 없는 형태의 오픈소스 라이선스)
- Copylefted software
- 개방성을 보장하는 라이선스
- Software under GPL
- GNU GPL로 배포되는 자유 소프트웨어
- Public domain software (with source)
-
Proprietary Software
- Public domain software (without source)
- 소스코드가 공개되지 않은 퍼블릭 도메인 소프트웨어
- Shareware
- 일정 기간 무료 체험 가능, 이후 유료 결제 요구
- Public domain software (without source)
-
Free-download software
- Public domain software (with source)
- Software under lax permissive license
- Copylefted software
- Software under GPL
- Shareware
Proprietary Software는 OSS 가 될 수 있지만, Free Software가 될 수는 없다.
-
파일의 변화를 추적하여 이전에 작동하던 버전으로 쉽게 돌아갈 수 있게 하는 시스템
-
VCS software
- CVS
- SVN
- Mercurial
- Darcs
- Git
-
General Actions in VCS
- checkin
- checkout and editing
- Diffs
- Branching
- Merging
- Conflicts
- Tagging
-
Two Main Types of VCS
-
Centralized VCS
- One central repository with many users
-
Decentralized VCS
- Every user owns his or her local repository
- A separate remote (central) repository
- Two new actions (with remote repositories): fork pull request
-
- 각 컴퓨터(local)에 설치되어 소스 코드 관리가 가능한 프로그램
- Workspace
(files you are working with) - Index
(files to be considered in the next commit) - Local repository
(files committed to the local repo) - Remote repository
(files pushed to the remote repo)
- Git 저장소 호스팅 서비스 및 공동 협업 플랫폼
- 상대방 프로젝트를 복사해서 내 계정에서 관리되는 새 프로젝트를 만드는 것
- fork 해온 프로젝트를 토대로 새로운 commit 내용들을 제출하는 것
- 집단지성의 극대화 및 협업 때문에 사용
- 현대적인, 선진화된 소스코드 개발과정의 필수도구로 Git을 사용
- commit 단위로 코딩,리뷰,토론하고 적용하여 소프트웨어의 취약점을 극복하는 전략
- Commit 단위 관리를 통해 개발과정 가시화 + 협업용이 + 유지보수 + 추적 용이 + 소스코드 품질상승
- 기본설정
기존 정보 삭제(처음 설치시 생략)
git config --global --unset credential.helper
git config --system --unset credential.helper
사용자 정보 설정
git config --global user.email "email"
git config --global user.name "username"
- 초기화 및 commit
git init : 현재 디렉토리를 Git 저장소로 초기화
git add <파일> : 파일을 index에 추가
git commit : commit 하기
- diff
git status : 작업 중인 repository 상태 확인
git diff : work space와 index 비교
- push
git remote add origin (url) : 원격 저장소(remote repository)를 현재 로컬 저장소(local repository)에 연결하는 명령어
git push (원격 저장소 이름) (로컬 브랜치 이름) : 로컬 -> 원격으로 코드 전송
-
A lightweight markup language for creating formatted text using a plain-text editor
- 별도의 워드 프로세서나 복잡한 툴 없이, 단순한 기호와 문법으로 텍스트를 꾸밀 수 있는 언어
-
VS code 및 StackEdit 사이트를 통해 사용가능
-
Examples
-
Headings
-
Bold,Italic
- '** **' , '_ _'
ex) Bold Italic
- '** **' , '_ _'
-
Lists with bullets and numbers
- * ~ , 1. ~
ex)- num
- num
- * ~ , 1. ~
-
Links and Images
- [name] (url) to insert links , ![name] (url) to insert images
ex) 마크다운
- [name] (url) to insert links , ![name] (url) to insert images
-

