01-1. 개발자는 대체 뭐하는 사람인가요?
01-2. 코딩과 프로그래밍, 앱과 프로그램
컴퓨터가 할 일 설계하기
프로그래밍
- 프로그래밍은 컴퓨터에서 작동하는 프로그램을 설계하고 개발하는 전 과정
- 프로그매러는 단순히 코드만 작성하는 코더와 다르게 개발할 프로그램에 어떤 기능을 추가하고, 어떤 방식으로 구현할지 미리 계획 해야 함
- 순서도는 컴퓨터가 수행할 절차대로, 어떤 순서로 할지 발생할 수 있는 상황은 무엇이고 어떤 행동을 반복할지 설계하는 ‘알고리즘’ 과, 이것을 프로그래밍 언어로 작성하는 ‘프로그래밍’, 이때 만들어진 결과물을 ‘소스코드’ 라고 함
소프트웨어를 만들고 운영하는 과정
개발
- 소프트웨어 개발은 코딩이나 프로그래밍 외에 좀 더 많은 요소가 결합됨
- 요구사항 분석 → 시스템 명세 → 구조 설계 → 구현 → 테스트 → 유지보수 과정이 있음
- 요구사항 분석 : ‘무슨무슨 기능을 수행하는 애플리케이션을 만들어주세요’
- 시스템 명세 : 개발자는 요구 사항을 구체화 함
- 구조 설계 : 어떻게 구현할지 전반적인 구상 시작, 프로그래밍 언어는? 데이터는? 서버는 어디서?
- 구현 : 프로그래밍과 코딩
- 테스트 : 오류 점검 및 기능 테스트, 코드 수정
- 유지보수 : 버그 찾아 해결, 기능 업데이트, 애플리케이션이 안정적으로 운영되도록 관리
- 개발자의 업무는 프로그램을 코딩하며 소프트웨어를 만들어내는 데 국한되지 않고 서비스가 제대로 작동하는지 모니터링하고, 개선하는 등 여러 역할이 있음\
컴퓨터의 보이지 않는 요소
소프트웨어 vs 프로그램 vs 애플리케이션
[소프트웨어와 프로그램]
- 컴퓨터 본체와 CPU, 메모리 등 눈에 보이는 부분 : 하드웨어
- 보이지 않는 프로그램과 라이브러리, 데이터 : 소프트웨어
- 소프트웨어와 프로그램은 혼용해서 사용하는데, 컴퓨터에서 더블클릭하여 실행하는 아이콘들이 소프트웨어이고, 어떨 때는 프로그램이라고도 함
예를 들어, 이메일을 보내는 소프트웨어를 만든다고 가정했을 때,
받는 사람의 이름과 주소와 같은 정보가 필요한 데 이를 ‘데이터’ 라고 한다.
이메일을 보내는 과정에는 내용 쓰기/서식지정하기/이미지삽입하기 등의 기능이 필요한데, 어떤 일을 수행하기 위해 필요한 기능을 일정 단위로 묶은 것을 ‘라이브러리’ 라고 한다.
받는 사람/사릴제목/메일 내용 입력하기 등까지의 모든 과정을 수행할 수 있도록 만든 것이 ‘프로그램’
- 프로그램은 특정 목적을 위해 실행할 수 있는 대상으로써 주어진 일련의 작업들을 수행하기 위해 프로그래밍됨
- 라이브러리들 중 일부는 프로그램의 구성 요소로 들어감
⇒ 이 모든 것을 아우르는 것이 소프트웨어
- 컴퓨터의 물리적이지 않은 모든 요소를 포함하고 프로그램, 데이터 ,라이브러리뿐만 아니라 모든 과정이 이뤄지는 환경이 되는 윈도우나 맥os, 안드로이드, 리눅스 등과 같은 운영체제 역시 소프트웨어임
- 프로그램과 소프트웨어 둘 중 소프트웨어가 더 넓은 개념인데, 프로그램은 최종 결과물뿐만 아니라 소스코드도 포함하는데 소프트웨어와 크게 다른점은 ‘순서가 있다는 점’
- 프로그램은 ‘실행 순서대로 작성한 명령어 모음’ 임
[애플리케이션]
- 줄여서 어플, 앱이라고 부름
- 프로그램은 시스템 프로그램과 응용 프로그램으로 나누는데, 시스템 프로그램이 운영체제를 구성하는 소프트웨어로써 사용자가 컴퓨터를 원활히 사용할 수 있는 환경을 제공한다면, 응용 프로그램은 각각의 목적에 따라 사용자가 직접 손에 쥐고 실행하여 활용할 수 있는 프로그램임