软件工程总体设计包括哪些内容