迭代、进化和敏捷
简介:迭代开发是OOA/D成为最佳实践的核心,也是本书所介绍的OOA/D的核心,敏捷实践是有效地应用UML关键。UP是相对流行的、示范性的方法。相对于顺序或者“瀑布”生命周期,迭代和进化式开发对部分系统及早地引入了编程和测试,并重复这一循环。这种方法通常会在还没有详细定义所有需求的情况下假设开发开始,同时使用反馈来明确和改进演化中的规则说明。在迭代开发中,我们依赖于短时快速的开发步骤、反馈和改写来不断明确需求和设计。相比之下,瀑布模型提倡在编程之前就预先完成需求和设计步骤。一直以来,成功/失败的研究表明,瀑布模型和软件项目高失败率具有极大的关系,对他的推广源于信念和风闻,而不是具有统计意义的证据。研究证实,迭代方法与较高的成功率、生产率和低缺陷率具有关系。
一什么是UP?其他方法能否对其进行补充
软件开发过程<注意是名词>描述了构造、部署以及维护软件的方式。UP也叫做统一过程-已经成为一种流行的构造面向对象系统的迭代软件开发过程。并且rational统一过程RUP是对统一过程的详细精华,并且已经被广泛采纳。(所以统一过程是软件开发过程一个侧面,不管是正确的还是错误的,但是是事实上的标准)
因为统一过程对于采用OOA/D的项目来说是相对流行的迭代过程,并且在介绍OOA/D这一主题时,必须使用过程所以本书的结构也沿用了UP的形式。同时UP是通用并且是公认的最佳实践或许不是最好的,因此对于我们学习来说也是非常的有帮助的。
UP是十分的灵活和开放的,并且鼓励引进其他迭代方法中的有用的实践,UP把普遍认可的最佳实践结合起来,成为联系紧密并具有良好文档的过程描述。
概括而言,本章介绍UP源于三个理由1、UP是迭代过程2、UP实践提供了如何实施OOA/D3、UP具有灵活性,可以应用于轻量级和敏捷方法,这些方法包括其他敏捷方法。
本书采用UP作为探讨和进化式需求分析及OOA/D的示范过程,因此对于该主题的介绍必须在某一过程的语境中进行。但是本书的核心思想例如如何使用对象思考和设计、应用UML、使用设计模式、敏捷建模、进化式需求分析、编写用例等等是独立于任何特定过程的,并适用于众多现代的迭代、进化和敏捷方法。
注:敏捷是什么,敏捷是更为背后的一层思想,说俗一点就是敏捷思想是要求迭代和进化式开发,我们学习包括做人做事是不是都是在理清表象和具象,都是在理清本质的东西和肤浅的东西,都在理解谁是指导思想,谁又是谁下的指导思想。我们要理解更为本质的东西是什么,本质的表面又是什么,又是老子的大道,真是无处不在啊
@什么是迭代和进化式开发,如何做到
@什么是敏捷方法以及观点
敏捷开发--方法通常应用时间定量的迭代和进化式开发、使用自适应计划、提倡增量交付并包含其他提倡敏捷性的价值和实践。
由于特定的实践多种多样,因此不能精确的定义敏捷方法。所以说敏捷方法是一个概括更为本质的说法,然而,具备进化式精华的计划需求和设计的短时间定量迭代是这些方法所共有的基本实践
敏捷饿原则是1、优先级最高的是,通过早期和持续交付有价值的软件来满足客户
2、欢迎变更需求,及时在开发的后期提出。
3.。。。。
末了,敏捷到底是个什么东西?一个概念,一个原则是一群关注迭代和敏捷方法的人为寻求共识会聚一趟,创建了敏捷这一词汇,敏捷代表他们的思想和共识以及他们的抽象的概念。末了,敏捷是什么?那么我反问你?面向对象是什么?面向对象我们无法准确的解释,但是至少我可有很多方式和途径以及原则模式来达到面向对象,至于为什么叫做面向对象,天知道吧,人定的吧,所以敏捷是什么?天知道吧。
@什么是UP的科目
科目是在一个主题领域中的一组活动<及相关制品>,制品是什么?是对于所有工作产品的统称,如代码、web图形,数据库科目等等。
注:科目是不是我们理解和构造我们软件的各个侧面呢?
具体的科目有:业务建模、需求、设计、实现、测试、部署、配置和变更管理、项目管理、环境,或许你还可以得出其他的科目,但是上面这些科目是让人容易理解的方式自然而然的呈现出来的,科目就是不同的侧面的活动。绝对不要吧科目和阶段等同起来,两者是不同的概念,阶段更注重于时间上的概念,科目更注重于不同的侧面不同的活动,每个阶段有不同的科目侧重活动,所以我们明白科目和阶段的联系和区别。
我们在本书中关注以下比较重要的三个科目:业务建模、需求、设计
@关于项目和科目,什么是案例研究的重点呢?
案例研究强调初始和细化阶段。其重点是业务建模、需求和设计科目中的一些制品,这些制品包括了需求分析、OOA/D、模式和UML等。
@既然UP中有这么多的科目以及各自科目下产生的相关的制品,那么如何来定制过程和UP开发案例呢?
类比,UP中描述的一组可能的制品可以看做药房里的一组药剂。就像不会有人不加选择的随便吃药,而是要对症下药一样,对于UP项目,开发团队应该选择一组能够解决其特定问题和需要的制品。一般来说,要关注一组具有较高的实践价值的制品。
@定义:什么是开发案例
为项目选择和UP制品可以编写为简短文档,这称为开发案例,开发案例也只一种制品。