新書推薦:
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:HK$
102.4
《
治盗之道:清代盗律的古今之辨
》
售價:HK$
125.4
《
甲骨文丛书·剑桥世界暴力史(第一卷):史前和古代世界(套装全2册)
》
售價:HK$
210.6
《
甲骨文丛书·中华早期帝国:秦汉史的重估
》
售價:HK$
300.2
《
欲望与家庭小说
》
售價:HK$
101.2
《
惜华年(全两册)
》
售價:HK$
72.2
《
甲骨文丛书·古代中国的军事文化
》
售價:HK$
99.7
《
中国王朝内争实录(套装全4册):从未见过的王朝内争编著史
》
售價:HK$
250.7
|
內容簡介: |
本书深入介绍了从开发方法、生产力到面向对象的设计需求和系统文档的方方面面。通过本书,你将学习到:为什么遵循软件匠艺模型可以让你做到最好;如何利用可追溯性来加强文档的一致性;如何通过用例分析来创建自己的UML需求;如何利用IEEE文档标准开发出更好的软件。通过对高质量软件开发中技能、态度和道德方面的深入讲解,本书揭示了如何将工程原理应用于编程的正确方法。在这个过程中,Hyde不仅会教给你规则,还会告诉你什么时候该打破规则。他不仅会启发你认识什么是最佳实践,同时还会让你发现适合自己的最佳实践。本书中包含了大量的资源和示例,它是你编写代码的首选指南,将让你从同行中脱颖而出。
|
關於作者: |
Randall Hyde是The Art of Assembly Language(《汇编语言的编程艺术》)和Write Great Code(《编程卓越之道》)第1~3卷(均由No Starch Press出版),以及Using 6502 Assembly Language和P-Source(由Datamost出版)的作者。他也是Microsoft Macro Assembler 6.0 Bible(由Waite Group出版)一书的合著者。在过去的40年里,Hyde一直从事嵌入式软件/硬件工程师的工作,为核反应堆、交通控制系统和其他电子设备开发相关指令集。他还在加州理工大学波莫纳分校和加州大学河滨分校教授计算机科学课程。
张若飞,曾任多家互联网金融公司CTO,在宜人贷、雅虎北研、金山云等知名公司担任架构师。十余年互联网研发及技术管理经验,对搭建海量数据、大型分布式系统有丰富经验。著有十余本技术译著,包括《Grails权威指南》《给大忙人看的JavaSE 8》《代码不朽:编写可维护软件的十大原则》《面向可伸缩架构》《云原生Java》等书,总计400余万字。
|
目錄:
|
第 1 部分 个人软件工程
1 软件开发的比喻 ................................................................................................. 2
1.1 什么是软件 .......................................................................................................... 2
1.1.1 软件不是被制造出来的 ........................................................................... 3
1.1.2 软件不会磨损 ........................................................................................... 3
1.1.3 大多数软件都是定制化的 ....................................................................... 3
1.1.4 软件可以很容易升级 ............................................................................... 4
1.1.5 软件不是一个独立的实体 ....................................................................... 4
1.2 与其他领域的相似性 ........................................................................................... 4
1.2.1 程序员像艺术家一样 ............................................................................... 4
1.2.2 程序员像建筑师一样 ............................................................................... 5
1.2.3 程序员像工程师一样 ............................................................................... 6
1.2.4 程序员像工匠一样 ................................................................................... 7
1.2.5 究竟是艺术家、建筑师、工程师还是工匠 ........................................... 7
1.3 软件工程 .............................................................................................................. 8
1.3.1 一个正式的定义 ....................................................................................... 9
1.3.2 项目规模 ................................................................................................. 10
1.3.3 软件工程的问题 ..................................................................................... 12
1.4 软件匠艺 ............................................................................................................ 13
1.4.1 教育 ......................................................................................................... 13
1.4.2 学徒阶段 ................................................................................................. 14
1.4.3 软件熟练工 ............................................................................................. 15
1.4.4 大师级工匠 ............................................................................................. 15
1.4.5 软件匠艺的不足 ..................................................................................... 16
目录 XXI
1.5 通往卓越编程的道路 ......................................................................................... 16
1.6 获取更多信息 .................................................................................................... 17
2 生产力 ............................................................................................................. 18
2.1 什么是生产力 .................................................................................................... 18
2.2 程序员生产力与团队生产力的比较 ................................................................. 19
2.3 工时和实际时间 ................................................................................................ 20
2.4 概念复杂性和范围复杂性 ................................................................................. 21
2.5 预测生产力 ........................................................................................................ 22
2.6 度量指标,以及我们为什么需要它们 ............................................................. 23
2.6.1 可执行文件大小度量指标 ..................................................................... 24
2.6.2 机器指令度量指标 ................................................................................. 24
2.6.3 代码行数度量指标 ................................................................................. 25
2.6.4 语句数量度量指标 ................................................................................. 25
2.6.5 功能点分析 ............................................................................................. 26
2.6.6 McCabe 圈复杂度度量指标 ................................................................... 26
2.6.7 其他度量指标 ......................................................................................... 27
2.6.8 度量指标的问题 ..................................................................................... 28
2.7 我们怎样才能每天写出 10 行代码 ................................................................... 29
2.8 估计开发时间 .................................................................................................... 30
2.8.1 估计小型项目的开发时间 ..................................................................... 30
2.8.2 估计中型项目和大型项目的开发时间 ................................................. 31
2.8.3 估计开发时间的问题 ............................................................................. 32
2.9 危机模式项目管理............................................................................................. 33
2.10 如何提高工作效率 ........................................................................................... 34
2.10.1 合理选择软件开发工具 ....................................................................... 34
2.10.2 管理开销 ............................................................................................... 36
2.10.3 设置明确的目标和里程碑 ................................................................... 37
2.10.4 练习自我激励 ....................................................................................... 37
2.10.5 集中注意力,消除干扰 ....................................................................... 38
2.10.6 如果你觉得无聊,那么就做点别的事情 ........................................... 39
2.10.7 尽可能自立 ........................................................................................... 39
XXII 编程卓越之道(卷 3):软件工程化
2.10.8 识别何时需要帮助 ............................................................................... 40
2.10.9 克服士气低落 ....................................................................................... 40
2.11 获取更多信息 ................................................................................................... 41
3 软件开发模型................................................................................................... 42
3.1 软件开发生命周期............................................................................................. 42
3.2 软件开发模型 .................................................................................................... 45
3.2.1 非正式模型 ............................................................................................. 46
3.2.2 瀑布模型 ................................................................................................. 47
3.2.3 V 模型 ..................................................................................................... 49
3.2.4 迭代模型 ................................................................................................. 50
3.2.5 螺旋模型 ................................................................................................. 52
3.2.6 快速应用程序开发模型 ......................................................................... 54
3.2.7 增量模型 ................................................................................................. 56
3.3 软件开发方法论 ................................................................................................ 57
3.3.1 传统的(预测型)方法论 ................................
|
|