March 19, 2019

443 words 3 mins read

What is software?

    What is software?

    소프트웨어 란 무엇인가?

    얼마 전 교육을 들면서 첫 질문을 듣고 나는 벙찌고 말았다.

    질문은 이 것이었다. ‘소프트웨어란 무엇인가?’ ‘소프트웨어를 정의하세요.'

    교육을 같이들은 대부분의 사람들이 대학에서 컴공을 전공하고 개발자로 입사한 사람들임에도 불구하고 저 질문에 손들고 대답하는 사람은 없었다. 물론 나도 마찬가지였다. ‘소프트웨어란 무엇인가?’ 2012년부터 소프트웨어를 직간접적으로 배우고 현업에서 개발경력도 가지고있었지만 소프트웨어가 뭔가에 대해 말할 수 없다는게 부끄러웠다.

    블로그에 첫 글을 쓰려고하고 앞으로 IT에 관한 블로그를 만들기로 한 나로써 첫 주제로 적합한 주제인 것 같다.

    소프트웨어란 무엇인가?

    어떠한 기술이나 단어들에 대해서 어려운 용어를 써가며 정의를 내리거나 설명 할 수 있겠지만, 내가 현재 하고있는 팀의 업무 특성 상 어려운 기술이나 솔루션들을 비 전공자들도 알아듣기 쉽게 풀어내야하는 위치인 만큼 앞으로의 글들도 최대한 비 전공자들도 이해하기 쉽게 작성할 예정이다.


    소프트웨어란 무엇인가?

    소프트웨어란 무엇인가?를 물어보면 절반이상의 사람들은 다음과 같이 대답한다.

    하드웨어의 반대요!

    어느정도 맞는 말이다.

    소프트웨어를 말하려면 자연스럽게 하드웨어에 대해 나오게 된다. 아마 서로 반대되는 개념으로 소프트웨어를 설명하기 가장 쉬운 방법 중하나가 하드웨어랑 비교하는 것이기 때문에 저 답이 나오는 것 같다.

    소프트웨어를 설명하라면 다음과 같이 말해주고싶다.
    소프트웨어란 보이지도 않고, 만져지지도 않는 것

    “인간 = 육체 + 정신” 이라는 공식이 성립한다면

    육체는 하드웨어

    정신은 소프트웨어라고 할 수 있겠다.

    컴퓨터에서의 하드웨어 소프트웨어를 정의한다면,

    Hardware = computer = 육체
    Software = compute = 생각, 정신
    

    소프트웨어는 기존 하드웨어랑은 다른 개념으로 우리가 기존에 접근했던 방식과는 다르게 접근해야한다.

    조금 더 이해하기 쉽게 예시를 든다면

    CD 플레이어 = 하드웨어
    음악 = 소프트웨어
    
    비디오 플레이어 = 하드웨어
    영화 = 소프트웨어
    
    종이로 된 소설책 = 하드웨어
    소설의 내용 = 소프트웨어
    
    인간의 육체 = 하드웨어
    인간의 지식 = 소프트웨어
    

    다음과 같은 예시들을 들 수 있다.

    소프트웨어란 생각이다.
    실제로 완성품이 나오기 전까지 보이지도 않고 만져지지도 않기 때문에 기존 하드웨어의 설계와 같은 개념으로 접근해서는 안된다.
    관리 및 설계 방식에 대한 다른 접근이 필요하고, 더 어려울 수 있다.


    왜 개발자들은 사소한 요구사항 변경에 펄쩍 뛸까?

    건축을 예를들면 설계도가 나오고 실제 건축이 들어가게되면 건축되어지고 있는 실물이 눈에 보이게된다.

    여기서 클라이언트는 “햇볕이 덜 받는거 같은데 건물을 15도 정도 틀어주면 안돼요?” 라는 요구사항을 하게되면 모두가 같은 마음으로 바라볼 것이다. “미친사람인가…?”

    하지만 소프트웨어는 어떨까?

    클라이언트가 “이 것 좀 요렇게 바꾸면 좋을꺼같은데?“라는 요청이 들어오면 실제로 바뀌는 경우가 허다하다.

    왜냐하면 소프트웨어는 눈에 보이지않기 때문에 별거아닌 것같은 요구사항 변경이 얼마나 큰 결과를 초래하는지 감이 잘 안오기 때문이다.

    소프트웨어를 만드는데 있어서 간단한 요구사항을 변경하는 것 처럼 보이지만 실제로 건물을 15도 틀어주세요 라는 요구와 다르지 않은 경우가 허다하다.

    그렇기 때문에 소프트웨어 개발에 있어서 기본적인 모델링이 중요하게된다.

    모델링은 보이지 않는 소프트웨어를 어느정도 보여지게 할 수 있는 작업이다.

    요구사항에 대해서 잘 정리한 뒤 모델링을 잘 해놓게 되면 사소한 변경사항인 줄 알았던 것들이 얼마나 큰 변경사항인지 근거를 제시 할 수 있고, 건물을 15도 틀어달라는 말도안되는 요청을 거절할 수 있는 근거가 된다.

    잘못된 표현이나 기술 내용이나 오타등 변경점에 대해서는 반영하겠습니다

    참고자료

    comments powered by Disqus