软件工程系统设计应该包含哪些