精华内容
下载资源
问答
  • 敏捷软件开发原则模式实践 c++
  • 敏捷软件开发原则模式实践.rar Uncle Bob的名著,敏捷的经典名著,这本书比较特别,与其说是讲软件开发过程的书,不如说讲软件架构的书,本书用了很大篇幅讲各种面向对象软件开发的各种模式,个人以为看了这本书...
  • 敏捷开发-敏捷软件开发:原则模式实践(全).pdf
  • 最近在读BOB大叔的敏捷软件开发,特别是TDD那一章节,启示真的不少,从测试驱动开发,讲到驱动表明程序设计的意图,从设计意图讲到对象依赖的解耦,从解耦建立Mock对象。 其实是对每个模块都编写单元测试,因为很多...

    最近在读BOB大叔的敏捷软件开发,特别是TDD那一章节,启示真的不少,从测试驱动开发,讲到驱动表明程序设计的意图,从设计意图讲到对象依赖的解耦,从解耦建立Mock对象。

    其实是对每个模块都编写单元测试,因为很多时候公司的项目赶的紧,所以为每个单元模块都编写测试是一件非常困难的事情,但是这本书,从测试驱动设计意图的角度讲如何来设计程序确实是一个非常好的思路

     

    今天我读了OCP那一张,因为那一章节是C++写的,所以我用Java写了一遍,方便阅读同一章节的同学学习观摩,借鉴的都是书中的思想,所以献丑

     

     1 package pw.jonwinters.ocp;
     2 public abstract class Shape implements Comparable<Shape> {//实现了Comparable接口,实际上可以实现一个Comparator 这样可以根据策略来选择是实现 倒序 还是 顺序
     3     public abstract void draw();//抽象方法 打印图形名称
     4     public abstract int area();
     5     public abstract int getPriority();//设置优先级
     6     public abstract void setPriority(int priority);//获得优先级
     7     
     8     
     9     public int compareTo(Shape o) {
    10         // TODO Auto-generated method stub
    11         return (this.getPriority() - o.getPriority());//为Shape类实现Compareto方法
    12     }
    13 }

     

     1 package pw.jonwinters.ocp;
     2 
     3 public class Circle extends Shape {
     4     
     5     private int priority=0;
     6     @Override
     7     public void draw() {
     8         // TODO Auto-generated method stub
     9         System.out.println("I am Circle");
    10     }
    11 
    12     @Override
    13     public int area() {
    14         // TODO Auto-generated method stub
    15         return 10;
    16     }
    17 
    18     
    19 
    20     @Override
    21     public int getPriority() {
    22         // TODO Auto-generated method stub
    23         return this.priority;
    24     }

     

     1 package pw.jonwinters.ocp;
     2 
     3 public class Square extends Shape {
     4     
     5     private int priority=0;
     6     @Override
     7     public void draw() {
     8         // TODO Auto-generated method stub
     9         System.out.println("I am Square");
    10     }
    11 
    12     @Override
    13     public int area() {
    14         // TODO Auto-generated method stub
    15         return 0;
    16     }
    17 
    18     @Override
    19     public int getPriority() {
    20         // TODO Auto-generated method stub
    21         return this.priority;
    22     }
    23 
    24 
    25 
    26     @Override
    27     public void setPriority(int priority) {
    28         // TODO Auto-generated method stub
    29         this.priority=priority;
    30     }
    31 
    32 }
     1 package pw.jonwinters.ocp;
     2 
     3 public class SortShape {
     4     private static Class<?> shapeList[] = {Circle.class,Square.class};//这里采用静态方法
     5     public  static  void setPriority(Shape shape){
     6         for (int i = 0 ; i < shapeList.length;i++ ){
     7             if (shape.getClass().equals(shapeList[i]))//获得对象的Class对象 比较是否与数组的Class对象相同
     8                 shape.setPriority(i);//设置优先级
     9         }
    10     }
    11 }
     1 package pw.jonwinters.ocp;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collections;
     5 import java.util.List;
     6 
     7 import org.junit.Before;
     8 import org.junit.Test;
     9 
    10 public class ShapeTest {
    11     private List<Shape> shapeList;
    12     @Before
    13     public void beforeTest(){
    14         shapeList = new ArrayList<Shape>();
    15         shapeList.add(new Circle());
    16         shapeList.add(new Square());
    17         shapeList.add(new Circle());
    18         shapeList.add(new Circle());
    19         shapeList.add(new Square());
    20         shapeList.add(new Circle());
    21         shapeList.add(new Square());
    22     }
    23     
    24     @Test
    25     public void test(){//单元测试
    26         for(Object shape : shapeList.toArray()){//先用SortShape给每个Shape对象赋值priority
    27         SortShape.setPriority((Shape) shape);
    28         }
    29         Collections.sort(shapeList);//排序
    30         for(Object shape : shapeList.toArray()){
    31             ((Shape)shape).draw();//打印
    32         }
    33     }
    34 }

     

    转载于:https://www.cnblogs.com/winters1992/p/5886501.html

    展开全文
  • 敏捷软件开发原则模式实践(全) 敏捷软件开发原则模式实践(全) 敏捷软件开发原则模式实践(全) 敏捷软件开发原则模式实践(全) 敏捷软件开发原则模式实践(全)
  • 敏捷开发-原则 模式实践(1)

    千次阅读 2015-01-18 16:01:37
    敏捷开发-原则 模式实践  这的确是一本关于开发者的好书,对于我们开发者、研究人员,它提出了一个开发的全新的价值观(对我来说),甚至人生都有启发。需要认真阅读。 书中总结了敏捷开发的实例,确确实实更够...

          

    敏捷开发-原则 模式与实践

           这的确是一本关于开发者的好书,对于我们开发者、研究人员,它提出了一个开发的全新的价值观(对我来说),甚至人生都有启发。需要认真阅读。

    书中总结了敏捷开发的实例,确确实实更够感觉到对于项目的完成大有裨益,有种相读恨晚的感觉。想想自己之前的开发状态,想想自己导师安排公司项目的情况,就是低效率,就是小儿科,就是书上批评讽刺的那样,这正是开发者十几年开发智慧的结晶,前人的经验,前人的智慧,激发了我的阅读的快感,我获取知识的兴奋感,激发了我的成就感。

     

    阅读前两天(结合思维导图)

    敏捷开发联盟:开发团队需要具有快速工作、相应变化的能力的价值观和原则。

    敏捷过程,最重要的是极限编程。


    极限编程(extreme programming):一种适用于中小型团队在需求不明或者快速多变的情况下。(参考:http://www.docin.com/p-752508108.html


    计划



    学到的新名词:

    项目涉众产品或项目相关所有人员,包括:客户、用户、需求分析员、开发人员、测试人员、文档编制人员、项目经理、法律人员、生产人员、市场营销、技术支持及其他与产品和客户打交道的人员。

    用户素材:项目需要相关的卡片,包括估算代价、优先级

    项目迭代:每两周实现一些涉众的需求,每次迭代完成时,会演示迭代生成的系统,获得反馈。

    结对编程:结对的程序员,在同一台电脑上完成代码。

    发布计划:一次发布大约需要3个月的时间,即约6次迭代。

    QA部门:即quality assurance,质量保证部门。

    UML图:统一建模语言,是用来对软件密集系统进行可视化建模的一种语言。

    (视频课程http://study.163.com/course/courseLearn.htm?courseId=393009#/learn/video?lessonId=510175&courseId=393009 )

    重构:重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

    发布计划:项目发布时间的计划,约需要3个月的时间,即约6次迭代。

    任务计划:把素材分解成开发任务,每个任务约花费4-16小时,开发人员签订任务的计划。(任务点数:完成任务所需要的理想编程时间)

    迭代计划:每两周进行一次项目迭代的计划。

    程序耦合性:耦合性是程序结构中各个模块之间相互关联的度量。程序需要低耦合性。



    展开全文
  • 敏捷软件开发原则模式实践(全).pdf

    千次下载 热门讨论 2009-05-24 17:52:18
    敏捷软件开发原则模式实践(全) 敏捷软件开发原则模式实践(全)
  • 模式是既能带来好处又具有代价的东西,你应该使用那些最适合手边问题的模式。 代码往往会腐化。随着我们添加一个又一个的特性,处理一个又一个的错误,代码的结构会逐渐退化。如果对此置之不理的话,这种退化最终...

    根本不存在充分分析这种东西,无论花多少时间去找出完美的软件结构,客户总是会引入一个变化来破坏这种结构。

    这种情况是无法避免的。不存在完美的结构。只存在那些试图去平衡当前的代价和收益的结构。随着时间的过去,这些结构肯定会随着系统需求的改变而改变。管理这种变化的诀窍是尽可能的保持系统的简单,灵活。

    模式是既能带来好处又具有代价的东西,你应该使用那些最适合手边问题的模式。

    代码往往会腐化。随着我们添加一个又一个的特性,处理一个又一个的错误,代码的结构会逐渐退化。如果对此置之不理的话,这种退化最终会导致纠结不清,难以维护的混乱代码。

    展开全文
  • 敏捷开发原则 我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势 经常性的交付可以工作的软件,交付的间隔可以从...

    本文为敏捷软件开发 - 原则、模式与实践系列的一部分。

    本文对应原书第1章和第2章。

    敏捷软件开发宣言

    • 个体和交互 胜过 过程和工具

    • 可以工作的软件 胜过 面面俱到的文档

    • 客户合作 胜过 合同谈判

    • 响应变化 胜过 遵循规则

    敏捷开发原则

    1. 我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意
    2. 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势
    3. 经常性的交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好。
    4. 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作
    5. 围绕被激励起来的个人来构建项目。给他们提供所需要的环境和支持,并且信任他们能够完成工作
    6. 在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交流
    7. 工作的软件是首要的进度度量标准
    8. 敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度
    9. 不断地关注优秀的技能和好的设计会增强敏捷能力
    10. 简单 - 使未完成的工作最大化的艺术 - 是根本的
    11. 最好的架构、需求和设计出自于自组织的团体
    12. 每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整

    极限编程实践

    1. 客户作为团队成员。客户是定义产品特性并排列特性优先级的人。
    2. 用户用例。
    3. 短交付周期。迭代计划,两周一个迭代。发布计划,6个迭代一个发布。
    4. 验收测试。自动化验收测试。
    5. 结对编程。
    6. 测试驱动开发。先编写单元测试,再实现代码,结果代码和完整的单元测试集共同形成。有利于重构。
    7. 集体所有权。
    8. 持续集成。
    9. 可持续的开发速度。
    10. 开发的工作空间。
    11. 计划游戏。开发提供功能特性工作量列表,客户按照优先级指定本次迭代或发布的功能特性。
    12. 简单设计。
      a. 考虑能够工作的最简单的设计
      b. 你将不需要它
      c. 允许犯错,但只有一次。对于不好的代码,发现立刻消除它们。例如重复代码。
    13. 重构。重构就是在不改变代码行为的前提下,对其进行一系列小的改动,旨在改进系统结构的实践活动。重构是持续进行的。
    14. 隐喻。它是将整个系统联系在一起的全局视图。通常可以归结为一个名字系统,这些名字提供了一个系统组成元素的词汇表,并且有助于定义它们之间的关系。

    完整内容请查看敏捷软件开发 - 原则、模式与实践系列

    展开全文
  • 敏捷软件开发原则模式实践 新手必读
  • 敏捷联盟与原则 在2001年召开的研讨软件过程未来发展趋势的一次会议上,17位业界专家就什么是“敏捷”达成一致意见。这次会议的一个成果是成立了“敏捷联盟”并发布了联盟敏捷宣言(参考...
  • 敏捷软件开发原则模式实践》-附件资源
  • 由于书是由英文书籍翻译,读起来会难免拗口,本次分享是由《敏捷软件开发》结合网上相关资料总结而成。瀑布模型式是最典型的预见性的方法,严格遵循预先计划...瀑布模型传统和敏捷开发比较敏捷开发以用户的需求进化为核
  • 软件设计经典--敏捷软件开发:原则模式实践
  • 敏捷软件开发 - 原则模式实践》是我接触到的第一本系统介绍软件设计的书籍,深刻影响了个人的软件开发习惯。它并不难懂,我一直推荐给身边的各个层次的程序员学习。 可对于一本接近500页的图书,很多人还是...
  • 敏捷开发遵循的原则: 我们最优先要做的是通过尽早的,持续的交付有价值的软件来满足客户满意。 即使到了开发后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。 经常性地交付可以工作的软件,交付的...
  • 敏捷软件开发原则模式实践.pdf 敏捷软件开发经典基础书籍
  • 敏捷软件开发原则模式实践(C#版)中文
  • 敏捷软件开发原则模式实践(高清PDF)
  • 在本书中,享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员、项目经理及软件项目领导...这本综合性、实用性的敏捷开发和极限编程方面的指南,是由敏捷开发的创始人之一所撰写的。
  • 开发-关闭原则(Open-Closed Principle)本质是在扩展时不改变原有模块源代码,通过抽象和继承,利用多态性,扩展模块行为。但这样做是有成本的,会增加程序复杂性和开发成本,不要滥用。 Resisting premature ...
  • 敏捷开发需要不断的学习,不断的实践。现在开始写一些关于敏捷开发的博客。 一 敏捷联盟    1 个体和交互胜过过程和工具  一个优秀的团队成员未必是一个一流的程序员,可能他只是一个平均水平的...
  • 《敏捷软件开发:原则模式实践》由享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员、项目经理及软件项目领导们所面临的最棘手的问题。这本综合性、实用性的敏捷开发和极限...
  • 本文对应原书第3章 ~ 第6章。 计划 初始探索 ...在项目开始时,开发人员和客户会尽量确定出所有真正重要的用户用例。...根据开发速度,客户选择下面2周需要完成的用户用例,并排列这些用例的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 812
精华内容 324
热门标签
关键字:

敏捷开发原则模式实践