CS-343 Software Construction, Design and Architecture