软件工程思想:实践与智慧

需积分: 0 0 下载量 14 浏览量 更新于2024-08-01 收藏 1.86MB PDF 举报
"《软件工程思想》是林锐的作品,书中深入浅出地探讨了软件开发的原理和实践经验,强调了软件工程方法的重要性。作者通过自身经历,将软件工程的原则和策略融入故事之中,使读者在轻松的阅读中理解复杂的概念。书中提到,软件工程不仅仅是解决问题的工具,更是一种预防问题、提升软件质量的理念。它倡导在开发过程中提前规划,避免出现问题后再寻求解决方案。同时,书中也提及作者林锐的个人品质,他以实际行动展示了积极的人生观和社会责任感,这同样也是软件工程师应有的精神风貌。" 在这本书中,软件工程思想被定义为软件开发者必须掌握的道理和实践方法,它源于软件开发过程中的成功与失败。软件工程的核心是工程化的方法,旨在通过系统的、规范化的流程提高软件的质量和可靠性,从而避免“软件危机”。自1968年提出这个概念以来,尽管软件行业仍然面临一些挑战,但软件工程的发展推动了行业的快速进步。 书中提到,早期的程序设计更像是艺术家的创作,程序员凭借高超的技术编写出复杂且难以理解的代码,导致软件质量低下、错误频繁等问题。为了解决这些问题,软件工程引入了结构化设计、模块化编程、需求分析、测试等方法,旨在提高软件的可读性、可维护性和可扩展性。这些方法论使得软件开发变得更为系统化和规范化。 软件工程还包括项目管理、团队协作、风险管理等多个方面。有效的项目管理能确保软件开发按时按质完成,团队协作则可以优化资源配置,提高工作效率。风险管理则要求开发者预见并规避可能的问题,确保软件项目的顺利进行。 此外,林锐强调软件工程师应具备的道德和职业素养,如真实、正直、对社会有责任感。这种品质不仅体现在个人行为上,也体现在对技术的严谨态度和对社会的积极贡献上。软件工程师不仅要追求技术的精进,还要关注技术的社会影响,这与林锐资助贫困学生、保护环境的行为相呼应,体现了软件工程思想中的人文关怀。 《软件工程思想》是一部结合实践经验和深刻洞察力的作品,它不仅教导读者如何运用软件工程方法,还启示我们作为一名优秀的软件工程师应有的精神和价值观。这本书对于想要深入理解软件工程理念和实践的人来说,是一份宝贵的指南。
2009-10-26 上传
目 录 第一章 软件工程基本观念 1.1 软件工程的目标与常用模型 1.2 软件开发的基本策略 1.2.1 复用 1.2.2 分而治之 1.2.3 优化——折衷 1.3 一些不正确的观念 1.4 一些有争议的观念 1.5 小结 第二章 程序员与程序经理 2.1 了解程序员 2.2 了解程序经理 2.3 程序员升为经理后是否还要编程 2.4 经理与技术队伍的建设 2.5 向错误与失败学习 2.6 提高综合素责 2.7 小结 第三章 项目计划与质量管理 3.1 项目计划 3.1.1 知己知彼 3.1.2 进度安排 3.2 零缺陷质量管理的观念 3.2.1 高目标 3.2.2 可执行的规范 3.3 软件的质量因素 3.3.1 正确性与精确性 3.3.2 性能与效率 3.3.3 易用性 3.3.4 可理解性与简洁性 3.3.5 可复用性与可扩充性 3.4 质量检查 3.5 小结 第四章 可行性分析与需求分析 4.1可行性分析的要素 4.1.1 经济 一、成本——收益分析 二、短期——长远利益分析 4.1.2 技术 4.1.3 社会环境 4.1.4 人 4.2 可行性分析案例——投资软件公司失败的教训 4.2.1可行性分析案例之一 4.2.2 可行性分析案例之二 4.2.2 可行性分析案例之三 4.3 需求分析为什么困难 4.3.1 客户说不清楚需求 4.3.2 需求自身经常变动 4.3.3 分析人员或客户理解有误 4.4 如何进行需求分析 4.4.1 应该了解什么 4.4.2 通过什么方式去了解 4.5 小结 第五章 系统设计 5.1 体系结构设计 5.1.1 层次结构 一、上下级关系的层次结构 二、顺序相邻关系的层次结构 三、其它的层次结构 5.1.2 Client/Server结构 5.2 模块设计 5.2.1 信息隐藏 5.2.2 内聚与耦合 5.2.3 封闭——开放性 5.3 数据结构与算法设计 5.4 用户界面设计 5.4.1 界面设计中美的需求与导向作用 5.4.2 界面美的内涵 一、界面的合适性 二、界面的风格 三、界面的广义美 5.5 系统设计示例——支持协同工作的交互式三维图形软件开发系统 5.5.1 设计背景 5.5.2 通用交互式三维图形软件开发工具 Intra3D 2.0 5.5.2.1 主要模块和功能 5.5.2.2 用户界面设计 5.5.3 支持协同工作的网络通讯开发系统 CNC 1.0 5.5.3.1 CNC 客户程序的API设计 5.5.3.2 CNC Server的设计 5.5.4 应用示例 5.6 小结 第六章 C++ 面向对象程序设计 6.1 C++面向对象程序设计的重要概念 6.1.1 类与对象 6.1.2 继承与组合 6.1.3 虚函数与多态 6.2 良好的编程风格 6.2.1 命名约定 6.2.2 使用断言 6.2.3 new、delete与指针 6.2.4 使用const 6.2.5 其它建议 6.3 小结 第七章 测试与改错 7.1 对测试的理解 7.1.1 测试的目的 7.1.2 测试的心理要求 7.1.3 测试的真理 7.1.4 测试与质量的关系 7.2 测试人员的选择 7.2.1 Microsoft公司的经验教训 7.2.2 测试人员的分工 7.3 测试的主要内容与常用方法 7.3.1 正确性与精确性测试 7.3.2 容错性测试 7.3.3 性能与效率测试 7.3.4 易用性测试 7.3.5 文档测试 7.4 改错 7.5 小结 第八章 维护与再生工程 8.1 软件维护的常识 8.2 维护的代价及其主要因素 8.3 再生工程 8.3.1 重构 8.3.2 逆向工程 8.3.3 前向工程 8.4 小结 参考文献 附录: 大学十年 后记
2009-10-04 上传
较全面的软件工程书籍 软件工程基本观念 1.1 软件工程的目标与常用模型 1.2 软件开发的基本策略 1.2.1 复用 1.2.2 分而治之 1.2.3 优化——折衷 1.3 一些不正确的观念 1.4 一些有争议的观念 1.5 小结 第二章 程序员与程序经理 2.1 了解程序员 2.2 了解程序经理 2.3 程序员升为经理后是否还要编程 2.4 经理与技术队伍的建设 2.5 向错误与失败学习 2.6 提高综合素责 2.7 小结 第三章 项目计划与质量管理 3.1 项目计划 3.1.1 知己知彼 3.1.2 进度安排 3.2 零缺陷质量管理的观念 3.2.1 高目标 3.2.2 可执行的规范 3.3 软件的质量因素 3.3.1 正确性与精确性 3.3.2 性能与效率 3.3.3 易用性 3.3.4 可理解性与简洁性 3.3.5 可复用性与可扩充性 3.4 质量检查 3.5 小结 第四章 可行性分析与需求分析 4.1可行性分析的要素 4.1.1 经济 一、成本——收益分析 二、短期——长远利益分析 4.1.2 技4.1.3 社会环境 4.1.4 人 4.2 可行性分析案例——投资软件公司失败的教训 4.2.1可行性分析案例之一 4.2.2 可行性分析案例之二 4.2.2 可行性分析案例之三 4.3 需求分析为什么困难 4.3.1 客户说不清楚需求 4.3.2 需求自身经常变动 4.3.3 分析人员或客户理解有误 4.4 如何进行需求分析 4.4.1 应该了解什么 4.4.2 通过什么方式去了解 4.5 小结 第五章 系统设计 5.1 体系结构设计 5.1.1 层次结构 一、上下级关系的层次结构 二、顺序相邻关系的层次结构 三、其它的层次结构 5.1.2 Client/Server结构 5.2 模块设计 5.2.1 信息隐藏 5.2.2 内聚与耦合 5.2.3 封闭——开放性 5.3 数据结构与算法设计 5.4 用户界面设计 5.4.1 界面设计中美的需求与导向作用 5.4.2 界面美的内涵 一、界面的合适性 二、界面的风格 三、界面的广义美 5.5 系统设计示例——支持协同工作的交互式三维图形软件开发系统 5.5.1 设计背景 5.5.2 通用交互式三维图形软件开发工具 Intra3D 2.0 5.5.2.1 主要模块和功能 5.5.2.2 用户界面设计 5.5.3 支持协同工作的网络通讯开发系统 CNC 1.0 5.5.3.1 CNC 客户程序的API设计 5.5.3.2 CNC Server的设计 5.5.4 应用示例 5.6 小结 第六章 C++ 面向对象程序设计 6.1 C++面向对象程序设计的重要概念 6.1.1 类与对象 6.1.2 继承与组合 6.1.3 虚函数与多态 6.2 良好的编程风格 6.2.1 命名约定 6.2.2 使用断言 6.2.3 new、delete与指针 6.2.4 使用const 6.2.5 其它建议 6.3 小结 第七章 测试与改错 7.1 对测试的理解 7.1.1 测试的目的 7.1.2 测试的心理要求 7.1.3 测试的真理 7.1.4 测试与质量的关系 7.2 测试人员的选择 7.2.1 Microsoft公司的经验教训 7.2.2 测试人员的分工 7.3 测试的主要内容与常用方法 7.3.1 正确性与精确性测试 7.3.2 容错性测试 7.3.3 性能与效率测试 7.3.4 易用性测试 7.3.5 文档测试 7.4 改错 7.5 小结 第八章 维护与再生工程 8.1 软件维护的常识 8.2 维护的代价及其主要因素 8.3 再生工程 8.3.1 重构 8.3.2 逆向工程 8.3.3 前向工程 8.4 小结