Using a variety of patterns in a secure software development methodology