1. 소프트웨어 (Software)
ㅇ 컴퓨터 하드웨어를 동작하고 제어하는 역할을 하는 명령어 집합
- 응용 소프트웨어 : 다양한 응용에 사용하기 위해 특별히 제작된 소프트웨어들
- 시스템 소프트웨어 : 하드웨어 및 응용소프트웨어 중간에 위치
. 운영체제 : 하드웨어와 직접 상호작용, 프로그램에 공통적인 서비스 제공
. 유틸리티 소프트웨어 : 기본적인 활동을 수행하며 운영체제 기능을 확장시켜줌
. 번역 프로그램 : 컴파일러, 어셈블러, 인터프리터 등
2. 소프트웨어 공학 (Software Engineering)
ㅇ 대규모/복잡한 소프트웨어 시스템의 개발에 지침이 되는 원리들을 모색하는
컴퓨터과학의 한 분야
ㅇ 소프트웨어 공학의 대상
- 주로, 소프트웨어의 설계, 품질, 테스트를 다룸
- 이외에도, 프로그래머 인력 관리,프로젝트 관리 등 경영과학적인 것도 포함될 수 있음
ㅇ 소프트웨어 공학의 목표
- 더 큰 규모의 재사용을 통한 생산성 및 품질 향상,
- 빠른 응용 개발을 통한 시장경쟁력 강화 등
ㅇ 소프트웨어 개발 패러다임 시대적 변화
- 1970년대 : 구조적 프로그래밍, 하향식 설계
. 기능, 절차 중심의 개발 방식
- 1980년대 : 객체지향 방법론
. 코드 재사용성, 수정 용이성 등
- 2000년대 : 컴포넌트 기반 방법론
- 2010년대 : 서비스 지향 방법론
3. 버전 관리
ㅇ 깃 (Git)
- (공개성) 타 개발자들의 코드를 쉽게 내려받을 수 있음
- (소스 코드 관리 도구) 코드의 버전 관리를 하여 줌
- (소프트웨어 작성에 따른 복잡도 완화)
. 개발자 자신의 프로그램에 대한 특정시점의 스냅샷을 저장,복원 등
. 타 개발자와 쉽게 협력(협업)도 가능
ㅇ 깃허브 (GitHub)
- 깃의 기본 기능 위에 다양한 웹서비스 기능을 추가 함