在进行系统设计时,不仅要考虑软件的功能性需求,还要考虑非功能性需求,比如软件的性能(Performance)、可扩展性(Scalability),系统的稳定性(Reliability)、部署(Deployment)和更新(Upgrade),可维护性(Maintainability),版本的管理,系统的安全(Security),界面的友好程度可用性(Usability, Userexperience)等。要想覆盖所有需求,实现一个简单而优秀的系统,可谓艰难。什么是优秀的系统设计?这个问题颇有争议,但几乎每个软件工程师和架构师都追求优秀