Complex Manufacturing Software Engineering