In TRIZ emphasis is laid on resolution of contradictions. But there are problems which require resolution of ambiguities rather than contradictions. Here is one of them.
When developing the principles of object orinted programming, researchers naturally assumed that the base class (say, animal) and a derived class (say, fish) may have different implementations of the same method (say, "the_way_of_movement"). They also naturally assumed that an object of a derived class (say, a particular fish called tuna) can be cast (i.e. refered to) as an animal called tuna. Then ambiguity arises: which way of moving such a tuna cast as an animal has to have: that of generic animal, or that of fish ?
One could try and convert this ambiguity into a contradiction: tuna cast (viewed) as an animal has to have "the_way_of_movement" pertinent to fish (because it is a fish) and has to have this method pertinent to animal (because it is cast/viewed as an animal). But resolution of such a contradiction leads nowhere because not the contradiction is the essense of the problem. The essense is the absense of the ways to express a decision in the ambiguous situations.
For instance, in this particular example we may wish that tuna cast as animal still has "the_way_of_movement" pertinent to fish, whereas in other cases (involving other base classes and their subclasses) we may want it otherwise.
Surprisingly enough, such ambiguities are also resolved by applying separation principles: ambiguous desires get disambiguated by labeling them differently. In the case of object-oriented programming it was proposed to apply label "virtual" to a method of a base class when we want it to be always substituted by the method of a subclass, even if its member is cast/disguised as a member of the base class.
Ambiguities comprise a bigger share of problems in programming languages design than those which essense is contradictions. But in mechanical engineering ambiguities account probably for 0% of problems. This explains why TRIZ focuses on contradictions resolution. However, other types of engineering may have different mixes of problems caused by contradictions and caused by ambiguities. That is why TRIZ is not applicable to them, because methods of disambiguation of ambiguous situations are sorely missing in TRIZ.