新書推薦:
《
首辅养成手册(全三册)
》
售價:NT$
551.0
《
清洁
》
售價:NT$
296.0
《
组队:超级个体时代的协作方式
》
售價:NT$
352.0
《
第十三位陪审员
》
售價:NT$
245.0
《
微观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:NT$
709.0
《
Python贝叶斯深度学习
》
售價:NT$
407.0
《
文本的密码:社会语境中的宋代文学
》
售價:NT$
306.0
《
启微·狂骉年代:西洋赛马在中国
》
售價:NT$
357.0
編輯推薦:
本书全面系统地讲述了软件设计和体系结构的相关思想、理论和方法,并提供来自业界*的内容和进展。
內容簡介:
本书全面系统地讲述了软件设计和体系结构的相关思想、理论和方法,并提供来自业界*的内容和进展。本书正文共14章,第1章是概述,第2章至第14章讲述了软件模型和描述、软件体系结构建模和UML、软件设计过程、软件体系结构风格、面向对象的软件设计方法、面向数据流的软件设计方法、用户界面设计、设计模式、Web服务体系结构、基于分布构件的体系结构、软件体系结构评估、软件设计的进化、云计算体系结构。
關於作者:
秦航,男,博士,教授,硕士生导师,湖北省新世纪高层次人才工程第三层次人选。2010年6月博士毕业于武汉大学软件工程国家重点实验室,获计算机软件与理论工学博士学位,期间参与武大和美国Virginia Tech. 的国际合作项目。2014年至2016年,在美国University of Houston电子与计算机工程系任访问学者。主持国家自然科学基金、湖北省自然科学基金、省教育厅、安全厅项目多项;在国内外权威杂志上发表论文50多篇,其中40余篇被SCIEI收录;出版英文学术专著两部,主编软件工程领域教材三部,获得国家发明专利授权2项。
目錄 :
第1章引言
1.1软件
1.1.1软件本质
1.1.2软件神话
1.2软件工程
1.2.1工程师文化
1.2.2软件过程和工程实践
1.2.3网络环境带来的影响
1.3软件设计
1.3.1从分析到设计
1.3.2设计过程和设计质量
1.3.3软件设计的基本原则
1.4软件体系结构
1.4.1软件体系结构概述
1.4.2软件体系结构的内容
1.4.3设计阶段的体系结构
1.5小结
1.6思考题
第2章软件模型和描述
2.1软件模型概述
2.2软件模型的发展脉络
2.3软件模型解析
2.3.1功能模型
2.3.2对象模型
2.3.3组件模型
2.3.4配置型组件模型
2.3.5服务模型
2.3.6抽象模型
2.4软件模型的深入认识
2.4.1软件体系结构的描述
2.4.2软件体系结构的设计
2.5体系结构描述语言
2.5.1ADL简介
2.5.2典型ADL的比较
2.5.3体系结构行为的描述
2.6小结
2.7思考题
第3章软件体系结构建模和UML
3.1软件体系结构建模概述
3.2基于软件体系结构的开发
3.3UML概述
3.3.1UML的发展历程
3.3.2UML的特点
3.3.3UML 2.5分类
3.4面向对象概述
3.4.1基本概念
3.4.2面向对象方法的优势
3.5UML中的结构建模
3.5.1类图
3.5.2对象图
3.5.3构件图
3.5.4部署图
3.6UML中的行为建模
3.6.1用例图
3.6.2顺序图
3.6.3通信图
3.6.4交互概览图
3.6.5时序图
3.6.6状态图
3.6.7活动图
3.7UML工具
3.8小结
3.9思考题
第4章软件设计过程
4.1软件设计基础
4.2软件体系结构设计方法
4.3高可信软件设计
4.3.1可信软件
4.3.2容错设计
4.3.3软件失效模式和影响分析
4.3.4软件故障树分析
4.3.5形式化方法
4.3.6净室方法
4.4软件设计规格说明
4.5软件设计评审
4.6小结
4.7思考题
第5章软件体系结构风格
5.1软件体系结构风格概述
5.2基本风格解析
5.2.1管道过滤器
5.2.2数据抽象和面向对象风格
5.2.3基于事件的隐式调用风格
5.2.4分层系统风格
5.2.5仓库风格和黑板风格
5.2.6模型视图控制器风格
5.2.7解释器风格
5.2.8C2风格
5.3案例分析
5.3.1案例1: 上下文关键字
5.3.2案例2: 仪器软件
5.4客户服务器风格
5.5三层CS体系结构风格
5.5.1三层CS体系结构的优点
5.5.2实例: 某石油管理局劳动管理信息系统
5.6浏览器服务器风格
5.7CS与BS混合结构风格
5.8正交软件体系结构风格
5.8.1正交软件体系结构的概念
5.8.2正交软件体系结构的优点
5.8.3正交软件体系结构的实例
5.9异构结构风格
5.10小结
5.11思考题
第6章面向对象方法
6.1面向对象方法概述
6.2面向对象的分析与设计
6.2.1面向对象系统开发过程概述
6.2.2面向对象分析
6.2.3面向对象设计
6.3基于UML的图书管理系统
6.3.1用例分析与设计
6.3.2静态建模
6.3.3系统的设计
6.3.4对象设计
6.3.5部署模型设计
6.4面向方面的方法
6.4.1面向方面程序设计
6.4.2面向方面方法概述
6.5小结
6.6思考题
第7章面向数据流的设计方法
7.1数据流图与数据字典
7.1.1数据流图: 运动会管理系统
7.1.2数据字典
7.2实体关系图
7.3状态迁移图
7.4案例说明: 教材购销系统
7.4.1数据流图的建立
7.4.2数据字典的建立
7.5面向数据流的需求分析方法
7.5.1自顶向下逐层分解
7.5.2描述方式和步骤
7.6面向数据流的设计方法
7.6.1基本概念
7.6.2变换分析
7.6.3事务分析
7.6.4启发式设计策略
7.6.5设计优化
7.7小结
7.8思考题
第8章用户界面
8.1界面设计的人性因素
8.2界面设计的主要途径
8.2.1分析用户类型
8.2.2运用黄金规则
8.3用户界面分析
8.3.1用户分析
8.3.2任务分析和建模
8.3.3内容展示分析
8.3.4工作环境分析
8.4用户界面设计
8.4.1设计过程
8.4.2界面对象、动作、布局
8.4.3需要考虑的问题
8.5用户界面原型
8.5.1涉及方面
8.5.2实施用户界面原型
8.5.3获得有关原型的反馈
8.6规则和评估
8.6.1界面设计十大规则
8.6.2界面设计的评估
8.7用户界面和用户体验
8.8小结
8.9思考题
第9章设计模式
9.1设计模式概述
9.2设计模式的主要作用
9.3常用设计模式解析
9.3.1创建型设计模式
9.3.2结构型设计模式
9.3.3行为型设计模式
9.4常用的原则
9.5小结
9.6思考题
第10章Web服务体系结构
10.1Web服务
10.2Web服务模型
10.3Web服务的核心技术
10.4面向服务的体系结构
10.4.1基本思想
10.4.2基本特征
10.5Web服务的应用实例
10.5.1Web服务的创建
10.5.2Web服务的发布
10.5.3Web服务的调用
10.6小结
10.7思考题
第11章基于分布构件的体系结构
11.1EJB分布构件框架
11.1.1EJB技术
11.1.2EJB的规范介绍
11.1.3EJB的体系结构
11.2DCOM分布构件框架
11.2.1DCOM的使用
11.2.2DCOM的特点
11.2.3灵活配置与扩展机制
11.2.4在应用间共享连接管理
11.2.5DCOM的安全性设置
11.3COBRA分布构件框架
11.3.1COBRA基本原理
11.3.2CORBA体系结构
11.3.3CORBA规范
11.3.4CORBA产品概述
11.3.5讨论
11.4小结
11.5思考题
第12章软件体系结构评估
12.1软件体系结构评估概述
12.1.1质量属性
12.1.2评估的必要性
12.1.3基于场景的评估方法
12.2SAAM软件架构分析方法
12.2.1SAAM的一般步骤
12.2.2场景的形成
12.2.3描述软件体系结构
12.2.4场景的分类和优先级划分
12.2.5间接场景的单独评估
12.2.6评估场景交互
12.2.7形成总体评估
12.3ATAM体系结构权衡分析方法
12.3.1ATAM参与人员
12.3.2ATAM结果
12.3.3ATAM的一般过程
12.3.4ATAM评估阶段
12.4评估方法比较
12.4.1场景的生成方式不同
12.4.2风险承担者商业动机表述方式不同
12.4.3软件体系结构的描述方式不同
12.5小结
12.6思考题
第13章软件设计的进化
13.1软件进化概述
13.1.1软件进化和软件维护
13.1.2阶段模型
13.2需求进化
13.3软件的进化分类
13.4软件的进化策略
13.4.1函数层次
13.4.2类层次
13.4.3构件层次
13.4.4体系结构层次
13.5软件再工程
13.5.1业务过程重构
13.5.2软件再工程的过程模型
13.5.3软件再工程中的经济因素
13.6软件体系结构的进化
13.6.1软件体系结构模型
13.6.2动态软件体系结构
13.6.3软件体系结构重建
13.6.4进化过程
13.7重构
13.7.1重构目标
13.7.2重构的方法
13.8软件移植
13.8.1源代码移植
13.8.2二进制移植
13.9小结
13.10思考题
第14章云计算和大数据系统体系结构
14.1云计算的背景
14.1.1云计算的特点
14.1.2云计算的分类
14.2云计算服务模型
14.2.1设计目标
14.2.2基础设施层IaaS
14.2.3平台层PaaS和应用程序层SaaS
14.3云计算的主要平台
14.3.1谷歌应用引擎
14.3.2亚马逊的弹性计算云
14.3.3微软的Azure
14.3.4IBM的蓝云系统
14.4大数据时代的软件工程
14.4.1大数据的数据特征
14.4.2第四范式
14.5大数据系统
14.5.1存储系统
14.5.2NoSQL系统
14.5.3计算系统
14.5.4查询处理
14.6小结
14.7思考题
参考文献
內容試閱 :
软件正在改变人们的生活。作为21世纪伟大的工程实践,软件已经渗透到当今社会生活的方方面面。人们的生活离不开软件,大多数人每天早晨起床后的第一件事,很可能就是打开某个手机App。计算机C语言的发明人Bjarne Stroustrup所谓人类的文明运行于软件之上,就道尽了此间情景。软件技术是新一轮制造业革命的核心竞争力,我们正进入一个软件定义的时代,软件无处不在、软件定义一切、软件使能一切正是这个时代的特征。
软件中的程序取自工业工程。纵观历史,程序起源于工厂的操作列表,软件工程则类似于工业工程,对于工业工程师来说,程序就是一天工作的规划和操作。以前,软件工程师操纵计算机,使其正确工作并求解问题,当时软件的核心是数据的组织和算法的实现。直到今天,越来越多的底层工作,如内存管理、网络通信等都已实现自动化,或者可以实现代码重用。这样,软件工程师无须直面机器代码,而是使用高级语言、集成工具,把更多思考留给软件问题本身。软件制造复杂多变,其难度远超传统工业工程。随着软件的功能越来越强、使用越来越方便、规模越来越大、复杂程度越来越高,现在构建软件系统注定比以前更加困难。
在解决上述复杂、困难的问题过程中,出现了软件设计和体系结构。复杂性是软件开发过程中固有的特质,而软件设计在于帮助软件工程师驾驭这种复杂性。
作为软件开发的核心活动之一,软件设计对开发出满足需求的高质量软件起着关键作用。软件设计需要综合考虑软件系统的各种约束条件,并给出最优方案。设计方法的快速发展和应用程序的大量部署,使得现有计算机系统内部的代码构成差异很大。随着应用软件市场竞争越来越激烈,用户需求交付越来越快、系统功能越来越多、性能要求越来越可靠,结果就有了复用现有系统代码、代码外包、采购商品化构件进行系统集成。在这种大环境下,软件工程师不能仅凭一种程序设计方法,按照设计书逐步进行开发,而是要从阅读、维护、迁移各种已有的系统和外包代码开始进行程序设计。程序设计方法隐藏在不同来源的代码中,软件工程师需要理解、复用、改造这些代码,并应全面了解各种方法的优缺点。这中间不存在一种放之四海而皆准的程序设计方法,各种方法都有其长处和短处。例如,相对抽象和高级的方法,在提高开发效率的同时,往往会导致执行效率的降低; 相对低级和离硬件近的方法,尽管可能学习时间较短,但是适应面却受到了限制。适合的才是最好的,软件工程师需要根据自己的情况,选择适合的程序设计方法。
软件如同建筑物,软件设计不能脱离实用价值。今天,软件架构师这个在软件领域负责软件设计、分析、处理来自不同涉众、不同关注点和需求关系的职位,已经被普遍认为是软件开发团队的核心。在软件工程方法中,软件需求与软件设计之间存在着一道很难逾越的鸿沟,从而很难有效地将需求转换为相应的设计,而软件体系结构的出现,恰好在需求与设计之间架起一座桥梁,由此实现了软件系统的需求向实现的平坦过渡。软件体系结构是软件架构师洞见系统内部结构、规律、原则、逻辑的过程,并对软件开发的各种外在因素、内在动力、人本属性进行集中关注和深入剖析。作为整体设计的刻画,软件体系结构包括全局组织和控制结构,有关通信、同步、数据存取的协议,设计构件功能定义和物理分布,设计方案的选择、评估、实现等。软件设计的成功,在于有一个健壮、优雅、灵活、易维护的软件体系结构。围绕着比类更大的粒度、更高的抽象,软件体系结构刻画了系统的构件组成、构件的关联结构、构件的交互行为,并给出软件设计的动机,即其在功能目标、非功能目标、制约因素之间的权衡取舍。
智能制造业需要硬件、工艺、流程、知识的软件化,进而实现软件的平台化。伴随软件定义的挑战,不得不说,软件系统无处不在,需要设计出在应用形态上满足新要求的软件体系结构来,这就是软件给未来世界达成的目标,也是软件架构师的机遇所在。
本书由秦航任主编,第1章、第14章由秦航编写,第2章由包小军编写,第3章、第9章由夏浩波编写,第4章、第6章由邱林编写,第5章、第7章、第11章由张健编写,第8章、第10章由徐杏芳编写,第12章、第13章由胡森森编写,全书由秦航负责统稿,由王同喜任主审。借此机会,编者谨向为本书付出辛勤劳动和智慧的老师及全体同仁表示诚挚的谢意。
本书可作为高等院校软件设计与体系结构课程的教材或教学参考书,也可供有一定实际经验的软件工程人员和需要开发应用软件的广大计算机用户阅读参考。
由于作者水平有限,书中不当之处在所难免,敬请广大读者和专家提出宝贵意见,以帮助作者不断地改进和完善。
编者
2020年8月