
|
|
|
|
软件工程实践导论:有关方法、设计、实现、管理之三十六计
|
|
|
|
|
| 作者 |
: |
金尊和
|
| ISBN |
: |
7302105766
|
| 页数 |
: |
429
|
| 开本 |
: |
231×153×22毫米
|
| 封面形式 |
: |
简裝本
|
| 出版社 |
: |
清华大学
|
| 出版日期 |
: |
2005-4-1
|
| NT$ |
: |
456
|
|
|
|
|
配送说明: 国际快递 , 海运邮递 。
付款说明: 1. VISA、MASTER線上刷卡 2. 信用卡传真刷卡付款 3.
邮政划拨 4. 银行汇款
|
|
|
|
|
 |
| |
本书把软件工程放在一个更大的商业视角中进行考察和分析,对最新的软件工程理论从实践的角度重新检验,并提出作者独特的思考方法和新的理论。本书在形式上参照兵法三十六计,总结了软件工程实践中的一些基本原则、出发点和解决问题的思路和方法,涉及软件工程的方法论、软件设计、编程实现以及管理等四个方面。每个方面包含若干计,每一计为一个重要的方法,单独成为一个章节。 本书面向专业软件开发人员、一般软件从业人员、信息产业管理人士、计算机等专业的教师和在校生以及对软件和信息产业感兴趣的任何读者,也包括希望对软件工程有一定了解或绎创造性方法论感兴趣的读者。
|
|
|
|
|
|
 |
| |
绪论 0.1历史的回顾 0.2软件的定义 0.3什么是软件工程? 0.4软件工程的大环境 0.5软件工程究竟像什么? 0.5.1雪球理论——做软件就像滚雪球 0.5.2软件工程控制论——软件生产过程是个离散多环控制系统 0.5.3兵法三十六计的启示 0.6本书的组织 方法篇 1经济为本 1.1投入产出的概念 1.2经济为本的启示 1.2.1为技术而技术是条死胡同 1.2.2以经济原则指导软件项目的决策过程 1.2.3按照产品规律来营销软件产品 1.2.4以收益为依据规划设计产品 小结 2用户为先 2.1用户需求分析 2.2用户友好的交互界面 2.2.1界面设计和风格 2.2.2界面的本地化 2.3软件安装和部署 2.4用户培训和技术认正 2.5用户大会和开发人员网络 2.6用户文档 2.7用户支持和反馈 2.8系统长级和版权管理 2.9软件咨询服务 小结 3管理需求 3.1什么是软件需求? 3.2了解需求 3.3记录需求 3.4追踪需求 3.5在变化中管理需求 小结 4及早集成 4.1软件工程项目的风险 4.2及早集成才能滚雪球 4.3少食多餐 小结 5连续验证 5.1有关测试的理论 5.2测试自动化 5.3软件缺陷跟踪系统的概念和实际应用 5.3.1软件缺陷的生命周期 5.3.2欲穷千里目,更上一层楼 5.4软件的“测不准”原理 5.5另类的验证 小结 6控制变化 6.1循序渐进 6.2同步协调 小结 7规范流程 7.1规范要点 7.2CMM 7.3RationalUnifiedProcess 7.4极限编程 7.5发展方向 小结 8快速原型 8.1软件中的“概念车” 8.2大行不顾细谨 8.3走向产品 小结 9借鸡下蛋 9.1外包 9.2买进 9.3开放代码运动 小结 10开放标准 10.1开放的意义 10.2开放标准的种类 10.3支持开放标准 小结 设计篇 11避繁就简 11.1“不简单”的设计 11.1.1面向履历表的设计 11.1.2“难得糊涂”的设计 11.1.3委员会式的设计 11.2简单就是金钱 11.3简单才真切不简单 11.4关键是平衡 11.5皇帝的新衣 小结 12因地制宜 12.1有没有万能钥匙? 12.2考量的因素 12.3软件设计中的若干对矛盾 12.4要马儿跑又要马儿不吃草 小结 13变中求静 13.1变在那里? 13.2针对变化而设计 13.2.1数据和代码的分离 13.2.2输入数据和配置参数的分离 13.2.3不变的和常变的代码分离 13.3灰色地带 13.4XML和数据化 小结 14分层平台 14.1巨人的肩膀 14.2为什么软件要分层? 14.2.1层次提升 14.2.2隐藏细节 14.2.3标准互换 14.3分层的原则 14.3.1实现和接口分离原则 14.3.2单向性原则 14.3.3服务接口的粒度提升原则 14.4典型的分层设计 14.4.1OSI模型 14.4.2三层应用结构 14.5分层的网络化 14.5.1客户/服务器计算模式 14.5.2万维网的拓展 14.6应用编程接口API 14.7服务编程接口SPI 小结 15内外有别 15.1MVC结构 15.2万维网应用也要内外有别吗? 15.3模型的设计 15.4正交化设计 小结 16模块封装 16.1软件芯片 16.2静态模块的粒度 16.2.1函数 16.2.2文件 16.2.3类 16.2.4相关类集合 16.2.5子系统 16.3动态模块 16.3.1构件 16.3.2插入件 16.3.3进程 16.3.4可执行应用 16.3.5企业运行环境 16.4模块关系的分析 16.4.1代码类关系 16.4.2数据类关系 16.5模块划分 16.5.1分割的原则 16.5.2模块间的通信 16.6软件构件复用的理想 16.6.1复用情形下的新问题 16.6.2没有金刚钻,别揽瓷器活 小结 17合约接口 17.1软件世界的“合同” 17.2编程接口设计的“五项基本原则” 17.3网络条件的新问题 17.4从“貌合”到“神合” 17.4.1隐含规则 17.4.2言行一致 17.5非编程程式接口 小结 18面向对象 18.1面向对象的三性 18.1.1继承性和逻辑三段论 18.1.2封装性 18.1.3多态性 18.2继承“税” 18.2.1多包“含” 18.2.2单重继承 18.3面向对象的建模和UML 18.3.1软件建模 18.3.2建模语言 18.4双向工程 18.5面向对象的编程语言 小结 19巧用模板 19.1变模板为“魔”板 19.1.1编程 19.1.2代码生成 19.1.3数据转换 19.1.4产生文档 19.2通用模板语言和引擎 19.2.1Velocity 19.2.2XSLT 19.3模板也要正交吗? 19.3.1模板流水线 19.3.2模板的模块化 19.3.3模板MVC 小结 20能伸能缩 20.1伸缩性要从设计抓起 20.2结构设计的适应性 20.2.1并行度规划 20.2.2逻辑分层和物理分布 20.2.3同步还是异步 20.2.4资源的竞争和平衡 20.3多线程安全性 20.3.1调用函数重入 20.3.2变量可见度 20.3.3死锁和保护 20.4算法可伸缩 20.4.1算法并行的可能性 20.4.2线性化算法的必要性 20.4.3递归算法 小结 21套用成解 21.1框架 21.2面向对象方法中的设计定式 21.2.1生成类定式 21.2.2行为类定式 21.2.3结构类定式 小结 22见好就收 22.1软件设计的使命 22.2见好不收的误区 22.2.1追求完美 22.2.2画蛇添足 22.2.3清谈误国 小结 实现篇 23决不重复 23.1重复是万恶之首 23.2典型的代码重复 23.2.1常量重复 23.2.2变量或者属性的重复 23.2.3代码重复 23.2.4逻辑性重复 23.2.5结构性重复 23.3代码之外的重复 23.3.1代码和数据库定义的重复 23.3.2代码和库函数的重复 23.3.3代码和注释的重复 23.3.4测试说明和用户需求的重复 23.3.5设计和代码的重复 23.3.6代码注解和文档 小结 24通俗易懂 24.1写代码和写文章 24.2代码的认知模型 24.3误区种种 24.3.1飞流直下三千尺,疑是银河落九天 24.3.2为人性僻耽佳句,语不惊人死不休 24.3.3千呼万唤始出来,犹抱琵琶半遮面 24.3.4爱上层楼,为赋新词强说悉 24.4入乡随俗 小结 25精益求精 25.1回炉改造的目的 25.2有备才能无患 25.2.1单元测试的概念和应用 25.2.2谁来测试测试代码? 25.2.3集成开发环境 25.2.4版本控制 25.2.5两个“动不得” 25.3典型的回炉办法 25.3.1去除重复 25.3.2返朴归真 25.3.3清理门户 25.3.4面向侧面编程 小结 26优化性能 26.1多一事不如少一事 26.2擒贼先擒王,打蛇找七寸 26.3优化的方法 26.3.1算法本身 26.3.2经典代码优化方法 26.3.3面向对象编程语言的优化 26.3.4并行计算 26.3.5体系结构 26.4也别太执著 小结 27照猫画虎 27.1书法临帖的启示 27.2软件工程中的“拿来主义” 27.3“猫”在哪里? 27.4邯郸学步的“戒”鉴 27.5解剖麻雀 小结 28严堵漏洞 28.1资源泄漏 28.1.1内存泄漏 28.1.2网络资源泄漏 28.1.3其他资源泄漏 28.2防范性编程 28.2.1空指针检查 28.2.2返回值检查 28.2.3存取控制 28.2.4想不到的命名覆盖 28.2.5例外不例外 28.2.6宣检 28.2.7明知山有虎,须要绕道行 28.3习惯成自然 小结 29雁过留声 29.1版本控制概念和使用 29.1.1有迹可循——变化的历史轨迹 29.1.2协同工作——创建分支互不影响 29.1.3灵活配置——创建多样性 29.2使用版本控制工具的注意事项 29.2.1有所选择 29.2.2勤做备份 29.3代码的注解 29.4Log的使用和一般原则 小结 30自动流程 30.1不是选择的选择 30.2哪些要自动化? 30.2.1部分代码和文档生成 30.2.2软件的编译和包装发布 30.2.3质量测试 30.2.4日常维护 30.3与其他信息系统的集成 30.4还要人的参与吗?小结 31利器常新 31.1常用工具 31.2锦上添花 31.3语言的语言 31.4专业联络 31.5知识库框架 小结 管理篇 32分工协作 32.1软件管理的特殊性 32.1.1人的因素 32.1.2项目 32.2组织结构 32.2.1外科手术队 32.2.2导演和制片人 32.2.3三驾马车 32.2.4分工不分家 32.3雪球式成长 32.4民主和集中 小结 33目标驱动 33.1代码量之谜 33.2三个臭皮匠抵上一个诸葛亮? 33.3“聪明”五项基本原则 33.4激励机制 33.5人才战略 33.5.1管理梯队和技术梯队 33.5.2师傅和徒弟 33.5.3培养计划 小结 34常来常往 34.1升级须知 34.2沟通的重要性 34.2.1与客户的交流 34.2.2项目团队之间的交流 34.2.3开发队伍内部的交流 34.3沟通形式 34.3.1开会 34.3.2电子邮件 34.3.3正式文档 34.4技术审核 34.5开发环境的“风水” 34.6分布式开发团队的沟通 小结 35有张有驰 35.1阶段性调整 35.2发布聚会 35.3不妨换换口味 35.4需要锲而不舍吗? 35.57 1
|
|
|
 |
|
|