1. A method for analyzing a target system, comprising: obtaining a characteristics model, wherein the characteristics model comprises a plurality of artifacts, at least one relationship between a first one of the plurality of artifacts and a second one of the plurality of artifacts, and at least one characteristic associated with each of the plurality of artifacts, wherein the characteristics model is stored on a physical computer readable medium; loading the characteristics model into a meta model, wherein the meta model comprises information describing attributes, characteristics, and relationships of the characteristics model; obtaining a plurality of characteristics from the target system using a characteristics extractor, wherein each of the plurality of characteristics is associated with the characteristics model, wherein the target system comprises a combination of hardware and software; storing each of the plurality of characteristics obtained from the target system in a characteristics store; receiving, by a query engine executing on a processor, at least one query; verifying the at least one query by traversing the meta model to determine whether each component within the at least one query is defined in the meta model; and analyzing, in response to the verifying, the target system by issuing the at least one query to the characteristics store to obtain an analysis result, generating the characteristics extractor associated with the characteristics model; and generating a characteristics store application programming interface (API) associated with the characteristics model, wherein the characteristics extractor uses the characteristics store API to store each of the plurality of characteristics in the characteristics store.