吃喝玩乐
引子第1章 为什么要研究软件工程1 软件危机1 软件不再只是程序2 危机四伏3 软件危机之证2 软件的问题在哪里1 软件特性2 软件业所面临的问题3 软件问题的幽默画3 软件工程的诞生4 软件工程的命题5 软件工程知识体系1 软件工程知识体系的构成2 软件工程要素3 SWEBOK6 现代软件工程1 开源软件运动2 SaaS3 现代软件工程的基本思想7 小结思考题第2章 软件过程1 完整的软件生命周期1 软件的工程过程2 综合的软件过程2 需求工程1 软件需求2 需求开发3 需求管理3 设计1 软件设计的目标2 体系结构设计3 详细设计4 部署设计5 设计评审4 实施1 单元测试2 集成测试3 功能测试4 系统测试5 验收测试5 部署、运行和维护1 系统部署2 软件运行和技术支持3 维护过程6 软件非工程过程1 计划2 质量保证和管理的过程3 项目管理过程4 基础设施和过程改进7 小结思考题第3章 软件工程目标和要求1 软件工程的基本目标2 软件工程的影响要素3 软件工程的业务需求4 软件工程的质量要求1 质量的含义2 客户是质量的焦点3 软件质量的特性4 影响软件产品质量的因素5 软件过程的质量因素6 软件质量的指标5 软件工程的成本要求1 软件工程的固有成本2 软件的可变成本3 软件工程的劣质成本6 软件工程的资源限制7 软件产品集成要求1 传统产业的启示2 软件产品工程8 小结思考题第4章 软件工程思想1 永远不可低估思想的作用2 以人为本3 软件开发不是一门艺术4 向传统工业学习1 客户为导向2 需求分析是基础3 过程决定结果4 持续改进过程5 缺陷预防6 围绕项目开展工作7 验证和确认缺一不可8 以架构设计为中心5 软件工程的例外1 迭代2 敏捷开发思想3 持续构建和集成4 永远的B5 面向对象是一种思想6 软件工程应归为知识管理6 软件工厂思想1 模块化思想2 面向构件思想3 软件复用4 中间件5 自动化无处不在7 小结思考题第5章 软件工程方法1 软件方法论1 系统工程方法论2 软系统方法论3 软件工程方法体系2 用户需求的获取方法3 软件工程的分析方法1 系统分析方法2 问题分析方法3 根本原因分析4 决策分析4 软件工程的设计方法1 原型设计方法2 结构化方法3 面向对象方法4 面向构件设计方法5 面向服务方法6 可视化方法5 软件测试方法1 白盒和黑盒的测试方法2 静态和动态的测试方法3 ALAC测试和随机测试4 自动化测试方法6 小结思考题第6章 软件建模1 一个简单建模的例子2 软件建模1 为什么要建模2 软件建模概述3 如何建模3 元建模4 建模语言和UML1 建模语言的起源2 实体关系建模3 UML4 UML视图5 建模机制6 系统建模语言SysML7 虚拟现实建模语言5 软件过程模型1 瀑布模型的不足2 V模型诠释软件过程3 没有统一天下的RUP4 MSF的过程模型6 小结思考题第7章 软件工程环境1 环境造就软件2 软件工程组织1 软件组织环境2 软件组织的作用3 PSP改进个人能力4 TSP提高团队水平5 完整的组织框架3 软件工程文化1 过程文化2 质量文化4 软件工程基础设施5 过程定义1 软件过程定义的基础2 剪裁标准软件过程的指南和准则6 过程评估和改进1 软件过程评估的目标和期望2 软件过程评估的内容和范围3 软件过程评估的方式和类型4 软件过程评估的方法5 过程改进的IDEAL模型6 过程改进的Raytheon方法7 过程改进实施的原则8 过程改进实施7 小结思考题第8章 软件项目管理1 软件项目管理概述1 软件项目管理的3P2 软件项目管理的实质3 软件项目管理的目标和范围2 软件项目的分类3 制定计划1 软件规模度量2 软件开发的估算模型3 项目工作量估算4 日程和人力资源安排5 项目成本估算4 资源管理5 进度和成本管理1 里程碑控制和关键路径2 项目成本控制3 项目进度的特性及外在关系6 质量管理1 软件质量计划2 软件评审3 缺陷预防4 质量度量7 风险管理1 风险识别2 风险分析和评估8 软件配置管理1 配置管理的基本概念2 版本控制3 变更控制9 项目跟踪和控制10 小结思考题第9章 软件工具1 ICASE2 IDE3 商业工具解决方案1 典型的完整解决方案2 商业IDE3 需求分析和管理工具4 建模和设计工具5 测试工具6 配置管理工具4 开源工具集成的解决方案1 开源代码许可协议2 开源的Web开发框架3 开源的IDE4 PHP及其他语言的IDE5 开源测试工具6 覆盖软件过程的其他开源工具5 小结思考题附录A 软件工程术语中英文对照附录B 项目视图和范围的文档模板参考文献-------------------------------------------------------------------------------------------------------------------------------------本书已经出版了三个版本,累计销售达60万册,成为软件工程领域的经典教材,先后荣获全国普通高等学校工科电子表类专业优秀教材第二等奖、一等奖。为了反映年来软件工程的发展状况,作者主要从下述3个方面对第三版作了精心修改:删掉了一些较陈旧的或较次要的内容,增加了一些较新颖的或较重要发的内容,用UML的概念与符号重新改定了有关面向对象方法学的内容。 
软件工程思想目录1序言、前言1序2前 言3致 谢52软件工程基本观念1软件工程的目标与常用模型2软件开发的基本策略1复用2分而治之3优化——折衷3一些不正确的观念4一些有争议的观念5小 结143程序员与程序经理1了解程序员2了解程序经理3程序员升为经理后是否还要编程4经理与技术队伍的建设5向错误与失败学习6提高综合素责7小结224项目计划与质量管理1项目计划1知己知彼2进度安排2零缺陷质量管理的观念1高目标2可执行的规范3软件的质量因素1正确性与精确性2性能与效率3易用性4可理解性与简洁性5可复用性与可扩充性4质量检查5小结315可行性分析与需求分析1可行性分析的要素1经济2技术3社会环境4人2可行性分析案例1可行性分析案例之一2可行性分析案例之二3可行性分析案例之三3需求分析为什么困难1客户说不清楚需求2需求自身经常变动3分析人员或客户理解有误4如何进行需求分析1应该了解什么2通过什么方式去了解5小结476系统设计1体系结构设计1层次结构2客户机/服务器结构2模块设计1信息隐藏2内聚与耦合3封闭、开放性3数据结构与算法设计4用户界面设计1界面设计中美的需求与导向作用2界面美的内涵5系统设计示例1设计背景2Intra3D 3支持协同工作的网络通讯开发系统 CNC 4应用示例6小 结697C++面向对象程序设计1C++面向对象程序设计的重要概念1类与对象2继承与组合3虚函数与多态2良好的编程风格1命名约定2使用断言3new、delete与指针4使用5其它建议3小结888测试与改错1对测试的理解1测试的目的2测试的心理要求3测试的真理4测试与质量的关系2测试人员的选择1Microsoft公司的经验教训2测试人员的分工3测试的主要内容与常用方法1正确性测试2容错性测试3性能与效率测试4易用性测试5文档测试4改错5小结969维护与再生工程1软件维护的常识2维护的代价及其主要因素3再生工程1重构2逆向工程3前向工程4小 结100第一章 软件工程基本观念本章讲述软件工程的基本观念,是关于软件工程宏观上的探讨。如果你是软件公司的老板,用不着在第一线工作,那么看这一章就够了。但你一定要让员工们相信不停地工作是人生最大的快乐,并且让他们把本书看完。1 节讲述软件工程的目标和常用的软件工程模型。2 节讲述软件开发的基本策略:“复用” 、 “分而治之” 、 “优化——折衷” ,有助于指导实践者选择方法和产生新方法。3节例举一些不正确的观念,取材于早期软件人员比较幼稚的想法,初学者可以引以为戒。4节探讨一些有争议的观念。看完本章, 要树立这样的信念: 软件开发过程中的坎坎坷坷, 仿佛只是人脸的凹凸不平,用热水毛巾一把就可抹平。让我们高举程序主义、软件工程思想的伟大旗帜,紧密团结在以Microsoft 为核心的软件公司周围,沿着比尔·盖茨的生财之道,不分白天黑夜地编程,把建设有中国特色的软件产业的伟大事业全面推向 21 世纪。