소프트웨어

위키百科, 우리 모두의 百科事典.

使用者가 一般的인 데스크톱 컴퓨터 에서 應用 소프트웨어 와 어떻게 相互 作用하는지 나타낸 그림.
AbiWord 워드 프로세싱 소프트웨어의 스크린샷

컴퓨터 소프트웨어 ( computer software , 或은 簡單히 소프트웨어 , 文化語 : 쏘프트웨어 , 醇化 用語 : 무른모)는 컴퓨터 에게 動作 方法을 指示하는 命令語 集合 의 모임이다. [1] [2] 프로그램 소프트웨어 컴퓨터 하드웨어 에 直接 命令語 를 주거나 다른 소프트웨어에 入力 을 提供함으로써, 命令語의 機能을 遂行한다. 컴퓨터 소프트웨어는 컴퓨터 하드웨어 의 反對 意味로, 컴퓨터 하드웨어는 該當 일을 實際로 遂行하는 시스템이다. 쉽게 說明하자면 生命體를 하드웨어라고 假定한다면, 그를 構成하는 遺傳子가 소프트웨어라고 생각할 수 있다.

"소프트웨어"라는 用語는 1957年 존 터키 (John W. Tukey)가 처음 使用한 用語이다. 日常的으로 이 用語는 應用 소프트웨어 의 意味로 자주 쓰인다. 컴퓨터 科學 컴퓨터 工學 에서 "컴퓨터 소프트웨어"는 컴퓨터 시스템 , 프로그램 , 데이터 에 依해 處理된 모든 情報 를 말한다.

소프트웨어 大部分은 高級 프로그래밍 言語 로 開發된다. 이 類型의 프로그래밍 言語는 프로그래머들에게 더 쉽고 더 效率的인데, 그 理由는 機械語보다 自然語 에 더 가깝기 때문이다. [3] 高級 言語는 컴파일러 인터프리터 , 또는 이 둘의 組合을 利用하여 機械語로 變換된다. 소프트웨어는 컴퓨터의 機械語와 相當히 一致되는 低級 어셈블리어 로도 開發이 可能하며 이는 어셈블러 를 使用하여 機械語로 變換된다.

歷史 [ 編輯 ]

소프트웨어의 最初의 場所가 되는 輪廓( 알고리즘 )은 計劃된 解析機關 을 위해 19世紀 에이다 러브레이스 가 作成하였다. 그러나, 解釋機關이든 소프트웨어든 實際로 만들어진 것은 없었다.

오늘날 우리가 認識하는 컴퓨터의 發明 以前의 소프트웨어에 對한 最初의 理論은 앨런 튜링이 1935年 隨筆 《 Computable numbers with an application to the Entscheidungsproblem 에서 提案되었다. (決定 問題)

이는 컴퓨터 科學과 소프트웨어 工學의 兩大 山脈이 誕生하는 契機가 되었으며, 둘 다 소프트웨어 및 소프트웨어의 製作에 對해 硏究한다. 컴퓨터 科學은 더 理論的인 反面(튜링의 隨筆이 컴퓨터 科學의 한 例이다), 소프트웨어 工學은 더 實用的인 部分에 焦點을 둔다.

그러나 1946年 以前까지 우리가 알고있는 소프트웨어, 卽 저裝飾 프로그램 디지털 컴퓨터의 메모리에 貯藏되는 프로그램들은 存在하지 않았다. 最初의 電子式 컴퓨팅 裝置들이 그 代身 이들을 다시 프로그램할 目的으로 再配置되었다.

使用者가 보는 소프트웨어의 세 層 [ 編輯 ]

使用者들의 視角은 普通 프로그래머의 視覺과는 差異가 있다. 現代의 汎用 컴퓨터( 임베디드 시스템 의 反對 意味)를 使用하는 사람들은 普通 소프트웨어를 플랫폼, 應用 프로그램, 使用者 소프트웨어의 세 層으로 分類한다.

플랫폼 소프트웨어
플랫폼이란 바이오스 ("소프트웨어" 代身 " 펌웨어 "라는 用語로 種種 說明되는), 裝置 드라이버 , 運營 體制 , 그리고 代表的으로 그래픽 使用者 인터페이스 等을 總體的으로 包含하는 것으로, 컴퓨터와 周邊機器 가 서로 疏通할 수 있게 만들어 준다. 플랫폼 소프트웨어는 大槪 컴퓨터에 꾸러미로 같이 提供되며, 大槪의 使用者는 그러한 것이 實際로 있는지, 아니면 選擇할 수 있는 다른 플랫폼 소프트웨어가 存在하는지에 對해서 모르는 境遇가 많다.
應用 소프트웨어
應用 프로그램 은 사람들이 一般的으로 소프트웨어라고 생각하는 것이다. 代表的인 例로 오피스 製品群 , 비디오 게임 을 들 수 있다. 應用 소프트웨어는 普通 컴퓨터 하드웨어와는 別途로 購買한다. 어떤 應用 프로그램은 컴퓨터에 꾸러미로 提供되지만, 獨立的인 應用 프로그램으로 遂行된다는 點에서 差異가 없다. 應用 프로그램은 거의 大槪 運營 體制와는 獨立的인 프로그램이지만, 普通 特定 플랫폼만을 위해 製作된다. 使用者들은 흔히 컴파일러, 데이터베이스와 같은 "시스템 소프트웨어"를 應用 소프트웨어와 같이 여긴다.
使用者 作成 소프트웨어
使用者 소프트웨어 는 使用者 特化된 要求를 충족시키기 위한 것이다. 使用者 소프트웨어에는 스프레드시트 템플릿, 워드 프로세서 매크로, 科學 시뮬레이션, 그래픽/애니메이션 스크립트 等이 있다. 甚至於 電子郵便 필터 亦是 使用者 소프트웨어의 하나로 볼 수 있다. 使用者들은 이 같은 소프트웨어를 直接 製作하고도 그 重要性을 흔히 看過하곤 한다.

소프트웨어의 遂行 [ 編輯 ]

컴퓨터 소프트웨어는 컴퓨터의 貯藏裝置 (" 메모리 " 또는 " "으로 알려져 있음)로 "積載"되어야 한다.

소프트웨어를 불러오면 컴퓨터는 소프트웨어를 作動할 수 있다. 컴퓨터는 컴퓨터 프로그램 을 "實行"하여 作動시킨다. 여기에는 應用 소프트웨어에서 命令語 를 보내는 過程이 包含되는데, 시스템 소프트웨어를 거쳐 窮極的으로 機械語 命令이 하드웨어 에 傳達된다. 各各의 命令語는 하나의 作業( 데이터 를 옮기거나, 計算 結果를 貯藏하거나, 命令의 흐름을 變更하는 等의)을 遂行하도록 한다.

소프트웨어 製作 [ 編輯 ]

소프트웨어는 프로그래밍 言語 와 關聯 유틸리티를 使用하여 製作되는데, 다음과 같은 몇 가지 形態가 있다.

컴퓨터 프로그래밍 , 소프트웨어 工學 , 소프트웨어 構造 , SaaS 도 參照하라.

소프트웨어 製作 때는 다음과 같은 컴퓨터 言語 가 쓰인다.

餘談이지만 三星 스마트폰의 터치 위즈를 構成하는 소프트웨어는 파이썬 (Python) 으로 製作 되었다.

그리고 소프트웨어 製作할 때 쓰이는 프로그램은 다음과 같다.

노크드* 는 컴퓨터 프로그래밍 言語를 全혀 몰라도 소프트웨어 製作이 可能한 프로그램이다

소프트웨어 特許 [ 編輯 ]

소프트웨어 特許 에 對해서는 贊反이 엇갈린다. 特許가 " 發明者 "의 아이디어를 保護하는 反面에, 많은 이들이 이것이 소프트웨어 開發 을 妨害한다고 믿기 때문이다.

法學的 觀點에서의 소프트웨어 [ 編輯 ]

大韓民國의 소프트웨어産業振興法에서는 소프트웨어를 " 컴퓨터 · 通信 ·自動化 等의 裝備와 그 周邊裝置에 對하여 命令·制御·入力·處理·貯藏·出力·相互 作用이 可能하도록 만드는 指示·命令(音聲이나 映像情報를 包含한다)의 集合과 이를 作成하기 위하여 使用된 技術書 其他 關聯 資料를 말한다."라고 定義한다.(법 第2條 1號)

소프트웨어 라이선스 [ 編輯 ]

소프트웨어에는 여러 種類의 라이선스 形態가 있다. 크게는 다음과 같이 나뉜다.

  1. 프리웨어 (freeware): 製作者가 라이선스만 지키면 마음껏 使用해도 된다.
  2. 셰어웨어 (shareware): 普通 30日 동안 소프트웨어를 正式 버전과 같은 機能을 使用할 수 있다.
    60日이나 90日 동안 使用할 수 있는 셰어웨어度 있다. 데모버전이라고도 한다.
  3. 常用 소프트웨어 (Commercial Software): 돈을 支拂하고 使用權을 購買해서 使用해야하는 소프트웨어 라이선스의 한 分類이다. 企業에서 製作하는 大部分의 소프트웨어가 常用 소프트웨어에 屬한다. 例로는 Microsoft의 Office, Oracle의 Oracle DB等이 있다. 常用 소프트웨어는 다시 Node locked license, floating license, per user license, per machine license와 같이 나뉠 수 있다.

開發 段階에 따른 소프트웨어 分類 [ 編輯 ]

소프트웨어 開發 段階에 따라 分類를 나눌 수 있다. 소프트웨어 配布者에 따라 이 소프트웨어 分類는 바뀔 수 있지만 一般的인 룰은 다음과 같다.

  1. 알파 버전: 開發 週期에서 알파 버전의 境遇 內部 테스트用으로 公開하는 境遇가 많다. 거의 모든 主要 機能을 包含하고 있지만 많은 버그가 存在하고 實際 使用者가 導入해서 使用하기에는 無理가 있는 버전을 말한다. 베타 버전 以前의 段階이다.
  2. 베타 버전: 베타 버전의 境遇 알파에서 나온 問題點들을 修正한 段階이고 外部로 公開 테스트를 始作할 수 있을 程度의 完成度를 가진 소프트웨어를 말한다. 以後로는 새로운 機能보다는 나온 問題點들을 修正하고 UI를 最適化하는 作業을 進行한다.
  3. RC (Release Candidate): RC는 Microsoft에서 使用하는 소프트웨어 開發 段階로 正式版이 配布되기 直前의 段階로 볼 수 있다. 一般的으로 베타와 正式 配布版의 中間段階에 該當한다.
  4. Nightly build: 每日 發生하는 소프트웨어에 對한 修訂事項을 包含하고 있는 소프트웨어 配布버전이다. 소프트웨어는 테스트가 되어 있지 않을 수 있기 때문에 매우 不安定한 狀態이다.
  5. 正式 버전

같이 보기 [ 編輯 ]

各州 [ 編輯 ]

  1. IBM. “What is Software Development” . 《IBM》. IBM . 2021年 10月 4日에 確認함 .  
  2. Johnson, Dave. “What is Software” . 《Business Insider》. Business Insider . 2021年 10月 4日에 確認함 .  
  3. “Compiler construction” . 2 November 2013에 原本 文書 에서 保存된 文書.  

外部 링크 [ 編輯 ]