The distinction constituency vs dependency parsing has nothing to do with the distinction deep vs shallow parsing. They are completely orthogonal
Constituency parsing is classical parsing where words are leafs in the tree, and non-leaf nodes are constituents (e.g. noun-phrase, verb-phrase, prep-phrase, etc) but never words.
Dependency parsing does not build constituent nodes in the tree. All nodes in the tree are one sentence word. The tree establishes the hierarchy (depencendes actually) between words.
A constituency tree can be deterministacailly converted to a dependency tree if the head node is known for every rule. The backwards conversion is not possible, since dependency trees have no information about which constituents should be created.
On the other hand, 'deep parsing' refers to building complete trees for a sentence (so, what you would normally expect from a parser), while 'shallow parsing' is an easier task consisting of building a set of partial trees for one sentence (e.g. grouping only noun phrases)
Typically, dependency parses produce complete trees (i.e. deep parsing), and there are constituency parsers both for deep and shallow analysis.
However, it should be possible to build a dependency parser that produced partial (or shallow) analysis.