Fill a large saucepan with water. Add ½ pound asparaguscook for 3-4 minutes until crisp-tender. While it's blanching, fill a medium-sized bowl with ice and water. With a slotted spoon or spider, transfer blanched asparagus to the ice bath and plunge it into the ice water to stop the cooking.
Fill a 3-quart saucepan with water and 1 teaspoon salt. Heat to boiling. Add ½ pound shell pasta. Cook, stirring occasionally, until al dente (according to package directions).
Meanwhile, in a large 10-12" skillet, heat 1 tablespoon olive oil over medium-high heat. Add 8 ounces button mushrooms and cook until they give up their liquid and are lightly browned, about 5 minutes. Transfer mushrooms to a bowl. Liquid will collect from the mushrooms as it sits. Be sure to drain it off before adding mushrooms to the final dish.
Add 2 tablespoons butter and 1 medium yellow onion to the pan and saute until the onion is softened and slightly translucent, but do not brown.
Stir in 1½ tablespoons flours until everything is well combined and no dry bits of flour remain. Cook and stir for one minute until bubbly.
Add 1½ cups homemade vegetable broth a little at a time to the flour mixture, stirring and scraping the pan constantly. Cook until the mixture begins to thicken and takes on the consistency of a sauce. Stir in ¼ cup half-and-half and 1 lemon, zested. Season with ½ teaspoon of kosher salt and ¼ teaspoon black pepper. Remove from heat.
Drain the asparagus and pat dry with paper towels.
Add the cooked pasta and 1 cup parmesan cheese to the sauce mixture and toss well to combine. Stir in the blanched asparagus, mushrooms, ½ cup sun dried tomatoes, and 1 cup ham to the pasta and heat through over medium heat. Stir in the 1 tablespoon fresh basil and 2 tablespoons fresh italian parsley just before serving, if using.
Use remaining parmesan as a garnish, served on the side.