软件工程基础与案例教程(微课视频版)

软件工程基础与案例教程(微课视频版)
作者: 编者:窦万峰|
出版社: 清华大学
原售价: 49.90
折扣价: 40.42
折扣购买: 软件工程基础与案例教程(微课视频版)
ISBN: 9787302655329

作者简介

内容简介

第3章 敏捷软件工程方法 【学习重点】 (1) 理解敏捷软件工程概念、过程及原则。 (2) 理解极限编程要点。 (3) 理解结对编程概念及特点。 在传统的软件开发方法中,开发人员努力构建客户 想要的产品,他们花费大量的时间从客户那里获取需求 ,针对需求进行分析和建模,并且归纳成规格说明书, 然后评审说明书,与客户开会讨论,最后签字确认。表 面上看他们开发的软件是符合客户的要求的,但通常事 与愿违。在项目快要结束的时候,需求和范围、软件的 适用性常常成为争论的焦点。 敏捷软件工程方法(简称敏捷方法)告诉我们开发软 件是一种学习的体验,没有谁能完全理解所有需求之后 才开始软件开发,即使是客户也一样。客户一开始有一 些想法,但是他们也在软件项目的进展过程中逐步了解 他们对软件的需要。同样,开发人员在一开始有已知的 知识,但是他们需要通过项目来继续学习。没有人完全 清楚会构建出什么样的软件,直到项目结束。每个人都 在通过项目学习,敏捷方法改变了过程以便识别持续学 习,培养了每个人的学习能力。 3.1敏捷软件工程过程 3.1.1敏捷过程 敏捷是一类过程的统称,它们有一个共性,就是符 合敏捷价值观,遵循敏捷的原则。敏捷就是“快”,要 快就要发挥个人的个性思维多一些。虽然通过结对编程 、代码共有、团队替补等方式可以减少个人对软件的影 响力,但仍会造成软件开发继承性地下降,因此敏捷软 件工程是一个新的思路,并不是软件开发的终极选择。 对于长时间、人数众多的大型软件应用的开发,文档的 管理与衔接作用还是不可替代的。如何把敏捷的开发思 路与传统的流水线工厂式管理有机地结合,是软件开发 组织者面临的新课题。 敏捷软件工程的两大主要特征是对“适应性”的强 调与对“人”的关注。经典的软件工程方法借鉴了工程 学领域的实践,强调前期的设计与规划,并尝试在很长 的时间跨度内为一个软件开发项目制订严格且详尽的计 划,然后交由具备普通技能的人员分阶段依次达成目标 。而 敏捷过程强调对变化的快速响应能力,它通过引入 迭代式的开发手段,较好地解决了如何应对变化的问题 。迭代并非是一个新概念,以迭代为特征的开发方法由 来已久。例如,螺旋模型便是一种具备鲜明的迭代特征 的软件开发模式。 敏捷过程将整个软件生存周期分解为若干个小的迭 代周期,通过在每个迭代周期结束时交付阶段性成果来 获取切实有效的客户反馈。其目的便是希望通过建立及 时的反馈机制,以应对随时可能发生的需求变更,并做 出相应的调整,从而增强对软件项目的控制能力。所以 "本书将传统结构化和面向对象软件过程范型全面对比介绍,有利于学生理解不同的软件工程范型的特点和适于的项目情况,深入理解软件工程方法的发展。本书注重于软件工程思想与方法的介绍,并通过案例分析与工具介绍,让学生理解软件工程的本质。本书融入了研究性教学方法。 (1)将结构化软件工程范型和面向软件工程范型分开来讲,并选择较为适合的案例来理解两个范型的特点和方法,避免学生发生概念混淆和方法上的混乱。 (2)结构化软件工程范型部分,从注重过程、原理、方法和案例分析出发,介绍结构化开发的过程、原理和方法,这些都可以推广到面向对象软件工程范型中。通过一个需求稳定的案例介绍传统结构化开发的基本方法和做法。 (3)针对面向对象软件工程范型,注重面向对象分析模型和设计模型的构建,强调它们直接的关系,抓住面向对象模型开发的要点,通过统一建模语言来描述分析与设计过程与模型。通过一个比较复杂系统的案例分析理解面向对象分析与设计的思想。 (4)注重本科生教学实践,内容上安排了敏捷实践的结对编程的内容,让学生理解结对编程思想的同时,分析存在的问题和解决方法,结合结对编程系统分析该系统的需求,并进行设计与实现及测试。 (5)注重案例教学,本书的案例既有简单常见的应用系统,如面对面结对编程系统和银行ATM(自动柜员机)系统,也有比较实用的系统,如超市收银终端系统。这些系统由简单到复杂,循序渐进,引导学生或读者逐步理解系统的开发的过程和关键问题。 "