소프트웨어는 컴퓨터가 일을 수행하도록 하는 프로그램과 관련 데이터 등을 가리킨다. 물리적인 장치인 하드웨어와 구분한다. ([NIST의 소프트웨어 용어 정의](https://csrc.nist.gov/glossary/term/software)) - 그림을 그리는 앱, [[웹 서버]], 운영 체제는 서로 다른 일을 맡는 소프트웨어다. 화면에 창이 보이지 않아도 실행되는 프로그램이 있다. - [[소스 코드]]를 갖고 있는 것과 바로 실행할 수 있는 것은 다르다. 언어와 배포 방식에 따라 컴파일이나 [[런타임]]이 필요하며, 실행 환경의 버전도 맞아야 한다. - 설치 파일, 작업 결과물, 설정과 문서를 구분해 보관하면 교체와 인수인계에 도움이 된다. 복사와 수정, 배포에 어떤 조건이 있는지는 [[라이선스]]에서 확인한다. ## 기타 등등 - NIST가 모은 정의 중에는 프로그램뿐 아니라 관련 문서도 소프트웨어의 범위에 넣는 정의가 있다. 설명서는 제품 바깥의 덤으로만 취급되지 않는다. [출처](https://csrc.nist.gov/glossary/term/software) - 파이선은 모듈을 불러오는 시간을 줄이기 위해 컴파일한 결과를 `__pycache__`에 저장할 수 있다. 원본을 수정하면 캐시가 오래되었는지도 확인한다. [출처](https://docs.python.org/3/tutorial/modules.html#compiled-python-files) #소프트웨어 #기초