内容简介: 软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较空洞乏味的课程。 但是软件工程的技术对于投身IT 产业的学生来说是非常重要的。作者邹欣有长达20年的一线软件开发经验,他利用业余时间在数所高校进行了长达6年的软件工程教学实践,总结出了在16周的时间内让 同学们通过 “做中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划,并得到高校师生的积极反馈。在此基础上,作者对软件工程的各个知识点和技能要求进行了系统性整理,形成教材。 本书共分17章,对照美国ACM/IEEE2013年新出版的计算机科学教学指导(Computer ScienceCurricula 2013)中的软件工程相关部分,这本教材覆盖了其中大多数Core-Tier1和Core-Tier2的内容。可以说,全书对软件工程内容的覆盖不逊于任何一本现行的教材,同时讲述了业界最新实践方法。 本书评论: 推荐软件工程专业学子阅读,了解软件工程真正内涵,懂得“工程”二字真正含义,知道软件工程和计算机科学的区别。了解之后,就知道为何软件工程是就业含金量较高的行业了。 ——朝红阳(http://weibo.com/u/1794892070)/中山大学软件学院 书中 设想了大量的场景“学”和“习”,并且用了大量的类比,非常生动有趣。这本教材也对软件工程课老师提出了更高的要求;对学生而言,同样面临着要付出怎样的努力才能学到“干货”的选择。 ——鞠小林(http://weibo.com/jukxy)/南通大学软件学院 关于计算机科学与软件工程的差别?这是我们学生问的最多的,这下有解释啦!包括书中谈到的师生关系、软件工程师的职业发展、职业道德等,这些内容我上课时都可以用。 ——牛慧娟/华中科技大学软件学院 面对在软件开发方面经验很少的学生,邹欣老师通过丰富生动的故事和隐喻帮助学生建立软件工程的思维习惯,通过严格扎实的动手训练与考核帮助学生总结归纳自己的“最佳实践经验”。读这本书,软件工程课不再枯燥沉闷,而是变得出乎意料的生动有趣。 ——王忠杰(http://weibo.com/travellingwithme)/哈尔滨工业大学计算机科学与技术学院 读完《构建之法——现代软件工程》,不禁惊叹,软件工程的书还可以这样写!像团队和流程、敏捷流程、需求分析、设计与实现这些章节我看了又看,看完之后不禁拍大腿(书里说的“拍脑门、拍胸脯、拍屁股”的三拍有点不全,还差“拍大腿”):为什么邹欣老师会把原本无趣的问题写得这么吸引人?我深深地感觉到,不会讲故事的软件工程老师不是好老师!这本书给我最大的感受是,作者能把一个个鲜活的例子(或故事)与软件工程的相关问题恰到好处地结合起来,让软件工程的理论和方法更好地落地。 ——王赞(http://weibo.com/scswz)/天津大学软件学院 将对软件工程思想的理解内化为软件工程师的职业习惯,是软件工程教学的核心目标,本书的实验设计恰恰非常有助于这一内化过程。个人项目、两人项目和团队项目由易到难,循序渐进,不断总结。我在教学中借鉴这一思路,从学生较为熟悉的编程训练入手,以范例演示基本编码规范、 No Design时的代码、经过基 本Modularity (also called separation of concerns)设计的代码、writing code to make it reusable on future projects以及一些特殊的接口设计……从编码实践中理解软件工程思想,就会跳出纸上谈兵的框框。 ——孟宁(http://staff.ustc.edu.cn/~mengning/,http://weibo.com/mengning997 ) /中国科技大学软件学院 软件工程在大学是最难讲,也是最容易讲的一门课,容易在这门课涵盖的内容和外延特别丰富,这些内容学生基本没概念,短期也无法落到实处来验证有用没用,所以老师可以大讲特讲,人畜无害;难在你要在学生一片空白(没有很强的代码能力、没有团队概念、没有项目经验)的情况下去让他们懂得这些东西。在我认识的人中,能有丰富的项目经验又愿意花时间在教学实践上,最终能把各种知识理论体系化的人寥寥无几。邹欣老师恰好这几点都具备。快速翻完整本书,最大的感受是这本书出版得恰逢其时,传统的软件工程教材早就该翻新了! ——徐亚波(http://ss.sysu.edu.cn/~xyb,http://weibo.com/arber)/中山大学软件学院 作者简介 邹欣现任微软Windows中国工程团队首席研发总监。 1996年~2003年,邹欣在微软Outlook团队从事开发工作,2003年~2005年,他在微软内部质量工具团队和Visual Studio团队负责软件项目管理工具的开发。2005年~2012年,他担任微软亚洲研究院技术创新组研发主管,负责研究成果的产品化和创新项目。2012年~2014年,他担任微软亚洲互联网工程院首席研发总监,负责必应搜索客户端、必应输入法、必应词典等产品。加入微软前,邹欣从事过商用Unix系统、GPS/GIS软件开发及测试工作。 他在2007年出版了《移山之道》,于2008年出版了《编程之美》 (合作)。 他于1991年获北京大学计算机软件专业学士学位。1996年获美国韦恩州立大学(Wayne State University)计算机软件专业硕士学位。
目录: 第 1 章 概 论 1 1.1 软件 = 程序 + 软件工程 1.2 软件工程是什么 1.3 练习与讨论 第 2 章 个人技术和流程 /20 2.1 单元测试 2.2 效能分析工具 2.3 个人开发流程 2.4 实践 2.5 练习与讨论 第 3 章 软件工程师的成长 /43 3.1 个人能力的衡量与发展 3.2 软件工程师的职业发展 3.3 技能的反面 3.4 练习与讨论 第 4 章 两人合作 /56 4.1 代码规范 4.2 代码风格规范 4.3 代码设计规范 4.4 代码复审 4.5 结对编程 4.6 两人合作的不同阶段和技巧 4.7 练习与讨论 第5 章 团队和流程 /84 5.1 非团队和团队 5.2 软件团队的模式 5.3 开发流程 5.4 练习与讨论 第 6 章 敏捷流程 /101 6.1 敏捷的流程 6.2 敏捷流程的问题和解法 6.3 敏捷的团队 6.4 敏捷总结 6.5 敏捷的故事— 兼酒后问答 6.6 练习与讨论 第 7 章 MSF /121 7.1 MSF 简史 7.2 MSF 基本原则 7.3 MSF 团队模型 7.4 MSF 过程模型 7.5 MSF 敏捷开发模式 7.6 MSF CMMI 开发模式 7.7 练习与讨论 第 8 章 需求分析 /142 8.1 软件需求 8.2 软件产品的利益相关者 8.3 获取用户 需求— 用户调查 8.4 竞争性需求分析的框架 8.5 功能的定位— 四象限方法 8.6 计划和估计 8.7 分而治之(Work Breakdown Structure) 8.8 练习与讨论 第 9 章 项目经理 /175 9.1 PM 是啥 9.2 微软PM 的来历 9.3 PM 做开发和测试之外的所有事情 9.4 PM 的能力要求和任务 9.5 练习与讨论 第10 章 典型用户和场景 /185 10.1 典型场景和典型用户 10.2 规格说明书 10.3 功能驱动的设计 10.4 练习与讨论 第11 章 软件设计与实现 /205 11.1 从Spec到实现 11.2 开发阶段的日常管理 11.3 练习与讨论 第12 章 用户体验 /218 12.1 用户体验的要素 12.2 用户体验设计的步骤和目标 12.3 评价标准 12.4 练习与讨论 第13 章 软件测试 /237 13.1 基本名词解释及分类 13.2 各种测试方法 13.3 实战中的测试 13.4 运用测试工具 13.5 练习与讨论 第14 章 质量保障 /268 14.1 软件的质量 14.2 软件的质量保障工作 14.3 练习与讨论 第15 章 稳定和发布阶段 /284 15.1 从代码完成到发布 15.2 发布之后 — 事后诸葛亮会议 15.3 练习和讨论 第16 章 IT 行业的创新 /301 16.1 创新的迷思 16.2 创新的时机 16.3 创新的招数 16.4 魔方的创新 16.5 创新和作坊 16.6 练习与讨论 第17 章 人、绩效和职业道德 /337 17.1 猪、鸡和鹦鹉的故事 17.2 其实还是人的问题 17.3 绩效管理 17.4 萝卜与白菜 17.5 团队合作的几个阶段 17.6 软件工程师的职业道德 17.7 练习与讨论 索 引 /358
|