Residuality theory provides a basis for designing software systems with resilient and antifragile behaviour through understanding sensitivity to stress and the concept of residual behaviours. By considering systems as a set of residues that exist in connection to stressors, we can more easily understand the role of design decisions in the life cycle of software systems and the unpredictable complex contexts they exist in. Residuality theory provides an alternative to the vague methods by which OOP, SOA, and microservice approaches arrive at system designs and most importantly places non-functional properties as first class citizens of design efforts. Residuality theory allows us to consider business, software, and infrastructure architecture across many different platforms and paradigms and allows us to describe architecture in the same way regardless of perspective. It allows us to describe approaches both for functional and non-functional requirements and for design, delivery and operation of applications. Residuality Theory paves the way for expressing architectures as mathematical structures which makes approaches like Model Based Systems Engineering [1] possible.