序
软件是现代各类信息系统的灵魂。当今软件系统越来越庞大,功能越来越丰富,设计越来越复杂,维护越来越困难。软件工程作为一门独立的学科已发展多年,软件生命周期模型、面向对象技术、软件体系结构和设计模式方法等概念逐步构成其核心理论和技术方法。
设计模式提供了一种抽象的软件实现方法论。其所包含的各种设计模式源自众多软件开发人员长期成功或失败经验的总结,是软件开发过程中所面临的一般性问题的解决方案。不同的设计模式展示了专业工作者思考和解决真实问题的过程,隐含于实践中的认识历程和行动逻辑更为重要。
对于高级软件开发人员而言,深入理解和熟练应用设计模式这一独特的软件设计方法非常关键。一方面,使用设计模式可以重用大量程序代码,使得复杂的代码更容易被他人理解,有效地提升软件系统的可靠性和可维护性。更重要的是,使用设计模式可以超越简单的代码复用而实现软件方案复用,以一种简便的方式复用成功的设计方案和体系结构,提升复杂系统的设计能力。另一方面,设计模式作为一种讨论软件设计的公共语言,使得熟练设计者的经验可以被初学者和其他设计者掌握。对于经验丰富的开发人员,学习设计模式有助于了解在软件开发过程中所面临问题的最佳解决方案;对于经验不足的开发人员,学习设计模式有助于通过一种简单快捷的方式理解软件设计。
据我们所知,中科大软件学院是国内最早开设“设计模式”软件工程硕士课程的。大约2010年,我们有幸邀请到美国德州阿灵顿大学软件工程教授龚振和老师为软件工程硕士研究生讲授高级软件工程相关课程。在与龚老师的交流中我们了解了设计模式的概念,认为它是构建软件工程硕士知识体系不可或缺的重要内容,便决定邀请龚老师开设“设计模式”课程。朱洪军老师从课程设置开始就作为龚老师的助教参与课程的教学辅导工作。经过深入学习和研究实践,朱老师自2013年起逐步独立地多次开设了该课程,取得了非常好的教学效果。历届选课学生的实习反馈也充分证明了这一课程的成功。
本书的形成源于朱老师多年的教学实践,强调使用模式解决代码设计问题的具体方法,而非抽象的软件工程理论,利于读者理解。书中以经典开源软件工程项目为案例,展示设计模式的应用场景,有利于学习者理论联系实际,极具特色。另外,作为MOOC式教学的积极实践者,朱老师还开发了与本书配套的线上课程,顺应了当前“互联网+”时代的线上线下相结合的学习模式,相信读者会有很好的收获。
中国科学技术大学软件学院
常务副院长李曦