1. A method of modeling non-functional requirements (NFRs) in a computer programming environment, comprising: identifying use case (UC) artifacts having one or more NFRs; retrieving the one or more NFRs and any data associated therewith; analysing the any associated data to define a test case therefor; retrieving a UC realisation from a model to determine one or more possible program flows; and testing each possible program flow to select the test case which verifies the use case required, thereby modeling the NFR.