Uncertainty pervades all aspects of engineering, and its management is of paramount importance. In software engineering, uncertainty can occur at many levels. It can appear in the software artifacts including requirements specifications, designs, and the code itself. Uncertainty can also manifest in the way we use tools, and in the engineering practices employed. It is even present in the life cycle methodologies we employ. In short, uncertainty is a persistent, negative quality of both the software and the processes that rendered it. Unfortunately, t is too easy, but often the case, that software engineers ignore issues of uncertainty or overlook them as they become marginalized within other abstractions. In this paper we propose uncertainty as a persistent software quality attribute and examine several approaches for modeling that uncertainty. Finally, we offer suggestions for future work in this regard.