사람들이 보통 지적하기가 매우 빠르기 때문에 소프트웨어의 장점 중 하나는 하드웨어에 비해 변경하기가 쉽고 비교적 저렴하다는 것입니다. 이것은 근본적으로 잘못되었다는 것을 늦게 깨달을 때 특히 중요합니다. 하드웨어와 마찬가지로 백만 달러를 잃어버린 것처럼 시뮬레이터 등을 사용하고 bazinga를 테스트합니다. 이것은 소프트웨어로 전환 할 때 패러다임이 다소 실패하는 곳이라고 생각합니다.
평범한 소프트웨어 개발자의 머리에 들어가십시오. 당신이 가진 것은 엄청나게 마감 시간이 매우 바쁜 사람입니다. 그의 관리자는 나중에 언제든지 수정할 수 있기 때문에 몇 가지 버그를 남겨두면된다고 말합니다. 테스트는 종종 사후 검토이지만 테스트 중심 시나리오에서도 테스트는 최소로 유지되고 코드는 최소 테스트로 작성되며, 많은 경계 사례를 놓칠 수 있도록 바로 가기가 수행되는 경우가 많습니다. 시스템은 철저히 단위 테스트를 거칠 수 있지만 전체적으로 엄격한 테스트는 거의 없으며 스트레스 테스트는 거의 없습니다. 여기에는 소프트웨어를 처음부터 작성하는 것이 더해지며, 소프트웨어를 작성하기 전에 소프트웨어를 시뮬레이트 할 기회가 거의 없습니다. 주로 하드웨어에서 발견되는 것과 같은 세밀한 빌딩 블록에서 소프트웨어를 거의 작성하지 않기 때문입니다.
OP의 질문으로 돌아갑니다. 모든 소프트웨어를 파생시키는 빌딩 블록 시스템을 정의 할 수 있습니까? 혹시. 매우 비용 효율적입니까? 아마도 이상적인 것은 아닙니다. 당신이이 이상 을지지 할 수있을만큼 충분한 구성 요소, 테스트 및 기타 도구 시스템을 개발할 때프로그래밍 시스템을 사용하면 경쟁자가 이미 시장에 진출했을 것입니다. 심지어 일반 프로그래머의 관점에서 볼 때 "쿠키 커터"스타일의 프로그래밍 시스템은 매우 제한적이며 가능성이 매우 높습니다. 지루한. 나는 개인적으로 API를 개발하고 있는데, 대부분의 모듈 코드가 완전히 정제되고 완전히 표준화되어 이제 코드 템플릿을 생성하고 공백을 채울 뿐이다. 대부분의 시간은 간단한 커넥터 코드를 작성하고 모듈을 최대한 빨리 꺼내는 데 소비 할 수 있습니다. 진지하게 정신을 빼앗기고 있습니다. 같은 종류의 코드를 반복해서 코딩하는 것 이상을 수행 할 수있는 기회는 거의 없기 때문에 다른 프로젝트 기회가 다가 오면 다른 어떤 것도 할 수있는 기회를 얻습니다.
그렇다면 어떻게 고품질의 소프트웨어를 제공 할 수 있습니까? 나는 이것이 당신이 선택한 도구와 방법론에 달려 있다고 생각합니다. 나에게 대답은 좋은 BDD API를 사용하는 것이 었습니다. 읽기 쉽고 매우 세분화 된 코드를 만들 수 있었기 때문입니다. 재사용 가능한 최소한의 방법으로 테스트 모음을 작성하고 사양 언어로 테스트를 설명 할 수 있습니다. 이런 식으로, 나는 빌딩 블록을 설계하고 점검하는 책임을 제외하고는보다 구성 요소 화 된 개발 방식에 가까워졌습니다. 또한 테스트 출력은 실패가 발생한 테스트의 정확한 부분을 정확하게 나타내므로 실패가 설정에 있는지 또는 어설 션에 있는지 추측 할 필요가 없습니다.
방법론 조정도 도움이됩니다. 저는 린 개발 원칙을 적용하고 애자일 운동이 몇 년 동안 시작된 많은 다른 기술 및 원칙과 결합하는 데 큰 옹호자입니다. 내가 좌절감을 느끼는 데 사용했던 많은 낭비적인 관행을 제거함으로써 개발을보다 즐거운 활동으로 만드는 데 큰 도움이되었습니다. 나는 때때로 코드에 버그가 나타날 때가 있지만 때로는 버그가 자주 발생하는 문제가 남아 있지만 이제는 더 많은 시간을 보내고 더 강력한 테스트를 작성하는 데 더 많은 시간을 투자하고 100을 목표로하는 인센티브를 얻습니다. % 테스트 범위. 더 좋은 점은, 하루가 끝날 때 모든 녹색 표시등이 나타나는 것을 보는 것이 정말 기분이 좋고,