소프트웨어
컴퓨터 소프트웨어(computer software, 혹은 간단히 소프트웨어, 문화어: 쏘프트웨어, 순화 용어: 무른모)는 컴퓨터의 실행을 지시하는 컴퓨터 프로그램들로 구성된다.[1] 소프트웨어에는 설계 문서 및 사양도 포함된다.
소프트웨어의 역사는 20세기 중반 디지털 컴퓨터의 발전과 밀접하게 연관되어 있다. 초기 프로그램은 하드웨어에 특화된 기계어로 작성되었다. 1958년 고급 프로그래밍 언어의 도입으로 사람이 더 읽기 쉬운 명령어가 가능해져 소프트웨어 개발이 쉬워지고 다양한 컴퓨터 구조 간 이식성이 향상되었다. 프로그래밍 언어로 작성된 소프트웨어는 컴파일러나 인터프리터를 통해 해당 아키텍처의 하드웨어에서 실행된다. 시간이 지남에 따라 컴퓨터 망, 운영체제 및 데이터베이스의 발전으로 소프트웨어는 복잡해졌다.
소프트웨어는 일반적으로 두 가지 주요 유형으로 분류할 수 있다.
클라우드 컴퓨팅의 부상으로 새로운 소프트웨어 전달 모델인 서비스형 소프트웨어(SaaS)가 도입되었다. SaaS에서는 애플리케이션이 애플리케이션 서비스 제공자에 의해 호스팅되고 HTTP를 통해 인터넷으로 접근된다.
소프트웨어 개발 과정은 여러 단계를 거친다. 이 단계에는 소프트웨어 설계, 컴퓨터 프로그래밍, 소프트웨어 테스트, 소프트웨어 배포 생명 주기, 그리고 소프트웨어 유지보수가 포함된다. 소프트웨어 품질보증과 정보 보안은 소프트웨어 개발의 핵심 측면인데, 소프트웨어 버그와 보안 취약점이 시스템 오류와 보안 침해로 이어질 수 있기 때문이다. 또한 소프트웨어 라이선스 및 지적 재산권과 같은 법적 문제는 소프트웨어 제품 배포에 중요한 역할을 한다.
역사
컴퓨터 프로그램을 설명하는 '소프트웨어'라는 단어의 첫 사용은 1958년 수학자 존 투키의 공로로 알려져 있다.[3][4] 1940년대 후반에 등장한 최초의 프로그래밍 가능한 컴퓨터는[5] 기계어로 프로그래밍되었다. 기계어는 디버그하기 어렵고 다른 컴퓨터 간에 이식성이 없다.[6] 처음에는 하드웨어 자원이 인적자원보다 더 비쌌다.[7] 프로그램이 복잡해지면서 프로그래머 생산성이 병목 현상이 되었다. 1958년 고급 프로그래밍 언어의 도입은 하드웨어의 세부 사항을 추상화하고 기본 알고리즘을 코드로 표현했다.[8][9] 초기 언어에는 포트란, 리스프, 코볼이 있다.[9]
유형
소프트웨어에는 두 가지 주요 유형이 있다.
- 운영체제는 "컴퓨터의 자원을 사용자와 응용 소프트웨어를 위해 관리하는 소프트웨어 계층"이다.[10] 운영체제가 수행하는 세 가지 주요 목적이 있다.[11]
- 응용 소프트웨어는 운영체제 위에 실행되며 컴퓨터의 자원을 사용하여 작업을 수행한다.[14] 현대 컴퓨터로 수행할 수 있는 작업의 범위가 매우 넓기 때문에 다양한 유형의 응용 소프트웨어가 존재한다.[15] 애플리케이션은 대부분의 소프트웨어를 차지하며[16] 작동하려면 운영체제가 제공하는 운영 환경과 종종 다른 애플리케이션이 필요하다.[17]
소프트웨어는 소프트웨어 전개 방식에 따라 분류할 수도 있다. 전통적인 애플리케이션은 특정 버전의 소프트웨어에 대한 영구적인 라이선스와 함께 구매하여 다운로드한 후 구매자의 하드웨어에서 실행된다.[18] 인터넷과 클라우드 컴퓨팅의 부상으로 서비스형 소프트웨어(SaaS)라는 새로운 모델이 가능해졌다.[19] SaaS에서는 공급자가 소프트웨어를 호스팅하고(보통 임대된 서비스형 인프라스트럭처나 서비스형 플랫폼 위에 구축됨)[20] 고객에게 소프트웨어 사용을 제공하며, 종종 구독료를 받는다.[18] 2023년까지 주로 웹 애플리케이션을 통해 제공되는 SaaS 제품은 기업이 애플리케이션을 제공하는 주요 방법이 되었다.[21]
소프트웨어 개발 및 유지보수
소프트웨어 회사는 예산 범위 내에서 제시간에 고품질 제품을 제공하는 것을 목표로 한다. 한 가지 과제는 소프트웨어 개발 노력 추정이 종종 부정확하다는 것이다.[22] 소프트웨어 개발은 프로젝트를 구상하고, 타당성을 평가하고, 비즈니스 요구사항을 분석하고, 소프트웨어 설계를 하는 것으로 시작된다.[23][24] 대부분의 소프트웨어 프로젝트는 재사용하거나 기존 소프트웨어( 상용 기성품 (COTS) 또는 오픈 소스 소프트웨어 형태)를 통합하여 개발 속도를 높인다.[25][26] 소프트웨어 품질보증은 일반적으로 다른 엔지니어에 의한 수동 코드 검토와[27] 자동화된 소프트웨어 테스트의 조합이다. 시간 제약으로 인해 테스트는 소프트웨어의 의도된 기능의 모든 측면을 포괄할 수 없으므로 개발자는 종종 가장 중요한 기능에 중점을 둔다.[28] 정형 기법은 일부 안전 필수 시스템에서 코드의 정확성을 증명하는 데 사용되며,[29] 사용자 인수 테스트는 제품이 고객 기대를 충족하는지 확인하는 데 도움이 된다.[30] 소프트웨어 개발 방법론은 모든 단계를 순차적으로 완료하는 모델부터 동시적이고 반복적인 모델까지 다양하다.[31] 소프트웨어 개발은 잠재적 사용자로부터 얻은 소프트웨어 요구사항에 의해 추진되는 반면, 유지보수는 변경 요청과 같은 이벤트에 의해 추진된다.[32]
종종 소프트웨어는 개발 팀이 시간이나 자금이 부족할 때 불완전한 상태로 배포된다.[33] 소프트웨어 테스트 및 소프트웨어 품질보증에도 불구하고 거의 모든 소프트웨어에는 시스템이 의도한 대로 작동하지 않는 소프트웨어 버그가 포함되어 있다. 출시 후 소프트웨어 유지보수는 이러한 버그가 발견될 때 수정하고 시간이 지남에 따라 환경이 변함에 따라 소프트웨어를 계속 작동시키는 데 필요하다.[34] 새로운 기능은 종종 출시 후에 추가된다. 시간이 지남에 따라 유지보수 수준은 점차 제한되다가 제품이 시장에서 철수되면 완전히 중단된다.[35] 소프트웨어가 노화됨에 따라 레거시 소프트웨어로 알려지게 되며, 이를 수정하는 방법을 아는 사람이 아무도 없더라도 수십 년 동안 계속 사용될 수 있다.[36] 제품의 수명 주기 동안 소프트웨어 유지보수는 전체 개발 비용의 75% 이상을 차지하는 것으로 추정된다.[37][38]
소프트웨어 프로젝트를 완료하려면 소프트웨어 프로그래머뿐만 아니라 테스트, 문서 작성, 소프트웨어 프로젝트 관리, 그래픽 디자인, 사용자 경험, 사용자 지원, 마케팅 및 자금 조달에 대한 다양한 전문 지식이 필요하다.[39][40][24]
품질 및 보안
소프트웨어 품질은 명시된 요구사항과 고객 기대를 충족하는 것으로 정의된다.[41] 품질은 코드의 올바르고 효율적인 동작, 재사용성 및 이식성, 또는 수정 용이성을 나타낼 수 있는 포괄적인 용어이다.[42] 개발 과정의 후반부에 품질을 추가하려고 시도하기보다는 처음부터 제품에 품질을 구축하는 것이 일반적으로 더 비용 효율적이다.[43] 고품질 코드는 신뢰성이 높고 유지보수가 더 쉽기 때문에 공급업체와 고객 모두에게 평생 비용을 줄여준다.[44][45] 안전 필수 시스템의 소프트웨어 오류는 사망을 포함하여 매우 심각할 수 있다.[44] 일부 추정치에 따르면, 낮은 품질의 소프트웨어로 인한 비용은 매출의 20%에서 40%에 달할 수 있다.[46] 개발자들이 의도한 대로 완벽하게 작동하는 제품을 제공하려는 목표에도 불구하고, 거의 모든 소프트웨어에는 버그가 포함되어 있다.[47]
인터넷의 부상은 악의적인 행위자가 원격으로 사이버 공격을 수행할 수 있도록 하여 컴퓨터 보안의 필요성을 크게 증가시켰다.[48][49] 버그가 보안 위험을 생성하는 경우 이를 취약점이라고 한다.[50][51] 식별된 취약점을 수정하기 위해 소프트웨어 패치가 종종 릴리스되지만, 알려지지 않은 취약점(제로 데이)과 패치되지 않은 취약점은 여전히 악용될 수 있다.[52] 취약점은 악의적인 행위자에 의해 악용될 수 있는 능력에 따라 다르며,[50] 실제 위험은 취약점의 특성과 주변 시스템의 가치에 따라 달라진다.[53] 일부 취약점은 시스템 가용성을 손상시키는 서비스 거부 공격에만 사용될 수 있지만, 다른 취약점은 공격자가 사용자 모르게 자신의 코드를(악성 소프트웨어라고 함) 주입하고 실행할 수 있도록 허용한다.[50] 사이버 공격을 저지하기 위해 시스템의 모든 소프트웨어는 외부 공격에 견디고 복구할 수 있도록 설계되어야 한다.[49] 보안을 보장하려는 노력에도 불구하고 상당수의 컴퓨터가 악성 소프트웨어에 감염되어 있다.[54]
인코딩 및 실행
프로그래밍 언어
프로그래밍 언어는 소프트웨어가 작성되는 형식이다. 1950년대 이후 수천 가지의 다양한 프로그래밍 언어가 발명되었으며, 일부는 수십 년 동안 사용되었지만 다른 언어는 더 이상 사용되지 않게 되었다.[55] 일부 정의는 하드웨어에 의해 직접 구현되는 정확한 명령어인 기계어와 기계어의 보다 사람이 읽기 쉬운 대안이며, 그 문장을 기계어로 일대일로 번역할 수 있는 어셈블리어를 프로그래밍 언어로 분류한다.[56] 소프트웨어 생성에 사용되는 고급 프로그래밍 언어로 작성된 프로그램은 몇 가지 주요 특징을 공유한다. 즉, 프로그램을 작성하는 데 기계어 지식이 필요하지 않으며, 다른 컴퓨터 시스템으로 이식될 수 있고, 기계어보다 더 간결하고 사람이 읽기 쉽다.[57] 이들은 사람이 읽을 수 있어야 하며 컴퓨터 하드웨어에 대한 명확한 명령으로 번역될 수 있어야 한다.[58]
컴파일, 해석 및 실행
고급 프로그래밍 언어의 발명은 이를 자동으로 기계어로 번역하는 데 필요한 컴파일러와 동시에 이루어졌다.[59] 대부분의 프로그램은 실행하는 데 필요한 모든 자원을 포함하지 않으며 외부 소프트웨어 라이브러리에 의존한다. 컴파일러의 기능 중 일부는 프로그램이 하드웨어에 의해 실행될 수 있도록 이러한 파일을 연결하는 것이다. 일단 컴파일되면 프로그램은 오브젝트 파일로 저장될 수 있으며 로더(운영체제의 일부)는 이 저장된 파일을 가져와 컴퓨터 하드웨어에서 프로세스로 실행할 수 있다.[60] 일부 프로그래밍 언어는 컴파일러 대신 인터프리터를 사용한다. 인터프리터는 실행 시점에 프로그램을 기계어로 변환하며, 이로 인해 컴파일된 프로그래밍 언어보다 10배에서 100배 느려진다.[61][62]
법적 문제
책임
소프트웨어는 종종 불완전하거나 버그를 포함하고 있다는 사실을 인지한 상태에서 출시된다. 구매자들은 이러한 상태의 소프트웨어를 인지하고 구매하며, 이는 다른 제품에 비해 소프트웨어 제품에 대한 책임이 현저히 제한되는 법적 체제로 이어졌다.[63]
라이선스
1970년대 중반 이래로 소프트웨어와 그 소스 코드는 코드 복제에 대한 독점적 권리를 소유자에게 부여하는 저작권법에 의해 보호되어 왔다. 기본 아이디어나 알고리즘은 저작권법에 의해 보호되지 않지만, 때로는 영업 비밀로 취급되어 기밀유지 협약과 같은 방법으로 감춰진다.[64] 소프트웨어 저작권은 종종 소프트웨어에 자금을 조달하거나 소프트웨어를 제작한 사람이나 회사(직원 또는 계약자와의 계약에 따라 다름)가 소유한다.[65] 일부 소프트웨어는 퍼블릭 도메인에 속하며, 누가 사용하고, 복사하거나 공유하고, 수정할 수 있는지에 대한 제한이 없다. 대표적인 예는 미국 연방정부가 작성한 소프트웨어이다. 자유-오픈 소스 소프트웨어 또한 몇 가지 지정된 조건을 제외하고 자유로운 사용, 공유 및 수정을 허용한다.[65] 일부 소프트웨어의 사용은 저작권 보유자가 작성하고 사용자에게 부과하는 계약(소프트웨어 사용권)에 의해 규제된다. 사유 소프트웨어는 일반적으로 사용 및 공유를 제한하는 제한적인 라이선스 하에 판매된다.[66] 일부 자유 소프트웨어 라이선스는 수정된 버전이 동일한 라이선스 하에 출시되어야 한다고 요구하며, 이는 소프트웨어가 사유 제한 하에 판매되거나 배포되는 것을 방지한다.[67]
특허
특허는 발명가에게 새로운 제품이나 공정에 대한 독점적이고 기간 제한적인 라이선스를 부여한다.[68] 소프트웨어가 무엇을 달성할 수 있는지에 대한 아이디어는 법으로 보호되지 않으며, 구체적인 구현은 대신 저작권법의 적용을 받는다. 일부 국가에서는 특허를 유효하게 유지하기 위한 요건 중 하나로, 청구된 발명이 물리적 세계에 영향을 미쳐야 한다는 조건이 포함될 수도 있다.[69] 소프트웨어 특허는 역사적으로 논란이 많았다. 1998년 State Street Bank & Trust Co. v. Signature Financial Group, Inc. 사건 이전에는 소프트웨어 특허가 미국에서 일반적으로 인정되지 않았다. 해당 사건에서 미국 연방 대법원은 비즈니스 프로세스도 특허를 받을 수 있다고 판결했다.[70] 특허 출원은 복잡하고 비용이 많이 들며, 특허와 관련된 소송은 제품 비용을 증가시킬 수 있다.[71] 저작권과 달리 특허는 일반적으로 발행된 관할 구역에서만 적용된다.[72]
영향
엔지니어 Capers Jones는 "컴퓨터와 소프트웨어는 교육, 직업, 전쟁, 엔터테인먼트, 의학, 법률 등 인간 생활의 모든 측면에 깊은 변화를 가져오고 있다"고 썼다.[74] 소프트웨어는 선진국의 일상생활에 보편화되었다.[75] 많은 경우 소프트웨어는 가정용 가전제품과 엘리베이터와 같은 기존 기술의 기능을 증강시킨다.[76] 소프트웨어는 또한 인터넷, 비디오 게임, 휴대 전화, GPS와 같은 완전히 새로운 기술을 탄생시켰다.[76][77] 전자우편, 인터넷 포럼, 블로그, 마이크로블로그, 위키, 소셜 미디어를 포함한 새로운 통신 방식은 인터넷에 의해 가능해졌다.[78] 어떤 종이 기반 도서관보다 방대한 양의 지식을 이제 빠른 웹 검색으로 이용할 수 있다.[77] 대부분의 창조적인 전문가들은 컴퓨터 지원 설계, 3차원 모델링, 디지털 이미지 편집, 컴퓨터 애니메이션과 같은 소프트웨어 기반 도구로 전환했다.[73] 거의 모든 복잡한 장치는 소프트웨어로 제어된다.[77]
각주
- ↑ Stair, Ralph M. (2003). 《Principles of Information Systems, Sixth Edition》. Thomson. 16쪽. ISBN 0-619-06489-7.
Software consists of computer programs that govern the operation of the computer.
- ↑ Jones 2014, 19, 22쪽.
- ↑ Tracy 2021, 2쪽.
- ↑ 〈software (n.), sense 2.a〉. 《Oxford English dictionary》. Oxford University Press. 2024. doi:10.1093/OED/3803978366. 2025년 7월 15일에 확인함.
- ↑ Gabbrielli & Martini 2023, 519쪽.
- ↑ Gabbrielli & Martini 2023, 520–521쪽.
- ↑ Gabbrielli & Martini 2023, 522쪽.
- ↑ Gabbrielli & Martini 2023, 521쪽.
- ↑ 가 나 Tracy 2021, 1쪽.
- ↑ Anderson & Dahlin 2014, 6쪽.
- ↑ 가 나 다 Anderson & Dahlin 2014, 7쪽.
- ↑ Tanenbaum & Bos 2023, 5쪽.
- ↑ Anderson & Dahlin 2014, 7, 9, 13쪽.
- ↑ Anderson & Dahlin 2014, 6–7쪽.
- ↑ Jones 2014, 121쪽.
- ↑ Tracy 2021, 66쪽.
- ↑ Tracy 2021, 72쪽.
- ↑ 가 나 O'Regan 2022, 386쪽.
- ↑ Campbell-Kelly & Garcia-Swartz 2015, 156–157쪽.
- ↑ Rosati & Lynn 2020, 23쪽.
- ↑ Watt 2023, 4쪽.
- ↑ O'Regan 2022, 7쪽.
- ↑ O'Regan 2022, 5쪽.
- ↑ 가 나 Dooley 2017, 1쪽.
- ↑ O'Regan 2022, 18, 110–111쪽.
- ↑ Tracy 2021, 43, 76쪽.
- ↑ O'Regan 2022, 117–118쪽.
- ↑ O'Regan 2022, 54쪽.
- ↑ O'Regan 2022, 267쪽.
- ↑ O'Regan 2022, 20쪽.
- ↑ O'Regan 2022, 9쪽.
- ↑ Tripathy & Naik 2014, 26쪽.
- ↑ Reifer 2012, 22쪽.
- ↑ Tripathy & Naik 2014, 4, 27쪽.
- ↑ Tripathy & Naik 2014, 89쪽.
- ↑ Tracy 2021, 3쪽.
- ↑ Varga 2018, 6쪽.
- ↑ Ulziit et al. 2015, 764쪽.
- ↑ Tucker, Morelli & de Silva 2011, 7쪽.
- ↑ Stull 2018, 24–25쪽.
- ↑ Galin 2018, 3쪽.
- ↑ Galin 2018, 26쪽.
- ↑ O'Regan 2022, 68, 117쪽.
- ↑ 가 나 O'Regan 2022, 3, 268쪽.
- ↑ Varga 2018, 12쪽.
- ↑ O'Regan 2022, 119쪽.
- ↑ Ablon & Bogart 2017, 1쪽.
- ↑ Campbell-Kelly & Garcia-Swartz 2015, 164쪽.
- ↑ 가 나 O'Regan 2022, 266쪽.
- ↑ 가 나 다 Ablon & Bogart 2017, 2쪽.
- ↑ Daswani & Elbayadi 2021, 25쪽.
- ↑ Daswani & Elbayadi 2021, 26–27쪽.
- ↑ Haber & Hibbert 2021, 5–6쪽.
- ↑ Kitchin & Dodge 2011, 37쪽.
- ↑ Tracy 2021, 117쪽.
- ↑ Tracy 2021, 118–120쪽.
- ↑ Tracy 2021, 118–119쪽.
- ↑ Kitchin & Dodge 2011, 26쪽.
- ↑ Tracy 2021, 121쪽.
- ↑ Tracy 2021, 122–123쪽.
- ↑ O'Regan 2022, 375쪽.
- ↑ Sebesta 2012, 28쪽.
- ↑ Kitchin & Dodge 2011, 36–37쪽.
- ↑ O'Regan 2022, 394–396쪽.
- ↑ 가 나 O'Regan 2022, 403쪽.
- ↑ O'Regan 2022, 394, 404쪽.
- ↑ Langer 2016, 44–45쪽.
- ↑ O'Regan 2022, 395쪽.
- ↑ Gerardo Con Díaz, "The Text in the Machine: American Copyright Law and the Many Natures of Software, 1974–1978", Technology and Culture 57 (October 2016), 753–79.
- ↑ Jones 2014, 19쪽.
- ↑ O'Regan 2022, 398쪽.
- ↑ O'Regan 2022, 399쪽.
- ↑ 가 나 Manovich 2013, 333쪽.
- ↑ Jones 2014, 32쪽.
- ↑ Kitchin & Dodge 2011, iv쪽.
- ↑ 가 나 Kitchin & Dodge 2011, 5쪽.
- ↑ 가 나 다 Jones 2014, xxviii쪽.
- ↑ Manovich 2013, 329쪽.
참고 문헌
- Ablon, Lillian; Bogart, Andy (2017). 《Zero Days, Thousands of Nights: The Life and Times of Zero-Day Vulnerabilities and Their Exploits》 (PDF) (영어). Rand Corporation. ISBN 978-0-8330-9761-3.
- Anderson, Thomas; Dahlin, Michael (2014). 《Operating Systems: Principles and Practice》 2판 (영어). Recursive Books. ISBN 978-0-9856735-2-9.
- Campbell-Kelly, Martin; Garcia-Swartz, Daniel D. (2015). 《From Mainframes to Smartphones: A History of the International Computer Industry》 (영어). Harvard University Press. ISBN 978-0-674-28655-9.
- Daswani, Neil; Elbayadi, Moudy (2021). 《Big Breaches: Cybersecurity Lessons for Everyone》. Apress. ISBN 978-1-4842-6654-0.
- Dooley, John F. (2017). 《Software Development, Design and Coding: With Patterns, Debugging, Unit Testing, and Refactoring》 (영어). Apress. ISBN 978-1-4842-3153-1.
- Gabbrielli, Maurizio; Martini, Simone (2023). 《Programming Languages: Principles and Paradigms》 2판 (영어). Springer. ISBN 978-3-031-34144-1.
- Galin, Daniel (2018). 《Software Quality: Concepts and Practice》 (영어). John Wiley & Sons. ISBN 978-1-119-13449-7.
- Haber, Morey J.; Hibbert, Brad (2018). 《Asset Attack Vectors: Building Effective Vulnerability Management Strategies to Protect Organizations》 (영어). Apress. ISBN 978-1-4842-3627-7.
- Jones, Capers (2014). 《The Technical and Social History of Software Engineering》 (영어). Pearson Education. ISBN 978-0-321-90342-6.
- Kitchin, Rob; Dodge, Martin (2011). 《Code/space: Software and Everyday Life》 (영어). MIT Press. ISBN 978-0-262-04248-2.
- Langer, Arthur M. (2016). 《Guide to Software Development: Designing and Managing the Life Cycle》 (영어). Springer. ISBN 978-1-4471-6799-0.
- Manovich, Lev (2013). 《Software Takes Command》 (영어). Bloomsbury Academic. ISBN 978-1-62356-745-3.
- O'Regan, Gerard (2022). 《Concise Guide to Software Engineering: From Fundamentals to Application Methods》 (영어). Springer Nature. ISBN 978-3-031-07816-3.
- Osterweil, Leon J. (2013). 〈What Is Software? The Role of Empirical Methods in Answering the Question〉 (영어). 《Perspectives on the Future of Software Engineering: Essays in Honor of Dieter Rombach》. Springer. 237–254쪽. ISBN 978-3-642-37395-4.
- Rahman, Hanif Ur; da Silva, Alberto Rodrigues; Alzayed, Asaad; Raza, Mushtaq (2024). 《A Systematic Literature Review on Software Maintenance Offshoring Decisions》. 《Information and Software Technology》 172. doi:10.1016/j.infsof.2024.107475.
- Reifer, Donald J. (2012). 《Software Maintenance Success Recipes》 (영어). CRC Press. ISBN 978-1-4398-5167-8.
- Rosati, Pierangelo; Lynn, Theo (2020). 〈Measuring the Business Value of Infrastructure Migration to the Cloud〉 (영어). 《Measuring the Business Value of Cloud Computing》. Springer International Publishing. 19–37쪽. ISBN 978-3-030-43198-3.
- Sebesta, Robert W. (2012). 《Concepts of Programming Languages》 10판 (영어). Addison-Wesley. ISBN 978-0-13-139531-2.
- Stull, Edward (2018). 《UX Fundamentals for Non-UX Professionals: User Experience Principles for Managers, Writers, Designers, and Developers》 (영어). Apress. ISBN 978-1-4842-3811-0.
- Tanenbaum, Andrew S.; Bos, Herbert (2023). 《Modern Operating Systems, Global Edition》 (영어). Pearson Higher Ed. ISBN 978-1-292-72789-9.
- Tracy, Kim W. (2021). 《Software: A Technical History》 (영어). Morgan & Claypool Publishers. ISBN 978-1-4503-8724-8.
- Tripathy, Priyadarshi; Naik, Kshirasagar (2014). 《Software Evolution and Maintenance: A Practitioner's Approach》 (영어). John Wiley & Sons. ISBN 978-0-470-60341-3.
- Tucker, Allen; Morelli, Ralph; de Silva, Chamindra (2011). 《Software Development: An Open Source Approach》 (영어). CRC Press. ISBN 978-1-4398-8460-7.
- Ulziit, Bayarbuyan; Warraich, Zeeshan Akhtar; Gencel, Cigdem; Petersen, Kai (2015). 《A conceptual framework of challenges and solutions for managing global software maintenance》. 《Journal of Software: Evolution and Process》 27. 763–792쪽. doi:10.1002/smr.1720.
- Watt, Andy (2023). 《Building Modern SaaS Applications with C# And . NET: Build, Deploy, and Maintain Professional SaaS Applications》 (영어). Packt. ISBN 978-1-80461-087-9.
- Varga, Ervin (2018). 《Unraveling Software Maintenance and Evolution: Thinking Outside the Box》 (영어). Springer. ISBN 978-3-319-71303-8.
모듈:Authority_control 159번째 줄에서 Lua 오류: attempt to index field 'wikibase' (a nil value).
- Harv 및 Sfn에 대상이 없는 오류가 있는 문서
- 스크립트 오류가 있는 문서
- 잘못된 파일 링크가 포함된 문서
- 영어 표기를 포함한 문서
- 문화어 표기를 포함한 문서
- 존재하지 않는 문서를 대상으로 하는 hatnote 틀을 사용하는 문서
- CS1 - 영어 인용 (en)
- 인용 오류 - 지원되지 않는 변수 무시됨
- 위키데이터 속성 P18을 사용하는 문서
- 위키데이터 속성 P41을 사용하는 문서
- 위키데이터 속성 P94를 사용하는 문서
- 위키데이터 속성 P117을 사용하는 문서
- 위키데이터 속성 P154를 사용하는 문서
- 위키데이터 속성 P213을 사용하는 문서
- 위키데이터 속성 P227을 사용하는 문서
- 위키데이터 속성 P242를 사용하는 문서
- 위키데이터 속성 P244를 사용하는 문서
- 위키데이터 속성 P245를 사용하는 문서
- 위키데이터 속성 P268을 사용하는 문서
- 위키데이터 속성 P269를 사용하는 문서
- 위키데이터 속성 P271을 사용하는 문서
- 위키데이터 속성 P347을 사용하는 문서
- 위키데이터 속성 P349를 사용하는 문서
- 위키데이터 속성 P350을 사용하는 문서
- 위키데이터 속성 P373을 사용하는 문서
- 위키데이터 속성 P380을 사용하는 문서
- 위키데이터 속성 P396을 사용하는 문서
- 위키데이터 속성 P409를 사용하는 문서
- 위키데이터 속성 P428을 사용하는 문서
- 위키데이터 속성 P434를 사용하는 문서
- 위키데이터 속성 P435를 사용하는 문서
- 위키데이터 속성 P436을 사용하는 문서
- 위키데이터 속성 P454를 사용하는 문서
- 위키데이터 속성 P496을 사용하는 문서
- 위키데이터 속성 P549를 사용하는 문서
- 위키데이터 속성 P650을 사용하는 문서
- 위키데이터 속성 P651을 사용하는 문서
- 위키데이터 속성 P691을 사용하는 문서
- 위키데이터 속성 P716을 사용하는 문서
- 위키데이터 속성 P781을 사용하는 문서
- 위키데이터 속성 P791을 사용하는 문서
- 위키데이터 속성 P864를 사용하는 문서
- 위키데이터 속성 P865를 사용하는 문서
- 위키데이터 속성 P886을 사용하는 문서
- 위키데이터 속성 P902를 사용하는 문서
- 위키데이터 속성 P906을 사용하는 문서
- 위키데이터 속성 P947을 사용하는 문서
- 위키데이터 속성 P950을 사용하는 문서
- 위키데이터 속성 P966을 사용하는 문서
- 위키데이터 속성 P982를 사용하는 문서
- 위키데이터 속성 P1003을 사용하는 문서
- 위키데이터 속성 P1004를 사용하는 문서
- 위키데이터 속성 P1005를 사용하는 문서
- 위키데이터 속성 P1006을 사용하는 문서
- 위키데이터 속성 P1015를 사용하는 문서
- 위키데이터 속성 P1045를 사용하는 문서
- 위키데이터 속성 P1048을 사용하는 문서
- 위키데이터 속성 P1053을 사용하는 문서
- 위키데이터 속성 P1146을 사용하는 문서
- 위키데이터 속성 P1153을 사용하는 문서
- 위키데이터 속성 P1157을 사용하는 문서
- 위키데이터 속성 P1186을 사용하는 문서
- 위키데이터 속성 P1225를 사용하는 문서
- 위키데이터 속성 P1248을 사용하는 문서
- 위키데이터 속성 P1273을 사용하는 문서
- 위키데이터 속성 P1315를 사용하는 문서
- 위키데이터 속성 P1323을 사용하는 문서
- 위키데이터 속성 P1330을 사용하는 문서
- 위키데이터 속성 P1362를 사용하는 문서
- 위키데이터 속성 P1368을 사용하는 문서
- 위키데이터 속성 P1375를 사용하는 문서
- 위키데이터 속성 P1407을 사용하는 문서
- 위키데이터 속성 P1556을 사용하는 문서
- 위키데이터 속성 P1584를 사용하는 문서
- 위키데이터 속성 P1695를 사용하는 문서
- 위키데이터 속성 P1707을 사용하는 문서
- 위키데이터 속성 P1736을 사용하는 문서
- 위키데이터 속성 P1886을 사용하는 문서
- 위키데이터 속성 P1890을 사용하는 문서
- 위키데이터 속성 P1907을 사용하는 문서
- 위키데이터 속성 P1908을 사용하는 문서
- 위키데이터 속성 P1960을 사용하는 문서
- 위키데이터 속성 P1986을 사용하는 문서
- 위키데이터 속성 P2041을 사용하는 문서
- 위키데이터 속성 P2163을 사용하는 문서
- 위키데이터 속성 P2174를 사용하는 문서
- 위키데이터 속성 P2268을 사용하는 문서
- 위키데이터 속성 P2349를 사용하는 문서
- 위키데이터 속성 P2418을 사용하는 문서
- 위키데이터 속성 P2456을 사용하는 문서
- 위키데이터 속성 P2484를 사용하는 문서
- 위키데이터 속성 P2558을 사용하는 문서
- 위키데이터 속성 P2750을 사용하는 문서
- 위키데이터 속성 P2980을 사용하는 문서
- 위키데이터 속성 P3223을 사용하는 문서
- 위키데이터 속성 P3233을 사용하는 문서
- 위키데이터 속성 P3348을 사용하는 문서
- 위키데이터 속성 P3372를 사용하는 문서
- 위키데이터 속성 P3407을 사용하는 문서
- 위키데이터 속성 P3430을 사용하는 문서
- 위키데이터 속성 P3544를 사용하는 문서
- 위키데이터 속성 P3562를 사용하는 문서
- 위키데이터 속성 P3563을 사용하는 문서
- 위키데이터 속성 P3601을 사용하는 문서
- 위키데이터 속성 P3723을 사용하는 문서
- 위키데이터 속성 P3788을 사용하는 문서
- 위키데이터 속성 P3829를 사용하는 문서
- 위키데이터 속성 P3863을 사용하는 문서
- 위키데이터 속성 P3920을 사용하는 문서
- 위키데이터 속성 P3993을 사용하는 문서
- 위키데이터 속성 P4038을 사용하는 문서
- 위키데이터 속성 P4055를 사용하는 문서
- 위키데이터 속성 P4114를 사용하는 문서
- 위키데이터 속성 P4143을 사용하는 문서
- 위키데이터 속성 P4186을 사용하는 문서
- 위키데이터 속성 P4423을 사용하는 문서
- 위키데이터 속성 P4457을 사용하는 문서
- 위키데이터 속성 P4534를 사용하는 문서
- 위키데이터 속성 P4535를 사용하는 문서
- 위키데이터 속성 P4581을 사용하는 문서
- 위키데이터 속성 P4613을 사용하는 문서
- 위키데이터 속성 P4955를 사용하는 문서
- 위키데이터 속성 P5034를 사용하는 문서
- 위키데이터 속성 P5226을 사용하는 문서
- 위키데이터 속성 P5288을 사용하는 문서
- 위키데이터 속성 P5302를 사용하는 문서
- 위키데이터 속성 P5321을 사용하는 문서
- 위키데이터 속성 P5368을 사용하는 문서
- 위키데이터 속성 P5504를 사용하는 문서
- 위키데이터 속성 P5587을 사용하는 문서
- 위키데이터 속성 P5736을 사용하는 문서
- 위키데이터 속성 P5818을 사용하는 문서
- 위키데이터 속성 P6213을 사용하는 문서
- 위키데이터 속성 P6734를 사용하는 문서
- 위키데이터 속성 P6792를 사용하는 문서
- 위키데이터 속성 P6804를 사용하는 문서
- 위키데이터 속성 P6829를 사용하는 문서
- 위키데이터 속성 P7293을 사용하는 문서
- 위키데이터 속성 P7303을 사용하는 문서
- 위키데이터 속성 P7314를 사용하는 문서
- 위키데이터 속성 P7902를 사용하는 문서
- 위키데이터 속성 P8034를 사용하는 문서
- 위키데이터 속성 P8189를 사용하는 문서
- 위키데이터 속성 P8381을 사용하는 문서
- 위키데이터 속성 P8671을 사용하는 문서
- 위키데이터 속성 P8980을 사용하는 문서
- 위키데이터 속성 P9070을 사용하는 문서
- 위키데이터 속성 P9692를 사용하는 문서
- 위키데이터 속성 P9725를 사용하는 문서
- 위키데이터 속성 P9984를 사용하는 문서
- 위키데이터 속성 P10020을 사용하는 문서
- 위키데이터 속성 P10299를 사용하는 문서
- 위키데이터 속성 P10608을 사용하는 문서
- 위키데이터 속성 P10832를 사용하는 문서
- 위키데이터 속성 P11249를 사용하는 문서
- 위키데이터 속성 P11646을 사용하는 문서
- 위키데이터 속성 P11729를 사용하는 문서
- 위키데이터 속성 P12204를 사용하는 문서
- 위키데이터 속성 P12362를 사용하는 문서
- 위키데이터 속성 P12754를 사용하는 문서
- 위키데이터 속성 P13049를 사용하는 문서
- 소프트웨어