horizontal vs vertical application software