现实的软件开发会遇到许多具体的问题,例如,如何消除依赖?怎样进行事件驱动编程?如何在迥异的环境中实现MVC架构?怎样在不同的Web开发框架之间选择?文档型数据库与关系型数据库相比有哪些优缺点?如何构建合适的存取控制?对这些问题,简单的答案、现成的选择、枯燥的代码很多,但是从问题的源头和本质出发,深入全面的分析却很少。本书就软件开发中带有普遍性的重要方面,内容由浅入深地逐渐展开,力图使读者对软件开发实践产生由点及面、融会贯通的理解。