Taking software design seriously: practical techniques for human-computer interaction design