The software-defined asset is a declarative approach to managing data and orchestrating its maintenance. It combines the description of how to compute an asset with metadata about that asset, including dependencies. This approach is particularly appealing because it makes systems more debuggable, comprehensible, and automatable by making intentions explicit and offering a principled way of managing change. The software-defined asset can be invoked by the orchestrator to materialize that asset, i.e., to run the op on the contents of the upstream assets and then persist the results in storage. A collection of software-defined assets constitutes an asset graph, which is critical for understanding and working with data. The asset graph offers a cross-technology way of answering "if I changed asset X, what would the impact be on asset Y?" as well as a basis for discovering the root cause of unexpected results. An asset-based orchestrator addresses gaps in the Modern Data Stack by combining polyglot compute with a declarative, asset-based approach, enabling a unified control plane without requiring practitioners to revert to tasks and imperative programming. The software-defined asset is a natural unit for data management, lineage, and observability, declaring the order you want to create instead of describing the chaos that exists.