领导力大挑战
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
该内容已经被标记书签!
标记书签错误,请重试!
作者 Hartmut Wilms 译者 霍泰稳 发布于 2007年3月31日
领域特定语言(DSLs)是架构方面的一个热点。微软开始在自己的软件产品线里支持DSL,并通过最近发布的Visual Studio 2005 SDK集成到它的软件开发流程中。尽管现在已经有许多关于DSL的信息,但它仍然是一个抽象的架构概念。现在看看Mike James博士是如何从一个开发者的角度去理解Visual Studio DSL工具的。
DSL是指软件开发中出于某特定考虑而设计的小的、目标明确的语言。它们的作用是,使用某特定领域里惯用的符号或者表示法对该领域的实体或者流程进行建模。这就是它们区别于那些提供统一符号表示的通用建模语言(如UML)的地方。另外一个区别是UML经常被用作于(定义如此,非只能用于)文档分析或者设计交付,而领域特定语言既可以用作建模工具,还可以用作代码生成器。
在他的文章中,James抱怨说:
……文章、案例、白皮书,甚至视频介绍都是那么糟糕。他们浪费了太多的时间做无用功,而恰恰严重忽视了最明显的问题——使用领域特定语言工具的新手可能会遇到什么问题?大多数案例过于复杂,看上去就像魔术,比如告诉你“现在把下面的XML粘贴到一个新的文件中”,而不解释为什么,以及XML文件是从那儿来的,或者它有什么用等,其实这些远不是新手们所关心的问题。本文不是洋洋洒洒数千言给你解释如何改变一个图表的颜色,而是主要讲述那些文档中缺失的部分,如怎样使用领域特定语言工具从一个定制的图表中实际产生一些代码。一旦你明白了如何去做,那么那些文档看上去才会有点意思。
James解释说微软的DSL工具提供了一种图形化的操作方式。在开始创建一个领域特定语言(DSL)时,是围绕DSL设计器进行的,设计器的功能是设计和产生DSL或者设计依附于可生成代码DSL的模型。开始的时候,设计器的设计器(Designer-Designer)概念听起来有些迷糊,但是当你理解了这一思想后,就很明白了。完整的DSL设计包含两个阶段:
文章中,James提供了一个基于微语言(MinimalLanguage)模板(装有SDK)的DSL Hello-World例子。他一点儿也没有提到如何增加图表或者模型部分如何连接到图形上等细节。相反,他花了很多时间解释代码生成的过程。
代码生成是基于TextTemplate(.tt)文件的。这些模板包括直接生成(复制)为访问模型或者用于动态生成的目标或者元代码(meta-code)的代码。James说最小代码和元代码是非常让人困惑的。另外, DSL模型部分所基于的(没有文档的)元类结构(Meta-Class-Structure)概念,对理解这些问题也没有实质性的帮助。
实际上没有类结构的文档说明,只有一些没有用的特定案例。针对文档问题我发现的唯一的解决方法是在DSL设计器里阅读源文件。比如,在最初的项目中如果你打开DomainClasses.cs文件,就会发现那些组成模型的类的定义。Mike James博士总结说:
现在的DSL工具难以使用,最初的学习曲线也非常陡峭,学习的投入和产出不成正比,很不划算。尽管充满了新的专业术语和时不时让你百思不得其解哪儿出了问题,坦白地说,图形设计器很容易上手。但是,代码生成原理遇到了一直受元代码困扰的代码生成器或者软件工厂问题的障碍。这个问题就是,在表示(as-is)代码和实际执行的代码产生更多代码后,会有一堆恐怖的混合代码。这个组合天生就是那么难以理解,也很难控制。我们真的需要一些更大胆的新想法。如果要使用微软的DSL工具,需要下载安装Visual Studio 2005 SDK v4.0,而且机子上要安装有Visual Studio 2005专业版或者Visual Studio 2005团队版的某一版本。尽管没有明确说明,在安装VS 2005时还是要确认选择Visual C++环境,因为当前发布的工具是使用VC++项目生成的附属DLL,它存储了DSL的源代码。
译者 霍泰稳 霍泰稳是InfoQ中文站的联合创始人兼CEO,有多年的软件开发经验和媒体从业经历。
在实施Scrum项目的过程中,Scrum Master的角色是相当关键的,因为他是团队的推动者。本文围绕什么是仆人式领导、仆人式领导的起源、如何将领导力传达给团队、Scrum Master作为仆人式领导者的角色展开叙述,同时重点阐述仆人式领导者应有的基本内外特征。
在多线程并发编程中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概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
没有回复
关注此讨论 回复