计算机类专业教育 > 软件工程类

软件设计与体系结构

书号:9787113146849 套系名称:普通高等院校“十二五”规划教材

作者:刘其成 出版日期:2012-08-01

定价:29.00 页码 / 开本:232 /16

策划编辑:郑涛 责任编辑:吴宏伟

适用专业:无 适用层次:高等院校

最新印刷时间:

资源下载
教学课件(暂无) 教学素材(暂无)
习题答案(暂无) 教学案例(暂无)
教学设计(暂无) 教学视频(暂无)
内容简介 前言 目录 作者介绍 图书特色
  •         本书对软件体系结构和软件设计的基本原理、方法和实践进行了系统的介绍,包括软件体系结构与软件设计在软件工程中的地位和作用、软件体系结构与组件、经典软件体系结构风格、分布式软件体系结构风格、MVC风格与Struts框架、软件设计的目标、面向对象软件设计方法、并行软件设计与实现、设计原则、设计模式等内容。

            本书在介绍软件体系结构和软件设计原理的前提下,特别注重实用性。书中含有大量精心设计并调试通过的程序实例,方便读者使用。本书集编者多年的教学经验编写而成,语言通俗易懂,内容安排合理,讲解深入浅出。

            本书可作为普通高等院校软件工程专业、计算机科学与技术专业以及信息类相关专业本科生和研究生的教材,也可作为软件工程培训教材,以及软件开发人员的参考书。
  •         教育部高等学校计算机科学与技术教学指导委员会制定的《软件工程(本科)专业规范》中,“软件设计与体系结构”已经作为一门核心课程单独列出,并有相应的知识单元和知识点。本书面向高等院校的学生和从事软件开发以及相关领域的工程技术人员,紧密结合软件工程专业和方向的规范,在充分考虑普通高等院校学生实际情况的基础上,覆盖规范中软件设计与体系结构课程要求的知识单元和知识点。

            教材内容、教学方法、教学手段的改革是我们每位教育工作者的重要任务。编者根据多年的教学和软件开发经验,在原讲义几年教学实践的基础上,对其中的内容取舍、组织编排和实例都进行了精心设计后形成本书。本书在难易程度上遵循由浅入深、循序渐进的原则,特别考虑到普通高等学校本科学生的实际理解和接受能力。与以往许多软件工程相关教材主要以理论为主不同,本书突出实用性,将复杂的理论融入具体的实例和程序之中。书中的实例均经过精心设计,程序代码都做了认真调试,可以直接运行,方便读者理解和使用。同时,培养学生自学的能力、获取知识的能力也是非常重要的;在编写本教材的过程中,编者力图在内容编排、叙述方法上留有教师发挥空间的同时,也留有学生自学的空间。

            全书共分10章。第1章介绍结构化和面向对象软件开发方法,以及软件体系结构和软件设计的基本概念。第2章介绍软件体系结构的定义;组件与JavaBeans;软件体系结构的研究内容,包括分析设计与验证、评价、建模、描述语言等形式化工具、发现演化与复用、风格、基于软件体系结构的软件开发方法、特定领域软件体系结构等。第3章介绍经典的软件体系结构风格,包括管道/过滤器风格、数据抽象与面向对象风格、层次结构风格、基于事件的隐式调用风格、仓库风格、解释器风格、反馈控制环风格等。第4章介绍分布式软件体系结构风格,包括两层C/S风格、三层C/S风格、B/S风格、P2P风格等;中间件。第5章介绍MVC风格的概念及其在J2EE中的应用,Struts框架的原理和应用。第6章介绍软件设计的目标,包括正确性、健壮性、可复用性、可维护性和高效性等。第7章介绍面向对象软件设计,包括问题域部分、人机交互部分、数据管理部分和控制驱动(任务管理)部分。第8章介绍应用系统并行软件的设计和实现技术,包括Java多线程机制、OpenMP共享内存多线程并行技术和MPI消息传递并行技术。第9章介绍软件设计原则,包括开-闭原则、里氏代换原则、合成/聚合原则、依赖倒转原则、迪米特法则、接口隔离原则和单一职责原则等。第10章从原理、结构和示意源代码三个方面介绍主要的创建型设计模式、结构型设计模式和行为型设计模式。

            本书由刘其成任主编,毕远伟任副主编。第1~2章由毕远伟编写,第3~10章由刘其成编写,郑文静、胡佳男、张莹莹、王金辉、李乐全参与了部分内容的编写,郑文静还绘制了部分图形。

            在本书的编写过程中,参阅了大量书籍和网站等资料,并得到了王创存教授及中国铁道出版社郑涛编辑、潘晨曦编辑的支持和帮助,在此表示衷心感谢。

            尽管书稿几经修改,但由于编者学识有限,书中难免有疏漏、不当之处,恳请各位同仁、读者不吝赐教。


    编  者 
    2012年5月
     

  • 第1章  概述 1
    1.1  软件工程方法学 1
    1.1.1  结构化方法 1
    1.1.2  面向对象方法 2
    1.2  软件设计与体系结构 4
    第2章  软件体系结构 6
    2.1  软件体系结构的定义 6
    2.2  组件与JavaBeans 7
    2.2.1  组件 7
    2.2.2  编写和使用JavaBeans 8
    2.2.3  获取和修改JavaBeans的属性 9
    2.3  软件体系结构的研究内容 10
    2.4  软件体系结构风格 13
    第3章  经典软件体系结构风格 15
    3.1  管道/过滤器风格 15
    3.1.1  原理 15
    3.1.2  实例 16
    3.2  数据抽象和面向对象风格 17
    3.2.1  原理 17
    3.2.2  实例 18
    3.3  基于事件的隐式调用风格 21
    3.3.1  原理 21
    3.3.2  实例 22
    3.4  层次风格 27
    3.4.1  原理 27
    3.4.2  实例 28
    3.5  仓库风格 30
    3.5.1  原理 30
    3.5.2  实例 31
    3.6  解释器风格 32
    3.6.1  原理 32
    3.6.2  实例 33
    3.7  反馈控制环风格 35
    3.7.1  原理 35
    3.7.2  实例 36
    第4章  分布式软件体系结构风格 38
    4.1  概述 38
    4.2  两层C/S体系结构风格 39
    4.2.1  原理 39
    4.2.2  实例 41
    4.3  P2P体系结构风格 48
    4.4  三层C/S体系结构风格 49
    4.5  B/S体系结构风格 51
    4.5.1  原理 51
    4.5.2  实例 53
    4.6  C/S与B/S混合软件体系结构 54
    4.6.1  原理 54
    4.6.2  实例 55
    4.7  中间件 56
    4.7.1  概念 56
    4.7.2  分布式系统中的中间件 58
    第5章  MVC风格与Struts框架 61
    5.1  MVC风格 61
    5.1.1  MVC风格概述 61
    5.1.2  MVC在J2EE中的应用 62
    5.1.3  实例 64
    5.2  Struts框架 67
    5.2.1  Struts框架概述 67
    5.2.2  Struts框架的组件 69
    5.2.3  实例 73
    第6章  软件设计的目标 77
    6.1  概述 77
    6.1.1  基本概念 77
    6.1.2  实例与分析 78
    6.2  健壮性 78
    6.2.1  概念与实例 78
    6.2.2  Java异常处理机制 80
    6.3  可复用性 82
    6.3.1  基本概念 82
    6.3.2  实例 82
    6.4  可维护性 83
    6.4.1  基本概念 83
    6.4.2  实例 84
    6.5  高效性 90
    6.6  软件设计度量、软件再工程和逆向工程 91
    第7章  软件设计——面向对象方法 92
    7.1  问题域部分的设计 92
    7.1.1  复用已有的类 92
    7.1.2  增加一般类 93
    7.1.3  对多重继承的调整 93
    7.1.4  对多态性的调整 98
    7.1.5  提高性能 100
    7.1.6  其他 103
    7.2  人机交互部分的设计 103
    7.2.1  概述 103
    7.2.2  可视化编程环境下的人机界面设计策略 103
    7.2.3  界面类与问题域类间通信的设计 107
    7.3  数据管理部分的设计 107
    7.3.1  概述 107
    7.3.2  针对关系数据库的数据存储设计 108
    7.3.3  设计数据管理部分的其他方法 115
    7.4  控制驱动部分的设计 115
    7.4.1  概述 115
    7.4.2  系统的并行/并发性 115
    7.4.3  设计控制驱动部分的方法 121
    第8章  并行软件设计与实现 127
    8.1  并行计算 127
    8.2  Java多线程机制 128
    8.2.1  概述 128
    8.2.2  Runnable接口与Thread类 129
    8.2.3  多线程的实现 131
    8.2.4  线程的同步与死锁 134
    8.3  OpenMP并行软件设计 138
    8.3.1  OpenMP编程基础 138
    8.3.2  编译指导语句 141
    8.3.3  运行时库函数 149
    8.3.4  环境变量 150
    8.3.5  实例 150
    8.4  MPI并行软件设计 153
    8.4.1  MPI消息传递接口 153
    8.4.2  典型MPI实现——MPICH 154
    8.4.3  MPI编程基础 157
    8.4.4  MPI的点对点通信 158
    8.4.5  MPI群集通信 160
    8.4.6  实例 161
    第9章  设计原则 163
    9.1  概述 163
    9.1.1  软件系统的可维护性 163
    9.1.2  系统的可复用性 164
    9.1.3  可维护性复用、设计原则和设计模式 165
    9.2  开-闭原则 165
    9.2.1  概念 165
    9.2.2  实现方法 166
    9.2.3  与其他设计原则的关系 166
    9.2.4  实例 166
    9.3  里氏代换原则 167
    9.3.1  概念 167
    9.3.2  Java语言与里氏代换原则 168
    9.3.3  实例 168
    9.4  合成/聚合复用原则 171
    9.4.1  概念 171
    9.4.2  合成/聚合复用与继承复用 171
    9.4.3  实例 172
    9.5  依赖倒转原则 173
    9.5.1  倒转的含义 173
    9.5.2  概念 174
    9.5.3  实例 175
    9.6  迪米特法则 176
    9.6.1  概念 176
    9.6.2  实例 178
    9.7  接口隔离原则 179
    9.7.1  概念 179
    9.7.2  实例 180
    9.8  单一职责原则 181
    第10章  设计模式 182
    10.1  概述 182
    10.2  创建型模式 183
    10.2.1  简单工厂模式 183
    10.2.2  工厂方法模式 184
    10.2.3  抽象工厂模式 186
    10.2.4  建造者模式 188
    10.2.5  原型模式 190
    10.2.6  单例模式 191
    10.3  结构型模式 192
    10.3.1  适配器模式 192
    10.3.2  桥接模式 193
    10.3.3  装饰模式 195
    10.3.4  组合模式 197
    10.3.5  外观模式 198
    10.3.6  享元模式 200
    10.3.7  代理模式 202
    10.4  行为型模式 204
    10.4.1  策略模式 204
    10.4.2  模板方法模式 205
    10.4.3  状态模式 206
    10.4.4  命令模式 208
    10.4.5  责任链模式 209
    10.4.6  备忘录模式 211
    10.4.7  观察者模式 213
    10.4.8  调停者模式 214
    10.4.9  访问者模式 217
    10.4.10  迭代器模式 219
    10.4.11  解释器模式 221
    参考文献 224