semantic software design pdf