Is there a name for this decomposition. I am not sure exactly what this would entail. For any matrix there's a huge number of ways you could rewrite it. If you can be more precise about what the program should do, that would help us figure out how it could be written.

The first thing you'd want to do is identify common factors:

x = {(1 - a)*(b + d), (1 - a)*3*c, (1 - a)*d};

FactorList /@ x

{{{-1, 1}, {-1 + a, 1}, {b + d, 1}}, {{-3, 1}, {-1 + a, 1}, {c, 1}}, {{-1, 1}, {-1 + a, 1}, {d, 1}}}

We only want the factors and not their powers and then to take their intersection:

factors = Map[FactorList, x][[All, All, 1]]

Intersection @@ factors

This gives (-1+a) as a common factor which we can remove. Note this doesn't give numeric common factors which would have to be handled separately.