领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Sadek Drobi 译者 曹云飞 发布于 2007年11月28日
Martin Fowler揭示了他即将出版的关于DSL的新书的一些细节,在他的工作进展网站上发布了该书引言部分的第一稿。这本书很可能有一个“复式的”结构,包含一个叙述部分和一个以模式的形式展现若干DSL主题的参考部分。
引言草稿提供了DSL的一些背景元素。除了他以前的文章,Fowler又在Jaoo 2006大会上以及最近于巴塞罗那举行的一次TSS活动中进一步发展了他的思想,在这些基础上,他举出了一个领域特定语言的案例并提出了一些对DSL的实现和使用的新见解。
在定义DSL是什么的问题上,Flowler认为目前经常使用的一些特征,例如“关注于领域”、“有限的表现”和“语言本质”是非常模糊的。因此,唯一能够确定DSL边界的方法是考虑“一门语言的一种特定用法”和“该语言的设计者或使用者的意图”:
如果XSLT的设计者将其设计为XML的转换工具,那么我认为XSLT是一个DSL。如果一个用户使用DSL的目的是该DSL所要达到的目的,那么它一个DSL,但是如果有人以通用的方式来使用一个DSL,那么它(在这种用法下)就不再是一个DSL了。
以Fowler的观点,DSL首先是一种帮助用户从一个系统中抽象出某些部分的工具。所以“当你意识到你需要一个组件,或者当你已经有了一个组件而你希望简化操作它的方式的时候”,DSL是有用的。使用DSL确实提供了某些益处。DSL不仅提高了代码的易读性,让开发者可以和领域专家更好的交流,而且是改变执行上下文的一种手段,例如:把逻辑从编译时切换到运行时,或者当命令式编程不是很合适的时候转用声明式计算模型。
在Fowler所用的例子中,他在一个框架已经确定好的API之上实现DSL。他强调也可以从DSL的设计开始动手。在这种情况下,应该首先定义“一套控制器行为的样本”,并以DSL的形式写出来。为了继续实现工作必须既构建框架和API,同时也构建DSL的具体语法。有三种可能的途径:
有些人喜欢同时处理所有这些元素的一小部分:构建一部分组件功能,编写驱动这些功能的DSL,然后用测试把它们串起来。其他人也许愿意先构建并测试框架,然后在框架之上加上DSL层。还有一些人也许喜欢先准备好DSL,然后再构建库,最后将DSL与库装配在一起。
Fowler还对DSL可能的应用提出了预见。一个最显而易见的应用是一个运行的程序可以由解释 —— 程序的即时执行产生 —— 或者由代码生成器产生。为了避免后一种情况带来的汇编层,开发者可以使用诸如Javascript的动态语言。在解释阶段有两种处理方法:“一步解释,DSL中的每条语句立刻被分析和解释”或者“两步解释,首先将输入的DSL全部分析并转变为用抽象语言表示的程序,然后执行抽象形式的程序”。 Fowler强调内部DSL通常是解释执行的,然而“目前外部DSL的教程通常假设你使用代码生成技术”,尽管Fowler的观点是外部DSL也应该使用解释执行的方式。
DSL还可以用来产生可视化的表示,即领域的一个只读投影。这样可以为“很难有可编辑的形式”的任务例如创建一个图表这样的任务提供更多的选择。当“创建一个组件框架的困难工作”完成之后,附加这样的可视化实际上是容易的。
最后但是也很重要的是,Fowler列出了与DSL的使用相关的一些问题。除了通常所诟病的问题 —— 构建的代价,语言不调和的风险,困难的设计 —— 以外,Fowler强调了迁移的问题。他相信DSL的迁移非常类似于API的迁移。不同之处是缺乏工具,例如,重构的工具,特别是外部DSL尤其缺乏。对于迁移问题,有一些技术也许有用,例如,Migration Execution,Fowler定义该技术为“令得到产生源代码所需的抽象层变得相对容易,可以具体化你希望作出的任何变化”。
Fowler提出的另一个议题是需要一贯地当心不要让事情变得太复杂,不要让事情演化为一般性的问题。他提倡为了“特殊和困难的情形”引入另外的语言,将该语言置于基础DSL的上层。Fowler相信与DSL使用相关的问题通常是言过其实的,源于“通常人们对于如何构建DSL不够熟悉,对于如何将DSL融入更广阔的软件开发的全景没有足够的认识”。
要得到这些议题以及相关议题的更多信息,请参考Fowler’s Work in Progress on the book。
查看英文原文:Martin Fowler unveils details of his upcoming DSL book译者 曹云飞 从事软件开发多年,包括Web应用、桌面应用、前后端开发,热衷于计算机理论与应用技术的钻研,软件架构与敏捷开发。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
论道WP第三篇专栏,以应用程序栏的使用为中心,包括了软键盘带来的问题、应用程序栏介绍、如何绑定应用程序栏的属性等几个方面的具体话题,为开发者顺利使用应用程序栏开发提供了具体指导。
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
1 条回复
关注此讨论 回复