한국에 살면서 각 개인들은 주로 it산업이라는 말을 많이 듣는다 주로 통념에서는 소프트웨어 개발을 it라고 생각하는데, 그것은 빙산의 일각이다. 해석해보면 정보 기술 산업인데, 사실상 용어의 범위 자체가 방대하다 그래서 이해를 돕기 위해서는 세분화하는 작업이 필요하다 최근에는 ict 즉, 정보통신기술 산업이라고도 부른다. 그 이유는 데이터의 양이 과거에 비해 방대해지면서 트랜잭션의 중요성 역시 커졌기 때문이다.
1. 소프트웨어란?
소프트웨어는 사실상 하드웨어를 제외한 코드로 구성된 요소라고 보는 것이 잘 알려진 요소이다. 이러한 소프트웨어는 크게 두 가지로 나뉜다.
시스템 소프트웨어
하드웨어를 제어하기 위한, 하드웨어에 근접한 소프트웨어를 의미한다. 주로, 운영체제가 돌아가게 하는 커널 단의 제어 등 컴퓨터 하드웨어의 움직임을 직접 제어하는 소프트웨어는 모두 시스템 소프트웨어다. 주로 C언어로 만든다. 그 이유는 하드웨어의 언어인 기계어에 최대한 가까운 문법을 가지고 있기 때문이다. 시스템프로그래밍, 리눅스, 운영체제, 컴퓨터구조 등이 required이다.
응용 소프트웨어
사용자의 직접적 필요에 따른 기능을 포함한 소프트웨어를 응용 소프트웨어라고 한다. application software이다. ppt, pdf, 하다못해 디시클리너 같은 프로그램도 응용 프로그램에 해당한다. 사용자가 직접적으로 제어하기 어려운 시스템 소프트웨어와는 달리, 관리자가 아닌 사용자 친화적 기능을 제공하기 위해 만든 프로그램인 만큼, gui 인터페이스 요소가 시스템 소프트웨어에 비해 추가되는 것도 당연한 사실이다. 참고로 앱개발이라고 하는 분야도 광의의 의미에서는 "모바일" 어플리케이션 개발이 정확한 표현이다. 사용되는 언어로는 주로 C++ 등이 있다. 여기에는 당연한 얘기지만 c/c++, 객체지향, 자료구조, 알고리즘 등이 required이다.
웹 개발 = 웹 환경에서의 응용 소프트웨어
사실 제일 대중적으로 익숙한 부분은 바로 여기에 해당한다. 인터넷이라는 환경이 있기 전까지는 주로 컴퓨터에 플로피 디스크 등을 활용해서 물리적으로 응용 소프트웨어를 설치를 진행한 후, 일방적으로 이용자가 이용을 하는 상황이었다면 네트워크 환경이 보편화되면서 이용자는 단순히 응용소프트웨어의 객체가 아닌 참여의 주체로 변화되었고, 그 과정에서 다양한 기술들이 생겨났다.
네트워크라는 환경에서, 서버를 통해 웹서버의 데이터를 이용자(클라이언트)에게 제공하고 이용자도 웹서버에 데이터를 저장하거나 하는 작업이 가능하게 되었다. 그러면서 보안에 대한 중요성 역시 커지게 되었다. 각자가 서로 연결되지 않았던 시대보다 개인의 정보에 접근하기가 매우 용이해졌고 그에 따라서 자바가 주요한 언어로 사용되게 되었다. c++처럼 자바는 객체지향을 지니지만, ssl 프로토콜 같은 보안 프로토콜을 지원하기 때문에 웹서버 상의 소프트웨어 개발에 용이하다는 특징을 가지고 있다. 또한 웹 환경에서의 많은 데이터를 최대한 효율적으로 전송하고 처리해야 하기 때문에 데이터베이스에 대한 지식이 반드시 요구된다.
객체지향이란? = 과학적 모델링의 원리를 소프트웨어에 이식
객체지향이라는 말을 소프트웨어 공부를 하다보면 들어보지 않은 경우가 없다. 객체지향이란 무엇인가? 프로그램에서 객체로 분리시켜서 생각하는 프로그래밍 방법론을 애기한다. 이렇게 말하면 추상적이라 이해가 와닿지 않는데 쉽게 생각하면 수학과 물리학에서 어떠한 수식을 만드는 과정을 생각해 보면 금방 이해가 간다.
F = ma
라는 식은 간단하다 그러나 결코 하찮지 않다. 이것이 객체지향의 원리이다. 현실세계에서 힘은 엄청나게 많이 작용되고 있다. 그러나 거의 모든 힘의 크기가 이 식에서 파생된다. 절차지향에서는 줄을 많이 쓰는 프로그래밍이 어려운 프로그래밍이었지만, 객체지향에서는 최대한 간결한 코드가 어려운 프로그래밍이다. 이 식을 활용해서 수많은 공학에서 힘에 대한 여러 응용을 한다. 예를 들면, 기체가 비행하는데 필요한 힘의 크기는 항공엔진, 항공기설계 부서에서 다루는 내용 중의 하나이며 이 내용들을 연구해서 설계하면 생산부서에서는 그 설계에 최대한 충실하도록 기체를 제조한다.
마찬가지로 소프트웨어 개발에서도 설계 문서를 가지고, 이후 구현을 하는 작업이 들어간다. 앞에서 언급한 기체 항공 분야의 설계직무가 더 많은 물리학 지식을 요구하듯, 설계 단계 역시 수많은 전산체계(컴퓨터 시스템)에 대한 이해를 필요로 하는 것은 당연한 사실이다. 자체적으로 이러한 프로그램을 만드는 회사들이 있고, 다른 회사의 요청을 받아서 소프트웨어를 만드는 회사도 존재한다. 전자를 자체 서비스 기업, 후자를 si/sm 기업이라고 한다.
2. 하드웨어
이 영역 역시 ict산업의 일부이다. 주로 전산학과보다는 전자공학과에서 담당하는 부분이다. 물론 전산학과에서도 하드웨어에 대한 지식(논리회로, 컴구조...)을 배우지만, 메인은 전자공학과의 영역이다. 전공분야가 아니라 간략하게 적어보자면,
반도체
반도체 메모리 제조 과정 역시 정보 통신 산업의 일부분이라고 할 수 있다. 메모리와 비메모리로 나뉘어지고 전자는 소품종, 후자는 다품종이라는 간략한 특징이 있다. 주로 회로개발 직무나 양산 직무가 여기에 해당될 것이다.
통신 장비
케이블, 모뎀 등이 여기에 해당된다 자세히는 모르겠다.
대체적으로 정보통신기술에서 연관돤 하드웨어는 이 정도에서 크게 해당된다.
3. 펌웨어
소프트웨어와 하드웨어의 중간 단계에 펌웨어라는 요소가 있는데 혹자는 이를 소프트웨어에 포함시키기도 하지만 나는 별도로 구분하고자 한다. 앞서 말한 시스템 소프트웨어와 유사한 것 같은데 이 분야에서는 펌웨어라는 용어를 자주 사용한다.
펌웨어의 시스템 소프트웨어와 다른 특징이라면
펌웨어는 하드웨어 제조사에서 함께 만든다는 특징이 있으며 변경 사항이 거의 없기에 "주로" ROM에 저장한다.
시스템 소프트웨어는 운영체제 관련된 소프트웨어이다. "주로" SSD(HDD)에 혹은 CPU에 저장된다.
4. 정리
이 점을 가지고 삼성이라는 기업집단에서 생각해보면
웹개발 직무는 삼성SDS
펌웨어 or 시스템 소프트웨어 or 삼성전자 응용소프트웨어 개발 직무는 삼성전자에서 담당하는 것이다.
삼성전자에도 SW개발이라는 직무가 있다. 그러나 삼성SDS에서 하는 개발과는 차이가 있다.
굳이 비교하자면,
삼성전자 DS부문 메모리사업부
SSD 회로설계(하드웨어 분야)
SSD 시스템 소프트웨어 SW개발(시스템 소프트웨어 개발 분야)
NAND FLASH 펌웨어 개발(삼전은 낸드플래시 ssd 내에 rom기능 내재, 펌웨어 개발 분야)
삼성전자 DS부문 메모리사업부
CPU 회로설계(하드웨어 분야)
CPU 시스템 소프트웨어 SW개발(시스템 소프트웨어 개발 분야)
CPU 펌웨어 개발
삼성SDS
그룹사 혹은 타사 웹 프로그램 구축 운영
이렇게 적용할 수 있을 것이다
'industry > 국내기업산업분석' 카테고리의 다른 글
[tip] window 11 ver, build 확인 방법 (0) | 2023.04.13 |
---|---|
[opinion]chatgpt, 이런 건 잘 못하네 (0) | 2023.04.11 |
[news]window defender 버그 해결 방법 (0) | 2023.04.11 |
[opinion]chatgpt로 개발 공부? (0) | 2023.04.08 |
[opinion]내 컴퓨터의 inisafe EX 확인하자 (0) | 2023.04.08 |
댓글