存档十一月, 2004

jabberd2-ldap-mysql on debian

现在jabberd2服务器已经是debian experimental中的一部分,要自己配置一个jabber服务器就容易多啦!

首先,在/etc/apt/sources.list中加入experimental源,然后apt-get install jabberd2-ldap-mysql/experimental就可以了。安装好后,还需要对jabberd2做一系列的配置:

1. 修改/etc/jabberd2/c2s.xml文件,将其中的认证部分改成使用ldap,并配置本地的ldap服务器,并且关闭用户注册功能。
2. 修改/etc/jabberd2/sm.xml文件,将其中的storage driver改成mysql,并且激活auto-create。
3. /usr/share/doc/jabberd2-ldap-mysql/tools/db-setup.mysql.gz 中是创建数据库的脚本,使用之。

现在ldap中的用户就可以使用jabber了,需要注意以下几个问题:
1. 现在的jabberd似乎不是用v3的协议,因此要把slapd中v2协议打开
2. 一般在jabberd中都是用uid来检索用户的,因此,当创建用户时,应当用uid=lonecat,ou=user,dc=shanhuchong,dc=com的方式来作为dn;如果使用cn则有可能就找不到这个用户了。

如果jabberd使用ldap作为auth/reg模块,则用户不能自行注册,因此必须修改客户端直接访问ldap,或者提供web注册的方式。

留言

LDAP on Debian QuickStart

以前玩儿LDAP的时候,总觉得它的安装配置是一件很麻烦的事情,今天又在Debian上试了试,发现事情已经发生了很大的变化。从安装到配置好,需要做的只是提供一些信息而已。

在Debian上,直接安装slapd就可以了。在配置的过程中,BaseDN(suffix)输入dc=shanhuchong,dc=com,随便给个用户名和密码,数据库的类型选择BDB,基本上就搞定了。

在Debian上有不少 管理LDAP数据库的东西,我自己试用了Luma和GQ,感觉都不错,最后选择了GQ,因为功能比较齐全。继续管理LDAP数据库的事情,就都可以在GQ里面完成了。

打 开GQ,首先配置一下服务器,用cn=admin,dc=shanhuchong,dc=com登录localhsot。接着为用户创建一个组,创建的 时候dn写ou=users,dc=shanhuchong,dc=com,objectClass选择top和orgnizationUnit,去掉其 它的,然后在ou项目上填写users。这样就可以创建一个Orgnization Unit了。我们的所有的用户信息,都可以放在这个下面,创建用户时dn填写uid=lonecat,ou=users,dc=shanhuchong, dc =com,objectClass选top、uidObject和person,sn填”猫”,uid填lonecat,cn填lonecat,这样就创 建了一个用 户帐号lonecat啦。对于person对象,sn和cn是必须写的,而对于uidObject,uid是必须写的。

选择LDAP主要的用处就是做用户的认证,由于大多数大型软件都支持LDAP的认证,因此一旦架设好了LDAP,便可以在众多系统之间共享认证信息了,也免得用户记住一堆用户名和密码了。

关于LDAP的中文支持,现在已经相当不错了。为了验证这个问题,我首先用GQ加入了中文的sn,然后用一个非常好用的Java LDAP client jXplorer访问,可以看到正确的中文,这就说明现在的 LDAP客户端在这方面已经具有这种能力了,当然可能个别的客户端还是会有些问题。

留言

MySQL JDBC UTF-8

这两天有个东西突然要用一下mysql和java,以前虽然配过中文,但现在mysql和其jdbc驱动都发展很快,跟以前已经大不相同。在网上搜索了一 下,比较多的是用gbk编码,而我比较希望能够使用utf-8编码,经过一番尝试,现在已经基本上成功。虽然还不知道命令行客户端和PHP能否正常支持。

1. mysql可以设置服务器的字符集,也可以设置每个数据库、表格、字段的字符集。相对于设置服务器的字符集,我比较愿意修改数据库的字符集,表格和字段要改起来就太麻烦了。用如下命令可以修改数据库的字符集。

alter database test character set utf8;

2. JDBC驱动是非常重要的,由于我开始的时候都是用的debian中的缺省驱动(3.0.9)的版本,经过一番尝试都不成功。后来下载了最新的mysql-connector-java-3.0.16-ga.tar.gz,就没有问题了。jdbc连接配置如下:

jdbc:mysql:///test?characterEncoding=utf8

检验是否正常的标准如下:
1. 向表中插入数据 insert into test values (’中文’);
2. 从表中读取数据 select * from test;
3. mysqldump test
如 果上述三步都没有错误,则表明数据已经正确插入了。虽然在mysql的客户端中,即便是使用zh_CN.UTF-8的LOCALE也只能看到一个’?’ 的输出,只要上述三步正确,放在数据库中的数据就是没有问题了。还可以通过select length(name) from test来看,如果一个中文字三个字符长,则表明正确。

以上测试在debian unstable上进行,mysql-server 为 4.1.5-1。

评论(1)

2005 IBM developerWorks Live 笔记六

用ClearQuest管理变更和缺陷

演讲教师:张剑平

议程:1. 为什么需要变更管理;2. 如何用Rational ClearQuest管理变更

变更,在软件开发的过程中会随时发生。

变更请求包括以下几种可能:

  • 系统中必须修复的错误
    • bug
    • 设计缺陷
    • 异常行为(做出来的东西和客户需要的不一致)
  • 改进
    • 实现不完整
    • 未达到预期妖气
    • 功能上的缺陷

变更会导致的常见问题

  • 修改过的问题重现
  • 低质量——不知道在哪个版本中修复了哪些问题
  • 难以量化地评价项目状态:经历不知道员工正在做什么 不能对变更进行量化分析
  • 降低效率和生产率:没有优先级 影响团队士气

如果有了变更管理

  • 知道修复了的问题
  • 快速确定新问题位置
  • 快速重构先前版本
  • 确切地知道要测试什么
  • 在任何时候立即确定项目进度
  • 确切地知道两条基线之间的差别
  • 知道你的产品合适可发布

变更管理系统应具备的功能

  • 利用数据库统一管理所有变更请求(CR)
  • 内置典型的变更管理过程,并可以根据企业自身特点进行定制
  • 提供多种昂文方式
  • 提供丰富地查询
  • E-mail通知3
  • 可适应团队规模不断扩大

为什么需要工具

  • 变更请求越来越频繁——利用传统手段难以应付
  • 专业分工——需求组、开发组、测试组之间需要良好的沟通
  • 人力资源紧张

后面的部分主要是介绍了ClearQuest,关于这个部分,我就没有仔细地记了。Rational的东西,除了太大太慢,什么都好。

留言

2005 IBM developerWorks Live 笔记五

大家来学UML 2.0

演讲老师:刘康平

UML 2.0是在UML 1.x由OMG推出的改进版本,相对于UML 1.x,UML 2.0在很多方面有了很多扩展。演讲的内容包括了一下几个方面:

  • 背景:MDD、MDA、UML
  • 行为建模:活动
  • 行为建模:交互
  • 结构建模
  • UML 2.0小结
  • UML 2.0工具简介

行为建模:活动

在活动方面,UML 2.0有大力那个的扩展,新的活动图拥有更加灵活的语义,更强的建模能力(可以描述Petri网)。

在活动图中,新增加了参数、契约、中断区域等元素,此外,还可以对活动图进行分区,可表达协同、跨地域、非结构化的活动图。

行为建模:交互

交 互关注的是写作势力之间通过消息的通信,同时支持写作模型和异步模型。新的交互图可以嵌套,有lifetime,还有了组合片段。组合片段的类型包括 Alternatives(alt)、Option(opt)、Break(break)、Parallet(Par)、Negative(net)、 Critical Region(region)、Asserstion(assert)、Loop(loop)等等。通过着些组合片段,可以表达完整的逻辑。

在交互方面新增了交互概览图(Interaction Overview Diagram),这实际上是把活动图和序列图结合到一起。

新增了时序图,这种图就类似于电子领域中的时序图。

原先的合作图(Collabration Diagram)改名为通信图(Communication Diagram)。

结构建模

UML 1.x的类图声调了某些特定的细节,不适合进行性能分析。新的2.0可以精确地表达更加复杂的结构。

结构化的类

  • 具备一下特征的类:内部结构(协作)、外部结构(端口)
  • 主要针对架构建模
  • 来源:框架描述语言(DSL)

外部结构:端口。多个交互点,每个专门服务于一个目的。

端口与接口(Interface)

  • 端口提供接口
  • 端口使用接口

协作(Collabration):在UML 2.0中,协作被赋予了新的含义。新的协作是结构建模的概念,可用于表示Pattern等内容。

协议(Protocol),也是UML 2.0中新增的内容。

此外,还可以组合结构华的类,可加入序列图,可对复杂内容进行继承等。

构件和子系统
UML 1.x的Component,通常被看为黑盒,而Subsystem则是白盒。在2.0中,Subsystem成为Component的一种,Component也不再仅仅是黑盒,也可以是白盒。Subsystem的主要特点是规模大、粒度大。

UML 2.0小结,驱动力是模型驱动开发方法,它更加精确、概念更明确,更好地模块化。

UML 2.0工具简介:IBM Rational RSM/RSA,基于Eclipse 3。

以上为介绍UML 2.0的一门课程,由于去的稍微晚了一点,有一部分没听到。同时由于UML主要的是图形,而我也只能把笔记中文字的部分简单地写在这里了。

留言

2005 IBM developerWorks Live 笔记四

软件测试:单元测试、继承测试和系统测试

演讲老师:宁德军

测试生活,测试面临一系列的问题,通常会延迟时间,增加成本。质量、成本、进度等方面的问题往往都会来源于测试。测试人员做得很多,但最后却是软件不成功的牺牲品。

IBM Rational的测试之道:以客户为中心,通过提供最佳的经验、工具和服务来帮助用户解决测试问题。

完整的软件质量保证过程

RUP是一个可以通过Web来使用的软件工程过程。RUP告诉了我们水,在什么时间,作什么事情。它为测试提供了:完整的质量保证过程,完整的测试方法(尽早测试、持续测试),完备的测试技术和支持度。

RUP中提供完整的质量保证过程

  • 每个成员承担的人物
  • 工作符合质量标准
  • 每个工件拥有相关的质量指南
  • 每个攻坚流程设计相应的检查点

RUP中的测试和核心工作流

  • 完整的测试方法集
  • 可定制的、详细的工作流程
  • 体现尽早测试、持续测试的理念

Rational的测试理念:尽早测试、持续测试、迭代式的开发

RUP支持测试流程,RUP是可定制的。

自动化测试:IBM的测试解决方案。

巴别塔故事:只有一种语言时,人们可以很好地很作。上帝让人说不同的语言,于是人们就无法合作了。

如何解决沟通的问题呢?UML就是答案。

单元测试:所谓单元,是一个最小单位,单元测试可以有黑盒测试和白盒测试。在单元测试中很重要的是找到速度和质量的平衡。

集成测试:RUP中集中测试分为开发员级测试。

系统测试和验收测试。

有 很多测试工具可以使用,包括Rational Test Real Time和PurifyPlus等等。PurifyPlus提供的是实时运行分析,包括Purify、Quantify和Coverage等功能。 RTRT除了PurifyPlus的功能之外,它还提供了黑盒测试和白盒测试,可以让开发人员 边开发边测试,边测试边观察。

另外Rational还提供了Rational Robot,可以定义测试用例、录制脚本,然后在迭代测试中回放。

另外还有很多新的工具,这包括Eclipse和Hyades测试框架等等。

以上是关于一场测试的演讲,说的主要都是关于测试的一些简单概念和工具的简单介绍。后面还有一些演讲是专门介绍PurifyPlus和其它测试工具的,我就把其中一些对我个人比较新的东西记下来。

PurifyPlus 和RTRT的测试,基于插针的原理。所谓插针,就是向未编译的代码或者编译好的代码之中插入一些控制代码,通过着些控制代码和测试软 件之间的沟通,来获得被测程序的信息。这种测试方法主要针对的是白盒测试,Purify、Quantify和Coverage等都是用这种方法来做的。 PurifyPlus是向编译好的代码插针,因此其支持的环境受到编译器的限制;而RTRT则是像预处理之后的代码插针,因此更加灵活,不在很大程度上受 编译器的限制。当PurifyPlus测试Java代码时,是在装入阶段向编译好的.class中插针。

留言

2005 IBM developerWorks Live 笔记三

理解需要解决的问题————业务建模技术简介

演讲老师:张纬

信息系统建设的问题:

  • 随意的表达缺乏严密性,不熟悉业务的人可能产生不同的理解;
  • IT人员需要的过于技术化
  • 传统的方法需要业务人员编制需求文档,IT人员根据理解编制需求说明,双方需要不断确认

Rational Unified Process中Business modeling 实际上是第一个工作。

Business Modeling的目标

  • 了解目标组织的结构和机制
  • 了解目标组织当前存在的问题并确定改进的可能性
  • 确保客户和开发人员就目标组织达成共识
  • 到处支持目标组织所需的系统需求

只有模型加上文档,才是完整的。

Business Modeling对其他工作流程的影响

  • 业务模型是一种重要的输入,用来了解对系统的需求
  • 业务实体是分析设计工作流程的输入

Business Modeling的工作流程

  1. 评估现在的业务状态,用IT的方式解决目前的问题是否合适
  2. 确定目前的业务流程
  3. 设计优化的业务流程
  4. 定义角色和相应的指责

Business Modeling中的角色和活动
角色:

  • 业务流程分析人员
  • 业务设计人员
  • 复审员

工件:

  • 业务词汇表、业务规则、业务用力模型、业务对象模型、目标组织详情、业务前景、业务够增加文档、业务规约
  • 业务用力、业务主角、业务用力实现、组织单元、业务实体、业务角色

总结:Business Modeling的优点

  1. 容易学习、使用
  2. 可以作为其它开发工作的必要输入
  3. 计算出业务流程的性能
  4. 确定业务流程的可改进之处

留言

2005 IBM developerWorks Live 笔记二

大会的重头戏之一便是UML之父James Rumbaugh的演讲,他演讲的题目是《提升软件开发层次:模型驱动开发展望》,IBM的一位高级技术人员为演讲做了现场翻译。虽然如此,我还是没能完整地记录他的演讲,只是记下只言片语,现在再通过我自己的理解拼起来。

James Rumbaugh首先跟大家打了招呼,然后说:他五年前曾经到过中国,今天再来,发现中国的变化很大。在从南京到上海的路上,他发现一座座新的建筑拔地而起,他希望同样的变化可以发生在软件领域,他希望中国的软件工程师们可以创造出伟大的软件。

接着,他进入了演讲的正题:从多年的软件开发实践经验来看业务领域和计算机领域有着很大的差别,业务通常用自软语言表述,而计算机领域则使用相对于自然语言低级的多的计算机语言,在构建一个软件的过程中,开发人员要编写很多的代码,很多的逻辑。

那 么如何才能搭建业务和软件之间的桥梁呢?软件需要想业务靠拢,用高级语言描述业务概念,要在中间层次搭建业务和软件之间的桥梁,软件要有很好地架构,要通 过构建部件的方式构造软件。要用自动化工具生成代码而不是直接编写代码,直接编写代码看上去很简单,但会带来更大的麻烦。如果只写代码而没有设计,则不同 的开发小组很可能会重复开发、开发出来的部件也可能是有冲突的;如果不同的开发小组使用不同的交互方式,则会破坏其他人的工作。写代码还会使开发人员的工 作很多,这样的系统也非常脆弱,任何地改变都会使得系统变得无法使用。

MDA————模型驱动的架构:用高级模型描述业务概念,用这种模型构建基于某个业务平台的代码。

MDA 方法由OMG提出,在MDA中的两个重要概念是PIM和PSM。PIM是Platfoorm Independent Model,这是平台无关的起点,在这个模型中关注业务逻辑。通过Implemention Profile来描述实现的细节。PSM似乎Platform Specific Model,是平台特定的模型。通过PIM,可生成多个PSM,给予PSM则可生成具体代码。

在MDA中,需要问题领域模型,可以用 DSL/UML来描述。DSL是领域特定语言,用架构框架描述具体的实现,通过假设,减少细节,通过翻译工具生成模型。通过UML,也可以减少不必要的细 节描述,UML可应用于很多领域,通过新的UML Profile,使其可应用于特定的领域。UML Profile通过对UML的改造,可使其支持业务领域中的概念。但UML还是通用的,包含了很多重复的细节。

用DSL描述特定的概念: DSL是一种特殊的语言,有语言发和语义,针对特定领域设计,用高级概念描述业务,从而减少IT和业务之间的差距。DSL中可包含数据模式、基于DSL的 模型减少了对控制逻辑的描述。现实的开发中,DSL的例子是很多的,譬如yacc、GUI Builder、Desktop Publishing Editor、MIDI、Mathematica等等,都是DSL的体现。

还有一个例子是SDL,它是国际电信联盟的标准,描述了很多的 电信设备如交换机。Motorola、Ericsson等公司都在使用。SDL提供了复杂的手段描述复杂的电信协议。James自己也曾经和使用SDL的 公司有过很作,然而他发现他们在工具时还是有很多的困难,因为它没有包含UML工具的很多特性。并且随着时代的进步,SDL已经逐渐退出。

OMG 升级了UML,现在有了UML 2.0版本,在这个升级的过程中,把SDL的很多概念加入到UML之中,因此,我们可以把SDL做成UML Profile,这样SDL用户也可以使用UML进行软件开发,也可以使用UML工具的特性。通过这种手段,传统语言的生命力得到了延续。

DSL 有集中类型:描述式,着重于做什么,不需要详细的逻辑,就像用复杂的数学等式描述数学问题。这种DSL被很多用户使用,因为他们不需要细节。如果计算机可 以直接使用这种DSL就好了,但实际上是不行的。因此就需要命令式的DSL,把控制逻辑一行一行地详细描述出来,这种方式是非常难于使用的。

于 是人们又想出了上述两种方式的折衷,这种方式的DSL将上述两种方式结合起来,用高级方式描述问题领域,在开发的后期使用命令式的描述控制逻辑。现在非常 流行面向Aspect编程,在这种方法中,把不同的问题划分成不同的Aspect,例如如何控制安全、并发、日志等等。每一种Aspect可解决某个方面 的问题,在这种方式中,需要翻译软件把Aspect翻译成代码,翻译软件知道其中的差异和交互,可以补充需要的代码。Aspect和DSL很象,用高级语 言描述问题,用翻译搞定实现,但现有的AOP还并不好用,譬如AspectJ。在AspectJ中,翻译工具工作地并不好,开发人员依然需要描述细节,因 此James认为AOP的下一个版本需要加入转换工具才能什他的使用更加流畅。而DSL便可用于描述AOP的自动转换。

Architecture Framework

在架构设计时,首先要将大的系统分解成有完整功能、互相交互、且功能不重叠的子系统,需要描述子系统的拓扑逻辑,譬如是流水线的、星型的还是总线型的。架构的另一方面是需要描述子系统交互规则和数据格式,架构设计师还需要描述资源的使用,着些资源包括内存、进程等等。

好 的架构能更好地使用系统变化,因为变化不会自动发生,架构设计师需要为将来的变化在架构方面做好准备。好的架构有很多,譬如hooks机制。在架构设计 时,在架构中设计好测试环节也是非常重要的。举个例子,汽车发动机内部有很多的传感器,使汽车的状态可以被车上的电脑感知。在设计的过程中,先造好发动 机,再把传感器放进去是不行的,必须要在设计的时候就把传感器如何放置设计好。对于测试,也是这个道理。测试应该成为设计的一部分,在早期设计架构的时候 就应当考虑。

架构的搭建是很困难的,人们想法设法让架构更加简单,因此总结好的经验就非常重要。所谓架构框架,就是好的架构设计模式,它们可以被重用。

在执行环境框架中,小元件是相互集成的。小的控制单元对于用户而言是没有特定价值的。关注的只是小控制单元内部,包括预先定义好的接口等,这样就可以慢慢地加入功能。

实际上很难把所有的东西一下子搞定,一种比较简单的方法是从一个小系统开始,并逐渐增加功能。基于这种开发理念,可以使用attache point。用插件构造系统的过程实际上是向attache point加入代码。

框 架应当包括很多好的构件公开发人员使用,不需要开发人员自己从头开发。复杂系统中,开发人员也需要自己的构件。好的框架应有例子可以供开发人员参考,例子 使工作更加简单。目前好的框架有很多,譬如Eclipse、J2EE、.NET等等,他们可以成为实际系统的开发框架。

使用框架有很多好 处,可使我们很容易用DSL描述现有概念,保持系统的一致性。框架可使团队间的工作保持一致,也可以是不同架构的系统保持一致,可以是界面、数据格式体验 等等都保持一直。好的架构还可以减少设计工作量,减少不同设计人员设计时的分歧。有很多中方法可以描述结构框架:UML、结构、接口、模式等等。基于结构 框架,可描述DSL的语法合语义。每一种结构框架都包括具体的代码(C++、Java),包括描述告诉用户如何使用。

这种从专家手中总结 好的经验并共享给所有人的一个类似的例子就是模式(Pattern),尽管它已经是十年前的东西了。模式可以帮助我们解决具体的问题,它是针对常见的问题 的解决方案。参数使Pattern可用于不同的领域,有不同级别的Pattern,譬如Design、Model、Arch等等。跟构架架构一样, Pattern也有架构、结构、规则、使用指南等等。

另一种和Architecture Framework类似的东西是Component,它为另一种特定的Architecture设计,在此Architecture下,Component可以互相协作。

MDA

Model Tools是用来描述Model、Patten等的工具。当只有两三个人时,可能就不需要Model Tools了,但即便是简单的问题,也是需要一个工具的。对于一个大的项目,也需要工具帮助团队协作、记录结果。没有工具会造成重复、冲突、丢失等等。工 具可帮助我们找出错误和问题。好的自动化工具可以为的Architecture和Runtime Platform生成代码,而从模型到代码的关联则可以被记录。

大的项目中,如果使用不同的工具,会使交流变得困难。这就需要一个公共的存储库(repositiory)。开发人员可以自由修改自己的数据而不影响他人。这种公共存储库的基础是MOF、XML等技术。

用 于MDA的翻译工具帮助我们变模型为代码,好的工具可基于特定平台生成代码。另一种是代码优化工具,可以把简单代码映射为复杂代码,还有工具可以重新排版 组合代码。好的变换工具是很难制作的。现在有很多这种变换工具,OMG正在进行的QVT项目就是在位转换工具指定标准,此项目在明年一季度结束。

对于变换工具的要求包括:理解源和目标语法,不要期望最好的代码,它已经减少了工作量。在这方面,值得参考的好的例子就是编译器。

一方面需自动化的变换工具,同时也主义现有项目的现有代码,希望QVT可以以插件的方式接受现有代码。对工具的另一个要求是需要维护关联,希望小的改变不需要重新生成所有的代码。保持模型于代码的关联关系有集中不同方式:

1. 部分地转换:把模型转换为代码,细节被忽略了。比如现在的UML工具,生成数据结构和代码框架,开发人员需要增加细节。在这种变换中是有风险的,修改代码 可能破坏关联,反向变换是可能的。但这种逆向变换是模糊的,主要是因为代码包含的信息实际比模型更少。这种部分地变换是可行的,但从长期角度看可能并不是 很好。

2. 完全生成:另一种方法称为完全生成,即生成100%的代码。开发人员不修改生成的代码,对DSL的要求是描述足够的细节,编译器就是一个很好的例子。但在 编译器刚刚出现的时候,人们并不是非常地信任,开发人员经常检查现在编译器已经足够成熟。另一个例子是格式转换UML->XML,完全生成这种技术 用于我们能掌握所有细节的情况。尽管完全生成这种方法目前还不成熟,但将来会是一种可用的技术。

3. 结合前两种,代码嵌入模型。开发人员把片段加入模型,DSL描述能力不足时,开发人员些代码,生成工具会将插入在模型中的代码加入到生成的代码中。这种么 模式更像地一种方式,但有羽模兴和代码在一起,但没有丢失关联一值得危险。这是一种很灵活的技术,在yacc中就已经开始使用了。这是一种非常灵活的方 式,它需要开发人员同时工作在高层次的模型级别,也在代码级别。这是一种很实际的技术。

4. 更先进,针对变换建立模型,把变换和原有代码联系起来,一旦搭建变换的变换,便可用于很多领域。这是一种强大的技术,但并不适用于每一个开发人员,这需要 特定技能和相关知识。James认为这种技术会带来益处。那么谁会使用这种技术呢,通常是构建架构和模式的人。有部分人可用此技术构造框架,并让更多的人 受益。

很多对缄默的品评在于模型不能运行,这并不是一个好的想法。实际上,可用自动化工具执行模型,早期的模型是不完整的,其中缺少一些 必要的数据和决策,因此不能运行。在某些模型中,这些问题并不受到关注,他们之关心模式而不是数据结构。对架构进行测试的工作目前正在IBM开发。

有人建议把UML变成可运行的,基本的UML是不可能运行的,因其作用领域广泛。UML设计师就是为了跨平台多语言,因此若你希望改变实际上是和UML的设计初衷有很大的差距的。

在UML中有不确定的点,他们是无法运行的,UML本是是缄默语言,没有运行的予以,譬如多线程等等。那么怎么把UML变成可运行的呢?UML Profile是个不错的选择,譬如RealTime Profile是UML在实时系统可运行。

相对于UML,DSL表述能力更强,可把UML作为DSL与实现之间的过渡语言,把DSL模型转换为UML中间产品,用工具把中间模型通过UML Profile转换为可运行的。这样,就构建了DSL到平台的转换。

MDA总结

MDA目前还处于早期的阶段,四到五年之后可能会被广泛地采用。现在MDA用于小项目试点,现在有很多片段,但这些片段还无法写作。James建议大家尽早地尝试一下。

DSL现在很少用到,但将来会有更多的DSL在出现。M$现在也开始支持DSL,这说明个和IBM有同样想法的企业已经越来越多了。

现在也有很多框架存在,夜间的标准组织也在开发特定领域的模型。

OMG正在开发针对意料领域模型,是各种意料设备可以很好地协作。在金融、运输等领域都有类似的情况

要推广MDA,还需要好的变换工具,明年QVT成为现实将是一个很好的开端。在MDA被广泛接受之前,还需要去很多工作,可以从编译器方面西区很多的经验。

现在看起来MDA还很新,但将来会对软件开发产生影响。

留言

2005 IBM developerWorks Live 笔记一

11月11号和11月12号,我有幸参加了2005 IBM developerWorks Live大会,为了能够完成研究生作业,我在大会上做了一些笔记,现将笔记整理一下。

走 入大会的主会场,就发现在过道两侧有一些木制的桶装东西,有点像垃圾筒,没有仔细研究就找了个中间的位置做了下来。坐下后发现有不少人在场地中央排队,似 乎在领取什么东西,仔细一看才知道是很多人在请UML之父James Rumbaugh签名。不知道为什么,对于这种名人签名我实在是没有兴趣,就开始翻看签到时领取的资料,发现全部都是IBM的产品介绍,对我这样的穷人来 说没什么价值。过不多久,到场的人越来越多,在听了周围几个人几句无聊谈话之后,实在无法忍受,便拿出事先准备好的GBA玩儿起来。

大会 是以一支乐队的表演开始的,在短暂的表演之后,乐队的头目开始和大家谈话,不过似乎到会者的兴趣不是很高,可能有不少人像我一样没怎么睡醒吧。对话的内容 是让大家跟他学习敲鼓,此时我才明白一进门看到的原来是鼓。人们被分成五组,先后学习敲鼓,在短暂的分别练习之后,IBM大中华区的总裁走上台,由他来带 领五个组一起敲鼓,这就是大会的主题“整合”了,其实我觉得他大概也不明白应该怎么敲。IBM安排这样的开始其用意不知是要向大家表明自己是业界的领导, 还是要表明服务其整合的能力。

首先上台发言的是IBM全球高级副总裁Steve Mills,在介绍他的宣传片中,我只记住了一句:“是谁让莲花重生,开遍全球”。他的发言全部是用英文将的,开场白的部分我基本上还是可以听懂,但他却提到他喜欢把话说的比较快,看来后面的部分听不太懂咯。

Steve Mills的演讲题目是《整合 势在必行————实现随需应变业务的基石》,其主要内容是IBM的战略性问题。演讲是以计算机发展史开始的,从最早的主机演变到客户/服务器,进而是今天 的Application to Application Integration,不知道这种说法以后会不会被写进教科书。IBM认为在现在的时代,应用与应用之间的整合正是用户的需求造成的,于是,就出现了 On Demand————随需应变。说实话,我很佩服翻译出这个中文词汇的人。

接着他介绍了什么是随需应变的需求:譬如现在人们需要的是访问网络上的资源而不仅仅是连接到互联网,上网是需要的是能够购买产品而不仅仅是简单地浏览、冲浪;对于企业而言,则要为它们提供企业内部、合作伙伴、供应商、客户之间端到端的整合流程。使其能够主动响应客户需求。

然 而目前的现实是,已有的各种信息系统,在异构的基础上搭建,并不能够顺利地进行互相的沟通。业务需要整合,但IT架构之间却有着鸿沟。如何才能逾越这道障 碍,那就需要依靠中间件系统了。对于中间件,不同的厂商是有不同的解释的,IBM的解释也是一种比较流行的说法。通过PowerPoint的图示,我可以 理解的中间件的概念,就是应用与操作系统之间的一层,在中间件产品上搭建的业务系统,可以脱离开操作系统和硬件的束缚,不仅可以做到良好的平台无关,更可 以在异构系统之间进行沟通。相对于直接在操作系统层编写软件,利用中间件则更家容易对应用进行整合,有更好的扩展性和灵活性。

从PowerPoint 上我们也可以看到,目前IBM的五大系列产品,都是为了中间件环境而服务的,这五个系列的产品包括Lotus、WebSphere、DB2、 Rational和Tivilo。其中前三个用于运行、Rational用于软件的设计开发而Tivilo则用于管理。

IBM的产品是基 于开发平台的,其中使用到的主要技术包括Linux、J2EE、Apache、Web Service、Eclipse等等。说道这里,我觉得我还是很佩服IBM的。有些公司,譬如M$,依靠垄断和对操作系统甚至文件格式的保密来赚钱的,连 FAT这样没有太高技术含量的东西都要拿去申请专利,真是没有大家风范。

Steve Mills接着描述了整合之后的全境,自然是非常美好,不过美好的东西总是过去得太快,我还没来得及记,他就讲完翻页了。

下 面的内容是关于面向服务的架构SOA,其含义大概是利用标准接口、结构化交换、整合总线消息传递等技术,来搭建新的系统,并对已有的系统进行循序渐进的整 合。通过这种方式,可以对新旧系统进行快速整合。他提到,Web Service技术对于SOA是非常重要的,但却也不是唯一的实现方式。在这里提到了企业服务总线Enterprice Service Bus。其概念比较像计算机硬件中提到的总线,即将企业的数据库、服务程序等通过此总线和外部的应用以及对外服务连接在一起。我想这大概是利用UDDI之 类的技术的一种比较高深的叫法。由于后面的SOA和ESB专场我没有去,也没法仔细地了解了。

统一的体验,也是整合的一个部分,简单的 说,就是用户界面的统一。这种统一不仅仅包括各种用户应用使用一致的界面,而且是在一个程序之中展现给用户,让用户不必在多个应用程序在之间切换;也包括 在各种不同的硬件设备和使用方式之间保持统一,譬如PDA、Browser、Desktop Application之间。IBM Workplace产品即是面向用户的类似产品。

Steve Mills最后介绍了IBM的中间件行业解决方案已经在汽车、电子、消费零售、电信、能晕等行业获得了应用;他还提到了目前IBM的一个重要产品 Eclipse,IBM的目标是使其成为新的IT基础设施,简单的说就是把和IT开发相关的各种东西都整合到Eclipse中,使其成为开发者的必备工 具。

留言

GBA 的串口

这两天写GBA上的串口程序有一些体会:

缺省的crt0.s并不能直接从中断返回,要从中断返回,必须修改之。

如果不希望中断嵌套,就不要在中断处理程序中打开IME,因为一旦打开,程序将再次被中断。

中断处理程序应当尽量短小,从而保证能够尽快返回。

如果开启了FIFO,则一定要一次把所有的内容都读出来,否则FIFO满的情况下中断是不能再次被正常触发的。

一种比较方便的方式是关闭FIFO而打开中断,但还不能确定CTS/RTS是否能正常工作。但目前中断响应的速度用来处理普通的串口通信是没有问题的。

读写串口都会产生中断,对于写串口,中断是在串口写完毕之后发出的。如果不使用中断,在写串口时必须人为地控制速度,否则发送的内容可能会出错。如果使用中断,则可以创建一个写缓冲区,当写完一个字符后由中断处理程序写入下一个字符。

留言

« Previous entries