导论 1
第一章 对软件的认识与再认识 5
1.1 软件发展简史 6
1.2 软件的成就与挑战 7
1.3 对软件的反思与再认识 11
1.3.1 软件的悖论 11
1.3.2 对软件的再认识 13
1.4 软件的知识图谱 20
第二章 论软件工程——与传统工程的比较 22
2.1 工程、项目及其实践 23
2.1.1 工程的起源与发展 23
2.1.2 工程学与科学管理 24
2.1.3 典型的工程实践 25
2.1.4 项目管理及其应用 26
2.2 软件工程 28
2.2.1 软件工程的发展历程 29
2.2.2 软件工程的实现框架:CMM过程模型 29
2.3 软件工程与建筑工程的比较——建设程序角度 32
2.3.1 建筑工程 32
2.3.2 软件工程 35
2.3.3 两者的比较 36
2.4 软件工程与建筑工程的比较——项目管理角度 37
2.4.1 范围管理 37
2.4.2 进度管理 39
2.4.3 成本管理 41
2.4.4 质量管理 47
2.5 软件工程与建筑工程的比较——客体关系角度 49
2.5.1 建筑工程 49
2.5.2 软件工程 52
2.6 软件工程与建筑工程的比较——工程经济角度 55
2.6.1 建筑工程 55
2.6.2 软件工程 56
2.7 软件工程与建筑工程的比较——参与者的感受角度 58
2.8 小结 59
第三章 软件的哲学分析 61
3.1 软件哲学 62
3.1.1 什么是软件哲学 62
3.1.2 信息哲学 63
3.1.3 软件哲学的范畴 66
3.2 软件本体论 67
3.3 软件认识论 72
3.3.1 软件与认知理论 77
3.3.2 软件与知识论 79
3.3.3 软件工程与工艺 83
3.4 软件方法论 85
3.4.1 软件开发模型 85
3.4.2 软件设计的哲理 89
3.4.3 程序开发的人因性 95
3.4.4 软件质量与测试 97
3.4.5 软件的元技术思考 99
第四章 软件的社会学分析及实践 104
4.1 软件用户心理学及软件可用性 105
4.1.1 软件用户心理学的概念 105
4.1.2 软件可用性与人机交互 106
4.2 软件组织行为学 110
4.2.1 技术人员的差异 111
4.2.2 程序员的能力建设 112
4.2.3 软件组织能力模型 113
4.2.4 看不见的手——社会文化和技术文化 115
4.3 软件企业组织管理 117
4.3.1 科学管理与现代企业 117
4.3.2 软件企业管理 119
4.4 客户关系管理 123
4.5 合作伙伴关系管理 124
4.6 软件工程师的许可与培养 127
4.6.1 许可与认证 127
4.6.2 为什么许可不适用于软件 127
4.6.3 软件工程师的知识技能结构 131
4.6.4 软件人才的培养 134
第五章 软件经济学与软件产业 136
5.1 什么是软件经济学 137
5.2 微观软件经济学 139
5.2.1 软件工程经济学 140
5.2.2 软件生产率管理 145
5.2.3 软件产品和服务的定价 148
5.3 软件产业经济学 151
5.3.1 关于软件产业 151
5.3.2 软件产业经济分析 155
5.3.3 美国的软件产业 159
5.4 软件业生态分析 162
5.4.1 软件业的生态环境 163
5.4.2 软件业的外部要素 164
第六章 软件伦理与法律 168
6.1 软件伦理问题 169
6.1.1 伦理与计算机伦理学 169
6.1.2 与职业伦理学的关系 170
6.1.3 软件伦理的范畴 171
6.2 软件质量的法律问题 177
6.2.1 软件质量缺陷的影响 177
6.2.2 软件质量问题的法理分析 178
6.2.3 软件质量问题的法律实践 181
6.3 软件合同的法律问题 183
6.3.1 为什么软件开发会失败 183
6.3.2 软件合同的争议及根源 184
6.3.3 如何降低争议和诉讼的风险 185
6.4 软件的法律保护 186
附录一 软件业大事记 193
附录二 ACM/IEEE-CS软件工程道德规范和职业准则 198
附录三 美国的计算机专业本科及研究生课程设置 206
参考文献 208
后记 213