源码爱好者
秒速快三 > 软件下载 > 电子书籍 > 电脑教程 > 编程辅导 > 深入理解软件构造系统:原理与最佳实践 带目录完整pdf[54MB]
更多下载地址
深入理解软件构造系统:原理与最佳实践 带目录完整pdf[54MB]

软件大小:54.5MB

软件语言:简体中文

软件授权:免费软件

软件类别:编程辅导

软件等级:

更新时间:2019-07-22

官方网站:

应用平台:PDF

  • 软件介绍
  • 软件截图
  • 下载地址

构造系统在软件开发过程中处于核心地位,它的正确性和性能,在一定程度上决定了软件开发成果的质量和软件开发过程的效率。本书作者作为一名软件构造系统专家,总结了自己在构造系统开发和维护方面的多年经验,对软件构造系统的原理进行了深入浅出的剖析,并通过各种实际使用场景,对几种最流行的构造工具进行了对比分析,另外还讨论了构造系统的性能优化、规模提升等高级主题。

本书分为四部分。第一部分:基础知识,第1~5章分别从构造系统的高层概念、基于Make的构造系统、程序的运行时视图、文件类型与编译工具、子标的与构造变量等方面介绍构造系统的概念和相关主题。第二部分:构造工具,第6~10章结合实际场景案例,对GNU Make、Ant、SCons、CMake和Eclipse IDE这五种构造工具进行分析比较,品评优劣,帮助读者了解构造工具的当前状况,并理解每种工具的优缺点。第三部分:高级主题,第11~16章对依赖关系、元数据、软件打包与安装、构造机器、工具管理等高级主题进行讨论,帮助读者理解关于建设构造系统的许多高级主题,并了解最佳实践。第四部分:提升规模,第17~19章讨论了在大规模构造系统的环境下,如何降低复杂性,提高构造运行速度,帮助读者理解如何设计出能够适应规模增长的小型构造系统,从而对软件构造系统有更好的认识。

目录

对本书的赞誉译者序前 言致 谢作者介绍第一部分 基础知识第1章 构造系统概述21。1 什么是构造系统21。1。1 编译型语言31。1。2 解释型语言31。1。3 Web应用41。1。4 单元测试51。1。5 静态分析51。1。6 文档生成61。2 构造系统的各个组成部分61。2。1 版本控制工具71。2。2 源树与目标树71。2。3 编译工具和构造工具81。2。4 构造机器91。2。5 发布打包与目标机器91。3 构造过程和构造描述111。4 如何使用构造系统12构造管理工具121。5 构造系统的质量13本章小结14第2章 基于Make的构造系统152。1 Calculator示例152。2 创建一个简单的makefile172。3 对这个makefile进行简化192。4 额外的构造任务202。5 框架的运用21本章小结23第3章 程序的运行时视图243。1 可执行程序243。1。1 原生机器码253。1。2 单体系统镜像253。1。3 程序完全解释执行263。1。4 解释型字节码263。2 程序库283。2。1 静态链接283。2。2 动态链接293。3 配置文件和数据文件303。4 分布式程序30本章小结31第4章 文件类型与编译工具334。1 C/C++344。1。1 编译工具344。1。2 源文件354。1。3 汇编语言文件374。1。4 目标文件384。1。5 可执行程序404。1。6 静态程序库404。1。7 动态程序库414。1。8 C++编译424。2 Java434。2。1 编译工具434。2。2 源文件444。2。3 目标文件454。2。4 可执行程序474。2。5 程序库484。3 C#484。3。1 编译工具494。3。2 源文件494。3。3 可执行程序514。3。4 程序库534。4 其他文件类型554。4。1 基于UML的代码生成564。4。2 图形图像574。4。3 XML配置文件584。4。4 国际化与资源绑定58本章小结59第5章 子标的与构造变量605。1 针对子标的进行构造615。2 针对软件的不同版本进行构造625。2。1 指定构造变量635。2。2 对代码的定制调整655。3 针对不同的目标系统架构进行构造685。3。1 多重编译器685。3。2 面向指定平台的文件/功能695。3。3 多个目标树69本章小结71第二部分 构造工具现实场景75场景1:源代码放在单个目录中75场景2:源代码放在多个目录中76场景3:定义新的编译工具76场景4:针对多个变量进行构造77场景5:清除构造树77场景6:对不正确的构造结果进行调试78第6章 Make796。1 GNU Make编程语言806。1。1 makefile规则:用来建立依赖关系图806。1。2 makefile规则的类型816。1。3 makefile变量826。1。4 内置变量和规则846。1。5 数据结构与函数856。1。6 理解程序流程876。1。7 进一步阅读资料906。2 现实世界的构造系统场景906。2。1 场景1:源代码放在单个目录中906。2。2 场景2(a):源代码放在多个目录中926。2。3 场景2(b):对多个目录进行迭代式Make操作936。2。4 场景2(c):对多个目录进行包含式Make操作966。2。5 场景3:定义新的编译工具1016。2。6 场景4:针对多个变量进行构造1026。2。7 场景5:清除构造树1046。2。8 场景6:对不正确的构造结果进行调试1056。3 赞扬与批评1076。3。1 赞扬1076。3。2 批评1086。3。3 评价1096。4 其他类似工具1106。4。1 Berkeley Make1106。4。2 NMake1116。4。3 ElectricAccelerator和Spark Build111本章小结113第7章 Ant1157。1 Ant编程语言1167。1。1 比“Hello World”稍多一些1167。1。2 标的的定义和使用1187。1。3 Ant的控制流1197。1。4 属性的定义1207。1。5 内置的和可选的任务1227。1。6 选择多个文件和目录1257。1。7 条件1267。1。8 扩展Ant语言1277。1。9 进一步阅读资料1287。2 现实世界的构造系统场景1297。2。1 场景1:源代码放在单个目录中1297。2。2 场景2(a):源代码放在多个目录中1307。2。3 场景2(b):多个目录,多个build。xml文件1307。2。4 场景3:定义新的编译工具1337。2。5 场景4:针对多个变量进行构造1367。2。6 场景5:清除构造树1407。2。7 场景6:对不正确的构造结果进行调试1417。3 赞扬与批评1427。3。1 赞扬1437。3。2 批评1437。3。3 评价1447。4 其他类似工具1447。4。1 NAnt1447。4。2 MS Build145本章小结146第8章 SCons1478。1 SCons编程语言1488。1。1 Python编程语言1488。1。2 简单编译1518。1。3 管理构造环境1548。1。4 程序流程和依赖关系分析1578。1。5 决定何时重新编译1588。1。6 扩展该语言1608。1。7 其他有趣的特性1628。1。8 进一步阅读资料1638。2 现实世界的构造系统场景1638。2。1 场景1:源代码放在单个目录中1638。2。2 场景2(a):源代码放在多个目录中1638。2。3 场景2(b):多个SConstruct文件1648。2。4 场景3:定义新的编译工具1658。2。5 场景4:针对多个变量进行构造1678。2。6 场景5:清除构造树1688。2。7 场景6:对不正确的构造结果进行调试1698。3 赞扬与批评1718。3。1 赞扬1718。3。2 批评1728。3。3 评价1738。4 其他类似工具1738。4。1 Cons1738。4。2 Rake174本章小结176第9章 CMake1779。1 CMake编程语言1789。1。1 CMake语言基础1789。1。2 构造可执行程序和程序库1799。1。3 控制流1829。1。4 跨平台支持1849。1。5 生成原生构造系统1859。1。6 其他有趣的特性以及进一步阅读资料1909。2 现实世界的构造系统场景1919。2。1 场景1:源代码放在单个目录中1919。2。2 场景2:源代码放在多个目录中1919。2。3 场景3:定义新的编译工具1929。2。4 场景4:针对多个变量进行构造1939。2。5 场景5:清除构造树1949。2。6 场景6:对不正确的构造结果进行调试1949。3 赞扬与批评1959。3。1 赞扬1959。3。2 批评1959。3。3 评价1969。4 其他类似工具1969。4。1 Automake1969。4。2 Qmake197本章小结197第10章 Eclipse19910。1 Eclipse的概念和GUI19910。1。1 创建项目20010。1。2 构造项目20610。1。3 运行项目21010。1。4 使用内部项目模型21210。1。5 其他构造特性21310。1。6 进一步阅读资料21410。2 现实世界的构造系统场景21510。2。1 场景1:源代码放在单个目录中21510。2。2 场景2:源代码放在多个目录中21610。2。3 场景3:定义新的编译工具21710。2。4 场景4:针对多个变量进行构造21710。2。5 场景5:清除构造树22010。2。6 场景6:对不正确的构造结果进行调试22010。3 赞扬与批评22110。3。1 赞扬22110。3。2 批评22110。3。3 评价22210。4 其他类似工具222本章小结224第三部分 高级主题第11章 依赖关系22611。1 依赖关系图22711。1。1 增量式编译22811。1。2 完全、增量式和子标的构造22811。2 依赖关系错误导致的问题22911。2。1 问题:依赖关系缺失导致运行时错误22911。2。2 问题:依赖关系缺失导致编译错误23011。2。3 问题:多余的依赖关系导致大量不必要的重新构造23111。2。4 问题:多余的依赖关系导致依赖关系分析失败23111。2。5 问题:循环依赖关系23211。2。6 问题:以隐式队列顺序替代依赖关系23211。2。7 问题:Clean标的什么也清除不了23311。3 步骤一:计算依赖关系图23311。3。1 获取确切的依赖关系23411。3。2 把依赖关系图缓存起来23611。3。3 对缓存的依赖关系图进行更新23711。4 步骤二:判断哪些文件已过期23911。4。1 基于时间戳的方法24011。4。2 基于校验和的方法24111。4。3 标志参数比较24211。4。4 其他高级方法24311。5 步骤三:为编译步骤排定队列顺序243本章小结246第12章 运用元数据进行构造24712。1 调试支持24712。2 性能分析支持24912。3 代码覆盖分析支持25012。4 源代码文档化25112。5 单元测试25312。6 静态分析25612。7 向构造系统加入元数据257本章小结258第13章 软件打包与安装25913。1 归档文件26013。1。1 用于打包的脚本26013。1。2 其他归档文件格式26213。1。3 对打包脚本的改进26313。2 包管理工具26513。2。1 RPM包管理工具格式26513。2。2 rpm build过程26613。2。3 RPM规格文件示例26713。2。4 根据规格文件创建RPM文件27213。2。5 安装RPM示例27413。3 定制式GUI安装工具27513。3。1 Nullsoft Scriptable Install System(NSIS)27613。3。2 安装工具脚本27713。3。3 定义安装页面28013。3。4 许可授权页面28113。3。5 选择安装目录28213。3。6 主要组件28213。3。7 可选组件28313。3。8 定制页面28513。3。9 安装页面和卸载程序286本章小结288第14章 版本管理28914。1 对哪些东西进行版本控制29014。1。1 构造描述文件29014。1。2 对工具的引用29214。1。3 大型二进制文件29614。1。4 对源树的配置29614。2 哪些东西不应当放到源树中29714。2。1 生成的文件被保存到源树中29714。2。2 生成的文件被纳入到版本控制中29914。2。3 构造管理脚本29914。3 版本编号30014。3。1 版本编号体系30014。3。2 协调并更新版本号30114。3。3 版本号的保存与检索302本章小结303第15章 构造机器30515。1 原生编译与跨平台编译30615。1。1 原生编译30615。1。2 跨平台编译30615。1。3 异构环境30715。2 集中式开发环境30715。2。1 构造机器为何有差异30815。2。2 管理多个构造机器31015。3 开源开发环境31215。4 GNU Autoconf31515。4。1 高层次工作流31515。4。2 Autoconf示例31715。4。3 运行autoheader和autoconf31915。4。4 在构造机器上运行configure脚本32015。4。5 使用配置信息322本章小结323第16章 工具管理32416。1 工具管理的规则32416。1。1 规则1:做笔记32416。1。2 规则2:对源代码进行版本控制32516。1。3 规则3:定期升级工具32616。1。4 规则4:对工具的二进制文件进行版本控制32716。1。5 对规则的破坏32916。2 编写自己的编译工具329用Lex和Yacc编写定制工具330本章小结332第四部分 提升规模第17章 降低最终用户面对的复杂性33417。1 构造框架33417。1。1 面向开发人员的构造描述33517。1。2 面向框架的构造描述33617。1。3 惯例优先于配置33617。1。4 构造工具示例:Maven33717。2 避免支持多个构造变量的原因33817。2。1 需要测试更多的构造变量33817。2。2 代码会变得混乱33917。2。3 构造时间会增多34017。2。4 需要更多磁盘空间34017。3 降低复杂性的各种技术方法34017。3。1 使用现代构造工具34017。3。2 自动检测依赖关系34117。3。3 把生成的文件放在源树之外34117。3。4 确保正确清除构造树34117。3。5 碰到第一个错误即中止构造34217。3。6 提供有意义的错误信息34317。3。7 校验输入参数34317。3。8 不要把构造脚本搞得过分复杂34417。3。9 避免使用晦涩的语言特性34417。3。10 不要用环境变量控制构造过程34517。3。11 确保构造形成的发布版与调试版保持相似34517。3。12 准确显示正在执行的命令34617。3。13 把对工具的引用纳入版本控制34717。3。14 把构造指令纳入版本控制34717。3。15 自动检测编译标志参数的变化34717。3。16 不要在构造系统中调用版本控制工具34717。3。17 尽量频繁地进行持续集成34817。3。18 统一使用一种构造机器34817。3。19 统一使用一种编译器34817。3。20 避免遗留#ifdefs的垃圾代码34817。3。21 使用有意义的符号名34917。3。22 删除垃圾代码34917。3。23 不要复制源文件35017。3。24 使用统一的构造系统35017。4 对构造系统进行规划充分、人力充足的改进351本章小结352第18章 管理构造规模35318。1 单体模型构造存在的问题35418。2 组件式软件35518。2。1 使用组件的好处35718。2。2 组件到底是什么35818。2。3 把多个组件集成到单个产品中36118。3 人员和过程管理36418。3。1 开发团队的结构36518。3。2 组件版本队列管理36718。3。3 管理组件缓存36818。3。4 协调软件新特性的开发37018。4 Apache Ivy372本章小结373第19章 更快的构造37519。1 度量构造系统性能37519。1。1 启动阶段的性能度量37519。1。2 编译阶段的性能度量38219。1。3 性能度量工具38619。1。4 修正问题:改进性能38819。2 构造减免:消除不必要的重新构造38919。2。1 目标文件缓存38919。2。2 智能依赖关系39119。2。3 构造减免的其他技术方法39519。3 并行39619。3。1 构造集群/云39619。3。2 并行构造工具39719。3。3 对可伸缩性的限制39819。4 减少磁盘使用398本章小结400参考文献401

软件截图
  • 深入理解软件构造系统:原理与最佳实践 带目录完整pdf[54MB]
  • 下载地址
  • 热门软件
  • 热门标签
Anti Windows Update32位+64位 V1.1.28.0最新版 秒速快三qq2018最新版官方下载电脑版 v9.0.8 官方版下载 鹰之岛游戏下载 优酷 for mac v1.5.13 官方版 lol换肤大师 v9.3.2 全英雄版 ocam屏幕录像工具 v460.0 中文版 Lenovo Quick Fix电脑高性能管理工具 V1.0.0.1最新版 莉蒂与苏尔的工作室:不可思议绘画之炼金术士 PC正式版 win10系统激活工具 v1.0 免费版 aida64中文版 v6.00.5100 绿色工程师版 二之国2:幽灵国度 CODEX未加密硬盘版 亿万僵尸(They Are Billions) 简体中文硬盘版 macos sierra 10.12.5beta2 官方版 梦境行者永不入眠(Dreamwalker: Never Fall Asleep) 简体中文免安装版 NOD32升级ID获取工具v12.12绿色版 视频转换/刻录VSO ConvertXtoDVD v7.0.0.52 中文特殊版 microsoft office2007 官方版 猪兔大战S.W.I.N.E v1.09 简体中文完整版 aurora hdr 2019 v1.0.0.2517 中文版 飞飞世界模型加密工具 AVS无需重编码的视频剪辑软件(AVS Video ReMaker) 6.0.3.203 中文破解绿色版 鲁大师最新版 v5.15.18 免费版 workwin局域网管理软件 v10.2.2 完美免费版 秒速快三能力直播 在线课堂 v3.0.6.4 官方最新安装版 360安全卫士win10版 v11.6.0.1027 官方版 dragonhd v1.2.4 免费版 vmware 14 pro v14.1.3 官方版 卡巴斯基无广告免费版2017 360解密大师 v11.7.6.1160 官方版 好图看看 v1.0.9.8 官方版 mremoteng v1.75 中文版 win10创意者正式版 build 15063 官方版 panabit v9.2 免费版 金山毒霸安全套装2015 v0331 官方版下载 刀锋电竞开黑平台 v1.8.1.2 官方版下载
返回顶部 江苏快三开奖结果 江苏快三开奖结果 秒速快3 秒速快三 江苏快三开奖结果 秒速快3 秒速快3 江苏快三开奖结果 江苏快三开奖结果 江苏快三开奖结果