관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

소프트웨어 1 - 소프트웨어에 대하여 본문

알고리즘 및 자료 관리/컴퓨터 구조 & 운영체제

소프트웨어 1 - 소프트웨어에 대하여

huenuri 2024. 10. 13. 23:56

2주차 내용도 총 두 가지로 나뉜다. 먼저 소프트웨어에 대해서 학습해 보겠다.


 

 

 

 

이론 1 - 소프트웨어

 

 

앱을 만든다고 한다면 관점을 소비자에서 생산자로 바꿀 필요가 있다. 컴퓨터 세계에서 생산자는 프로그래머라고 부른다. 프로그래머가 될 사람은 사용자에게 서비스를 제공하는 것이다. 사용자에는 우리 자신도 포함될 수 있다. 사용자는 항상 그들이 원하는 무언가, 즉 요구사항을 갖고 있다.

프로그래머는 하드위어와 사용자 사이에 중개사가 되어 멋지고 아름답고 효율적인 뭔가를 구축하는 일을 한다. 

 

 

 

 

 

우리는 이것을 소프트웨어라고 부른다. 하드웨어에 소프트웨어를 탑재해 컴퓨터 시스템을 완성시킨다는 것은 이미 배웠다. 이제는 하드웨어가 특정 동작을 하도록 모든 명령을 내리는 소프트웨어에 대해 살펴볼 것이다. 소프트웨어는 프로그램이라고 부르기도 한다.

 

 

 

 

 

소프트웨어를 단순하게 생각하면 사람들이 원하는 작업을 실행하기 위해 순서대로 작성된 명령어들의 집합이다. 이 명령어들은 코드, 코드를 작성하는 것을 코딩, 코딩을 하는 사람을 프로그래머, 개발자라고 부른다. 

 

 

 

 

 

하드웨어가 없는 소프트웨어는 운전자 없는 자동차로 생각할 수 있다. 자동차는 운전자 없이는 달릴 수 없다. 하드웨어도 소프트웨어 없이 실행할 수 없다. 하지만 컴퓨터는 올바른 명령들만 내려주면 놀라운 일들을 해낼 수 있다. 아이콘 하나하나가 명령어 전체를 담고 있는 소프트웨어라고 생각하면 된다. 

 

사용자가 직접적으로 실행시킬 수 없는 소프트웨어도 있다. 소프트웨어는 사용자가 직접 이용하지 않는 시스템 소프트웨어와 사용자 목적에 맞게 수행하는 응용 소프트웨어로 나뉜다. 둘은 하드웨어를 동작하기 위해 다른 일을 하는 소프트웨어이다. 우리가 사용하는 응용 소프트웨어를 동작하기 위해서는 시스템 소프트웨어가 꼭 있어야 한다.

 

시스템 소프트웨어에는 마우스나 키보드 등 모든 장치들을 제어하기 위한 디바이스 드라이브도 포함되어 있다. 응용 소프트웨어가 원활하게 동작하기 위해서는 시스템 소프트웨어가 잘 뒷받침되어야 한다. 응용 소프트웨어는 사용자와 가장 가깝고 앱은 응용 소프트웨어를 뜻하는 애플리케이션 소프트웨어의 줄임말이다. 프로그래머는 어디서 명령의 집합을 작성하는 것일까?

 

 

 

 

프로그래머가 코딩을 하기 위한 소프트웨어도 존재한다. 프로그래밍 소프트웨어는 프로그래머가 새로운 소프트웨어를 만들기 위해 사용하는 소프트웨어이다. 특정한 목적을 가진 명령어 집합을 설계하고 개발하기 위해 사용한다. 프로그래머는 인간이 이해할 수 있는 언어를 사용하여 소프트웨어를 만든다.

 

여기서 사용되는 언어를 프로그래밍 언어라고 부른다. 하지만 이것은 기계어로 번역되어야 하드웨어가 명령을 이해할 수 있다. 그 번역을 담당하는 번역기가 프로그래밍 소프트웨어에 들어있는 셈이다. 

프로그래머 입장에서 소프트웨어를 만들어야 할 때 어떤 단계를 거쳐야 할까? 개발하는 소프트웨어가 가져야 할 능력과 조건에 대한 조사와 분석이 먼저 이루어져야 한다.

 

 

 

 

 

 

소프트웨어가 어떠한 기능을 제공해야 하는가를 결정하는 요구사항 분석 단계가 필요하다. 어떻게 보다는 무엇을에 초점을 맞추어 진행된다. 다음에는 요구사항 분석 단계에서 결정된 사항에 대한 구체적인 설계가 이뤄진다. 프로그램 절차에 대한 설계와 사용자 인터페이스 설계가 진행된다.

프로그램 절차에 대한 설계는 요리를 할 때 레시피를 작성하는 단계라고 생각하면 된다. 사용자 인터페이스는 사용자에게 보이는 화면이다. 구현 시에는 목적에 맞는  프로그래밍 언어가 사용된다. 어떤 프로그래밍 언어로 작성하든 명확성을 확보하고 간결성을 유지하며 모호성을 제거하고 직접적인 표현을 하는 것은 매우 중요하다.

 

그래야 오류가 없고 반응이 빠른 소프트웨어를 만들 수 있다. 마지막으로 인터페이스에서 구현한 기능들이 잘 작동되는지 평가하는 단계이다. 인터페이스는 실제 사용자가 서비스를 이용하는 화면이다. 구현 단계에서도 이러한 단계가 진행되지만, 테스팅에서는 숨어있는 결함이 없는지 확인하고 요구 분석에 합당한 지 판단하는 시스템 테스트도 이루어진다. 모든 테스팅을 마친 소프트웨어는 세상에 릴리스 된다. 일반 사용자가 실제로 이용해 볼 수 있다.

 

하지만 여기서 개발자의 임무가 끝나는 것은 아니다. 소프트웨어의 마지막 단계는 유지보수에 있다. 실제 유저들의 피드백에 따라 소프트웨어를 다듬고 업그레이드하고 강화하는 작업은 필수적이다. 다수 유저들의 의견을 반영하지 않는다면 내가 만든 소프트웨어를 아무도 사용하지 않을 것이다. 

구현 단계로 돌아가 새로운 기능을 추가하거나 오류를 수정한 뒤 다시 릴리즈하면 된다. 변형이 어려운 하드웨어와 달리 소프트웨어는 유연하다.

 

 

 

 


 

 

 

 

퀴즈 1 - 용어

 

 

 

 

이 문제는 틀렸다. 다시 풀어보기로 하자.

 

 

 

소프트웨어였다. 너무 어렵게 생각했던 것 같다.


 

 

 

 

퀴즈 2 - 소프트웨어 분류

 

 

 


 

 

 

학습을 마치고

오늘은 공부할 게 많아서 어제 몇 개 발행해 놓은 것들 편집하고 있다. 이제 딱 한 단원이 남아있는데 이 공부도 열심히 해볼 것이다. 빨리 마치고 책 공부로 들어가고 싶다.

그동안 소프트웨어, 하드웨어 많이 들어보았으나 그 개념은 잘 알지 못했다. 이번에 확실히 알게 되었고 소프트웨어와 하드웨어의 종류에 대해서도 배울 수 있었다.