摂津源氏の流れを汲む源頼行（源頼政の弟）を祖とする一族であり、頼行の孫である源頼連が鎌倉時代に越後国刈羽郡小国保（新潟県長岡市小国町）の地頭となり小国氏を称した。以来、越後国の国人として承久の乱では頼連が北条朝時軍に参加するなどした。小国氏は、質の高い資料において断続的に見られており、戦国期に至っても信用できる系図を持った氏族である。
実行時の信頼性の判定はテストと似ているが、その観点はより単純であり、性能、他のコードとの相互運用性、特定のハードウェア構成で動作可能かといった点で評価される。
プログラムが要求仕様などの通りに動作するかを判定するのがソフトウェアテストである。単体テストは、プログラムのごく一部（多くの場合1つのサブルーチン毎）を対象に仕様通りに動作することを確認する。結合テストは、より大きなモジュール単位での動作を確認する。
プログラミング言語の開発史は、プログラムの複雑さを克服する試みの歴史であり、言語の発展がなければプログラムはその規模に対して指数関数的に理解が困難になっていただろう。プログラミング言語はコンピュータにより多くの仕事をさせるべく進化したと言う事もできるが、これは同じことを別の観点で言っているだけである。プログラム全体の構造や機能を見失うと、バグを見逃すことが多くなる。従って、よい言語を使えば理解が容易になり、バグも減らせる。言語はソフトウェア設計の意図していることをなるべく簡単に記述できるよう進化してきた。文、サブルーチン、ファイル、クラス、テンプレート、ライブラリ、コンポーネントといった概念の導入により、プログラムの記述が抽象化・階層化・モジュール化され、コードの理解が容易になってきた。さらに言語の進化によってデータの構造や利用に関しても正確な制御が可能となってきた。
要求仕様がプログラムがすべきことを記述するのに対して、ソフトウェア設計ではプログラムがそれをどのようにすべきかを記述する。設計工程の有用性には異論もあるが、信頼性の観点からはソフトウェア設計工程の重要性が指摘されている。ソフトウェア設計では、ソフトウェアを部品にわけ、それらのすべきことを記述する。そのようにしてプログラムを細分化していき、部品群が全体として正しく機能するようにする。高レベルな設計の目的は次のようになる。アーキテクチャ上の問題やプログラムの概念や構造に関する問題を実際のデータ処理に関わるコード上の問題と分離する。ソフトウェアコンポーネントを細分化することで個々のコンポーネントの開発に関わるものに制約を与え、結果としてバグを作りこみにくくする。コンポーネント間のインタフェースを定義することで複数のチームがそれぞれ別のコンポーネントを並行して開発できるようにし、各チームがその役割を認識できるようにする。また、実装言語を指定せずにプログラムの機能を記述することで、言語に依存した偏向を排除する。
プログラムの開発者が「どう動作すべきか」を事前または開発中に詳細に把握していなければ、それが望ましい動作をすることは期待できない。どの程度詳細に把握すべきかは議論の余地がある。完璧な詳細さという考え方は魅力的だが、実際問題としては現実的ではない。なぜなら、「こうあるべき」という要求仕様は試行錯誤的に変化するものだからである。事前に要求仕様をうまく記述できるかどうかは信頼性の分かれ目であり、要求仕様の形式化（モデリング言語などの利用）が採用されるのはそのためである。また、プログラマ以外の専門家でない人々にそのソフトウェアの振る舞いを正しく伝達する手段でもある。実際には、プログラマも「どう動作するか」を事前に把握していないことが多く、それが要求仕様に関する議論を困難にしている。
現代の工学分野の技術をソフトウェア開発に適用するため、ソフトウェアの品質を客観的に判断する方法が必要とされる。これは、誰が見てもコンピュータソフトウェアは予定通りの動作をしないという一般的観測結果に基づいた動機である。言い換えれば、ソフトウェアは何らかの問題を抱えていると不適当な動作を見せる。その原因は処理中のデータの問題だったり、ソフトウェアが動作するハードウェアの問題だったり、操作者などがそのマシンに悪影響を及ぼしたためだったりする。経済活動や生産プロセス、生命維持に直接関わるシステムなどのより重要なソフトウェアでは、ソフトウェアの信頼性を評価する必要性も大きくなる。あるソフトウェアアプリケーションの重要さの度合いによらず、ソフトウェアは我々の生活のあらゆる面に深く浸透している。我々の社会基盤がソフトウェアに依存している限り、この浸透は続くと予想される。社会基盤がソフトウェアへの依存を強めるにつれて、ソフトウェアの信頼性のレベルの向上が求められるようになってきた。すなわち、ソフトウェアは意図したように動作すべきであり、常に改良が求められる。
2014年のMLBドラフト38巡目（全体1149位）でロサンゼルス・ドジャースから指名され、プロ入り。なお、契約しない場合はウエストバージニア大学へ進学の予定であった。ドラフト前にトミー・ジョン手術を受けていたこともあり、この年は登板しなかった。2015年、傘下のルーキー級アリゾナリーグ・ドジャースでプロデビュー。14試合（先発4試合）に登板して0勝3敗1セーブ、防御率8.59、16奪三振を記録した。2016年はルーキー級アリゾナリーグ・ドジャース、パイオニアリーグのルーキー級オグデン・ラプターズ、A級グレートレイクス・ルーンズでプレーし、3球団合計で14試合（先発12試合）に登板して3勝4敗、防御率2.31、63奪三振を記録した。2017年はA+級ランチョクカモンガ・クエークスでプレーし、25試合（先発24試合）に登板して9勝4敗、防御率2.87、140奪三振を記録した。2018年はAA級タルサ・ドリラーズで開幕を迎え、AAA級オクラホマシティ・ドジャースを経て6月6日にメジャー契約を結んでアクティブ・ロースター入りした。同日のピッツバーグ・パイレーツ戦にて先発でメジャーデビューも、1.2回で4失点を喫した（勝敗付かず）。一度降格の後、6月12日に再昇格してからは谷間の先発やロングリリーフなどいわゆるスウィングマンとして起用され、この年メジャーでは29試合（先発3試合）に登板して7勝2敗2セーブ、防御率3.49、59奪三振を記録した。