저의 대답은 실제 비즈니스의 관점과 모든 개발 팀이 직면 한 과제에서 비롯됩니다. 이 질문과 많은 답변에서 볼 수있는 것은 실제로 결함 제어에 관한 것입니다.
코드에 버그가 없을 수 있습니다. 모든 프로그래밍 언어에 대한 "Hello World"코드 샘플을 가져 와서 원하는 플랫폼에서 실행하면 일관성있게 작동하며 원하는 결과를 얻을 수 있습니다. 버그가없는 코드의 불가능성에 대한 이론은 끝납니다.
논리가 복잡 해짐에 따라 잠재적 인 버그가 발생합니다. 간단한 Hello World 예제에는 논리가 없으며 매번 동일한 정적 작업을 수행합니다. 논리 중심의 동적 동작을 추가하자마자 복잡성이 발생하여 버그가 발생합니다. 로직 자체에 결함이 있거나 로직에 입력되는 데이터가 로직이 처리하지 않는 방식으로 달라질 수 있습니다.
최신 응용 프로그램은 또한 런타임 라이브러리, CLR, 미들웨어, 데이터베이스 등 레이어에 의존합니다. 레이어는 전체 개발 시간을 절약하면서도 해당 레이어 내의 버그가 존재할 수있는 레이어이며 개발 및 UAT 테스트를 통해 프로덕션으로 감지되지 않습니다.
마지막으로, 응용 프로그램이 논리를 공급하는 데이터를 사용하는 응용 프로그램 / 시스템 체인은 논리 내에서 또는 논리가 사용하는 소프트웨어 스택 또는 데이터를 소비하는 업스트림 시스템 내의 모든 잠재적 버그의 원인입니다.
개발자는 응용 프로그램의 논리를 지원하는 모든 움직이는 부분을 100 % 제어 할 수 없습니다. 실제로 우리는 많은 것을 통제하지 않습니다. 그렇기 때문에 단위 테스트가 중요하고 구성 및 변경 관리는 중요한 프로세스이므로 무시하거나 게으르지 않아야합니다.
또한 제어 할 수없는 소스에서 데이터를 소비하는 애플리케이션 간의 문서화 된 계약, 전송 된 데이터의 특정 형식 및 사양, 시스템이 소스 시스템이 출력을 보장 할 책임이 있다고 가정하는 제한 또는 제약 조건을 정의합니다. 그 한계.
실제 소프트웨어 엔지니어링 응용 프로그램에서는 이론적으로 응용 프로그램에 버그가없는 이유를 비즈니스에 설명하여이를 즉시 구현할 수 없습니다. 기술과 비즈니스 사이의 이러한 특성에 대한 논의는 비즈니스의 돈을 버는 능력, 돈을 잃는 것을 막고 및 / 또는 사람들의 생존을 유지하는 능력에 영향을 준 기술적 오작동 이후를 제외하고는 결코 일어나지 않을 것입니다. "어떻게 이런 일이 일어날 수 있을까요?"에 대한 대답은 "이 이론을 설명 할 수 있도록 이해할 수 없습니다."
이론적으로 계산을 수행하고 결과를 얻는 데 영원히 걸릴 수있는 대규모 계산의 관점에서, 결과를 끝내고 반환 할 수없는 응용 프로그램은 버그입니다. 계산의 특성상 시간이 많이 걸리고 계산이 많이 필요한 경우에는 해당 요청을 가져 와서 결과를 검색 할 수있는 방법 / 언제나 병렬 스레드를 시작하여 사용자에게 피드백을 제공하십시오. 이 작업이 한 서버에서 수행 할 수있는 것보다 빠르며 비즈니스에서 충분히 중요한 경우 필요한만큼 많은 시스템으로 확장 할 수 있습니다. 그렇기 때문에 클라우드가 매우 매력적이며 노드를 가동하여 작업을 수행하고 완료되면 스핀 다운 할 수 있습니다.
계산 능력이 충분하지 않다는 요청을받을 가능성이있는 경우, 비즈니스 프로세스가 유한 문제라고 생각하는 것에 대한 응답을 기다리는 비즈니스 프로세스로 무한대로 실행해서는 안됩니다.
print "Hello, World!"
... 좀 더 명확 할 수 있습니까?