현실에서 프로그래밍은 대규모로 이루어지는 경향이 있다.
프로그래밍에서 작업 하나의 크기는 보통 한 사람이 프로그래밍 언어로 정확한 처리 단계를 작성할 수 있는 정도다.
라이브러리, 인터페이스, 개발 키트
라이브러리 (library)
- 연관된 함수들의 모음
API (Application Programming Interface)
- 함수 라이브러리가 제공하는 서비스
- 포함하는 함수, 함수의 용도, 사용법, 입력 데이터의 형태, 만들어지는 값의 형태를 나열
- 시스템 내부에서 주고받는 데이터의 구조를 의미하는 자료 구조와 기타 세부사항 기술 가능
- 구문과 관련된 기본 명세 뿐만 아니라, 시스템을 효과적으로 사용하도록 돕는 지원 문서도 포함
SDK (Software Development Kit)
- 대규모 시스테이 프로그래머들이 복잡한 소프트웨어 라이브러리를 잘 다룰 수 있도록 포함하고 있는 것
- SDK 자체도 대형 소프트웨어 시스템
버그
크든 작든 모든 프로그램에는 결함이 있다.
버그를 일으키는 수많은 원인
- 발생할 수 있는 경우를 깜박하고 처리 못함
- 어떤 조건을 평가하기 위한 논리 테스트나 산술 테스트를 잘못 작성함
- 잘못된 공식을 사용함
- 프로그램이나 프로그램의 특정 부분에 할당된 영역 밖에 있는 메모리에 접근함
- 특정 종류의 데이터에 잘못된 연산을 적용함
- 사용자 입력이 적합한지 검사하지 못함
- 기타 등등...
테스트는 프로그래밍에서 큰 부분을 차지한다.
소프트웨어를 개발하는 기업에는 흔히 구현 코드보다 테스트 코드가 더 많고, 프로그래머보다 테스터가 더 많다.
버그는 시스템을 공격에 취약하게 만들기도 하는데, 버그 떄문에 종종 공격자가 메모리에 악성코드를 심어 놓기 쉬워지기도 한다.
업데이트가 잦다는 것은 그만큼 취약점이 널리 퍼져 있다는 것을 뜻한다.
끊임없는 변화에 뒤쳐지지 않고 따라가는 것은 소프트웨어 유지보수에서 매우 중요하며, 반드시 수행해야 하는 일이다.
한편으로는, 프로그램의 문제를 해결하려는 시도나 새 기능을 추가하려는 시도가 의도치 않게 새로운 버그를 만들어 내거나, 사용자에게 익숙한 방식을 바꾸어 버리는 결과를 낳기도 한다.
1일 1로그 100일 완성 IT 지식
복잡한 IT 세상을 선명하게 읽는 디지털 문해력 기르기 챌린지IT 지식은 분명 복잡하지만 인생처럼 혼잡하지는 않다. 필요한 지식을 습득하면 막연한 불안감에서 벗어나 디지털 지구가 제시하는
book.naver.com
'끄적끄적 > 책' 카테고리의 다른 글
[SOFTWARE 025] 다른 프로그램을 처리하기 위한 프로그램 (0) | 2022.08.26 |
---|---|
[SOFTWARE 018] 알고리즘과 초콜릿 케이크 레시피 (0) | 2022.08.19 |
[HARDWARE 016] 슈퍼컴퓨터부터 사물인터넷까지 (0) | 2022.08.18 |
[HARDWARE 015] 캐시가 뭔가요? (0) | 2022.08.15 |
[HARDWARE 014] 프로세서는 무조건 빠른 게 좋을까? (0) | 2022.08.04 |