本书是普通高等教育“十二五”国家级规划教材。本书对软件设计以及软件体系结构的相关思想、理论与方法进行了系统的介绍,包括软件设计与软件体系结构在软件工程中的地位和作用、软件设计的基本方法与原则、统一建模语言UML 2.0、面向对象的软件设计方法、面向数据流的软件设计方法、人机界面设计、软件体系结构风格与设计模式、基于构件的软件体系结构、软件体系结构评估、软件设计的进化等内容。本书包含了作者多年来在软件开发实践、软件工程教学和科研活动中的认识与体会,并结合大量的案例分析,力求全书内容与组织结构的系统性、先进性、基础性和实用性。本书可作为高等院校计算机科学与技术专业、软件工程专业以及信息类相关专业的本科生和研究生教材,培养学生的软件设计思维能力以及方法和技术的运用能力,同时也适用于开发人员和项目管理人员在软件开发实践中进行参考。
随着计算机技术、微电子技术、网络技术和多媒体技术的迅速发展和广泛应用,今天的社会进入了以计算机为核心的信息社会。软件被认为是信息化的灵魂,已被用于政治、经济、文化、科技、教育、国防、生活等各个领域。随着软件在社会中的地位和作用越来越显著,人们对软件的质量、成本和开发周期等方面提出的要求也越来越高。软件工程强调以工程化思想和方法开发软件,而软件设计作为软件开发过程中的核心活动之一,对开发出满足需要的高质量软件起关键作用。软件设计在软件工程中所体现的重要性包括:软件设计是对软件需求的直接体现;软件设计为软件实现提供直接依据;软件设计将综合考虑软件系统的各种约束条件并给出相应方案;软件设计的质量很大程度上将决定最终软件系统的质量;及早发现软件设计中存在的错误将极大地减少软件修复和维护所需的成本;等等。在软件工程的发展过程中,出现了大量与软件设计相关的方法与技术,而软件体系结构作为软件设计过程中控制软件复杂性、提高软件系统质量、支持软件开发和复用的重要手段之一,自提出以来日益受到软件研究者和实践者的关注。
在当前我国软件产业的发展过程中,基础扎实、知识全面、经验丰富的高水平软件设计人员仍然非常缺乏,这成为我国软件产业发展的制约因素。在当前软件工程专业方向的教育中,把软件设计和软件体系结构相关理论与方法作为单独一门课程进行系统地讲述,对培养大量所需的高水平软件设计人员至关重要。而在教育部高等学校计算机科学与技术教学指导委员会制定的《软件工程专业规范》中,“软件设计与体系结构”已经作为一门核心课程单独列出,并有相应的知识单元和知识点,但亟需相应的教材以便于高等院校教学实施。针对以上背景和需求,本书对软件设计以及软件体系结构的相关思想、理论与方法进行了系统的介绍,包括软件设计与软件体系结构在软件工程中的地位和作用、软件设计的基本方法与原则、统一建模语言UML2.0、面向对象的软件设计方法、面向数据流的软件设计方法、人机界面设计、软件体系结构风格与设计模式、基于构件的软件体系结构、软件体系结构评估、软件设计的进化等内容。本书包含了作者多年来在软件开发实践、软件工程教学和科研活动中的认识与体会,融入大量的案例分析,力求全书内容与组织结构的系统性、先进性、基础性和实用性。
第1章 软件工程与软件设计
1.1 软件工程
1.1.1 软件概述
1.1.2 软件危机
1.1.3 软件工程的概念
1.1.4 软件工程的目标与原则
1.2 软件的生存周期
1.3 软件开发过程模型
1.3.1 瀑布模型
1.3.2 快速原型模型
1.3.3 螺旋模型
1.3.4 统一软件开发过程
1.4 软件设计
1.4.1 软件设计的重要性
1.4.2 软件设计的特征
1.4.3 软件设计的要素
1.4.4 软件设计的知识体
1.5 软件体系结构
1.5.1 软件体系结构的定义
1.5.2 软件体系结构的发展历程
1.5.3 软件体系结构的内容
小结
习题1
参考文献
第2章 统一建模语言UML
2.1 UML概述
2.1.1 UML的发展历程
2.1.2 UML的特点和用途
2.1.3 UML2.0的建模机制
2.2 面向对象开发方法
2.2.1 基本概念
2.2.2 面向对象方法的优势
2.3 UML2.0结构建模
2.3.1 类图
2.3.2 包图
2.3.3 对象图
2.3.4 构件图
2.3.5 组合结构图
2.3.6 部署图
2.4 UML2.0行为建模
2.4.1 活动图
2.4.2 顺序图
2.4.3 通信图
2.4.4 交互概览图
2.4.5 时序图
2.4.6 状态图
2.4.7 用例图
小结
习题2
参考文献
第3章 软件设计基础
3.1 软件设计的基本概念
3.1.1 抽象与逐步求精
3.1.2 模块化与信息隐藏
3.1.3 内聚与耦合
3.2 软件设计过程
3.2.1 软件设计的一般过程
3.2.2 软件设计的主要活动
3.3 软件设计的质量
3.4 软件体系结构设计
3.4.1 软件体系结构设计方法概述
3.4.2 软件体系结构设计的步骤
3.5 高可信软件设计
3.5.1 可信软件的特点
3.5.2 容错设计
3.5.3 软件失效模式和影响分析
3.5.4 软件故障树分析
3.5.5 形式化方法
3.5.6 净室方法
3.5.7 嵌入式和实时软件设计
3.6 软件设计规格说明
3.7 软件设计评审
小结
习题3
参考文献
第4章 面向对象的软件设计方法
4.1 基于UML的分析与设计过程
4.2 用例分析与设计
4.2.1 确定用例
4.2.2 生成用例图
4.2.3 用例设计描述
4.3 概念模型与顶层架构设计
4.3.1 概念模型设计
4.3.2 顶层架构设计
4.4 用户界面设计
4.5 数据模型设计
4.6 设计精化
4.6.1 精化软件架构
4.6.2 调整软件构成类
4.6.3 精化交互模型
4.6.4 精化类之间的关系
4.7 类设计
4.7.1 精化类的属性与操作
4.7.2 类的行为模型设计
4.8 部署模型设计
小结
习题4
参考文献
第5章 面向数据流的软件设计方法
5.1 数据流图与数据字典
5.2 实体关系图
5.3 面向数据流的分析过程
5.3.1 建立数据流模型
5.3.2 过程规格说明
5.4 面向数据流的设计过程
5.4.1 变换流与事务流
5.4.2 变换分析
5.4.3 事务分析
5.5 启发式设计策略
小结
习题5
参考文献
第6章 用户界面设计
6.1 界面设计的基本原则
6.2 设计良好界面的
主要途径
……
第7章 软件体系结构风格与设计模式
第8章 基于分布构件的体系结构
第9章 软件体系结构评估
第10章 软件设计的进化