??xml version="1.0" encoding="utf-8" standalone="yes"?>精品久久久久久中文字幕人妻最新,午夜精品久久久久久中宇,亚洲午夜久久久久久噜噜噜http://www.shnenglu.com/mzty/category/2059.html<br/> <br/> <a href = "http://www.shnenglu.com/mzty/archive/2007/03/02/19109.html"><font size = 5 color ="#00FFFF">{C++ 基础}<font/></a> <a href = "http://www.shnenglu.com/mzty/archive/2007/08/13/29922.html"><font size = 5 color ="#00FFFF">{C++ 高}<font/></a> <a href = "http://www.shnenglu.com/mzty/archive/2007/04/16/22064.html"><font size = 5 color ="#00FFFF">{C#界面QC++核心法}<font/></a> <a href = "http://www.shnenglu.com/mzty/archive/2007/03/04/19163.html"><font size = 5 color ="#00FFFF">{设计模式}<font/></a> <a href = " http://www.shnenglu.com/mzty/archive/2007/03/04/19167.html"><font size = 5 color ="#FF0000">{C#基础}<font/></a> zh-cnTue, 20 May 2008 10:08:23 GMTTue, 20 May 2008 10:08:23 GMT60敏捷软g开发精彩问{?/title><link>http://www.shnenglu.com/mzty/archive/2006/06/28/9092.html</link><dc:creator>梦在天</dc:creator><author>梦在天</author><pubDate>Wed, 28 Jun 2006 00:46:00 GMT</pubDate><guid>http://www.shnenglu.com/mzty/archive/2006/06/28/9092.html</guid><wfw:comment>http://www.shnenglu.com/mzty/comments/9092.html</wfw:comment><comments>http://www.shnenglu.com/mzty/archive/2006/06/28/9092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/mzty/comments/commentRss/9092.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/mzty/services/trackbacks/9092.html</trackback:ping><description><![CDATA[ <div>问:敏捷开发如何融入到现在在推行的CMMI?<br /><font color="#0000ff">{:首先Q我惌一下ؓ什么会在CMM的基上提出CMMI。Barry Boehm在其C《Balancing Agility and Discipline: A Guide for the Perplexed》一书中Ҏq行了比较深入的阐述。从M上来_有两个主要原因:1、对CMM中那些容易导致官僚的部分q行了大q度的更改;2、把风险驱动作ؓ一个核心内容纳入到CMMI的框架之中,q样在CMMI的框架中可以比较顺畅的制定Z些可以非常敏Lq程了。但是,CMMI的敏h是很难ȝ的,因ؓ作ؓ一个过E改q参考模型,它更加脓q一l需求而不是一l实c也是_我们只能ȝ那些为满些需求而开发出的过E。一般来_CMMI在需求方面的U束于SW-CMM。如果以更ؓ宽广的观点去解释需求就可以获取更多的敏h。然而,如果在实施时采用了全面保守的做法q且使用了由SW-CMM所提供的重量成熟度评估方法,那么所得出的CMMI兼容q程是重型且非常计划驱动的。因此,我觉得敏h来就可以非常畅地融入到CMMI的模型中。如果说有问题的话,我觉得更多在于实施者对敏捷的排斥,而非其他?/font></div> <div> </div> <div>问:敏捷开发流E是如何应对各种可预知和不可预知的风? 例如:人员动和变?目周期的变?客户代表的变更等风险?br /><font color="#0000ff">{:人员动和变更、项目周期的变更以及客户代表的变更等风险是Q何一个Y件开发项目都不可避免要面临的。一个好的过E方法应该能够得这些风险导致的损失最化。敏h法试图营造一U非常舒适的开发环境,q是一U典型的craftsmanship文化。在q种文化中,Z都一自己的技Zؓ荣,以开发出高质量的软gQƈ且不断追求技艺的提高。在q样的环境中Qh员流动和变更的频度被大大地降低。另外,敏捷Ҏ寚w寚w沟通、结对编E以及高质量代码和文档的也得由于h员变动所D的风险大大降低?br />对于目周期的变_我想再也没有比快速、短的P代更有效的应Ҏ法了。正是这些快速的短P代ؓ我们带来的大量的反馈信息Q得我们对于项目的状况h全面、深入ƈ且是真实的了解。有了这个基Q我们在最化目周期变更风险斚w处于一个非常有利的位置。而快速的短P代正是敏L重要特征。什么是敏捷呢?敏捷是Q“short cycles that are test-driven and feedback-driven, yielding constant improvements.”对于客户代表的变更Q我不想多说。因为无论是对于敏捷Ҏq是计划驱动ҎQ客户代表的变更带来的风险都是一L。如果,没有一个好的客户代表,那么肯定是一个失败的目?/font></div> <div> </div> <div>问:敏捷开发流E是否适用于大型、复杂的应用pȝQ因为对于一些架构比较简?代码量小的系l?可以通过不断的代码重构进行改q?但对于一些体pȝ构比较复杂的pȝ在投入运行后,短时间内,׃客户业务的扩张导致的数据定w的增大或者网l访问量的增? 而导致原有的核心架构设计已经不能满用户的需?而这些重要的架构在系l核心服务中起重要作用而很难进行变更。这U情况,变更q些斚w的代价会很高Q因此需要早期花费精力预期此cd更。而且q类软g的复杂性和规模会导致严格的代码重构代hq高而且Ҏ出错?br /><font color="#0000ff">{:首先我们得在什么是大型、复杂的应用pȝq个问题上取得共识。ScrumҎ应用的最大的一个项目是一个医疗图像信息系l,共有800人。XPҎ应用的最大一个项目是一个企业资源综合管理系l,共有50人。当Ӟ在h数增多时Q就必须要采取一些变通的实践Q否则就不敏捷了Q。对于架构方面的问题Q我觉得应该q样看。如果是一个相Ҏ熟的领域Q那么可以借鉴很多业界已有的经验,特别是一些相关的模式。这一点很重要Q否则是要走很多弯\Q付出很多代L。比如:我觉得在q发、分布式通信领域Q一个合格的pȝ工程师必d该知道ƈ理解《Pattern-Oriented Software Architecture, Volume 2》中的所有模式。但是,q只是ؓ你提供了一个方向,一个防止你犯重大错误的方向。这些模式ؓ你代码的重构和系l的演化提供了一个指引。如果不了解q些模式Q基本不可能做出一个优U的架构。了解了q些模式后,是不是就可以在一开始就把它们堆砌v来以形成一个能够适应未来的架构呢Q当然不行。要xZ个能够适应未来的架构,有两U途径Q一U需要天才的pȝ架构师,一U是在领域模式的引导下,通过TDD和Refactoring的方式不断、逐步C攏V显ӞW?U方法是一U切实可行的Ҏ?/font></div> <div> <br />问:敏捷开发流E是否不支持创徏可复用品?对于一个工E型,可复用的产品对于节约成本和提高效率是极其重要?<br /><font color="#0000ff">{:关于可复用性的问题Q一直都是Y件界讨论的热炏V一般来_有机制层面的复用Q比如:一般的函数库或者类库,也有应用领域逻辑的复用,比如Q各U领域相关的应用框架。第一U复用方法相Ҏ较容易,但是带来的好处也相对较低。而第二种复用Ҏ能给我们带来最大的好处Q但是非常的困难。也正是因ؓq一点,在业界一度有“复用神话”的说法。无数实践表明,要想得到一个相对可用的领域框架Q必要l受臛_3个同质领域实늚锤炼。ƈ且,p|的数目要q远大于成功的。而试囑֜一开始就把可复用性作为目标的目基本上没有取得成功的Q这L框架一般具有这L特点Q本来一件简单的dQ但在用了该框架后却变得非常复杂。)。因此,现在业界比较一致的看法是,首先应该针对你开发的领域搭徏一个特定于目的、简单的框架。一开始不要考虑复用性,而关注于pȝ的清晰性和单性。在另一个同质的目中,通过重构、演化的Ҏ在对q个框架q行修正Q之更具通用性,如此循环往复。在l历q多个项目后Q可能你得C一个比较具有可复用性的框架。也是_应该x于创建那些比较容易演化ؓ可重用框架的东东Q这个东东应该具有两个特点:1、针对具体问题;2、非常简单清晰。敏h法非常注重这U框架的形成Q但是不会刻意去q样做,它的思\是在不断的@环、P代中把它演化出来。在q个循环q代中,敏捷Ҏ以DRYQDon't Repeat YourselfQ原则来逐步建立h大规模重用的基础?/font></div> <div> <br />问:敏捷开发流E的质量保证机制是否_满开发有严格安全性和可靠性要求的软gQ对于在电力,电信pȝ中一些有严格安全性要求的软g敏捷开发流E支持的质量控制机制gq没有证明来说服使用者Y件是安全的。是否还需其它措施q行补充?<br /><font color="#0000ff">{:首先我要说的是,安全性和可靠性是属于用户需求的范畴Q而敏h法中把客h意放在了非常重要的位|上Q单从过E方法的思想基础斚w来说Q没有那U方法能比敏h法更x客户的满意度了。其ơ,安全性和可靠性不是通过一些条条框框说出来的,那些在系l方案中I洞地罗列一些安全性和可靠性方面的术语的做法,对于保证pȝ的可靠性和安全性没有Q何用处。保证安全性和可靠性的唯一Ҏ是L验,随着pȝ的演化,不断地检验。把用户在安全性和可靠性方面的需求通过试用例的方式编写出来,频繁地去验证pȝ是否能够通过q些试Q如果不通过Q就是一ơ集成失败。不知大家在保证pȝ可靠性和安全性方面是如何做的Q?/font></div> <div> <br />问:目前的项目和部门的组l架?内部客户和外部客L开发h员都很远,怎样能够辑ֈ零距? 虽然单个客户和开发h员在一起工作可以有效对需求变更进行跟t?及时响应需求变?但如果系l面对的客户是不同的,如何避免开发期间一些需求变更的单一性和独特?<br /><font color="#0000ff">{:无论目采用MҎQ它对于客户都有同样的要求,是q个客户必须是CRACKQCollaborative、Representative、Authorized、Committed、KnowledgeableQ型的客戗鉴于目前我们所处的各种环境Q完全的CRACK和现场客户可能不太可能。但是一个能够合格地担当其客戯Ԍq且能够比较频繁的参与到目开发中来的人员对于目的成功来说是必须的。另外,应对需求的变化正是敏捷Ҏ的强,如果q些变化是客L正需要的Q那么ؓ何要避免呢?此时Q我们应该利用这些变化取得优ѝ?/font></div> <div> <br />问:如何避免开发h员利用够用文档这个借口h写文档Q?br /><font color="#0000ff">{:处于敏捷文化中的Z高质量地完成dQ如果写文档是高质量地完成Q务的一部分Q那么他肯定会高质量地写份文档。否则,写再多言之无物、只满格式的文档又有什么用呢?敏捷实践都是能够真正提供开发h员技能的实践Q敏h法强烈反寚w些仅仅是Z防止开发h员“偷懒”而制定的规程?/font></div> <div> </div> <div>问:开发h员面寚w的交过频繁,D大会会不断,如何把握q个?<br /><font color="#0000ff">{:面对面交不是开会。只要觉得需要就M?/font></div> <div> </div> <div>问:单设计的_度如何把握,如果前期架构的简单设?如何应对软g投入q行?短时间内,׃客户业务的扩张导致的数据定w的增大或者网l访问量的增?而导致原有的设计已经不能满用户的需?<br /><font color="#0000ff">{:请参见前面那个关于架构的回答。首先,你要有丰富的l验和知识,q些东西可以Z提供一个架构演化的方向。如果没有这些东西,基本上没有可能首ơ就扑ֈ正确的方向。有了方向后Q下面就是TDDQRefactoring不断演化?/font></div> <div> </div> <div>问:单设计如何能保证实施试驱动开?如果设计的不够详l?如何Ҏ口编写测试用例和试代码?</div> <div> <font color="#0000ff">{:首先Q不是简单设计保证实施测试驱动开发,而是试驱动开发可以促使你得到一个简单的设计。其ơ,是先有测试用例,然后才有设计和接口?/font> </div> <div> </div> <div>问:《敏捗书中把创徏验收试作ؓ一U设计系l架构的重要手段Q也作ؓҎl用L一U功能演C,但本质上q是对系l特性的一U模拟集成测试,q不能完全代表实际系l,q种验收试与传l意义上的验收测试不同,q种验收试可靠吗?</div> <div> <font color="#0000ff">{:q里所指得传统意义上的验收试是什么?是指有测试h员进行的试吗?一般在敏捷Ҏ中(特别是XPQ所指的验收试Q都是由QA和客户代表共同编写的Q如果通过p明实C客户需求。我觉得没有其他Ҏ能比q个Ҏ更可靠了?/font> </div> <div> </div> <div>问:试驱动开发的例子中,开始也做了单的设计Q然后再~写试用例Q最后Ş成另外一U设计。开始时需要设计吗Q如果需要,应该辑ֈ什么程度?开始不q行设计而纯_依靠测试来驱动设计可能吗?我的理解是,试驱动开发更适合于详l设计阶D,试驱动开发适合于架构设计吗Q文章中的测试驱动开发例子中QY仉求好像来自个人“随心所Ɯy的惌Q这U测试用例的生成Ҏ是否~Zpȝ性和完备性?或者说Q测试驱动开发的试用例的生是否也需要严密的设计呢?</div> <div> <font color="#0000ff">{:什么是设计Q这是一个必首先达成共识的问题。TDD的核心就是持l设计,不断x设计质量Q这U关注是建立在频J的、真实的反馈的基之上的,而不是一些臆惟뀂达到的E度是“tuned to today and poised to strike at tomorrow.”通过一些想象画几张UML图,那不是设计,设计应该是可验证的,q且要通过反馈持箋修正的。设计的验证正是通过试用例q行的。测试用例可以是客户需求,q是验收试。也可以是开发团队内部实C的需求,q是开发团队内部的试Q一般也成ؓ单元试Q。测试用例应该来自客Pq是勿庸|疑的。测试活动本来就是一w险驱动活动,在测试投入到达一定水q_Q它的效果会q速降低。对于“系l性”、“完备性”以及“严密性”,我不知道具体指得是什么?能不能详l说明一下,q介l大家是如何做到需求的“系l性”、“完备性”以及“严密性”?/font> </div> <div> <br />问:敏捷设计开始设计的E序也可能是最单,不具有灵zL,直到需要变化时Q团队才抓住Z应用敏捷设计原则Lq设计。这里有几个前提Q团队应该对不良设计_敏感Q才能抓住改q设计的ZQ团队有_的时间去改进设计。如果这两个前提不成立,如果q行敏捷设计Q?/div> <div> <font color="#0000ff">{:怎样才具有灵zL呢Q把东西做简单,单的东西最h灉|性!Kent Beck在《eXtreme Programming》一书中对什么是单做q明的定义。用一句话来说Q就是:“clean code that works.”如果这些前提不成立的话Q那么什么设计都做不了。很多敏捷实늚目的是帮助我们通过学习、实跉|培养q种敏感性?/font> </div> <div> <br />问:试驱动开发过E中如何把握“前q的步伐”,卻I每个试用例的粒度如何把握?_度大,可以加快开发速度Q但又可能漏掉某些bugQ粒度小Q又影响开发进度。如何看待测试驱动开发过E中的测试用例?是单元测试吗Q还是粒度很大的集成试Q如果是单元试Q至也不应该是传统意义上的单元试Q此时的单元试是属于黑盒测试还是白盒测试,或者既不是黑盒也不是白盒?如何理解试驱动开发可以改q设计?有何理论ҎQ能够从黑盒试的理论阐q这个问题吗Q?/div> <div> <font color="#0000ff">{:_度是一个独立的、可以验证的东西。Kent Beck在其《Test-Driven Development》一书中对用TDD开发的节奏有详l的描述Q我׃再赘q。写试觉得不会影响开发进度,是在时间压力大的情况下Q越是如此。我惛_安有过q样的经历吧Q“花20分钟完成了一功能,然后?个小时甚x多的旉去调试。”在TDD中,试用例只用两种Q面向客L验收试用例Q和面向开发团队内部的内部试用例Q一般也UCؓ单元试Q。ؓ什么一定要那么清楚地区分黑盒和白盒呢?试驱动开发能够改善设计的思想基础在《Test-Driven Development》有详细阐述。这和黑盒测试没有Q何关pRTDD更是一U设计方法,一U有反馈、有验证的真正的设计Ҏ?/font> </div> <div> <br /> <font color="#0000ff"> <font color="#000000">问:关于“Y件之”:对Y件设计者来_被简单、直观地分割Qƈh最内部耦合的内部结构就是美的。美的系l是灉|、易于理解的Q构建、维护它们就是一U快乐。在软g领域Q如何审?“灵zR易于理解的”这个概念含有很多主观性,Ҏ一具体的Y件审,不同的h的评h不一LQ大师别的人当然更准确些,但大师别的人太了Q那么,有没有一些客观的、可以量化的指标Q得没有很多经验的人,也可以以此ؓ指引Q改qY件之向的方向发展Q?/font> </font> </div> <div> <font color="#0000ff">{:《敏捯Y件开发:原则、实践和模式》一书中l出了很多原则和实践ҎQ可以作为很好的参考?/font> </div> <div> </div> <div>问:极限~程只适用于轻量团队和项目,q是也适用于重量团队和项目?和CMM{有无矛盾?在推行极限编E哪些可行(如测试驱动开发)Q哪些不可行Q如l对~程Q?在重量团队和项目中如何q用Q?/div> <div> <font color="#0000ff">{:极限~程对于型目Q?0~20人)来说肯定没有问题。对于大型项目来_照搬XP中的实践Q肯定是会出问题的。所以需要一定程度的Ҏ具体情况q行修正。关于和CMM有无矛盾的问题,q方面的讨论和文章有很多Q基本上是见仁见智。不q,在提高开发质量这个目标上是肯定不矛盾的。其实,关于CMM本n该如何实施方面也存在很多不同意见Q不同的评估师给出截然不同的l论的案例就有很多。其实也没有必要非得全盘照搬XP不可Q我觉得可以在不更改团队现有q作程的情况下Q先引入部分实践,TDD应该是首选?/font> </div> <div> </div> <div>问:5个重要的原则“单一职责原则、开放-闭原则、Liskov替换原则、依赖倒置原则、接口隔d则”虽然在此把它们表述为面向对象设计的原则Q但是事实上它们只是软g工程中一直存在的原则的特例而已。那么,软g工程中一直存在的普遍性原则是什么?有哪些?在结构化~程q大量应用的嵌入式开发中Q如何运用?“ؓ使用而用”设计原则会D不必要的复杂性,设计原则是经验的ȝQ它必然是思考某个问题而得到的解决办法指导Q那么,在编E当中,时刻要思考的问题有哪些?</div> <div> <font color="#0000ff">{:首先我得说一下,是h普遍性得原则Q越不具有可实施性,只有针对特定context和force的原则才h更多的实际意义,q也是模式ؓ何在传播优秀的设计经验方面得到普遍认可的重要原因。如果非要给Z个普遍原则的话,我觉得Grady Booch曄说过的一句话可以作ؓ参考:“The entire history of sw enginerering is one of rising levels of abstraction.”不Z使用l构化编E还是面向对象编E,了解多种~程范型肯定会对你的开发带来好处。设计原则和模式只能Z指引方向Q最为重要的是要保持Q设计)代码单,时刻思考的问题是Q这D代码是不是清晰地表达了我的意图Q也是要intentional programmingQ要“Keep It DRY, Shy, and Tell the Other Guy.</font> </div> <img src ="http://www.shnenglu.com/mzty/aggbug/9092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/mzty/" target="_blank">梦在天</a> 2006-06-28 08:46 <a href="http://www.shnenglu.com/mzty/archive/2006/06/28/9092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.yiqitong518.cn" target="_blank">ŷ龫Ʒþþþþ</a>| <a href="http://www.hwumbrella.cn" target="_blank">þþþһvr </a>| <a href="http://www.bb2y.cn" target="_blank">þþƷۺɫ</a>| <a href="http://www.05xx.cn" target="_blank">þþƷ</a>| <a href="http://www.cdake.cn" target="_blank">ɾþۺ777</a>| <a href="http://www.puruimu.cn" target="_blank">þþþþþž99Ʒ</a>| <a href="http://www.gg32.cn" target="_blank">Ʒþˬۺ</a>| <a href="http://www.r7831.cn" target="_blank">þۺ³³</a>| <a href="http://www.air-walk.com.cn" target="_blank">Ҳȥþۺ</a>| <a href="http://www.crs24.cn" target="_blank">պݺݾþ͵͵ɫۺ96</a>| <a href="http://www.nsom.org.cn" target="_blank">avþþƷ</a>| <a href="http://www.aikandianying.cn" target="_blank">99þùۺϾƷ</a>| <a href="http://www.xxxls.cn" target="_blank">ھƷþþþӰԺ޹² </a>| <a href="http://www.gongcheng100.cn" target="_blank">һõþۺϺݺAV</a>| <a href="http://www.xileshun.cn" target="_blank">ҹŷƷþþþþþ </a>| <a href="http://www.bxzpzlb.cn" target="_blank">һɫþۺϺݺ</a>| <a href="http://www.dishengbao.cn" target="_blank">99ھƷþþþþþ</a>| <a href="http://www.ok66668.cn" target="_blank">69Ʒþþþվ</a>| <a href="http://www.tmqywedding.cn" target="_blank">˾þƵ</a>| <a href="http://www.szsdhy.cn" target="_blank">þˬˬƬav</a>| <a href="http://www.hanfeng-foods.com.cn" target="_blank">þøݾƷԴվ</a>| <a href="http://www.lsjtht.cn" target="_blank">պƷþþþþ</a>| <a href="http://www.usgold.cn" target="_blank">þ޹վ</a>| <a href="http://www.hebhxjx.cn" target="_blank">þþþþþ޾Ʒ </a>| <a href="http://www.thha.cn" target="_blank">ٸлþþþ</a>| <a href="http://www.u5qe.cn" target="_blank">99þþƷѿ</a>| <a href="http://www.rcipbrdgydr.cn" target="_blank">ٸ߳ҽоþþ</a>| <a href="http://www.rigemei.cn" target="_blank">޾ƷŮþþþ99</a>| <a href="http://www.dafa888da.cn" target="_blank">þۺƵ</a>| <a href="http://www.gegqmpvka.cn" target="_blank">޹˾þһWWW</a>| <a href="http://www.musicweb.cn" target="_blank">ھƷŷþþƷ</a>| <a href="http://www.832821.cn" target="_blank">99þùۺϾƷӰԺ</a>| <a href="http://www.z5u5.cn" target="_blank">ھƷþþþ</a>| <a href="http://www.hwaq.cn" target="_blank">ѹ99þþ㽶</a>| <a href="http://www.zzjiale.cn" target="_blank">þۺɫһ</a>| <a href="http://www.gdchengye.com.cn" target="_blank">66þôýվȸ</a>| <a href="http://www.pingyaonews.cn" target="_blank">ɫۺϾþ</a>| <a href="http://www.47g.com.cn" target="_blank">޹Ʒ˾þ</a>| <a href="http://www.busher.cn" target="_blank">¾þƵ</a>| <a href="http://www.ohos33.cn" target="_blank">99þþƷѿһ</a>| <a href="http://www.cate365.cn" target="_blank">˾þô߽ۺ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>