在Scrum中实施敏捷建模
1. Scrum敏捷框架1.1 Scrum概述 Scrum是一种敏捷过程,它使用迭代和增量方式管理和控制复杂的软件与产品开发。Scrum的开发流程非常简单。首先,Product Owner根据客户的需求编写Product Backlog,然后召开计划...
Strategy模式与Delegate委托
Strategy模式是对算法的封装。即使是一个计算行为,如果其实现有其多样性,为达到易扩展的目的,我们也有必要将其抽象出来,以接口的形式来定义。由于充分利用了面向 对象的多态性,在调用该行为时,其具体的实现是...
面向对象思想
面向对象思想为软件设计与开发赋予了哲学的意义。在哲学的世界里,小至沙粒微尘,大至日月星辰乃至宇宙,均可视为单独的个体对象而存在。如果以哲学的目光 凝视程序的世界,又何尝不是如此?一个用户,一种销售策略...
软件隐喻的本质与模式
1.引言 隐喻思维具有普遍性,是人类认知得以深化的前提之一,隐喻是丰富人类语言的有效手段。 然而,一直以来,对于隐喻的讨论主要限于语言学和修辞学,从而将隐喻狭隘化,局限化,使得隐喻在其他...
使用扩展方法对调用进行验证
利用C# 3.0提供的扩展方法技术,可以为已经编译好的程序集类型增加新的方法,从而应对新的扩展。除了在可扩展性方面所具有的优势之外,如果能够合理地结合泛型与类型推断,扩展方法还可以有效降低代码的重复,提高程...
TransactionScope Troubleshooting
只要涉及到数据库的操作,那么使用事务就是难免的。如果我们使用LINQ to SQL作为数据访问层,那么LINQ提供的SubmitChanges()方法自身就包含了对事务的处理。当然,我们也可以利用System.Data.Common.DbTransaction对...
PetShop之ASP.NET缓存
《解剖PetShop》系列之四四 PetShop之ASP.NET缓存如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个名词一定是耳熟能详的。在CPU以及主板的芯片中,都引入了这种名为高速缓冲存储器(Cache)的技术。...
.Net中的设计模式——Strategy模式
.Net中的设计模式——Strategy模式一、模式概述 “面向接口编程”是面向对象编程思想中最重要的一个原则。根据“封装变化”的原理,我们常常将易于变化的部分进行抽象,定义为接口。对于调用者而言,只需要知道接...
.Net中的设计模式——Decorator模式
讲解.Net Framework中的Decorator模式。请访问:.Net中的设计模式——Decorator模式一、模式概述一个场景是我们要为一个对象动态添加新的职责,这个职责并不修改原有的行为,而是在原有行为基础上添加新的功能,就...
PetShop数据访问层之消息处理
《解剖PetShop》系列之三三、PetShop数据访问层之消息处理在进行系统设计时,除了对安全、事务等问题给与足够的重视外,性能也是一个不可避免的问题所在,尤其是一个B/S结构的软件系统,必须充分地考虑访问量、数据...
PetShop的系统架构设计
《解剖PetShop》系列之一前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于...
职责链模式在开发中的应用
我在《软件设计精要与模式》第19章中介绍了职责链模式在实际项目中的应用,由于引入了该模式,使得对象在职责划分上有了更清晰的结构,然而由于项目场景的诸多限制,总有几分“为模式而模式”的生涩感觉。最近在开发...
在敏捷开发中采用演进式架构设计
在敏捷开发过程中,我们还需要对系统架构进行设计吗?事实上,Martin Fowler在《Is Design Dead?》一文中已经给出了答案,那就是我们同样不能忽略对系统架构的设计。与计划性的设计(Plann...
也谈瀑布模型与敏捷开发
最近在敏捷中国发起了一场关于瀑布vs敏捷的讨论,论者纷纭。虽然争得热闹,但我个人认为,这样一个题目对于瀑布模型而言,本身就是不公平的。这样的一种比较,就好像拿现在的好莱...
设计之道
来源:《软件设计精要与模式》 设计没有标准,只有目标。如果硬要制定一个标准,那么标准就是快捷、适用与优雅。如何从没有标准的设计中体验设计的乐趣,寻求问题的解决之道,成了我们软件设计者生命不可承受之重。...
实施TDD时的常见问题
在InfoQ最近发表的一篇文章《实施TDD时的常见问题》中, Chad Meyers提出了关于TDD实施的问题,如下所示: 1. 我该容忍多大限度的预先设计?你怎么知道应该何时停止(也就是说,“当人们开始讨论...
解开最后期限的镣铐
最后期限(Deadline)是软件从业人员必须面临的最大困难与挑战,准确地说,它是所有程序员包括项目管理者的可怕梦魇。当堂吉珂德看到郊野之上的数十架风车,风车的翅翼如巨人的胳膊,正耀武扬威地奚落着这位中世纪后...
印第安人的灵魂——敏捷回顾
印第安人在赶了3天路后,会停下来小憩一天,因为他要等着自己的灵魂跟上来。敏捷开发在经历了一次迭代或者冲刺(Sprint)后,也需要休整,以等待团队的灵魂跟上来,这一过程被称之为“敏捷回顾(Agile Retrospective...
不要和你的客户谈方法
我有这样的一个经验,当你拿着你的proposal去和你的客户洽谈,希望通过超强的技术拿下这个项目时,往往不能如你所愿。诚然,当你炒出一大堆概念,例如面向对象设计、设计模式、AOP、敏捷或者SOA,客户的谈判代表往往...