- 浏览: 479859 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
alvin198761:
renzhengzhi 写道我参与过12306余票查询系统的开 ...
别给12306 辩解了 -
renzhengzhi:
我参与过12306余票查询系统的开发,用户请求被前面3层缓存拦 ...
别给12306 辩解了 -
renzhengzhi:
写的很好。
JAVA线程dump的分析 -
liyonghui160com:
说好的附件呢
分布式服务框架 Zookeeper -- 管理分布式环境中的数据 -
ghpaas:
orbeon作为xforms标准的实现,不论其设计器还是运行时 ...
XForms 1.1 中文翻译—第1章 关于XForms标准
在企业中应用敏捷方法是一项具有挑战性的任务。实现敏捷不像安装软件那样能在一天内完成。而是需要适应企业环境,其中包括:文化、技术和组织方面。本文将探讨面临的一些挑战,这些挑战与建立开发环境、自动化测试、持续集成相关,并且同在企业环境中明确完成的定义(DoD)相关。
每位技术负责人和开发经理都想缩减团队成员建立开发环境的时间。然而,为了在项目中获得较高的产出,开发人员要持续投入许多精力,让事情变得有条不紊。缺乏文档, 是建立开发环境时间过长的关键原因。第二个关键原因是建立过程中包含多少手工步骤。那么,如何克服这些挑战呢?关于文档我遵循几个信条——简单,注重细节和自动化。简单是指,让文档的创建、维护、查看以及传播保持简单。在为我的团队建立开发环境相关的内容时,我使用wiki来管理。wiki页面有一名所有者,它会作为迭代的一部分被更新。注重细节是指,记录建立环境所需的内容时,要形成明确且易懂的指南。这表示,为了让开发人员开始编写代码并与团队的其余工作进行整合,要记录下开发人员所需的所有细节。下面是我在有关开发环境的wiki页面中所记录的: 建立开发环境最重要的方面或许就是自动化了。自动化有几个优点——在整个流程中坚持自动化,就算不能消除错误,也能显著地减少错误。下面是一些自动化所面临的挑战: 这些挑战或许并不总能被解决,但还有一些办法来处理它们。对开发人员而言,所有所需的软件——不管来自何处——把它们加入源代码控制系统。确保使用一致的命名和放置规范来组织软件包,标识出版本号和程序库依赖关系。这能确保每个开发人员不用在公司内四处询问就可得到所需的软件包。对于那些需要由其他部门去安装的软件包,可以创建脚本来生成请求,如果可能的话,甚至可以通过程序提交请求。一旦他们从源代码控制系统中得到文件的工作副本,你就会想要建立一个 “设置”脚本。在我的项目中,我有一个apache ant脚本,用于建立用户级环境变量、在开发数据库中创建用户编号/密码、从网络目录拷贝许可密钥至用户的windows配置中,并为团队支持的各种 web服务生成XML消息样例。 开发人员因各种各样的技术原因而不进行自动化测试。我常听到下面这些理由: 工具问题可以通过各种方式解决。向他们说明使用如JUnit或NUnit等标准测试工具的好处,指出用脚本进行整合的好处,并具有可持续的、可重复的方式进行测试的能力。在大型企业中,不太可能所有的人都使用同一工具。更现实的做法是,同一部门的开发团队至少有一套标准的工具集。我所做的是,提供标准的自动化测试脚本——这些脚本用于对JUnit测试用例进行编译、执行,生成报告并通过email发送报告——这些脚本是每个开发人员开发环境的一部分。当开发人员从源代码控制系统中下载工作副本时,测试脚本已经就位,并且他们会继续加入自己的测试用例。我们团队有一个标准的测试目录结构,其中放置着测试用例和测试套件,脚本会从中选取并执行测试用例。另外,在代码复查期间,我会确保不但要复查代码,同时也要复查测试代码。对未包含在自动化测试中的测试用例进行重构也是复查工作的一部分。这同样适用于包含了硬编码数据的测试代码,把硬编码数据改为从配置文件或者数据库中读取。例如,一个测试方法指定用户角色为 BRANCH_SUPERVISOR,而不是从配置文件中去获得。复查时,把这一属性保存在一个由名称-值数据对组成的文件中,重构该测试方法,使之从属性文件获取用户角色。这样一来,这一属性也可以被其他测试使用了。 对 SOA项目来说,服务中整合了应用程序服务器、遗留系统、数据源或应用程序包,一系列的系统测试也是必不可少的。最初,这些测试可以使用暂时代替后端整合点的mock对象执行。但最终你会希望在真实的整合点上运行这些测试。在这种情况下,测试数据以及与多系统相关的数据极为重要。缺少良好的测试数据,特别是需要跨系统的数据,是导致无效自动化测试的一个重要原因。对需要依靠数据复杂性和系统运行时依赖较多系统的情况,可以分阶段解决这一问题。可以从数据的本地副本开始,开发人员查询多种数据源并填充到本地存储。这听起来非常像是手工操作,但如果数据是新的并且ETL作业 /批处理过程对数据存储的填充还未完成,这也许是启动测试更为简单的方式。随着时间的推移,你可以建立起一套类,封装了来自多种数据存储的测试数据,确保数据的有效性和质量,并把填充测试数据作为持续集成脚本的一部分。无论如何,如果把测试用例代码和获取测试数据的细节解耦,就更易于改变数据源策略而不影响测试代码。我的团队最初用配置文件来提供测试数据,随后把数据迁移到一组数据访问类中,并通过这些类获取所需测试数据。例如,我们用Data Access Object设计模式创建了一组java类,这些类封装了对客户数据和账户数据项的操作。这些类提供了一个简单的有增删查改方法的接口,JUnit的测试方法可以通过它访问这些类。如果一个测试方法需要获取客户数据,它会导入DAO工厂和特定的DAO类并调用getCustomer()方法。在提取特定客户对象时,测试可以继续执行其余的逻辑。测试不需要了解如何查询数据并将其打包至一个对象中的,而且这些接口能被其他测试重用。 在企业中,为完成指定一个标准是非常棘手的。在开发环境中执行地非常好的代码在测试环境下也许根本无法工作。这也许是由于安全令牌/安全政策、网络/连接问题、系统不稳定或是由于质量保证(QA)团队或终端用户更严格的质量测试。为了尽量减少迁移代码时的意外,完成标准中应当包括: 本文谈到了在企业中应用敏捷方法面临的一些挑战,并提出了一些应对的策略。使用自动化脚本和检查清单以一致的方式建立开发环境,使用标准的工具和透明的测试数据有助于自动化测试和持续集成,并确保对完成有一个更严格的标准。这些方法并非无所不包,但它们会帮助团队在企业环境中获得更高的生产效率。 建立开发环境
自动化测试和持续集成
定义什么是完成
总结
发表评论
-
IT人的良好阅读习惯
2014-01-23 09:52 1425一、学会挑剔只看经典 人的精力是十分有限的,只能有 ... -
IT领域2014年发展趋势
2013-12-23 22:13 0虽然2013年还有一个月 ... -
15分钟学会使用Git和远程代码库
2013-12-23 10:28 2040Git是个了不起但却复 ... -
传输控制协议 TCP之二
2011-03-11 13:17 1458段按顺序处理,首先抛弃重复的段,对于以后的处理要根据SEG ... -
传输控制协议(Transmission Control Protocol, TCP)之一
2011-03-11 13:05 960传输控制协议(Transmission Control P ... -
史蒂夫·乔布斯很懂团队建设
2011-01-27 18:01 916我偶然读到了由Rama Dev Jager 和 Rafae ... -
如何分析Flex应用的内存泄露问题?
2010-10-26 15:11 1311随着Web 2.0技术的深入 ... -
服务器端编程的十大性能问题
2010-08-31 17:01 825年5月底,瑞士计算机世界杂志上刊登了Web性能诊断专家Be ... -
Yahoo推出开源YUI跨浏览器测试工具Yeti
2010-08-31 17:00 1018YUI是一款企业级的JavaScript开发工具包,被广大 ... -
MSDN中关于Working Set的一些说明
2010-08-31 15:10 2187*The working set of a proces ... -
Server2003对决2008系列之内存性能对比
2010-08-05 23:46 1027内存带宽:2003 ... -
神奇的句型
2010-08-03 23:42 774要是以为单靠熟练的技能和辛勤的工作就能在职场上出人头地,那 ... -
如何给上司反馈
2010-07-08 13:06 1073艾米•加洛 与别 ... -
如何管理你的压力指数
2010-07-08 12:57 749明天,你就要向公司的最大客户进行一场销售展示。你的老板,还 ... -
你在浪费智慧型失败吗?
2010-07-08 12:52 718尽管人们普遍认识到,富有挑战性的时代对人们和企业提出了不可预知 ... -
怎样做一名“技术布道者”
2010-05-15 23:03 895作者:子排牛柳 ... -
雷曼的败因:太过和谐
2010-05-13 21:33 725雷曼兄弟(Lehman Brother ... -
拒绝借口之前言
2010-04-05 00:11 779任何借口都可能把人推向失败的边缘。在通常情况下,借口让 ... -
最令人深思的6句“微博”
2010-04-05 00:03 869推特(Twitter) 已为自己赢取“新媒体新天王”位置。 ... -
24部经典电影的24句话的24个哲理
2010-04-04 01:27 1422原文:24部经典电影的 ...
相关推荐
尽管存在诸多挑战,但通过采用正确的工具和实践,C++ 项目仍然能够成功地应用敏捷方法。关键在于转变社区文化和开发者的思维模式,利用现代工具和技术来克服传统方法中的局限性。通过持续改进和学习,开发团队能够在...
在当前的数字经济时代,银行正面临着前所未有的转型压力,即向敏捷化转型...银行需要把握数字经济的机遇,克服挑战,以客户为中心,构建敏捷、开放、数据驱动的新型金融机构,才能在竞争激烈的市场环境中保持领先地位。
企业在多个云平台上运行工作负载,这要求安全团队具备跨平台的监控和管理能力,确保每个云服务的安全配置符合企业安全政策。由于不同的云提供商可能有不同的安全控制和接口,企业必须建立标准化的流程和工具,以便...
根据美国政府问责局(GAO)在2012年的一份报告《软件开发:应用敏捷方法的有效实践与联邦挑战》(GAO-12-681),联邦机构开始采用敏捷开发技术,以解决长期以来存在的信息技术(IT)项目成本超支、进度延迟以及对...
在实践中应用方法论往往面临诸多挑战。虽然团队成员普遍认同方法论的价值,但在执行过程中却难以持续贯彻。这表明,成功地应用方法论不仅仅取决于方法本身的优劣,更关键的是如何在具体情境下有效地运用这些方法。 ...
- **发布目的**:该白皮书旨在通过对中国企业敏捷实践的深入调研,揭示当前中国企业对敏捷方法论的应用情况、存在的问题及未来的趋势,帮助企业更好地理解和应用敏捷实践,以提高竞争力。 #### 二、敏捷实践概述 -...
《数字化转型手册——拨云见日 克服数字化转型挑战》深入探讨了企业在数字化转型过程中面临的困难,并提供了西门子的状态机模型作为有效的指导工具。该手册旨在帮助企业理解和应对数字化转型的各种挑战,通过灵活的...
在大型软件项目中应用敏捷开发面临一些挑战。首先,确定Product Owner是个难题,因为大型项目可能涉及多个业务领域,需要有广泛知识和决策权的人选。解决办法可能是设立多个业务分析师共同担任Product Owner角色,以...
企业应用架构在当今数字化转型的时代扮演着至关重要的角色,然而,它面临的挑战与误解是多方面的。首先,企业架构(EA)的概念在许多高管心中并未得到充分理解和重视,他们可能认为EA仅仅是IT领域的又一个缩写,而...
### 敏捷软件开发方法 ...通过以上介绍可以看出,《敏捷软件开发》不仅提供了实用的技术指导,还深入探讨了敏捷开发背后的理念和哲学思考,对于希望采用敏捷方法的企业和个人来说是一本非常有价值的参考书。
这一方法论的提出,主要是针对大数据应用中普遍存在的挑战,如项目成功率低、技术更新迅速、传统BI系统的局限以及数据标准化和产品化的问题。 首先,大数据使用落地的主要瓶颈之一是技术的快速演变。随着DT技术的...
为了克服上述挑战,《敏捷开发在物联网教学改革中应用的研究与实践》提出了以下几点改革措施: 1. **引入Scrum模式**:Scrum是一种敏捷开发框架,适用于管理产品或项目开发,尤其强调团队合作、自我组织以及适应...
- **主要内容**:涵盖了测试工具与技术、测试组织与测试人员概况、外包趋势、从敏捷开发到敏捷交付、云应用部署、行业趋势等内容。 - **行业覆盖**:报告特别关注消费品与零售、分销与物流、金融服务、公共部门、高...
在已实施CMMI(能力成熟度模型集成)的高级别团队中进行敏捷转型,通常需要克服更多挑战。阳陆育的分享可能讲述了如何平衡过程规范与敏捷灵活性,以及如何在严谨的管理框架下实现敏捷的价值。 5. **葛峰--创建统一...
通过上述解决方案,敏捷制造技术旨在帮助制造企业克服业务流难识别、故障难定位、系统整合难、信息孤岛多等问题,增强企业面对市场波动时的适应能力和快速反应能力,从而提升整体竞争力。这些解决方案通过整合先进...
IT服务管理在中小企业中的应用模式主要分为两种:基于ASP托管的应用模式...正确选择和实施IT服务管理模式,能够帮助中小企业克服资源限制,提高业务敏捷性,确保业务连续性,从而在竞争激烈的市场环境中保持竞争优势。
生技术为基础的敏捷交付云网融合应用,旨在打破传统通信网络与IT应用之间的界限,实现更高效、灵活的服务交付。云原生技术,如微服务、容器和DevOps,已经成为互联网行业的标准实践,现在正逐渐渗透到传统电信行业,...