경고 : 이것은 약간 자유 형식이 될 것입니다 ...
귀하의 우려 사항을 살펴볼 수있는 두 가지 방법이 있습니다.
당신이 그것을 생각하면, 일부 우주 왕복선과 위성은 원래 발사 한 것과 동일한 코드를 실행했습니다. 반면에 일부는 원격 인 경우에도 업데이트되도록 설계되었습니다.
중요한 것은 환경입니다. 분명히 환경을 수정하지 않는 한 코드는 더 이상 사용되지 않습니다. 이 경우 코드 썩음은 실제로 존재하지 않습니다. 코드 자체 (또는 생성 된 이진 파일)는 썩을 수 없습니다. 완전히 다른 각도에서 공격을 시작하면 깨질 수 있습니다. 썩는 것이 아니라 환경에 적응하지 않는 것입니다. 그것을 진화적인 문제라고 생각하십시오.
그러나 우리의 환경은 변합니다. 그리고 어떻게 든 문제의 열쇠는 해결책입니다. 우리의 환경은 매우 빠르게 변화하여 오늘날에는 소프트웨어 솔루션이 시간이 지나도 진화하지 않을 것으로 예상합니다. 우리는 지난 해 업데이트되지 않은 소프트웨어 프로젝트를 간과하고 명확한 로드맵을 생성하지 않는 제품 및 고객 지원에 대해 신음 할 것입니다. 그리고 이것이 잘 작동하더라도 명확한 로드맵, 좋은 지원, 정기적 인 업데이트를 얻을 수 있습니다. 이제는 도전자가 기하 급수적으로 성장할 가능성이 항상 있습니다. 우리는 종종 거대 기업이 항상 지배하기 때문에 항상 지배 할 것이라고 생각하는 실수를합니다. 그러나 무리에서 지배적 인 요소가 오래 될 때와 마찬가지로, 대규모 소프트웨어 / 하드웨어 / 공급 업체가 오래 될 때마다 아니면 조금 게으르다. 그리고 도전자는 5 ~ 10 년 전에 확립 된 지배적 인 지배자보다 훨씬 빠르게 일을 처리합니다. 또는 지배자는 시장에서 혼란을 겪는 동안 (경제적으로 말하면, 다른 분야에 영향을 미침), 잘 뛰고 간신히 생존 할 것이며, 상황은 계속 될 것입니다. 어쩌면 그것은 불완전 해 보이지만 그 자체로는 유기적 인 과정입니다.
따라서 사용자 관점에서 문제가 그렇게 크지 않은 것 같습니다. 코드 썩음은 사용자의 관점에서 발생하지 않을 것입니다.
이제 우리가 사용자 관점에서 사물을 보지 못하거나 알 수없는 이유, 정부 개발, 임시 여행 등의 이유로 면역성이있는 시스템에 대해 이야기하고 있다고 가정하고 실제로 가정합니다. 아주 오래 살기 위해 살아 남기 위해 우리는 당신이 참조한 텍스트를 봐야합니다. 그리고 아마도 신뢰할 수있는 시스템과 내결함성 시스템에 대한 더 많은 문헌이있을 것입니다. 더 나아가고 싶겠지 만. 우리는 단지 내결함성을 원치 않고 진화 시스템을 원합니다.
진화의 문제점은 변화를 가져오고 변화는 실패 지점을 초래한다는 것입니다. 지금 이것들을 살펴보고 그것들을 해결하기 위해 우리가 할 수있는 일을 보자.
우리는 여전히 인프라 / 아키텍처 / 창업적인 은유에 의존 할 수 있습니다 (결국 우리는 모두 소프트웨어 엔지니어이지만 소프트웨어 엔지니어링과 같은 것은 없습니다). 튜브 시스템이 여전히 작동하는 동안 (일부 결함이있는), 빅 벤이 여전히 작동하거나 (일부 결함이있는 경우) 에펠 탑이 여전히 서있는 이유가 있습니다. 이는 인프라의 핵심 요소 (또는 그다지 중요하지 않은 요소)와 함께 소프트웨어로 수행해야 할 작업도 지속적으로 수행하기 때문입니다. 이러한 개체는 반드시 오래 지속되도록 설계되지는 않았지만 필요할 때 영구적 인 감독과 적시 개선 및 수리의 혜택을 누 렸습니다. 당신이 원한다면 핫픽스를 부르십시오.
반면에 일부 디자인은 지속적인 검사가 불가능하다는 것을 알면서도 중단없이 견고하게 실행되도록 설계되었습니다. 이 경우 우리는 좋은 디자인과 공식적인 모델로 전환합니다. 주어진 환경에 대해 신뢰성 요소 (가용성, 신뢰성, 안전, 무결성, 유지 보수성)를 수량화 할 수 있습니다. 통계는 나머지와 미래를 계획하기 위해 나머지를 수행합니다. 문제는 다음과 같습니다. 실제 의미에서 진화 할 시스템을 구축 할 수 있습니까?