所在位置:非程序员

 

在2001-2005年间发布的免费电子杂志《非程序员》,杂志从“软件以用为本”出发,重点关注软件需求和设计技能。 (到51期已停刊)

百度网盘下载>>

360网盘下载>> 提取码 f7fe

1-51期emule下载>>

第1期下载


千年决心
【访谈】
Dassault Aviation为业务的成功实施面向对象技术和UML
【方法】
用Use Cases捕获需求
《分析模式》的前言和介绍
【过程】
参与变革
创建成功的工程
更好地领导一个项目的诀窍
【工具】
选择一种UML建模工具
【服务】
国内出版的软件工程书籍一览

第2期下载


【方法】
用UML设计Java应用程序
......本文的案例学习提供了一个例子,说明如何将UML用在现实中。一个处理图书馆借阅和预定图书和杂志的应用程序,可以大到足够检验UML解决现实问题能力的程度。但是如果太大的话,则不适合在杂志上发表...
《分析模式:可重用对象模型》学习笔记之二:责任模式
......在这一章中,首先我们接触到是是Party模式,在进行系统分析和概念模型设计的时候,经常发现人和各种各样的组织有着同样的行为,例如,固定电话的计费可能是针对个人,也可能是一个单位;需要各种服务的时候,你可能...
《分析模式:可重用对象模型》学习笔记之三:观察与测量
......许多计算机系统记录现实世界中各种对象的信息,这些信息通常表现为计算机系统中的记录、属性、对象等其他各种各样的形式。最典型的方式是把某项信息记录成某个对象的一个属性,例如,一个人体重70公斤记录成“人(Person)”类的体重(Weight)属性,值为70。本章将讲述这种方式的不足,并提出一些更合理的解决方法。...
用户需要什么-软件的工程可用性
......并不是行业中认为可用性不重要。新的用户界面窗口小部件和GUI开发工具的广告充斥了商业杂志。关于用户界面设计的书在书店里的书柜中排列成行。所有的软件公司都详细地描述他们在昂贵的可用性试验支持下的用户界面测试程序。我们过多的关注用户界面设计--对于一些项目而言几乎是预算的三分之二--但仍然与项目的目标谬之千里。肯定在某些地方出了问题。 ...
【过程】
深刻理解CMM-成功的关键
......当看到国内众多软件企业正轰轰烈烈进行CMM二级评估(评估的费用昂贵),我们想,大概美国人在笑。 ...
项目管理规范-RUP管理实施 (1)
成功项目管理的秘密
......在最好的情况下,管理软件项目也是很困难的。不幸的是,许多新项目经理实质上没有受到任何就职培训。这里有20个成功的管理经验供项目经理参考。 ...
【工具】
UML相关产品价格

第3期下载


【方法】
模式的讨论FAQ
Abstract Class模式
Document-View-Presentation模式
Role Object模式
Matcher-Handler模式
Alternator模式
Authenticator模式
用户需要什么-软件的工程可用性(二)
【过程】
项目管理入门
项目管理规范-RUP管理实施(二)

第4期下载


【方法】

用例的使用误区
构造用例过程
创建有用的用例
分析模式学习笔记之四
勇于直面需求变更
掌握可用性规则

【过程】

在小型软件开发组织中使用CMM
项目管理规范-RUP管理实施(三)
威赛儿商务通系统开发员手册

第5期下载


【方法】

面向对象分析和设计技术

...在早期使用一种技术时你倾向于按着书来做。一旦你习惯之后你会发现它并不按你喜欢的方式去做。别犹豫去改变事物。技术是为你服务的,而不是相反。如果你觉得某些构想没帮助,那就别用它们。如果你需要某种有用的构想,那就加上它吧...

数字录音机设计方案

...本文内容是采用统一建模语言(UML)对一个嵌入式系统进行面向对象分析和设计的实例。被分析的系统是一个数字录音机或称口授留声机。设计实现采用一个嵌入式微处理器和C++编码...

怎样避免用例陷阱

...我们应该能够扫视用例模型,并且列举那些在用户使用系统中想要做的事。这些并非是琐碎的用户的交互,而是真正的目标。选择那些反映附带的行为,而不是真正的角色目标,会导致过多的用例,并且导致用户的问题表述同基于用例的需求规格的脱离...

使用UML设计数据库应用

...范式对于基于面向对象(或基于实体)的开发不是很重要。如果你采用OO方法并且你的模型经过很好的构思,那你就正在把数据组织成为有意义的单位,也在本质上满足了范式的规定。如果你愿意,你仍能够检查范式,但这样的检查是不必要的...

【过程】

统一变更管理的威力

...本文针对UCM的诸多能力及优点,权作抛砖引玉。从根本上讲,软件项目变更管理流程--通过Rational ClearCase和Rational ClearQuest来自动化--提升了抽象级别,以及通过将现实世界对象引入到CM系统中的自动化可行性...

项目管理规范-RUP管理实施(四)

...在项目开发过程中,最麻烦的就是个别'高手'的要胁。这种'高手'掌握了系统关键的部份,并且此时无人可替,非他不可,这时'高手'借机要求加薪,升职...

第6期下载


【访谈】

《设计模式》作者John Vlissides

...我认为在分析模式和设计模式之间有非常多的关系。同样的关系也存在于分析和设计之间。你不能将分析从设计中独立出来,如果你打算这么做,那么你一定会失败的。分析模式捕捉反复出现的领域建模问题的通用解决方案;设计模式捕捉反复出现的程序设计问题的通用解决方案。...

【方法】

Temporal(时效) 模式

...在面向对象设计中,我们不断使用"对象"(object)这个词。对象不仅仅用来表现真实世界中存在的物件,它们也被用来表现那些曾经存在但已经消失了的物件,以及那些可能存在于未来的物件。上述的要求给我们的建模工作提出了一个特别的挑战,因为如果建模者必须考虑物件随着时间的变化情况,出现在某一特定时间点的对象的复杂度就会大大增加。...

Java 中的Singleton (上)

...在面向对象的程序中,某些类只需要一个实例。譬如,在一个窗口应用程序中,我们只需要一个主窗口。又如在一个数据库应用程序中,我们往往希望将所有的数据库连接集中于一处,并能为整个程序所使用。...

建模鸡汤

...我们期待自己成为一个优秀的软件模型设计者,但是,要怎样做,又从哪里开始呢?将下列原则应用到你的软件工程中,你会获得立杆见影的成果。...

【过程】

回顾过去,展望未来

...回顾,这种小小的投资,将几乎肯定地获取比它大的收益。在今天速度驱动和有明显交货底线的开发世界里,你无法承受重犯过去的错误和一个项目接一个项目地遇到相同的意外。...

功能点过程

...本规程的目的是基于软件需求产生软件规模的估计。功能点是基于应用软件的外部、内部特性以及软件性能的,一种间接的软件规模的测量。...

【工具】

CASE工具赛马

...正在搜索完美的面向对象建模工具?谁不是呢?那些由开发者创建并且也是为开发者创建的工具,总是承诺即将是成熟的产品,却鲜有实现。随之,我们已经学会了讨厌它们,但又不能离开它们。在过去的五年里,OO世界已经从工具能力令人绝望的缺乏,变成令人困惑的选择过剩...

第7期下载


【访谈】

交互设计之父Alan Cooper

...拯救这个世界 -- “一点一滴地”...“让人做他们胜任的事情,让计算机做他们真正胜任的事情。”...

【方法】

模式与XP

...由于我继续学到更多关于XP的知识,我很快开始考虑这样一个事实:那些清楚介绍"XP是什么"和"XP如何工作"的人毫不提及模式。看起来,焦点已经全部从开发转向了重构。构造一点,测试一点,重构一点,然后再重复。那么,模式怎么了?...

预订和使用可重用实体的分析模式

...一个客户(个人或机构)需要预定一个可重用的实体(如旅馆房间、车辆、演出座位)供他随后使用。...

仓库管理器:一个库存的分析模式

...现代制造系统中,制造过程中所涉及信息的管理已经成为降低产品成本,提高产品质量的一个关键因素。很多公司和机构在这个领域投入了大量的资源,制造资源计划系统(MRP)已经变得重要了[Salv92]。库存是MRP系统中最重要的一部分,用来跟踪目标对象的数量和位置。...
使用模式集成UML视图
...视图集成的主要的障碍是缺乏完好定义的(工程的)模型基础。视图经常使用迥然不同的表示信息方法,而这使得确定它们在哪里和怎样出现重叠非常困难。这样,组合和比较视图的任务经常是手工的而且潜伏着错误的。集成框架的目标是要补偿鉴别和解决体系结构不匹配自动化辅助手段的不足。...

【过程】

项目经理面试指南(上)
...本文的目的是为应聘项目经理提供帮助。项目管理是升迁的途径,需要运用你过去的开发经验,而且薪水通常高于程序员。应聘项目经理的准备工作包括:复习一些常用的概念、术语,问自己一些在面试中经常问到的问题。学会运用一个或多个项目管理计划编制工具。通过以上的准备,将为你应聘这个职位增加信心。...

《人月神话》节选

...Fred Brooks在1956-1965之间领导IBM System/360大型电脑的开发计划,由于复杂的需求,以及当时软件工程水平低下,使得System/360的开发工作陷入了前所未有的、最可怕的"软件开发泥潭",并催生了最著名的失败论著--《人月神话》("The Mythical Man-Month")。 1975年出版的《人月神话》一书,是软件工程经典名著。1995年,为纪念该书发行20周年,第二版上市,第一次发行印数就达250,000册。1986年,Brooks发表了重要文章──"No Silver Bullet",激起众多人士对软件危机与奇迹的好奇与争论,而"No Silver Bullet"也成为烩炙人口的名词,一直持续到今天。《人月神话》的中文译本即将发行,译者为UMLChina的Adams Wang,这是翻译草稿的片段。...

第8期下载


【访谈】

Ivar Jacobson访谈

...我想最接近的东西是通信案例这个想法。但是我必须指出一点:我因为用例而出名,这的确是事实,但是1967年我们有基于组件的开发方式的时候,用例还没有诞生。因此基于组件的开发是我一生一直在努力的东西。另外一个是体系结构,我的意思是指真的先辨别出一个体系结构---在做任何事以前。...

高焕堂:恢复中华民族设计自己产品的信心

...我想更合理的是:一开始,不必使用include或extend, 因为增加了很多初学者的困扰. 初学者常常分不清Use Case与SubSystem两者之间的关系,常把include看成模组之间的呼叫关系。...

【方法】

程序调试的智力游戏

...对于软件开发人员来说,程序调试实际上就是一种生活。而对于职业程序员来说,"捉虫"是专门描述这个智力游戏的名称。以下是关于"捉虫"和修正的10个建议。...

Chain Constructors

...在同一个类的两个或更多的构造子中编写重复代码,这就是在为自己埋下麻烦的种子。别人会在你的类中添加新的变量,然后更新一个构造子来对这个变量进行初始化,但是却忘了更新别的构造子。于是,"砰"的一声,向新的bug问好吧。...

设计模式的理解

...面向对象指使用离散的对象来构建软件系统;设计模式利用了对象的继承、组合和代理(delegation),在较OOP高的层次上考虑问题。尤其是使用代理来对任何不稳定或不确定的方面,如状态、对象的创建、应用平台等等,进行封装,从而保证了源代码的重用和设计的稳定。...
【过程】

项目经理面试指南(下)
...问题10:怎样确定人员需求?
答案10:不考虑资源限制进行计划开发。在任务旁边加上诸如数据模型制作者,业务分析员和用户等角色。再加上能将任务重叠起来的补充性的资源。在计划中要考虑开发团队包括支持团队和用户代表失去一个或多个资源的情况,要在每个任务上增加15%的余量。要使项目小组的组成容易理解,要有角色所必备的技术水平的说明。 ...

为什么还不编码?

...您正从事着一项专业品质的应用开发,正处于其设计阶段--您正在和用户面谈,正在记录对象的定义,正在绘制对象的模型--这时--就在这时!--您的老板走过来问道:"为什么你还不写代码?!"--好吧,也许不尽然都是这样露骨的质问--但老板对你缺乏那些在开发进程中眼见为实的东西而心怀不快,却是显而易见的。...
《面向对象项目成功之道》(草稿)节选
..."Surviving Object-Oriented Projects: A Manager's Guide"是Alistair Cockburn所著的经典著作之一。它的中文译本《面向对象项目成功之道》即将发行,译者为UMLChina翻译组的乐林峰,这是翻译草稿的片段。...

第9期下载


【访谈】

Kent Beck:只是一种正确做事的方法

...XP在长远的未来将变得脆弱及老旧,并且将有某些更好的东西来替换,在50年之内。不管如何,我期望许多XP实践被当做"只是以正确的方式做事情的方法"接受。...

Alan Cooper:垃圾,都是垃圾!

...手机不应该成为一团。为什么我需要将键盘举到我的耳边?为什么作为一个和人交流的工具要有号码?我认为手机应当是隐形的,一个带小型麦克风的听筒放在头部。...

【方法】

极端编程中"坏气味"的发现与响应

...Martin Fowler在他的书"Refactoring"中引用Kent Beck对"坏气味"隐喻,描述如何识别一种早期的警示信号,它们指示程序代码的某一部分必须重写。在本文中,我们希望把这一隐喻扩展到必须重新构造整个软件开发流程的早期征兆。对于大型项目,把重写所包括的所有流程与重构单一的过程相比较,我们觉得错误流程的征兆(坏气味))应该引起更多的关注。...

用创建方法取代多个构造子

...某些语言允许你用自己喜欢的任何方式为自己的构造子命名,而不用管类的名字。另一些语言(例如C++和Java)则不允许这样做:每个构造子都必须按照所属的类的名字来命名。如果只有一个构造子,不成问题;但是如果拥有多个构造子,程序员就必须去了解构造子期望的参数、观察构造子的代码,这样才能正确选择自己要使用的构造子。这有什么毛病?毛病太多了。...
【过程】

通过CMM评估的战略
...我所在的组织进行CBA IPI时,我会经常做噩梦,但我建议你要放松。如果你已经作了评估过程中的所有工作,那么你就没有什么可担心的了。...

软件项目管理小说《最后期限》(草稿)节选

...是的。我们从六个关键性的项目开始,目标是制造出六个精心挑选的软件产品。我们的最高领袖--元首--亲自挑选出这些产品。而你,你的工作就是让这六个项目和整个机构正常运转。...

第10期下载


【访谈】

Martin Fowler访谈

...使用团队自己选择的方法。是团队选择了XP,而不是你强加给他们的。...

【方法】

返璞归真:通过简化用例来简化用户界面

...我们常被问及精简那些最简化、抽象和通用窗体用例的重要性。到底有多重要呢?在以用户为中心的设计中,简化那些重要窗体的用例是获得成功的关键。它能够为开发者设计优秀的用户界面助一臂之力。通过消除不必要的或技术驱动的操作步骤,设计者可以使用户界面上那些最常用或最基本的操作变得简捷。...

对于模式的"十大误解"

...过去,我一直认为第一项是模式最大的好处。现在我认识到,第二条起码也同样重要。请想一想,在一个开发项目的过程中,有多少字节的信息在开发者之间流动(包括口头的和电子的)?我猜就算没有1G也有好几兆。(在推出了《设计模式》之后,我已经收到了好几十兆给GoF的电子邮件。而且我们所描述的还都是小型到中型的软件开发项目。)由于有如此之大的信息交流量,所以效率上任何微小的提升都能大量节约时间。在这个意义上,模式拓宽了人们交流的带宽。我对第三、四条的评价也在逐渐提高,特别是在项目越来越大、软件生存周期越来越长的今天。...

用户界面的交互模式
...由用户界面设计(UID)模式引发的兴趣可追溯至1994年(Rijken 1994,Bayle 1998),但即使存在多种模式集,也未能形成一套被接受的模式集合,即模式语言。似乎缺乏对UID模式的格式及焦点的一致意见。既然UID的模式语言必须在开发足够多的采用同样焦点或"视点"编写的模式后才能出现,它当然没有确立起来。我们认为UID的模式需要一种以可用性为中心的特殊格式。...

糟糕界面集锦-控件篇

...????没反应--我再"剪切"--我又"剪切"--我"剪切"……却不知道其实早就完成了操作。 "雷德蒙(微软总部)里的那些家伙正因为这个被人嘲笑...

用UML描述工作流管理系统规约

...统一建模语言(UML)为描述面向对象系统定义了一系列的标准符号。使用UML增强了领域专家、工作流专家、软件设计者和其他不同背景的专家之间的交流联系。UML可以在普遍的场合使用,对工作流系统的用户而言很直观。 除了这些,UML符号具有准确的语义,也就是说可视化的工作流描述可以作为软件规约。这一章侧重讨论了如何使用UML来描述工作流管理系统,如何跟踪从业务流程到面向对象软件设计的描述信息,如何用UML可交互工件来结构化项目知识库。...

第11期下载

【访谈】
Roger S. Pressman:CMM不是宗教
...任何过程模型和评估成熟度的相关方法都是有意义的。但是必须避免过分强调过程。每个机构必须自己选择...
【方法】
面向对象开发中的本质用例及其职责
...本质用例(Essential Use Cases)是一种轻量级的方法,它简单明了,不受技术约束,用于沟通用户意图和系统职责,能够有效地捕捉用户界面的设计需求。在设计过程中,使用本质用例从系统职责中提取的关键词汇可以直接作为对象来使用,具有显著的优点。本文描述如何使用本质用例直接驱动面向对象开发过程,并实现与用户界面进行并行开发的方法。...
利用角色扮演和用例卡片进行需求复审
...我指定我要哪一个座位。除非我不想这样做……,如果我这样做,但没有座位,我就得不断的选择座位,直到找到。要是系统能告诉我哪些座位可用就好了。停!--在这个例子中,用户已经深入到角色中去了,并且发现了当前版本用例的不足。...
针对用户界面设计的用例结构和式样

...不管增加的定义多么微小,当前的"官方"定义实际上从Jacobson最初重于使用的定义转移到"系统为中心"的观点:重点放在系统如何工作而不是用户完成的或所希望的用途。我们的观点是,这种从内到外的透视方法,虽然精致,但实际上导致在界面设计中使用用例时出现问题。...
网上商店的模式
...网上购物已经变得很普遍,许多网站都为此提供了方便的用户界面。为了支持不同种类的导航视图,网上商店需要良好的基础结构。目录模式和购买流程模式是网上商店基础结构的一部分:目录模式描述了如何组织网上商店的商品信息,购买流程模式描述了在网上购买商品所必需的步骤。我们还将展示在网上商店中如何结合应用这两种模式。...
分析模式学习笔记之四(下)
...最常见的是用Name(名称)来识别对象,但任何有商业意义的属性都不适合作为对象的唯一标识,因为商业规则是不稳定的。关于这点可以参考Scott Ambler的文章"Mapping Objects to Relational Databases"...
【过程】
《人件》节选
...用Billy的话来说,维也纳正在等着你,那是你人生之路的最后一站。当你到达那里时,一切都完了。如果你认为你的项目组成员对如此沉重的话题一点也不担心,请你再想想。你的下属很清楚上帝赐予每个人的生命都是短暂的,他们也非常清楚在他们这种无聊的工作之外还有更重要的事情在等着他们。..

第12期下载


【访谈】
Scott W.Ambler: 空手道和太极拳
...我学习刚柔流空手道和太极拳,也很喜欢风景摄影。我也喜欢旅行,去年我去过南极,希望有一天会去中国。我很想看到长城、沙漠还有很多其它东西。...
【方法】
发明软件
...看其他人的工作的第三个理由是可以帮助打破只有一种方法或只有一种正确方法的思维模式。尤其针对开发经理,需要学习不去接受程序员们的肯定说法。"这可能不灵活(或效率不高,浪费资源,粗糙),但这是采用Java(HTML、C++或API、MFC)仅有的一种方法。",程序员说。"胡说,"精明的经理说,"回去,找到另一种方法。"...
软件设计模式的非软件例子
...代理模式提供一个中介以控制对这个对象的访问。一张支票或银行存单是账户中资金的代理。支票在市场交易中用来代替现金,并提供对签发人账号上资金的控制。...
GOF模式用于GUI设计

...某些对象从来不在用户想要的地方。比如,用户想要存储目录结构下很深的一个文件,想让它很容易存取。或者用户希望下载一个网页,放弃任何包含的图像而保持文档结构不变。一个对象如何才能同时出现在两个地方呢?...
业务资源管理模式语言
...本文的模式语言反映了十年资源管理系统开发的职业经验。它的应用使分析新系统变得容易,因为它为系统分析提供了指南,包括了这一领域需要注意的主要问题。我们计划扩展这种语言,包括仓储管理和更好地处理付款,基于这种语言的框架也会开发出来。...
用户界面设计从抽象到实现
...一个有前途的、同时支持新手和更高级使用模式的联合应该既支持在列表内用上-下按钮移动,又支持用拖放移动。初始设计可能类似于图 7(a),它凸显了几个问题。如果将上-下按钮和滚动条按钮放在他们通常的位置上,很容易造成混淆。如果只是简单地移到左边,则它们可能容易被忽略,并且它们的功能可能不清晰。...
用创建方法封装子类
...如果客户(client)需要知道每个具体类的存在,那么让客户直接控制这些类的实例化也是个不错的选择。但是,如果客户不想知道这些,又该怎么办呢?如果这些具体类都被放在一个包的内部,并且都实现了同一个接口,而这个接口又不太可能发生变化,那么就应该把这些具体类隐藏起来,让包外部的客户去使用超类公开的创建方法(Creation Method),并通过创建方法得到满足需要的实例。..

第13期下载


【访谈】
James J. Odell:UML的将来
...是的--很不幸--UML变得越来越复杂。我们正在努力改善这个问题,我们都需要新特性,所以,这是一个永久的矛盾。从哲学上说,我们已经决定UML的核心不会支持每个人的所有要求,相反,我们提供一个基本的核心,供大家使用"profiles"来扩展。通过这种方法,你可以在UML的基础上添加自己喜爱的方法,并使它成为标准,却没有把每件事都弄得复杂。例如,我们打算产生一种Agent profile,不是每个人都需要agent,但需要的人可以使用基本UML的这个扩展。...
Alan Shalloway:面向对象设计的新视角
...模式会从分析、设计和实现的角度来告诉我们问题。比如说,在分析阶段,我可能会发现我有几种不同的文档,需要支持不同的输出设备。所以,我看到系统中有文本、图片……它们使用激光打印机、绘图仪、点阵等等作为输出设备。这正是Bridge模式的场景。所以,我可以用一个抽象(不同的文档类型)来定义问题领域,然后给它以不同的实现(点阵、绘图仪等等)。现在我不必担心如何实现,因为我对Bridge模式很有把握。要求更快得到反馈则使你不得不对开发过程进行调整,因为你不能再等待完整的需求,也不能再希望做完整的系统设计,也不能先做完所有的编码工作再测试。...
【方法】
为什么用例如此难用?
...IT企业一直在尽力使自己开发的软件符合指定的需求,但是如何才能更有效地发现、捕获与沟通这些需求的确是个难题。用例在6年前的出现似乎提供了一个与该目标接近的解决方案。用例虽然已被权威的统一建模语言(UML)吸收采纳,许多组织却发现其约定令人感到困惑。虽然用例的意图是简洁和直接的,但许多IT组织发现使用用例收集和定义项目需求非常困难,它们往往难于管理和难于理解。...
隐喻的使用及误用
...在现实生活中,你走进一家商店去购物,却被告知你虽然需要购物车,但却不能在购物时携带。相反,你只能把购物车放置在商店对面的屋子里。在你走进那间屋子前,你不能检查购物车内的商品,你甚至无法直接看到车内的东西,而只能看到一张车内物品的清单。在进行这样的购物时,你会有什么样的感想呢?...
停止过分设计!
...习惯所致,我马上就想到了模式。首先浮现在我脑海中的是Decorator模式,于是我就提议用Decorator模式来封装要显示的对象,然后重载封装对象的toString()方法。可惜,我的搭档的回答让我大吃一惊:"杀鸡焉用牛刀?"他创建了一个名叫NodeDisplay的类,它的构造子接收一个待显示类的实例。NodeDisplay类很容易写,因为它的全部代码量还不到10行。而我的Decorator模式起码需要50行代码,要通过很多次委托才能调用到需要显示的对象。...
【过程】
大型项目中的XP-开发者角度
...我们在ThoughtWorks 的开发过程中采用了XP方法,我们根据经验对该方法加以剪裁以适应我们这个超过35名开发人员和15名分析员的大型项目。这个在内部称为ATLAS的项目是一个租用应用,它开始于三年以前,使用传统项目开发过程中标准的分析和front-loading(前载)设计方法。本文基于开发者的视角,讲述他们实践并积累的经验和技术。我们将通过列出与Kent Beck的《Extreme Programming Explained》(《极限编程精解》)中不同的实践方法,并给出我们的体会。之后,作为全文的总结,我们将给出对XP过程的推荐修改,使之可以在应用于大型项目时仍能快速产生高质量的代码。...
通过CMM 4级和5级的组织
...我们根据最新的调查结果编辑了以下高成熟度级别的组织名单,需要说明的是,这个名单不是永久性的,它一直保持更新状态。该网页在不久的将来可能和"公布的成熟度级别"在某些方面结合起来。在http://www.sei.cmu.edu/sema/profile.html上可以看到即时的最新消息。...
【工具】
使用Rational Rose全景追踪
...启动 Rose: 选择菜单File-New,选择File-SaveAs,将文件另存为BusinessModel.然后选择File-New-SaveAs,另存为Requirements-AnalysisModel;注意,当Requirements-Analysis(需求分析)完成后要另存为Design-ImplementationModel(设计-实现模型);选择View(视图)选中Status Bar,Browser, Documentation, As Unified;选择Tools-Options-Diagram 选中Stereotype Display(构造型显示)标签并选中Show/Display 的所有项目(Three-Tier Diagram除外);可以在文档窗口(Documentation Window)为每个浏览器元素(Browser element)键入"文档信息";可以在图上增加文本框(text boxes)"ABC"(译注:ABC 是文本框符号的标志);可以在图上增加注释;也可以通过"File-Delete"(译注:似乎应是Edit-Delete)从模型中删除不正确的元素。Check Model后,选择Window-Log查看日志文件;可以选择Report-Documentation Report;选择Help,查看Rational Rose Help Topics(帮助主题)...
Rational ClearCase LT 使用指南
...b. 选择"高级"页面,点击"环境变量"按钮,进入环境变量设置。在"用户变量"一栏中点击"新建"按钮,输入变量名称:CLEARCASE_PRIMARY_GROUP 变量值设置为将要访问ClearCase的用户组,例如CLEARCASE_USERS,表示CLEARCASE_USERS组可以访问ClearCase。(在安装ClearCase Client的Windows 2000/NT的机器里面也必须设置CLEARCASE_PRIMARY_GROUP,方法参照b;Windows98需要在autoexec.bat文件里面设置该环境变量)...

第14期下载


【访谈】
Alistair Cockburn:选择你所需要的
...最常犯的错误是太细化了。有时,人们书写非常非常细的用例,读起来都很烦。用例是一种叙述,我从未写过一个用例超过九步。如果你超过九步,那么要么是出现了界面设计,要么是步骤太详细了。...
【方法】
界面耻辱纪念堂--隐喻使用不当
...我五岁的侄女爱死了这个回形针,我每次打印,她都会兴奋得尖叫起来,因为回形针会模仿纸张在打印机上的动作,在滚轴上被压扁。五岁的孩子们认为回形针很可爱,Microsoft应该从中意识到一些问题:五岁的孩子是不会购买$500.00的软件包的,这是成年人的事,而大部分成年人会很快对这种"可爱"感到厌烦。...
界面耻辱纪念堂--可视元素
...当我们最后意识到这个导航栏是可以滚动的,我们选这个例子的第二个原因就变得很清晰了:WebZip 为新用户提供了一个"Quick Start"选择,这个选择使用了一个向导风格的界面来清晰地说明如何使用这个程序。不幸的是,这个选择是导航栏的最后一项,直到用户知道如何使用这个定制的滚动控件才为用户所见。...
设计模式之路(一)
...很快在我做的项目里就碰到了我平生的第一个模式, Factory 模式.这个项目是与加拿大一家公司合作的项目,他们的程序是用COBOL在MainFrame的机器上面写的。而我们的程序是C++在Unix机器上运行的。我们小组的项目就是中间的一个转接层程序(现在流行叫Multi-tierJ),通过TCP/IP接受加拿大来的信息,然后根据不同的信息类型,送到不同的处理单元去处理,最后通过TCP/IP返回给加拿大....
提取创建类
...从根上来说,这个重构其实就是Extract Class[Fowler],只不过是对类的创建方法进行的。一个类中存在创建方法,这很正常;但是随着创建方法越来越多,类本身的主要责任--它存在的主要目的--可能就变得越来越模糊,甚至被对象创建的逻辑给遮蔽住了。如果情况真是这样,就应该对这个类做一些调整,将创建方法移动到一个专门的创建类(Creation Class)中去,还这个类以本来面目。...
利用重构改进面向对象设计
...重构是一种保留程序行为的程序转变,能够使得面向对象程序进行设计的自动改进。存在三种设计改进,它们分别是:方案转换、设计模式微结构、特点驱动式趋进。这个研究展示如何利用重构使这三种方式得以自动进行;也给出一个全面的为设计改进的的重构方式的列表,同时分析了所支持的方案转换、设计模式以及特点驱动元模式。...
一个产品的订货和配送(系统)的分析模式
...本文给出的这些分析模式描述了顾客提交产品订单和订货之后的产品的配送过程。我们首先给出了两个基本的模式――订单和配送,然后把基本模式组合成为一个我们称之为语意分析的模式,与实际应用中增加灵活性相反,我们强调应用模型的语意方面。这类模式的目的是作为把需求转化为真正系统设计的起点。这个模式代表一个最基本的应用,可以把它应用在不同的场合,也可以与其它的相关模式组合在一起来描述更复杂的应用。产品的订货和配送是现实生活中一个非常通用的问题,这个模式集中在订单和交货以及它们之间的相关过程的基本特征。...

第15期下载


【访谈】
Bruce Powel Douglass:实时系统和UML
...内存碎片回收是个大问题,因为它给系统增加了非常大的不确定性,很多RT都难以解决。你可以用C, C++, Java, Ada...甚至汇编语言来实现UML模型。我曾经用6502汇编语言为一个心脏起搏器写过一个多任务操作系统,而它来自一个OO模型。...
【方法】
界面耻辱纪念堂--颜色的使用
...尽管Windows95事实上允许用户可以选择多种颜色方案,但是,对于很多开发者,他们还是执着于默认值,那种中度灰色,这是标准的颜色方案。当共享电话联机Dialog程序运行在非默认颜色方案的机器上时,可以从其中的图片明显地看出这种现象。Dialog32的开发者在程序中固定使用一定的颜色来匹配他们自己PC上的颜色方案,却没有意识到运行在不同的颜色方案下的最后效果。最后的结果很不幸…。...
对象-关系数据库之间的映射
...面向对象设计基于如耦合、聚合、封装等理论,而关系模型基于数学原理。不同的理论基础导致了不同的优缺点。对象模型侧重于使用包含数据和行为的对象来构建应用程序;关系模型则主要针对于数据的存储。当为访问数据寻找一种合适的方法时,这种不匹配就成为了主要矛盾:使用对象模型,常常通过对象之间的关系来进行访问;而关系理论则通过表的连接、行列的复制来实施数据的存取。这种基本的不同使两种机制的结合并不理想。换言之,需要一种映射方法来解决这个矛盾,从而获得成功的设计。...
如何用状态图进行设计
...所有软件实质上都可以认为是一种特殊的状态机。状态机是一个公共术语,用来描述一个系统在某种条件下会做什么以及按什么顺序去做。就像一个程序员写的声明,必须按某种顺序执行,每条声明说明计算机状态的改变。...
保险系统的部分模式
...对于许多保险公司来说,要建立一个能够缩短产品周期,柔性灵活的保险系统可谓是一个挑战。虽然这个系统有着巨大的市场,围绕这些相同的问题开展了许多项目,但是这些项目似乎仍然有些扑朔迷离。实际上,这个问题没有答案。这篇文章收集了一些模式,他们解释了那些驱动保险系统运转的各个部分在设计上的基本规律和方案。...
【过程】
XP的价值和局限
...国际著名杂志IEEE《Software》2001年最后一期对极限编程(eXtreme Programming,XP)做了深入报道,一共刊出4篇文章,分别是:《从CMM角度看极限编程》(Mark Paulk,SEI)[PALK01]、《在一家过程密集型的公司中实施极限编程》(James Grenning,Object Mentor)、《恢复、补救与极限编程》(Peter Schuh, ThoughtWorks)以及《在维护环境下运用极限编程》(Charles Poole and Jan Willem Huisman,Iona Technologies)。作为CMM标准制定的核心人物来评价XP,Paulk的文章确实是一份非常难得的权威性报告,而后三篇文章则从应用的角度介绍了在不同环境下实施XP的成功经验。最后,Glass先生在"Loyal Opposition"评论栏目中还对XP发表了一分为二的看法[GLAS01]。...
设计死亡了吗
...对于许多开始粗略接触极限编程(Extreme Programming,XP)的人来说,似乎XP宣告了软件设计的死亡。不但许多设计工作被奚落为"Big Up-Front Design(巨大的前置设计)",而且诸如UML、富有柔性的框架,甚至模式这样的设计技术都不被重视或者近乎于忽略了。实际上,XP包含有许多设计思想,只是采用了一种与既定的软件过程不同的方式来进行设计。XP借助的多种实践让演进成为一种可行的设计策略,以此使演进设计的概念焕发青春。设计者需要学会如何进行简单设计、如何使用重构技术保持设计清晰,以及如何以演进的方式使用模式,因此XP也带来了新的挑战和技巧。...

第16期下载


【访谈】
David Van Camp:模式、构架和XP
...模式不是技术——它们是简单的文档和教学技巧。当你逐渐熟悉模式,你就建立了一个模式“词汇表”。这使你能够更好地寻找模式和应用模式。这是一个学习过程。在美国和欧洲,许多人已经建立“模式讨论组”讨论模式。他们通常提出一个模式,然后大家评阅并相聚讨论。鉴别新的模式是一种艺术,不妨试一试,假以时日,你的能力会得到提高。鉴别一种新的模式,关键是要认识到其他人已经独立地找到了相同的解决方案并且得到确认。适当运用模式能够带来“良好”或改善的结果(不是其它途径能够带来的)。John Vlissides已经写了很多关于寻找和编写模式文档的文章。...
【方法】
使用UML和Rhapsody 开发导航控制系统
...本方案的目的是为了深入了解基于统一建模语言(UML)的开发工具Rhapsody。使用Rhapsody能够设计和构建高水平的嵌入式软件。我们选用Rhapsody为导航控制(CC)建模,目的是从中找到Rhapsody这种开发工具的各种可能性。目前导航控制(CC)在小汽车上的应用已经非常普遍。因而非常适合作为控制系统在日常生活应用的案例。导航控制(CC)包括基本的循环控制和一些用户接口。...
处理对象的特性
...几乎每个创建的对象都需要特性:有关对象的一些声明,例如,人的身高,公司的CEO,航班的航班号。有许多种方法可以模拟特性,在本文中,我将探索其中的一些方法,以及可能在什么时候使用它们。常见到一些模式(pattern)涉及到这个主题,但是它们通常仅覆盖部分图景(picture)。在此,我想广泛地研究这个问题,给出对这些选择的更好讨论。...
根据合同进行分析--录像店案例研究
...本文包括录像店案例研究的一些片段,用来说明根据合同进行分析的原理。本文假定读者已经从其它渠道学习了一些关于根据合同进行分析的方法。...
Reactor模式――同步事件复用和处理调度的对象行为模式
...为图解Reactor模式, 考虑一个如图1所示的提供分布式日志服务的事件驱动式服务器程序。客户程序在分布的环境中使用日志服务记录它们的状态信息。 这些状态信息通常包括错误通知,除错跟踪,还有执行效率报表等。 日志记录被送到中央的日志服务器,并被日志服务器记录到各种输出设备上,例如控制台,打印机,文件,或者是数据库。...
【过程】
《人月神话》20周年纪念版评论集
...Brian Kernighan:我唯一一本读过一遍以上的书,是Fred Brooks的《人月神话》,实际上我每过一两年都重读一遍。部分原因是这本书文笔很好,部分原因是书中的忠告很有价值,即使是25年以后。当然,现在很多细节上的地方,和我们做事情的方法,都有不同。我们的工作更自动化,计算机的“马力”更强劲,但书中依然有许多好的忠告,我非常推崇这本书。这是我唯一能想起来的你能从中体会到乐趣和思想的计算机科学书籍。...
《敏捷软件开发》翻译草稿样章
...通常,极限一小时的主持者会选择一个有趣的任务,如设计一个捕鱼设备,它能够保证鱼在交到厨房的时候还是活的,也能保证啤酒在全天时间里一直是凉的。(当然,在迭代过程中他们不得不缩小范围!)我们使用90分钟的微缩流程来帮助一个有50个人的公司的团队来体验我们建议的新的开发流程(你将注意到这个微缩流程经验与第57页所描述的信息是多么相似)。...

第17期下载


【访谈】
Marko Boger: XP、UML和Poseidon
...ArgoUML是一个开放源代码的项目,这便是它与一般的项目所不同的。这也只是简单的提法。当然,Poseidon还会有很多不同之处。很显然,我们是Rational的竞争对手。如果Rose是更好的工具的话,我想我们就不会开始Argo的开发了。...
Peter Merel:妻子告诉我该睡觉了
...我曾经好几次遇到过这种情况,我并不认为有非常完美的解决方案。最好你的远端客户能指定一个本地的代表,这个人有相关领域业务知识并能定期和客户沟通。在HP工作的时候,曾经有一次有三个小组介入了我负责的一个项目,主要的两个在圣地亚哥。除了相当昂贵的电视会议系统的花费外,我们每个月还必须派人飞来飞去。...
【方法】
用户界面的UML建模
...统一建模语言(UML)是对应用程序进行面向对象建模的标准标记语言(notation),因此我们会很自然地将其作为用户界面(UI)建模的选择。但是,我们并不清楚如何使用UML来进行UI的建模。本文给出了一个使用UML进行用户界面建模的案例。该案例指出了那些无法使用UML标记来进行建模的UI侧重面,以及一组可用于UI建模的UML构建法(constructor)。其中的建模问题说明了使用UML进行UI建模的一些缺陷,而采用的这组构建法也同时表明了一些该方面的能力。这些被证实的能力和缺陷可作为公式来表达成一种对UML进行扩展(extend)的策略,从而对用户界面的设计提供更好的支持。...
界面耻辱纪念堂-术语
...如果程序开发者和用户具有相同的知识背景,那可就太好了。程序就会按用户完成任务的需要来设计,双方都知道对方说的是什么。不幸的是这样的情况太少了。有太多的程序给人的印象是:它们使用不同的语言。下面就是一些非常不清楚的程序元素的例子。...
用户界面软件
...象SmallTalk或Java这些语言,通常需要一行代码来使得某个菜单选择失效,或者弹出一个简单的对话框来提醒用户。所以,当你的域层面的代码(domain code)里发生了一些奇怪的事情时就总想提示用户,问:“要不要继续运行?(是/否/帮助)”然而,这真的是一个好主意吗?或迟或早你就会发现有不同的用户要对系统进行操作。它们必须每天重复上千遍的工作,希望按尽可能少的键来让这个系统帮他完成工作。...
分析模式学习笔记:LOG-日志记录模式
...轻轻地我走了,正如我轻轻地来,我挥一挥衣袖,不带走一片云彩。这样的情况在有了日志记录的系统里是不可能发生的,因为,日志把发生的一切都“记录在案”了,这一节,我们就来看看日志记录建模和实现的各种思路。我们首先来看一张Windows系统日志的图片...
电子商务应用系统的几种模式
...软件开发业见证了从桌面应用系统的开发向高扩展的、分布式的、基于服务器的电子商务应用系统的开发的转移。大多数开发者来自于PC世界,很少知道如何处理分布式应用、服务器、并发性、扩展性、高可用性和容错事宜。电子商务应用开发模式将使开发者意识到他们需要处理的核心问题,并向他们展示解决这些问题的方法。本文的构建电子商务应用系统的模式集迈出了这方面的第一步。...
重构过程中的行为保持
...显然,重构应该保持程序的行为不发生变化。在本章中,我将讨论几个与“行为保持”相关的主题。在第1节中,我首先向读者介绍几个很容易在重构过程中被破坏的程序属性。在第2节中,我对重构的作用范围做了一个定义。在第3节中,我列出了用于描述重构前提条件的函数式,这些前提条件可以保证重构前后程序的行为保持一致。...

第18期下载


【方法】
驳UML三大“硬伤”论
...本文对2002年5月《程序员》杂志刊登的《UML三大“硬伤”》(指UML“上不着天、下不着地、一盘散沙”)一文所存在的18个错误逐一进行了批驳,指出原文在论据、论证、论点和文风上存在的严重问题,并结合RUP(瑞理统一过程)给出UML建模实例,演示了如何对原文所提及的商业公司进销存系统进行正确的业务分析。本文适合的读者包括UML和面向对象技术的爱好者、初学者,软件开发人员、软件企业与行业企业的技术主管等。...
电梯系统的UML文档
...作为我们的教学项目,电梯系统的设计与“真实”的系统相比省去了很多技术上的细节。我们的电梯系统有所有的电梯系统都有的基本功能,如上升和下降、开门和关门当然还有载客。电梯假设被用在一幢大楼的第一层到第MaxFloor层,第一层是大厅。电梯里有每一层对应的呼叫按钮。除了第一层和顶层,每一层都有两个按钮,乘客可以呼叫上楼或下楼。顶楼只有一个下楼按钮,而大厅只有一个上楼按钮。当电梯停在某一层,电梯开门,电梯指示灯亮标明当前运行的方向,这样乘客就知道了当前电梯运行的方向。电梯在两个楼层之间快速移动,但它应该能提前减速停在目的层。为了保证电梯系统的安全,在任何不安全的情况下,紧急制动就会被促发,电梯被强制停止。...
构建EJB应用—模式集合(上)
...虽然EJB为相对复杂的任务提供了简单的API,然而设计和实现一个基于EJB的可扩展的、可维护的和合理的快速应用系统并不容易。随着时间的推移,一套公认的模式已经形成,本文将讨论其中的一些。这些模式将是本文作者写作中的有关EJB体系结构和应用模式一书的部分篇章。我们不准备讨论J2EE的其它部分如Servlets或JMS,只讨论由EJB组成的中间层。...
一种在线拍卖管理的模式语言(上)
...商业资源管理的模式语言主要处理商业资源的交易、位置和维护。在线拍卖管理的模式语言正是在这种环境中开发出来的,用以帮助开发那些通过web方式拍卖来进行交易管理的系统。在线拍卖管理的模式语言的开发是基于三个现有Internet拍卖系统——DBay,iBazar,Arremate.com。由于缺乏对这些系统的文档或源代码的访问权限,我们基于用户界面对这些系统作了逆向工程。然后基于我们自己对拍卖系统的理解,并参考现有的关于拍卖系统的手册,我们开发了一些模型以描述系统的功能。通过发掘三个系统的共有功能,我们从这些模型抽象出这些模式。他们展示了在线拍卖系统中的功能特点,而非设计或实现问题。本文中提供的范例也是从这些模型中抽象出来的。...
CRC建模方法――跨跃开发者与用户之间的交流障碍
...当小球传到某人的手里,他应该将这个职责的业务逻辑一步一步地描述出来。应该看作:BDE正在为职责叙述伪代码(高层程序代码)。这往往是用例场景测试中最难的部分,许多BDE也许不太习惯一步一步地描述业务过程。遇到这种情况时,辅导员应该帮助他们理顺逻辑。你会发现,通过头几个场景的测试,BDE能很快地掌握描述过程逻辑的技巧。BDE描述过程逻辑时,记录员应该将其记录下来(记录员的工作就是为系统记录业务逻辑和规则,这正是BDE所描述的)。...
【过程】
轰然巨响
...我曾经跟客户谈到他们要我完成的一个对象模型复审。“我们能先给你一些文档,有用吗?”他们问。希望我没有说谎,我给了肯定的答复。两天后,随着一声闷响,UPS在我的门外卸下了包裹。那是足有1.5英寸厚的文档。我打开包裹,发现那些由CASE工具产生的印刷品。显示了一些图、给出了每个类的详尽描述、包括类的所有的属性和操作。这些都有定义。Contract类定义成“一个很多团体之间的合同”,其dateSigned属性定义为“签订合同的日期”。我读遍了这1.5英寸厚的文档,最后我却糊涂了。那有很多关于那些对象是什么的描述,但是没有它们真正意味着什么的解释。这种情况已经不是第一次出现了,我想也不会是最后一次。...
烧毁这本书,别让员工看到―《人件》评论集
...这是我一直喜爱的软件工程书籍。《人件》正确指出软件工程是对人,而不是针对技术。它看到在软件开发过程中人的许多方面,并指出人并不是软件开发机器中简单的小齿轮。这本书花费了许多的时间讨论团队,使你认识到团队的价值。但它没有一般的管理书籍列出“好团队”的标准,而是论述如何创造一个好团队,并指出它有多难。对于一个尽力去建造一个团队的管理者,这本书帮助他认识到成功的技术与技巧。它并不教你关于开发过程的知识,而是通过教你认识到在软件开发中人的价值去管理开发过程(但它并不仅仅论述管理者,我强烈推荐这本书给每一个人,从低级工程师到CEO)。这本书也包含涉及办公环境的章节,并提供证据说明为什么通常的观点并不适用于软件开发。我只学了这些章节,就促使我辞掉了原来的工作!...

第19期下载


【新闻】
Borland以1.85亿美元收购UML工具厂商
...Borland这次在设计方面有目的的扩张对UML巨头Rational形成强有力的挑战。TogetherSoft由UML领袖之一Peter Coad创立, 迅速在分析设计领域获得关注,与其他Java IDE一起广泛使用。Coad有望在提升Borland在软件开发中的地位方面扮演重要角色。...
【访谈】
高焕堂:何谓世界软件之神
...iteration 与 prototyping 来不断修正 architecture 的分析与设计。吴清源大师说:「整体、和谐、创新」代表的即是在以架构为主的设计上,要能注重团队的和谐、一致性。在团队的脑力激荡下,是需要发挥 design 的创意的。「兵无常势,水无常形,能因敌之变化而取胜者,谓之神」,希望能藉以孙子兵法的这句话让各位对软件的 design 有更多的深思。因为软件的需求是善变的,所以善于利用需求之变化而取胜者,将能称霸软件世界,谓之:世界软件之神。...
尤克滨:简单正是用例的价值
...用户一般不会说看不懂我们写的需求,而是等我们开发出他们认为不对的结果之后告诉我们,原因是我们没有在早期提供一个用户作出正确判断的机会(组织形式)。各种方式表述的需求在微观层面没有差异,但组织形式完全有可能阻碍用户正确地理解。...
【方法】
致面向对象技术初学者的一封公开信
...过去6年中,我曾经无数次地在饭店、酒吧、旅店大厅等各种地方以同一种方式度过愉快而漫长的夜晚:和同样追求真理、光明和智慧的伙伴一起探讨面向对象的真谛。现在,我已经可以回答很多当年我遇到的问题。这些同样的问题也在困扰着我的一位新同事,在一家饭店里,我花了整整一个晚上和他讨论这些问题。结果第二天,他的同事又来问这些问题,并建议把我们的谈话内容记录下来,这样他可以拿去给他的同事看。考虑到还有很多和他的同事一样询问这些同样问题的人,我决定写下这篇文章。...
高焕堂答疑录(一)
...所谓business process是有很多个views, 有些人重视activity flow, 就会抽象出activities而抽掉data 及worker等, 成为activity diagram. 有些人重视data flow, 就会抽象出data而抽掉activities 及worker等, 成为Data Flow Diagram. 有些人重视workers之间的message passing及互助合作, 就会抽象出objects而把data 及activity纳入objects内, 成为object model. UML是来自OO领域, 比较偏重object model, 需要习惯于object thinking, 一般人会觉得不太直观. 但是要将MIS系统落实到N-tier或component-based环境, 就必须将activity flow & data flow的model转为object model, 因为object model 的内涵(semantics)最丰富, 能提供充足的information给software developers. UML2.0已经吸收IDEF, 强化了business activity flow的表达.因为manager喜欢activity flow diagram, UML2.0 比较能抓到manager’s view 了. 记得, use case不是用来表达business内部的work flow!...
构建EJB应用—模式集合(下)
...通常,不保留旧数据就删除实体组件或改变数据,因此一个改变仅仅是用新数据覆盖旧数据。但是,往往因法律原因这种做法不可接受。法律要求旧数据归档而非删除,以便能重建旧数据。在这种情形下,通常存储旧数据以便能用手工SQL查询语句(历史化)重新产生它就足够了。但存储旧版本以备发生错误时撤销就有意义了。在这种情形下,旧数据必须能被应用和用户(版本)访问。...
一种在线拍卖管理的模式语言(下)
...图8就是在线拍卖网站Arremate.com所采用的拍卖资源模式的范例,它采用多重拍卖Multiple Auction方式拍卖单个或多个资源项。Arremate.com还使用了其他两种拍卖方式:底价拍卖Reserve Price Auction和赢家拍卖Winner Auction(是采购拍卖Purchase Auction的实例)。eBay在多项产品的交易中使用荷式拍卖Dutch Auction,在单项产品的交易中则使用标准拍卖Standard Auction。它还提供底价拍卖Reserve Price Auction和采购拍卖Purchase Auction方式。iBazar只提供标准拍卖Standard Auction和底价拍卖Reserve Price Auction两种方式。...
一种关于物品修理的分析模式
...把一件损坏的东西拿到修理店去修理,在日常生活中是一件很平常的事。顾客将损坏的东西,如电脑或者汽车送到修理店时,一个负责接待的技工会对要做的修理作出大致的估算,他同时会对修理的内容作纪录。所有修理活动都被记录到修理日志中。一次修理可能因为缺少零件或其他原因而被耽搁,也可能被取消。...
【过程】
《人月神话》节选
...第二个经常提及的解释——《人月神话》仅仅是顺便提及了软件,而主要针对团队中的成员如何创建事物。这种说法的确有些道理,1975年版本的前言中提到,软件项目管理并不像大多数程序员起初所认为的那样,而更加类似于其他类型的管理。现在,我依然认为这是正确的。人类历史是一个舞台,总是上演着相同的故事。随着文化的发展,这些故事的剧本变化非常缓慢,而舞台的布局却在随时改变。正是如此,我们发现二十世纪本身会反映在莎士比亚、荷马的作品和圣经中。因此,某种程度上,《人月神话》是关于人与团队的书,所以它的淘汰过程会是缓慢的。...

第20期下载


【新闻】
IBM收购Rational
...Rational为开发企业应用和开发软件产品提供开放的,工业标准的工具、最佳实践和服务。通过收购Rational,IBM将能够提供一个全面的开发环境,从整合业务流程和软件基础架构。这次收购是IBM的“e-business on demand”策略的重要组成部分。...
【方法】
家用报警器的UML设计
...论文描述了如何运用UML(统一建模语言)设计一个简单的家用报警器,并实现到VxWorks操作系统上。本文分两个部分,第一部分描述了如何用UML设计和验证家用报警器的模型,以使其独立于特定的硬件和操作系统。第二部分则细节地描述如何将此模型实现于运行VxWorks操作系统的486硬件平台上。模型的设计、开发和验证使用了I-Logix公司的可视化编程环境“Rhapsody”。...
使用模式和XP构造复杂的面向对象系统
...复杂是很多重要系统的特性。这些系统都具有大量交互的实体,复杂的约束,同时需要满足非功能性需求。在语义分析模式(SAP)中,每个模式都对应一系列用例。我们利用SAP在增量式开发中建立一个整体的概念模型。这个整体模型为XP提供了一个能够考虑分布式、安全以及测试性等因素的结构。SAP也可以应用在XP的每个增量开发阶段,从而保证良好软件开发原则的应用。...
【过程&人月神话专题】
钱五哥答疑录(一)
...软件开发不是一个随便玩玩就可以的事情,一些非专业人员的程序更本无法投入使用。能够发布使用的产品即需要在软件工程的管理下进行,同时也很需要开发人员的编程水平,完成同样的功能,高水平程序员和业余程序员写出来的程序,在性能、可靠性、可维护性等方面都相距很远。最近看有报道说高水平技工在国内看好,我想在软件开发领域也是一样的。国外,很多程序员会一辈子搞程序开发,因为他们把这当作一种事业和一种追求。...
Frederick Brooks传
...20世纪最后一年也就是1999年的图灵奖,授予了年已69岁 的资深计算机科学家布鲁克斯(Frederick Phillips Brooks, Jr.)。布鲁克斯这个名字在中国知之者不多,但在美国却是大名鼎鼎。因为他在60年代初只有29岁时就主持与领导了被称为人类从原子能时代进入信息时代标志的IBM/360系列计算机的开发工作,取得辉煌成功,从而名噪一时。以后他作为硬件和软件的双重专家和
出色的教育家始终活跃在计算机舞台上,在计算机技术的诸多领域中都做出了巨大的贡献。从某种意义上说,对于布鲁克斯而言,图灵奖是一个“迟到的荣誉”。 ...
《人月神话》各章精选
...史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝 见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越 紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。...
《人月神话》软玉生香
...“大”,对于书--尤其是技术书--来说,不见得就“了不起”。以我个人的阅读习惯,多于五百页、开本又超过“大32开”的技术专著,那就只能当字典查,又好比皇宫里的大龄宫女,偶一调情也可,若要三千宠爱集一身,不啻为非分之想。本来一卷在手,有如软玉生香在抱,总以“轻”、“薄”为妙,若是庞然巨物,体态狼伉,未免让人产生心理障碍(借此一角向通读了《C++ Primer》的各位致意:你们都可以去做《大内密探零零发》里艳福齐天的皇上)。眼下说的这本MMM,正是技术书中的赵飞燕,可作字面意义上的掌上舞:大32的开本,算上注释、索引共332页,要紧的是,每章前的大量篇幅留给题图和题记,19章下来,实在要读的内容不到200页。...
《人月神话》与实践
...许多朋友认为现在的软件工程数据比较理论化,可操作性不高,往往只能了解一些理念。在面对具体项目的时候,还是有些迷茫。而在整个翻译的过程中,Brooks的观点以及治学态度经常令人叹为观止。这里,就自己的一些体会和实践同大家探讨。...
《人月神话》20周年纪念版评论集
...嫉妒、羡慕和突然的现实:什么是我们拥有的象年金一样的东西。我高兴地说,自此书出版至今,我已读过1975版至少四遍;在接到Brooks电话后,我再次将它从书架上拿下来,重读了一遍。但这次,是有特殊目的的:实际的原因来自于他的电话,Brooks教授告诉我,目的是发现自这本书1975年出版以来,计算机领域是否有有意义的事件发生。...
《人月神话》争论:软体尚方宝剑何在
...本文以时间的前后﹐依序交叉介绍两位大师的见解﹐期能引起读者对软体未来的些微兴趣。由于笔者的学养和功力远不如两位大师﹐只能介绍他们文章里的精华﹐并未添加笔者的阐释或见解以免您受到笔者有限能力的误导或局限您的思想和视野。希望您有空细读两位大师的原文著作﹐培养您自己的思维和创意。...
《人月神话》出版后的网友评论
...一本多年来看到被无数的工程、实践著作引用的文献,终于乖乖地躺在了我的手心里。 第一件事就是把中国人写的那些页数,统统裁下来扔进垃圾筒,本来中文的表达力已经限制了我们对全书的理解,请不要再让那些什么UMLChina之类的废话把整本书的导向都弄错了吧!在《神秘的人月》诞生的时候,别说UML,连C++都还没有呢。什么印度,呵呵,印度注定要失败的。
不过客观地说,翻译的水平虽然没有我期望的那么高,但居然也不像我想像得那么差。总体而言,还算差强人意。排版不错,我喜欢这种小开本的书,封面也不错。如果是裘宗燕老师来翻译,一定又是一本旷世译作。 ...

第21期下载


【新闻】
年度回顾:开发工具的UML/MDA趋势
Visual Studio .Net 2003--“Whitehorse”蓄势待发
《人月神话》与软件开发基本问题研讨会在京举行
【访谈】
Jutta Eckstein:没有客户就没有项目
...但是如果你希望忽略客户,你为什么去开发一个系统?没有客户,没有项目;或者说,没有客户,就没有成功的项目。请你牢记:客户是每个项目所必须的,而不仅仅只是XP的项目。...
【方法】
傻姑之路:通往职业初段—前言
...此方法基于UML,但只专注三个核心要素:用例、类、交互。通过这三个要素的协作,“自外而内,由粗至精”,就能解决软件开发的基本问题。就如金庸小说中的黄药师,只教给傻姑三招,让她练得精熟。开发人员只关注这三样东西,但对每一个细节中蕴含的道理细细体会。每个细节都要精熟,到位,不浪费一分力气。...
过程敏捷性和软件可用性:以使用为中心的轻量级设计
...现在的软件开发有时像一场奇怪的比赛。场地的一边,站着一帮身着各种颜色的破旧运动衫的没规矩的家伙,他们象征许多公司在程序设计时所呈现出的毫无章法的混乱状态。而在场地的另一边,我们看到了排着整齐方队的重量级选手们,每一个大汉的胸前都镶嵌着一个大大的“U”字。现代软件开发的重量级选手正是统一过程(Unified Process)和它的追随者以及统一建模语言(UML)。...
Web应用模型中的抽象和复用机制
...建设复杂的WEB应用是一项耗时的任务,因为它们必须提供对重要信息资源的导航访问,不仅允许用户全面浏览潜在的信息世界,也允许对信息进行操作。在某些领域如电子商务中,客户的行为触发了那些必须要与核心业务软件集成的复杂工作流。这种集成也必须以另外一种方式进行;例如,电子商店中的营销软件应该监视顾客的行为,以便更有效地为顾客导航。第一个明显结果是,我们不仅必须仔细设计导航体系结构,而且要有效地与业务模型集成。...
GUI设计精:交互
...只对那些频繁或关键的操作设置命令按钮(见图1)。实际上,命令按钮扮演着醒目显示操作内容的角色。在一个窗体上,命令按钮不应当超过六个。同时命令按钮的操作内容也要出现在菜单项中。如果操作既不频繁也不关键,将其放到下拉菜单中即可。...
【最后期限】
总把新桃换旧符——写在《最后期限》出版之前
...如果有可能的话,在一个星期之内读《人月神话》和《最后期限》这两本书,绝对是一个绝妙的阅读体验。你能看到Brooks和DeMarco在几乎相同的知识背景下得到的两种截然不同的态度:“人月是神话、银弹无处求”的悲观,和“逢山开路、遇水架桥”的乐观。如果读者再带着项目的紧迫压力希望在这些武林秘籍中找到一些灵丹妙药,被这一阴一阳的两股内力搅和搅和,怕是脑子会被弄晕掉。...
《最后期限》:一本软件开发小说
...几年以前,我读过Eliahu Golden的目标和思想,“哇,如果有个人能够写一本象工程技术方面的《目标》那样的关于软件项目管理的小说来取代那些软件工程教科书,该有多好!”在《最后期限》中,梦想成真了。DeMarco用一种幽默而有趣的方式为软件工程教学作了一项伟大的工作。实际上,有时我发现自己总是在没有认识到一个项目管理教训的价值之前学习它。 ...
《最后期限》各章精选
...“没问题。唔……”元首似乎有点走神。他懊悔的回头看着屏幕,好象是想找回刚才做的事情。现在汤普金斯可以看到屏幕了,上面似乎是一页程序代码。C++,他想。一个声音从房间的后面传过来,莱恩小姐端来一盘软饮料和点心。元首稍微愉快了些。“噢,好。”他说道,然后拿起一块奶油蛋糕,塞进了嘴里。 ...

第22期


【新闻】
SteelTrace公司集成Catalyze套件与Rational Rose
Chick-fil-A统一使用Together ControlCenter进行Java开发
Sun整合第三方UML建模工具
【方法】
用例:十年风雨
...用例是与外界交互时系统行为的平直叙述。我想你们中的大多数人已经使用或听说过用例。其中一些人可能还听说过关于用例实际上是怎样有用(或怎样无用)的热烈争论。在过去的十年间,我们对用例的理解已经向前迈进了一大步。本文的目标是为了说明:了解这些发展能让你了解现在人们使用、滥用、或者只是误解用例的方法,以及你自己如何更好地使用用例。为了展示发展的阶段,我把文章分成4幕来讨论:史前(比十年前还早),过去十年,现在,未来。...
通往职业初段—使用用例组织需求(上)
...伴随着UML到来的“用例”,为需求技术在国内的普及起到了至关重要的作用。目前,“用例”是UML中讨论得最多的话题之一,从UMLChina讨论组的帖子可以统计出。用例是什么?用例是文档还是图?用例的粒度如何把握….都是经常被讨论的话题。...
UML与XP
...在我们给客户咨询过程中,我们已经取得了一些适应上述需要的经验,同时保留了极限编程(XP)的优势。当然,其结果非常类似如RUP这样的其他的迭代过程。不过,我们注意到了其他方式的许多改进。现在,我们把这种方式叫做XP/RM。...
分析模式应用――帐务模式
...代理是一种销售方式,代理商通过出售源厂商的产品或推广服务商提供的服务获得利润,不管是产品还是服务,代理商和产品/服务商之间的利润计算都是基于更优惠的代理价格(对产品代理而言,代理价格可能跟历史代理销售收入有关,如果上年度或上季度的代理销售收入较高,可能代理价格就更优惠),或者基于代理销售收入本身(对服务代理而言,更有可能是这种形式,代理销售收入越高,代理佣金也就越高),或者可能的其他方式;因为基于代理价格的结算相对而言较为简单,结算通过代理商对购买的产品付费已经完成,所以,我们在这里要应用到帐务模型进行处理的,不是基于代理价格的结算,而是基于代理销售收入的结算。...
【人件】
别把开发人员当成牲口
...幸运的是,在某些公司或者在某些领域,事情还是好转了。Microsoft因为在办公设施方面“浪费钱”而“声名狼藉”:给开发人员配备带有门和窗的办公室,还提供免费饮料,休息区,还有其他很多无聊的东西。结果呢?Microsoft的人们确实喜欢呆在办公室,自由自在地集中精神,写出高质量的代码。事实上,Joel Spolsky曾声称:微软成功的原因之一就是公司里的所有经理都读过《人件》。Joel推荐软件经理每年重读这本书一遍――这主意不坏。...
《人件》各章精选
...几年前,我与南加州一个大项目的项目经理交流各自的艰辛历程。他开始叙述将项目和疯狂的时间表压到他下属的身上产生的影响。一是发生的两宗离婚案,其中原因可以直接追溯到与他的人经常加班有关;再者就是一个员工的孩子吸毒,其中原因可能是由于在过去的一年里,孩子的父亲太忙,未能尽到做父亲的责任,最后,测试团队的负责人又神经崩溃。 ...

第23期


【新闻】
业务流程领域的Popkin-Intalio联队
JBuilder套件用Together Modeler取代Rose/RUP
【方法】
UML序列图开发
...然而从表面上看来,构建一个OID的方法没有在文献中更多地加以描述。我们的经验表明,初学者在理解和开发OIDs上会有很大的困难。大多数UML书只是简单地阐述了OIDs的标记和语义,以及介绍事先已构建好的序列图。有些作者提供了序列图开发的简单指导原则。我们发现这些简单指导原则对于许多初学者而言是不够的。基于作者多年从事面向对象分析和设计的教学经验,我们提出了一个有效的开发序列图的十步启发法,并结合一个案例学习来演示本方法。...
过程模式的UML描述
...现在UML正迅速发展成一种数学上精确形式化的主体,逐步趋向于自动化和形式化,不仅对于过程模型,对产品模型也是如此。现在来看看过程模式的影响,设计模式(Design Pattern)的概念在使用者中被广泛接受,并成功地证明了它的实际适用性。模式捕捉细小的、连贯的和自充分的知识片断,允许在不同的环境中使用,特别是应用于不同的规模。使用设计模式是一种重用设计知识的形式。过程模式非常像设计模式,只是应用于过程领域。确切地说,术语“设计模式”有点误导:典型的设计模式如(MVC)模型-视图-控制器等,真正说的只是产品,那是设计的结果,而非设计的过程。所以,为了区别它们,我把它们叫作结果模式和过程模式。...
小项目的RUP应用
...通常人们都认为小项目只需要小团队。很大程度上这种想法是对的,但是特定的任务仍然需要特定的技能。这意味着开发团队要么必须能拥有多项技能,要么与特定技能相关的活动不得不被取消,而后一种情况更加常见。举例来说,对项目X,开发团队决定用用例来捕获需求,并使用UML对用例进行分析,以此将设计工作推进到分析模型。然而,由于缺少必要的UML建模技能,用例开发出来,流程定义好之后,代码就直接从用例描述中产生出来。代码直接来自用例,与过去很多项目的直接从需求进行开发并无不同。造成这种状况的原因是前述的时间约束,加上缺少合适的技能。...
把业务对象连接到关系数据库(上)
...这些模式描述如何把业务对象映射到非面向对象的数据库中。面向对象和非面向对象这两种技术存在着阻抗不匹配,因为对象由数据和行为组成,而一个关系型数据库则是由表和它们之间的关系组成的。虽然不可能完全消除这个阻抗不匹配,你可以遵循适当的模式使之最小化。适当的模式可以向开发人员隐藏持久化细节,而让他们专注于理解域问题而不是如何将对象持久化。...
现实世界电子商务系统的数据库设计
...电子商务价值链是表现在线购物者与电子商务系统交互性的一系列业务过程。价值链帮助我们理解电子商务系统的业务过程,确定建立可操作数据库系统的数据要求。 Treese和Stewart展示了一个四步价值链,由“ 吸引”、“交互”、“操作”和“反应”组成。“吸引”指获取并保持顾客的兴趣。“交互”把兴趣变为定单。“操作”管理定单;作出“反应”服务顾客。四环价值链可以被视为最小的电子商务系统模型。...
【人件】
人的问题:关于《人件》
...在我书房的一角,《Peopleware》尴尬地和其他原版“技术书籍”分享着位置。尴尬,首先就从书名中显露出来,这个自造的表达方式置身众多的“Patterns”“Models”和“Components”之间显得可疑、孤单、缺乏一目了然的“技术特征”。People和software之间这个狡诈而轻快的拼搭,带有明显的“头脑风暴(brainstorm)”的痕迹(你还能在书中找到其他的例子,比如“teamcide(队杀?)”)。...
开发人员是人吗?
...由于正在为一个开发人员站点写这篇文章,我想我将挑战这个古老的问题:开发人员是不是人?我确实希望能从广大读者的血样中来个DNA测试,证明他们属于人类这个物种,但那并不是我关心的,相反,这里的问题是开发人员和其他人类是不是一样,或者,到底差了多少。 ...
办公室空间,下一场革命
...一个仔细考虑了办公室空间设计的真实例子是Interface Technologies, Inc. (ITI),一个定制软件开发公司,去年十二月刚刚搬到罗利(Raleigh)Six Forks大道Forum I大厦一个大概11000平方英尺的单位。他们的总裁Kelly Campbell说他搬迁的目标是要建立一个能象加满了润滑油的机器一样运转的地方,一个因为尊重开发人员的日常工作模式,因为认识到客户们对效率的期望,从而不断增加能量的地方。 ...

第24期


【新闻】
数据建模工具与BPM日趋融合
业内第一个全面的用例开发平台
面向服务架构(SOA)的原则
Ivar Jacobson即将离开Rational
【方法】
让历史告诉未来
...2003年3月,著名的电子杂志《The Rational Edge》在IBM出巨资收购Rational之后的第一期发表了UML之父Ivar Jacobson博士撰写的《Use Cases——Yesterday, Today and Tomorrow》。这篇文章依次介绍了用例技术的起源、发展和演进过程,并且对大家在实践中困惑较多的用例关系、用例数量、用例与UML等问题作了深刻的阐释,同时提出了对扩展/包含用例的改进意见,最后还对用例未来的发展趋势作出了有趣的预测。这次由用例的发明人亲自撰文、现身说法讲述用例的历史,实在难得。我怀着如获至宝的心情反复研读了原文。现在把我整理、学习这篇文章的体会记录下来,在介绍Jacobson博士观点的同时加入我个人的分析和评述,以飨广大读者。 ...
从组织建模出发开发用例
...面向对象的开发规范吸引了许多软件工程领域的支持者参加。目前其主要的成果之一是统一建模语言(UML),一种实现可视化建模的标准。用例图用于获取系统的功能需求。然而,系统开发往往基于一个重要的前提,组织过程已经建立完好。因此,对系统如何完成组织目标需要获取组织需求,以及为什么需要它,有哪些可能的选择,在包含的各个部分中存在何种联系等等。遗憾的是,UML及其它基于场景的技术难以胜任对组织需求进行建模的任务。需要其它的技术来完成该任务,I*技术恰好可以应用于对组织需求建模的工作。当然,组织需求必然与由用例表达的功能需求有关。本文提出了一些辅助从I*技术表达的组织模型出发,进行用例开发的需求工程方法原则。...
复杂软件驱动系统的UCM与UML
...UML包含了两类图之间的几种隐含的连接(例如,顺序图和协作图可以使用类图中定义的实体)。但UML并没有强调许多系统构件协同工作时(例如,跨越网络的事务处理)出现的大规模行为单元的首要的和紧密的描述方式。本文描述了一种被称为“用例映射图”(Use Case Map,UCM)的制图技术,作为一种以外在的、可视的方式联接行为与结构的手段。UCM是第一流的架构实体,它描述了捆绑到底层的、组织化的抽象构件结构的各种职能(responsibility)之间的因果关系。本文试图图解UCM怎样帮助在用例模型中的用例和分析设计模型中的其它行为图(顺序图、状态图、活动图)之间的概念缺口上搭建桥梁。UCM还提供了从行为图中的各种活动到结构图中的各种构件(以及对象)组织之间的鸟瞰图,这将使贯穿系统设计发展全过程的架构推导成为可能。...
把业务对象连接到关系数据库(下)
...数据库值类型并不总是和对象类型直接对应,例如,一个布尔值也许在数据库存成T或者F,在Patient例子中,性别可以是一个属性,以一个名为Sex的类存储,男性实例有某些行为,而女性实例有另外不同的行为,在数据库中也许他们的值是M和F,当从数据库读取这个值,M需要转换成一个Sex类的男性实例,F需要转换成Sex类的女性实例。类型转换允许对象值和数据库值之间的转换。...
案例研究:设计一个基于Web的服务配送系统
...在这篇论文中,我们介绍了一个使用IBM的Net.Commerce设计一个基于Web的服务配送系统的案例研究,以及我们通过这个项目学习到的经验。 采用UML符号来介绍设计规约,采用IDEFIX符号来介绍数据库方案。我们的设计规约包括架构,使用包图(package diagrams)描述系统构件,使用用例图描述系统功能,处理逻辑采用活动图(activity diagrams),数据库设计方面,我们介绍了详细的数据库设计,对设计和专门针对电子商务系统的用户个性化考虑进行了评论。...
业务规则说明
...结构规则关注业务中的概念和概念之间的关系,是业务的静态部分,经常表现在实体关系图中。具体而言就是,通过事实(Fact)将术语(Terms)关联起来,形成对业务组成的结构描述。所以,一个事实(Fact)包括两个或两个以上的对象角色(Object Role),并表达了它们之间的关系,在这个fact中,每个语义上的对象角色(Object Role)都由术语来担任,例如事实“每个客户拥有一个或多个活期帐户”,在这里,客户和活期帐户是业务术语,客户担任拥有者(Owner)的角色,活期帐户担任被拥有者的角色。...
在大型过程公司中应用XP
...本文描述了在一家使用传统正规过程的公司中应用了很多XP实践开发的一个项目。其中介绍了如何将XP建议给管理层、如何开始项目、怎样进展。并列举了实际执行过程中小组在最初6个月遇到的一些问题。 ...
【人件】
《人件》在计算机行业的实践
...谁在度假时还想到老板?Alan Hampton可能如此,因为雇主 Intuit公司会为他的休假付费。雇员们在回报社会方面作出了重要的贡献:雇员们每年有32个小时的带薪志愿服务时间,去年社区服务的时间达到7,600小时。 ...

第25期


【新闻】
Rational能保持中立吗?
用Select Scope Manager进行自动极限编程(XP)开发
Embarcadero宣布支持Microsoft Visual Studio .NET 2003 和.NET Framework
【方法】
使用用例组织需求―识别用例
...作者给用例起名叫Add,Browse,Delete,Modify等。然后在繁衍(扩展)出AddPerm….这也是正确的,不是吗?因为任何业务落实到数据这一层,都是增加、修改、删除、读取(CRUD)。但我们是不是应该从这个角度去识别用例呢?如果带着这副有色眼镜去看,世界上的一切都是CRUD。 ...
基于角色访问控制的UML表示
...RBAC的概念静态模型如图2所示,包括类、类之间的关系和关系的势。基本的实体是用户、角色、权限、约束和会话类。角色和权限类分别特化出两种类别:使用者和管理者。这个特化依赖于用户的资历。RBAC模型的约束可以有很多种形式,依赖于应用系统。为了简化分析模型,我们静态模型中的约束只有三个:用户约束、权限约束、会话约束。另外,静态模型还有一个特殊的类session hour,当用户建立一个会话来激活他/她的角色时,该类被使用。这对表达基于会话的约束很有用。例如,一个组织可以要求用户只能在某些时间建立会话。为了强化这类约束,我们需要跟踪每个会话的会话时间。实体类的属性在图3中定义。...
关系数据库访问层 一种模式语言(关键模式)
...这个框架为那些将数据库以关系型方式使用的应用程序提供了一个数据库视图接口,其它的持久化框架和模式语言都是关于对象的持久化,例如对象-关系的访问层[Bro+96, Col+96, Kel+96a],它使用一个关系型数据库;还有对象访问层,它使用一个面向对象数据库[Col97]。图3显示了这些不同访问层的区别。...
以用途为中心的Web应用工程
...然而,Web开发在许多方面有其特殊性。尽管在本质上,任何可通过软件实现的功能都可以通过Web发布而在浏览器使用,但实际上几乎所有方面都与以往有所不同。由于缺乏标准和惯例,Web的开发和使用显得更加混乱而复杂。不同的浏览器、平台和连接的不一致性这几种因素加在一起,降低了我们对用户的实际所见和使用感受的控制能力。在一个工程里,多达70%的工作是为了让理应是标准的特性能够在某种浏览器(如NetScape)和某个平台上(如Apple Macintosh)正常工作,而以客户需求为本的工作加起来不到10%。Web程序设计风格的多样性使得局面更加混乱,一些被广泛接受的使用习惯也常常会被省略掉,比如将主页连接放在最左边的列,链接以蓝底文本的风格显示等。...
Rational统一过程对用户界面设计的支持
...Rational统一过程(RUP)是用例驱动的迭代软件工程过程。RUP中的用户界面设计包括用户界面建模与用户界面原型。本文涉及两种支持映象——可延展的用例表格和UI(用户界面)部件串——它们是连接用户界面建模与用户界面原型的桥梁。它们支持“事件流”故事板,用户界面元素群组和UML(统一建模语言)边界类定义,以及用户界面原型草图。...
【人件】
中国“人件”非正式调查
...你们的软件公司发生过这种事吗?--几年前,我与南加州一个大项目的项目经理交流各自的艰辛历程。他开始叙述将项目和疯狂的时间表压到他下属的身上产生的影响。一是发生的两宗离婚案,其中原因可以直接追溯到与他的人经常加班有关;再者就是一个员工的孩子吸毒,其中原因可能是由于在过去的一年里,孩子的父亲太忙,未能尽到做父亲的责任,最后,测试团队的负责人又神经崩溃。 ...

第26期


【新闻】
Microsoft希望与OMG重修旧好
Rational, WebSphere和你
【方法】
UML相关工具一览(2003年6月版):A-H
...两年以前,《非程序员》第2期曾经刊登了“UML相关产品价格”一文。两年过去了,UML相关工具的发展又如何呢?以下总结了全世界的各种UML相关工具,都放上来供大家选择。工具的品种相对于两年前多了许多,总共有一百多种,所以我们以连载的方式刊登。按工具名称字母排序,本期刊登A-H。 ...
现代需求规约
...当然,前述的需求规约任务的实现方法存在一些众所周知的问题。需求规约文档作为手工处理的结果,需要耗费大量的时间,完成该任务代价很高,并且在放入配置管理控制后很少对其进行维护和修改。这样产生的需求规约非常容易出错。一般来说,也难以保证其完整性和一致性,许多问题不清楚,阅读也非常困难,鲜有修改。采用此方法,想为不同的用户建立多个版本的需求规约太过昂贵,因此只能使用一个版本,即使是面对不同的使用者。这样的后果是:对某些使用者(如管理人员),该文档太细。而对另外的使用者(如独立测试人员),该文档又太粗。需求规约文档一般也没有包含关于需求的元数据(如调度信息、对开发者的任务分派、状态等等)。凡此种种,使得需求管理非常困难。...
安全模型的一种模式语言
...用类和类的关联来表示授权规则的元素。类Subject描述一个主动实体,类ProtectionObject描述一个被请求的资源,一个授权规则由这两个类的关联来定义。一个关联类Right,包含访问许可的类型(读,写等),包含一个谓词,对授权持有者来说必须为true,还包含一个复制标志可以为true或false,表明这个权限是否可以转让。另外还有一个操作check_rights用来让主体或对象检查请求的合法性。图2展示了涉及到的元素。...
减少耦合
...我们需要对耦合进行控制,但如何进行呢?我们在任何地方都需要担心耦合吗,或者是否耦合在一些地方会比其它地方更为重要呢?哪些因素会使耦合变糟,而哪些则能够被容许呢?...
规则对象
...业务规则的变动往往比它们关联业务对象的其他部分要频繁,这些规则通常在一个业务对象的规则方法中实现,并且它们也引用该业务对象周围相关的其他业务对象,这就建立了一个隐含的网络,它们的依赖关系日益增加并难以维护。这种情况下,改变一条业务规则会影响一系列依赖该规则的对象,特别是当实现一条规则的代码在分散类的若干方法中,甚至是若干协作类的方法中,平均信息量就将大大增加。缺少集中控制导致了波纹效应,并且改变一条规则的if-else语句元素还会产生副作用。...
基于设计模式的网站设计
...本文继续收集网站设计方面的模式。传统意义上,网站主要是作为信息交换的媒介,因此绝大多数网站被设计得像书一样,允许人们从一个页面跳到另一个页面。在开发网站时,应该考虑可用性准则[Nie00]。本文中这组模式就是基于可用性准则的。...
《有效用例模式》中译本样章(草稿)
...在探讨重构面向对象软件的书籍《重构》中,Martin Fowler(1999)把软件可能要求重构的标记叫做“坏气味(bad smell,一种不好的代码形式)”。在用例中应该一直注意的一个“坏气味”是用例过长。一个好用例的主成功场景通常为3~9步。包含9个以上步骤的主成功场景可能说明用例或者有多个目标,或者包含较低级的细节。在任何一种情况下,您都应该RedistributeTheWealth(8.1节),合理地将较大的用例划分为较小的、内聚的用例。...
【人件】
《人件》文章汇总
...汇总了以前发表过的《人件》 文章...

第27期


【新闻】
UML2.0正式通过
QuickUML 1.1 for Windows、Linux上市
OMG推荐模型驱动架构FastStart计划
Borland向Eclipse组织推荐敏捷设计解决方案
Flywheel:前进的马达在轰鸣
【方法】
UML相关工具一览(续):I-O
...关注“用手建模”的UML建模工具,强调创造性和弹性。支持电子白板,支持在桌面、可移动物体上建模。...顺序图双向工程 ...针对Delphi的工具,支持构件和模式,支持某些“自适应”的方法学。和Delphi IDE自然结合。
UML状态图指南
...尽管上述描述状态图的方法使用良好,但是所产生的状态图会变得非常复杂。想象一下在图2中,“教授中”(Being Taught)这个状态同样有子状态的话,状态图会变成怎样的情况。一种可选的方法是对非常复杂实体的状态图分级。例如,图3是顶级视图,而图1是种更细节化的视图。...
误用例:带敌对意图的用例
...人类甚至在冰河时代的篝火旁,争论捕获一头毛犀牛的危险性时,就已经开始分析不利的情况:如果在它中矛前转身向我们冲过来怎么办?最近更多的情况是:如果黑客们发动了拒绝服务攻击(DoS)怎么办?现代系统工程师能够通过使用误用例(misuse case)——用例的负面形式——来证明和分析这些情况。一个误用例是一个简单的用例,从一个带有敌视意图的角色的视角来看系统的设计。对于用例来说,误用例有许多非常有意思和有帮助的应用和影响。...
RUP的反模式
...“我们目前的迭代是需求,下一次迭代才是设计”--对那些一直遵循严格的瀑布开发过程的人们而言,瀑布RUP是最容易犯的错误之一。瀑布RUP是反模式的原因很简单:它不能帮助降低风险程度,而降低风险是基本的RUP原则之一。RUP迭代式开发要求每次迭代应该是一个应用程序的“小型发布版”。每次迭代有小型的需求,设计,开发和测试环节,并且交出应用程序的一个可运行部分。使用这种方式,需求、设计、实施和测试的问题在每一次迭代中都得到“冲刷”,要求问题越早解决越好(问题越早解决其消耗的代价就越小)。...
领域建模
...OO系统保持灵活性的能力在于以不同的方式使用已有对象,因此如果你想以不同的方式使用系统,你所要做的就是让系统以不同的方式使用系统中的对象,然而,这依赖于一个假定,对象可以以不同的方式使用,如果责任分配合理,对象表达了正确的概念,它就可以以不同的方式使用,如果责任分配不合理,那么改变系统对象的使用方式往往需要改变系统内核。...
角色建模——实用的系列分析模式
...在进行面向对象分析时,我们经常遇到与角色有关的问题。角色是与某些概念(或类)所在的上下文有关的一个概念(或类)。举例来说,“公司”可能是某些特殊“产品”的“供应者”。“供应者”是一个角色。通过选择以下介绍的五个角色模式,所有的角色问题都能很容易地被解决。这五个模式是:继承角色、关联角色、角色类、泛化关系角色类、关联类角色。每个角色模式都综合了它对能力、灵活性和复杂性方面的考虑。这些模式一起,提供了对所有角色问题的完整解决办法。...
建立稳定分析模式的模式语言
...对每个BO都将其对应的IO表示出来。例如,HotMail是HOST的可能的物理表示,但是,从一般性考虑,该IO在任何时候都可以发生变化以表示任何可能出现的HOSTS,而且不会影响模型的核心。在该示例中,两个模式中所有的连接都仅建立在IO层。...
【人件】
亮出怀疑的尖刀
...一个普普通通的开发人员能做什么?首先能做的只有怀疑,用怀疑的尖刀一次又一次轻轻地刺激梦魇中的Neo(就象《人件》26章中的“唤醒霍尔加”)。怀疑加班,怀疑进度表,怀疑口号,怀疑开会,怀疑老板的说话,怀疑家具警察,怀疑工作环境...仅仅是怀疑而已,但,仅这一点就已经是致命的。...
信息时代的技术阅读
...技术行业里,大师巨匠大多自信、安恬,温和有趣,水平低得多的技术人员反而常常自矜于一得之见,对旁人摆起面孔。相应地,很多教材名作也都面目有趣,语言温醇,甚至不少段落漂亮得都可以拿去做英语范文。而你很难从大多数教程作者那里指望考究的文风,他们的典型句式是:“读完下面的10页,你将学会a…b…”——要是再加上一个电话号码,这就能构成不错的电视购物广告。...

第28期


【新闻】
SteelTrace架起需求和UML之间的桥梁
Gentleware双喜临门
JRules4.5增加图形表示规则新功能
【方法】
UML相关工具一览(2003年8月版):O-R
...UML/SDL实时开发,产生的代码可以在CHORUS, Nucleus, OSE, OSEK, pSOS+, VRTXsa?, VxWorks, WIN32等实时操作系统平台运行。...
点评独孤木专栏《漫谈UML OOAD and RUP》
...有些人很奇怪,大概自我感觉很好,总是恐惧、厌恶陌生的东西吧,所以总喜欢树立一些假靶子,企图用一打假命题来证明OO是如何的失败,从而为内心排斥OO、拒绝学习OO寻找暂时的安全感。...
用例/OOAD随笔之一
...好像还不错是不是?要是我们问一问客户,为什么要做一个系统?听一听客户――一家××代理商怎么说,“××的运费在顾客购买总费用中占相当比例,如果能想办法降低运费,顾客肯定非常乐意找我们买××...
集成Rational工具套件编写需求文档—Step by Step
...本白皮书说明了这些缺点可以通过集成使用Rational工具套件的不同组件来克服。它还说明了通过提供图形化的能力和对需求工件的适当管理,这些工具可以进一步增强需求工程。最后,这一白皮书也对RUP中提供的用来改进和扩张需求工程的工作流和最后交付提出了建议性的修改。...
用户界面设计背后的理论
...设计专业的用户界面不仅仅是有好的图形艺术家和好点子的问题。不幸的是,人们只是为了产品而创建用户界面,完全没有意识到背后的基本原理和理论。紧迫的计划、错误的观念(像“可用性是现在我们不能提供的额外的东西”)和缺乏专业性造成我们周围充满了低劣产品。本文开始可能会有一点抽象,但它的主要意图是让大家了解一些仅限于学术界和专业领域的主题。我们不去探讨诸多UI设计方法的细节,因为从我个人的经验,我发现为建立有效的用户界面“所做的事情”往往更吸引人们,而不是掌握一些简单的概念,在UI设计的过程中受到启发。...
一种请求及分配有限资源的分析模式
...在许多情况中,可用资源的数量远远小于请求的数量。例如,流行体育竞赛的门票在比赛开始前就已经全部告罄;公司中重要的职务往往有多个角逐者。在中国,原始股票由于其价格低廉往往首次提供就全部卖出。从系统的观点来看,这些资源都是不可重用资源。不存在资源的返回和重新分配的问题。与之相对应的是可重用资源,如交通工具、宾馆房间、飞机座位,这些可重用资源在使用后返回并可在未来重新分配使用。...
【人件】
中国“人件”的声音
...原先我总是在身边放一把空椅子,谁到我这里都可以坐下来聊聊天,很多工作的问题就在交谈中解决了,还可以随时了解别人的工作情况。结果某一天,一个家具警察(我们的研发秘书)过来把空椅子拖走了——她并不是要用这把椅子,只是不喜欢看我“乱放”。结果那两天,没人陪我聊天了,我解决问题的速度明显下降,而且团队的笑声也减少了。...
建立完美公司的模式
...Enron和WorldCom公司丑闻的曝光,让我们有机会看到一种困扰人的领导模式和它所导致的后果,在这样的模式下,以希望、诚信和完美为基础的完整意义的一个公司是见不到的,而惟利是图的公司却处处可见。我们深信,要想赢利, 你必须绝对信得过自己的产品或服务,并且关爱你的顾客或客户。这不是刻板的教条,这是活生生的商业准则。一个真切关注自己产品和产品使用者的公司是能够创造奇迹的。Tom Peters讲过一个有关麦当劳创始人Ray Kroc的故事:有人问Ray Kroc“你成功的秘诀是什么?”,他答道, “你得有鉴赏汉堡包美丽的能力”。看到这里,你可能先是一笑,稍加思索之后,你得承认他的话很有道理。...

第29期


【新闻】
《有效用例模式》中译本发行
《人月神话》中译本修订版即将出版
Borland发布Together Edition for Microsoft Visual Studio .Net
基于模型的开发领域,微软从零开始
Rational为IBM的按需开发添上双翼
Rational为由设计直接生成代码努力
【方法】
UML相关工具一览:S-T
...可以和ERWin, Caliber-RM协同工作,Rose输入输出。...支持UML2.0,支持MDA。...
重构:当前研究及未来趋势
...尽管在重构领域相当多的工作已经实现,从实践及规范的角度来看,仍然有许多问题仍然需要关注并解决。本节将对这些问题进行总结,并给出部分的解决办法。问题的组织方式分为基础部分和研究问题,实践部分和工具问题等两个主要的分类。...
使RUP敏捷
...2000-6 :客户没有提供这个版本的反馈。事实上,客户甚至没有安装该软件。许多需求仍然不清晰。客户没有时间与我们一起工作以澄清需求。来自客户的关键人员没有空,因为他们被分配到了其他紧急的项目中,大部分时间被他们遍布全球的客户所占用。我们从客户的组织的不同的人那里收到了互相矛盾的信息。尽管如此,我们仍然冒着遗漏信息的风险继续开发和工作。...
或许我们不应该“写”需求
...对于我们过去的较小的项目,使用文档管理需求效果很好,通过二、三十页纸需求能够被详细说明。我们在本单位或者网上可以获得很多模板,这些模板为需求文档的不同信息提供了编辑样式,然而,文档的效力却无法准确衡量。大型文档检查和使用都是有困难的。 因为文档的组织形式是固定的,作者必须选择简单的最好的方法组织信息。不幸的是,对于大量的信息,没有简单的、最好的方法甚至是较好的方法。...
UML驱动的基于TTA协议的处理器设计
...在本文中,对于TTA处理器的协议处理应用的开发,尤其是TACO处理器,我们实验了一种协议处理设计的方法。因为我们是在讨论可配置的处理器架构,我们对于反应了平台的硬件配置的应用的各个重要的方面的学习必须给出一些启发。通过建议所需资源的类型和数量,这样的信息被用来开发处理器的架构。在这样的设计过程中,UML扮演了一个重要的角色。我们使用UML作为一种描述性的语言,研究UML的行为图(Behavioral diagram)的语义来为我们的模型获得一个良好定义的可执行的语义。而且,近来在代码生成(Code-generation)方面的研究工作使得直接从UML的最后规约(Specification)生成TACO的微代码(Micro-code)成为可能。
...
一种基于Web的多源数据采集应用开发模式语言
...价值链之间的整合和信息共享对于企业优化整个价值链以及在不同层次上建立快速和有价值的决策非常重要。考虑一下下面的设想:当一个提炼厂的主管打开浏览器,决策支持系统的主要页面显示在他面前。在页面中间,显示生产过程的模拟,生产过程的主要部分都被显示,相关的部分用颜色标注,比如用红色表示警告;在页面左边,它可以查看企业的重要统计数据;在页面右边,它可以查看石油和产品的价格。如果他想进一步查看详细的数据,他可以点击相应的超链接进入相关的页面。...
【人件】
国内中文书对《人月神话》的引用精选(一)
...Fred Brooks说,“要计划丢弃某些东西”。1988年,我把Ruby卖给Bill Gates,当时只是一个原型...接下来要把它和Bill的QuickBasic结合,成为Visual Basic。我做的第一件事就是抛弃Ruby的原型,除智慧和经验外,一切从零开始。...

第30期


【新闻】
Borland将UML引入.NET世界
Borland开始给予C#平等对待
Duvessa发布基于用例的估算工具
Gentleware领跑UML2.0建模工具
【访谈】
Rebecca Wirfs-Brock访谈
...你问了一个很好的问题:为什么UML工具没有对CRC卡提供任何支持呢?我更愿意把它说成「为什么UML工具没有对表达不同抽象级别上模型元素的行为和特征提供良好的支持」。我想这是因为大多数工具(尤其是那些支持双向工程(roundtrip engineering)的工具)专注于提供类的一个实现级别上的视图。...
【方法】
UML相关工具一览:U-X
...强力的UML-数据库双向工程。...支持用例文档,文本分析。...有VS.NET2002-2003插件。支持GoF模式。...
基于职责建模(上)
...职责(Responsibilities)是陈述系统设计基本原理的一种方式。整个系统的职责鉴别和分配是业务模型和软件的主要设计活动。作为一个主要的活动,职责鉴别和分配会相互密切追随并伴随着既有组件的重用。在面向对象的建模和设计中,职责的定义和分配是同时进行的,与其他的方法不同,例如结构分析(structured analysis),它们不需要在定义时进行分配。...
防火墙的模式语言
...动态特性...我们用序列图描述基本防火墙模式的动态特性,序列图对应于两个基本用例。...
检测网站检索的可用性
...另一个常常被提及的检索用户界面的不足是它们不能支持中间级的检索。如象棋游戏,检索过程有开局,中盘,末盘。开局时的选择是至关重要、反复研究的,对整盘棋都有深远影响。末盘棋则要根据棋子及其所在的位置精心设计把对方将死。中盘更难描述,更需要灵活地、有机地把战术和策略结合起来。...
【人件】
软件开发 以人为本
...几个篮球场那么大的一个房间,以前据说是做库房用的。每四张办公桌被放到一个格子里...
《人月神话》中译本修订版对每章前引语的修订
...原译:岸上的船儿,如同海上的灯塔,无法移动。--修改:前车之履,后车之鉴。...
《人月神话》国内评论集之二
...我女朋友是做外贸的,一天晚上她一直捧着我书架上的一本书在看,很投入的样子,后来她叫住我很认真的说:“这本书写的很好,我明天可以带到办公室接着看么?”那本书是《人月神话》。...

第31期


【新闻】
Flashline加入OMG
OMG的MDA FastStart计划进展迅速
SAP和IDS Scheer达成合作
Intelliun使Executable UML成为现实
Borland的 企业核心对象“ECO”技术加快软件快速开发的进程
简化应用集成的工具
【访谈】
Alistair Cockburn与UMLChina交流会
...而象我的妻子那样做面包,就和那两个层次不一样了,她只需要凭她的手感,抓一些面粉,倒一些水,弄点鸡蛋在里面揉揉就能做出她想要的面包,这就是‘离’的阶段。到了她那个阶段,她既知道如何根据处方来做,也知道不看处方怎么做。...
【方法】
UML中文FAQ
...一直很难找到中文的、适合国人看的UMLFAQ,而英文的UMLFAQ 往往散落于各处不易收集和消化,导致很多看似简单却很基本、很关键的问题在网络论坛、BBS 上被反复地提出,既浪费了提问者、解答者不少的时间和精力,也给大家学习总结、进一步提高带来了困难。于是,结合自己的所学所想试着编写了一个UML中文FAQ 供各位参考。...
基于职责建模(下)
...火车发动机(Train engines)挂着多节车厢和一节守车(caboose)。确定是发动机还是守车具有「连接发动机到守车」的职责则是一个难点。解决方案:有一些抽象被遗漏了,其中有关于火车结构(configuration)的,有关于火车的。系统很可能想要管理发动机,车厢和守车的结构,并且想要随时能够变化。...
用例随笔
...部门工作人员给基础信息交换系统发出命令后,基础信息交换系统就连通部门业务系统,把业务数据搬到基础信息交换系统内。确实是一个命令系统去“采集数据”的过程。但是我们要回过头来想一想:用例是“执行者用系统来干什么”。部门工作人员会怎么看待这个过程?他们会说,这是在“提供数据”,把数据提供出去,作为比对、交换的依据。...
更多的操作系统访问控制模式
...在计算环境中,进程会在运行过程中创建对象。有些对象在程序初始化时创建,而其他对象在进程运行时动态创建。进程对这些对象的访问权限需要在进程创建时就指定,否则进程可能会误用它们。...
远程认证者和授权者模式
...一个跨国公司在不同国家如美国和巴西有许多雇员。支持美国职员的认证和授权信息要保存在美国的服务器中,支持巴西职员的信息要保存在巴西的服务器中。现在假定一个美国职员旅行到巴西,需要访问巴西数据库服务器中的数据。有两种方法可以实现...
帐务模式
...我们打电话,上网,然后在月底收到一张账单,上面写着这些活动产生的费用,类似的还有水电费,煤气费,有线电视服务费,购物账单等等等等,总之,在某个时候发生了一些事件,打了一个电话,上了一次网……,在这些事件里我们付出或者得到了某些东西(例如劳动,商品,服务等),然后这些付出或得到的东西产生了一些不同程度的费用条目...
《企业应用架构模式》评论
...这是我所发现的关于J2EE和.Net模式的最佳图书。我想它注定会成为经典。我发现关于「何时进行分布式,Unit Of Work,Domain Model和Data Mapper模式」的论述极为有用。它改变了我考虑企业应用的方式。...
【人件】
国内中文书对《人月神话》的引用精选(二)
...Grady Booch:一颗濒于坍塌的行将死亡的恒星,一个正在识字中的小孩,一群对病毒发起攻击的白细胞:这些只不过是物质世界中少数涉及巨大复杂性的对象。软件也可能会牵扯到很复杂的元素,但这里所看到的复杂性却是根本不同的类型。正如Brooks指出的“爱因斯坦认为肯定有对自然的更简单的解释,因为上帝并不是反复无常和独断专行的,但这样的信念并不能安慰软件工程师。他所要对付的复杂性绝大多数都是任意性的”...

第32期


【新闻】
INTELLIUN广邀专家一起探讨EXECUTABLE UML的未来
微软Whitehorse modeler的背后
业界领先的美国电信设备制造商选择Telelogic
IBM如何对待Rational工具
Wizdom Systems发布ProcessWorks! V.6支持UML
Scott W. Ambler谈敏捷的真相
【访谈】
敏捷方法争论
...Barry Boehm:嗯,Tom,我很高兴把你对“敏捷方法争论”的清晰描述用克劳斯威茨的对位法来做个比喻,就如军事行动中的装甲和机动性。不幸的, 我们在软件开发和军事行动中所看到的都是这么一种趋势:钟摆总是在两个极端之间摆动。然而在大多数情况下,我们需要在装甲和纪律、机动和活泼之间获得一个平衡。事实上,我要说敏捷和重型方法这两个阵营,它们的领导人的观点,其实都在各种各样的可靠的中间地带,只是那些狂热的追随者们过度地分割了“纪律”和“活泼”。 DeMarco:我很同意。幸运的是我们领域的实践者比学术的提倡者更懂得寻找有意义的中间地带。...
【方法】
模型驱动架构MDA介绍
...模型驱动架构(MDA,Model Driven Architecture)是国际对象管理集团OMG目前力推的软件开发的新框架,它在模型定义、软件开发过程等领域必将产生深远的影响。本文从其定义、思想的来源、发展历史等方面对其进行了较为深入的介绍。 ...
使用模型驱动架构方法在J2EE平台上进行模型驱动开发
...这一案例研究的目的就是验证或反驳关于基于MDA的开发工具可以提高软件开发生产效率的声明。两个团队开发同样的J2EE PetStore应用,一个团队使用了基于MDA的开发工具,而另一个团队使用传统的企业级集成开发环境(IDE)以代码为中心(code-centric)的开发方式开发。...
领会统一过程
...聚焦于“统一过程的精髓”而不是统一过程的形式。统一过程既不松散混乱,也不死板迟钝,而是具有很强的灵活性,动态性。统一过程仅仅是说明或建议开发人员应该如何决定和执行。如果无法平衡其中的关系,则表明过分的关注“统一过程的形式”,而不是“精髓”。这一点是很多过程工程师运用统一过程的通病,也就是说,他们无法平衡“形式”与“精髓”。...
扩展UML活动图实现生产系统中的工作流建模
...本文提出了一个使用工作流概念在生产系统中描述业务流程的方法。在此,我们对UML的活动图进行了扩展,提出了工作流活动图(Workflow Activity Diagram-WAD)的概念,它采用了C-WF模型概念。C-Wf模型描述了业务流程中涉及的结构性的和功能性的企业对象,如企业活动、人力资源、机器资源等等。WAD描述了一个工作流模型,该模型用来标识该工作流执行所需要的活动和资源,并定义了它们之间的关系和次序。通过UML用例的深入使用,我们的方法进一步增强了UML在业务建模方面的可用性。...
糟糕界面集锦(补遗)
...微软似乎想将每一个打过的补丁的历史纪录版本号用分号分开显示在关于对话框里。也许是因为这是第五个开发版本,也许开发者没想到竟然有这么多的补丁要打所以没有预留足够的空间来显示补丁的信息。天哪! 那个对话框右下角灰色的东西是什么?噢,那是“OK”按钮。或许是什么原因吧,开发者将补丁的信息宽度和按钮的位置联系了起来,所以就变成那样了。如果Amit再多打一个补丁的话,他将和“OK”做最后的吻别了。 ...
【人件】
《人件》续篇--《人件集》样章
...但是,那种认为为开发者提供更安静、更宽松的办公空间就可以提高软件开发效率的观点也是不正确的,办公室布局与开发效率之间的关系远远要比这句话复杂的多。首先,从社会科学研究的角度来看,“原因-结果”之间的关系是很复杂的,很难说清哪个是因,哪个是果。高效的程序员有可能是在安静、宽松的办公环境下办公,但也可以说,正是由于他们的高效开发使得办公环境显得安静、宽松。...

第33期


【新闻】
《财富》把《人月神话》列为CEO必读技术书籍之首
IDS Scheer North America发布ARIS UML Designer
IBM收购Rational一年总结
Grady Booch在IBM
Grady Booch加入Northface大学顾问委员会
【访谈】
Scott Ambler访谈
...这很奇怪。我发现“反敏捷(anti-agile)”者认为敏捷学家(agilist)是在宣扬「敏捷方法就是银弹」的言论,因此这些方法常常会被认定是一时兴起而被忽略。事实上就我所知,在敏捷社区内没有人声称他们已有魔法般的解决方案,并且时不时地叫嚷说「就像我这样地使用AM」。...
【方法】
CASE工具对用例的支持
...用例建模长期以来被看作次于对象建模的二等公民,部分原因是需求分析工作比较单调,没有设计和实现那么有意思;另外的原因就是CASE工具支持不够,导致它没有对象建模那么流行。对象建模在现在之所以如此流行,过去几十年支持对象建模的工具持续改进是一个主要的原因。 ...
极限建模与可执行模型
...会议一开始,我介绍自己为“间谍”,因为我的兴趣是在可执行模型:模型可以非常精确和详细,足以去执行。这样,那种认为代码是唯一感兴趣的产品、模型是多余的观点就会很奇怪了。当然,我们仍旧将把我们的注意力放在最终产品上,但是这个最终产品完全可以是一个可执行模型。...
适应性的实时分布嵌入式中间件的新兴模式
...假设有一架负责执行预先计划的任务的战斗机,和一架协同命令和控制(C2)飞机,主要用于当战斗机接近目标时不断更新战斗机的任务参数。特别地,C2可能想要把战斗机指引向一个新的更危险的目标或者警告战斗机在到达目标的途中有威胁,如图1所示。无论如何,这项从C2到战斗机的合作式的任务重计划必须处理资源的限制和争用,因为这两架飞机之间的无线网络的带宽是有限的,而飞机上的处理器同时还服务于其它可能的关键任务。由于任务重计划和有关数据的动态自然属性,通过静态地预分配足够的资源来支持这种合作是困难甚至是不可能的。如果系统依赖于资源总是可获得的和可预测的,它可能不能及时交换重要的任务计划信息并以此采取行动。...
一半是欣喜,一半是迷惑--XDE for .Net体验
...安装的时候软件名是“Rational XDE Plus .net (Evaluation)”,看起来还是无可厚非的,但是,当我想到Rational网站上找一些相关介绍的时候,居然怎么也找不到这个软件,在琢磨了好大一会之后,才发现它的大名原来是“IBM Rational Rose XDE Developer”(.net版),与之遥相呼应的竟然是IBM Rational Rose XDE Modeler,Rose乎?XDE乎?IBM乎?Rational乎?Developer乎?Modeler乎?真不知道是厂家想把我们弄得晕头转向呢,还是他们自己已经被他们的产品弄得晕头转向了...
值得看的中译本UML相关书籍(截止至2004年1月)
...现在,引进翻译的UML相关的书籍越来越多,在不可能一一阅读的情况下,开发人员面临着一个问题:哪些书能真正带来帮助?UMLChina的专家总结了2004年1月之前出版的所有UML相关书籍,根据自己的认识,“过滤”出以下优秀书单,按出版日期排序。不作任何评点,仅为一家之言,供大家参考。最后要说的是,就算读10000本书,如果没有将其中的知识用于你自己的实践,对你来说也是无用的。 ...
PEAA中译本精选(草稿)
...再接下来的问题是由“业务逻辑”带来的。我认为“业务逻辑”这个词儿很滑稽,因为很难再找出什么东西比“业务逻辑”更加不合逻辑。当我们构建一个操作系统时,总是尽可能地使得系统中的各种事物符合逻辑。而业务逻辑生来就是那样的,没有相当的政治力量不要想改变它,你所能做的只有照着它说的做。你必须面对很多奇怪的条件,而且这些条件相互作用的方式也非常怪异。这种情况很容易出现,比如,某个销售人员为了签下其客户几十万的一张单,可能会在商务谈判中与对方达成协议,将该项目的年终到帐时间推迟两天,因为这样才能够与该客户的帐务周期相吻合。成千上万的这类“一次性事件”最终导致了复杂的业务“逻辑”(其实不符合逻辑),也给商业软件开发带来了很大困难。 ...
【人件】
需求工程师的素质要求
...目前,很多公司里,担任需求工程师角色的开发人员,同时也会承担着设计和编码的任务。实际上,这不是一种好的做法。需求工程师的任务是出题,需要把各种碎片捏合成题目(或者说,用例),需要强的综合能力;设计员程序员的任务是解题,需要强的分解能力。这两种能力方向是相反的,这也是程序员经常会“误用”用例的原因。一个好的程序员并不能自动成为好的需求工程师。...

第34期


【新闻】
David S. Frankel“应用MDA”讲座举行
OMG Anaheim会议消息:四个新的小组成立;架构委员会选举
china-pub2003总结:UMLChina参与图书继续火爆
Gentleware在OOP展会上展示其首个集成UML2.0的工具
Compuware引导MDA主流
LogicLibrary书写Logidex的新篇章
Martin Fowler关于MDA的见解
Metamill软件公司和Innovative及Datraverse B.V.签订经销协议
【访谈】
Grady Booch访谈
...然后是我耗时最多的项目,开发一个软件架构的手册。这是我的五年计划项目,如果你看看土木工程,或机械工程,在这些行业中人们的学习方法是他们考虑现存的系统,研究架构。在软件上,我们没有这样的研究,没有人把这些编成文献,所以我选择了100个系统,Eclipse也在其中,我的想法是把它的架构文档化,因此我们可以描述它,可以做一些比较性的研究。我正在考虑例如Word的架构,纽约交易所交易系统的架构,Prism 1000的架构,Prism 1000系统用于对人类DNA进行编码。因此这个想法是去真正得到某个软件系统的光谱,并提供如何建立这些架构的知识体。...
【方法】
个案研究:聊天室UML模型中的一致性问题
...本文从初始需求开始构建聊天室模型,以及对个案进行研究。在不同的开发阶段,分别要用到UML类图、时序图和状态图。这样,难免需要确定一致性问题,现在已经提出了许多仿真和方法,用来确保模型各个方面的一致性。我们关注内部一致性,即给定模型内部制品之间的一致性问题。 ...
使用基于组件开发和Web技术来支持分布式数据管理系统
...客户端接口模块(Client Interface Modules)就是试用CRS系统的涉众使用的网络浏览器。通常,涉众是基于他们感兴趣的数据集来访问标准查询窗体的。关于空中交通管制(ATM)的一个独特的数据模式(schema)是OOOI数据集,当某架飞机从终点返航、离开跑道、降落到目的地跑道、最后进入航空港时,这一数据集记录了全部的“Out/Off/On/In”时间。图11就显示了一个与CRS分布式数据管理系统的观念相一致的查询窗体。...
一个课程管理分析模式
...本文讨论一个课程管理的分析模式,该模式描述了诸如学生注册、增加和取消课程、成绩管理等事件。模式可以推广到相似的应用中。本文包括两个相似的模式:课程注册模式和成绩管理模式,这两个模式都有各自的参考价值,适用于不同的场合。...
UML建模工具比较:Enterprise Architect 和 Rational Rose
...最后,经过一系列同类型的比较,是不是费用也不同? 是的――非常大的不同!单是Rose花费就是EA的28倍。 如果你要比较项目生命周期的支持,假设你是一个Rose用户,你将必须去购买Rational捆绑的一整套产品,如Requisite Pro, SoDA, Test Manager等。虽然附加的工具比同类的EA提供了更丰富的功能,但是在大部分时间里EA的基本功能已经够用了。在写本文时,EA企业版(最高版本支持SQL后台)的费用是$179.00(£111.58) 而Rational Rose企业版的费用是$5024(£3140),一天整套开发包(Rational Developer Suite)的费用是$8976(£5610)。...
SAIP和PEAA的对照与比较
...一亿美金,五年的合同。所有你要做的就是推出一个新的系统,使得(美国)伊利诺伊所有的公立大学能够同步所有大学生的申请,从而促进对入学过程的评估工作。你可能不再像过去大学程序设计课程所作的那样,只是坐在那里便可以开始编写该项目的代码。对于这个项目,以及所有诸如此类的大型项目而言,你需要为系统创建一个架构(architecture)。这个架构将会作为你项目的基础。为了打下一个良好的基础,在架构创建时需要考虑多个方面。你的涉众(stakeholders)是谁?用户(users)是谁?最佳的项目分解方式是什么?能够用到哪些最佳的模式?在Software Architecture in Practice(SAIP)和Patterns of Enterprise Application Architecture(PEAA)中会对这许多问题做出回答。尽管对于「如何创建架构」SAIP和PEAA有着不同的观点,但它们都有助于阐述架构创建的方式,以及强调其对于系统如此重要的原因。 ...
相识何必曾相逢
...直到有一天,我在马桶上看Dean Leffingwell的书,这位Requisite公司的CEO、RequisitePro【1】的开发者在他的书中说,RequisitePro的思想起源于Donald Gause和Jerry Weinberg的著作,尤其是《探索需求:设计之前的质量》――这比10位专家大叫“经典!经典!”更能打动我,我开始对这本书有了浓烈的兴趣。 ...
《探索需求》中译本(草稿)节选
...另一个在问题描述中的危险词语是“组”,它暗示这些人将会有相互影响,但不知何故,这里也不清楚其究竟。表演“费加罗的婚礼”的演员们之间的相互影响与在费加罗咖啡馆喝咖啡的一群人之间的关系截然不同。为某个小组设计的建筑物将会和为其他人设计的完全不同。甚至是术语“建筑物”也带来了一大堆的含混性。有些读者可能会推断“建筑物”意味着某种坚固、耐用、可靠、不透明而且可能是巨大的东西。如果我们在无意中滑入了这种推论,我们潜意识里就断定需求可以通过传统建筑材料来获得满足,而这就限制了那些有可能有效的设计的范围。 ...

第35期


【新闻】
Gerald Weinberg “探索需求”讲座举行
Scott W. Ambler“应用UML敏捷建模”讲座举行
Ian Graham“对象技术”讲座举行
MagicDraw UML工具增强报表功能
视频游戏公司采用SmartDraw进行标准化
Gorilla Logic发布Gorilla ExecutionEngine预览版本
I-Logix: 模型驱动开发理应有测试的一席之地
【访谈】
我思Argo在
...近来,在贸易出版物的头版和专业会议当中,敏捷过程都非常火。它的基本思想是,软件开发过程自身应该灵活、适应、轻量。它与Jim Highsmith和Kent Beck(XP运动的领导者)等几个曝光率甚高的美国人有着莫大的关系。但是欧洲拥有自己的专家,敏捷过程并不象有些人想得那样新颖。我与Martine Devos[1]邂逅,她曾因为对轻量级方法出色的阐述,在大西洋两岸,广为人知,受到众人的尊敬。这次采访过程跨度很大,从她在比利时先锋项目Argo中担任的领导角色,一直谈到她把敏捷方式的统一过程引入到英国的开发机构内部,在此之中SCRUM开发过程对她产生影响的重要程度。...
【方法】
当企业计算遭遇嵌入式系统
...嵌入式设备中软件使用得越来越多,系统之间建立了连接,对在小型设备中增加功能的要求也一直在增长,这些都迫使供应商想尽办法来缩短开发周期。对于嵌入式系统来说,只有实现了复用,软件需求才能满足,至少在上世纪八十年代我们就已经开始为此而付出努力了。我们能否做到简单地把概念从企业软件转移到嵌入式系统中吗?这是可以做到的,只要我们注意约束条件就行了。 ...
探索《探索需求》
...你的工具好,恭喜你,同时也要提醒你,新层次的挑战来了。以前可以抱怨工具的理由如今已经不存在,你需要更加集中精力去面对真正的问题。――这也就是Weinberg说的“你的CASE工具越好,你就越是需要本书所讲的工具。”――更贴切地说:你的工具越好,本书的工具在你的软件开发工作中所占的比重越大。...
《UML风格》中译本节选
...它不讲概念,它假设您已经懂了概念。它简单地告诉您“在递归关联上指明角色名”,不告诉您什么叫“递归”、“关联”和“角色”。这方面的知识,可以去看“UML Distilled”。 它不讲过程,它假设您已经了解某种开发过程。UML提供了9种图,Ambler根据自己的实践为各种图提出了一些准则。这些准则的使用,不受某种开发过程的约束。想了解更多这方面的知识,可以去看Ambler的“The Object Primer”和“Agile Modeling”。它不讲工具,它假设您已经了解某种工具。Ambler提出的这些准则,适用于各种UML工具,包括白纸和铅笔。如果想学习某种主流工具,可以去看“……从入门到精通”之类的书。
...
糟糕界面集锦—界面设计考虑要点
...典型的举例来自程序TextEdit的图标,这个图标包含有一段文字。尽管少量细节丢失了,这个图标的文字块依然在48x48大小的图标中依然存在。不过,图标上页面上的横格细线看不见了。即使在16x16大小(图4. A 最右的图标)图标尺寸最小的情况下这个文字块还是有一个墨色的轮廓依然保留,而最基本的元素信纸及笔依然可以辨认。...
批判索尼爱立信的手机设计
...通话清单中,如果是同一个号码多次拨打,例如一个未接来电拨打了四次,却只显示了最后一次拨打时间,这样的做法隐藏了重要的信息。因为用户有可能需要了解每次拨打的具体时间。一般而言,最新拨入的电话号码应该显示在通话清单的最上面。但是因为T618是同一号码多次拨入是记录在同一个号码上,即便它是最新的拨入号码,也可能不是显示在最顶端,这样的做法不合理,削弱了用户的对未接来电的关注。 ...
为什么伟大的技术不能制造出伟大的产品?
...增加产品价值的最佳方式是增加它的功能却没有增加复杂性。当你想增加一个新的feature,是否有办法增加了它却没有为之增加一个用户界面?它能被可靠地自动化吗?或者,为了包含新的功能,是否可以通过新的、改进过的方式替代旧的,来调整、甚至去掉原先的功能?想一下汽车工业是怎么做的,想一下他们怎样以对用户影响最小的方式来增加重要的feature。就象动力方向盘是对于普通方向盘的一个新添加功能一样,防锁死刹车系统是对标准刹车踏板UI的补充。要获得新特性的好处,司机不需要训练或重新学习。这种设计努力――使复杂的特性让用户看起来很简单――制造出了伟大的产品。 ...
用UML进行超媒体建模
...为了进行外观建模,在导航模型中我们定义了状态机,它是通过合并多余(可选的或并行的)状态而生成的,它表示不同形式的外观信息。规则根据用户知识水平表示适应性,规则由监视哨(guards)、条件、行为状态和转换来建模。例如,在图2的导航模型中,外观模型采用两种可能的呈现状态扩展了领域知识状态(Domain Knowledge state):定义(definition)和细节描述(detail description),它们根据用户对概念的掌握知识水平来显示(参见图4)。 ...

第36期


【新闻】
I-Logix Rhapsody 2004生成C代码
UML2意味着“模型驱动”的架构
IBM将让所有Rational工具基于Eclipse
微软的模型观点与众不同
Telelogic升级DOORS套件以改进定义软件需求的过程
Telelogic进军普通应用开发
【访谈】
温伯格“探索需求”交流摘要
...2004年3月19日,温伯格先生应邀在UMLChina做了一次有关“探索需求”的交流。以下是部分精华摘要,全文将发表在2004年5月份的《程序员》杂志。......最常见的例子就是我们发现某个人说,“我们需要一个快速的系统。”看,我们不知道“快”意味着什么。这个“快”和他们头脑中已有的某些速度有关。对某些人来说快的系统,对另外一些人却是慢的。所以,你必须找出更清楚的事实。...
【方法】
论银弹的存在(v0.3)
...“颠覆软件工程[4][8]?软件工程是软件工业的立业之本,深深扎根于数百年来工业、产业和信息革命造就的肥沃土壤。某些人出于各种目的,提出颠覆软件工程,就像要颠覆建筑工程、土木工程、机械工程、装饰装修工程……一样荒唐幼稚,无异于痴人说梦!除非你是在自己家里摆弄几个软件自娱自乐,顺便向别人炫耀一下自己的智力,那可能是不需要软件工程的。” ...
UML 2.0新特性
...通信图就是过去的协作图(collaboration diagrams)。和序列图中的术语一样,通信图的结点被称作生命线(lifeline)。这些结点通过消息连接在一起,这些消息代表了交互作用发生的顺序。...
ChattaBox:使用UML和SDL设计并发通信软件系统
...我们研究了一个案例,用以调查并发通信软件系统的工程过程。案例研究的主要目标是分析使用最佳工程实践和CASE工具创建这样的系统时,可能的软件工程路线。为了这个目的,我们设计并实现一套称为ChattaBox的VoIP系统。 ...
RUP的分析和设计工作流中的Aspect
...本文主要考虑RUP的分析与设计工作流,并且确定这个过程由于AOSD(面向方面的软件开发)而作的改变。我们定义了一个新的角色,称之为“方面设计师”(Aspect Designer),并且描述了怎样、何时、哪一个结构必须被创建或被修改。我们同时提出了一些需要在面向方面设计中进一步讨论的问题。...
在大型项目中使用XP实践
...FinApp参与了一个复杂的企业级系统的开发,这个系统向银行,保险公司,信贷和经纪人提供金融服务。项目包含6大种类的1000多个业务对象。项目的开发人员有22个。项目的开始阶段采用了改善过的XP方法。一些XP的实践被修改过后在项目中采用。在这个项目中,已经有一些成功的应用交付给另一个大型组织,这些应用将和FinApp进行整合。 ...
糟糕界面集锦――应用程序点评
...“发送”按钮是一个巨大怪异的东西,它的高度竟然和文本输入框是一样的,甚至更大一些。回车和点击按钮都会发送输入的消息,所以让人觉得微软可能想用这种形式来强调这个按钮。想到苹果即将发布的iChat,这个软件就根本没有“发送”按钮,回车也和MSN Messenger一样是可以发送输入的消息的。这就足够好了,不过如果添加一个小的“发送”按钮可能会更好一些,因为这样会消除一些用户找不到“发送”按钮的可能性。 ...

第37期


【新闻】
UML被SUN“本地化”
业务驱动开发者的趋势
Cutter会议:敏捷在升级
Select Business Solutions引导新的模型驱动架构解决方案
OASIS委员会通过通用业务语言(Universal Business Language)
Gentleware推出Poseidon for UML 2.3版本
Quocirca直言:编程已死?
【访谈】
MDA辩论
...Scott和我都认为建模总的来说是好的。但是,我不同意Scott所说的产生式MDD,或者说模型驱动架构是造成迷惑的原由。好多工业软件开发项目已经证实了这一点。比方说,德国银行Bauspar和澳大利亚国家铁路报告第一期MDA项目节约了40%。有了MDA,通过MOF,你可以集成任何领域专家与你一起使用的建模语言,就可以从自动模型验证和转换中得到好处。...
【方法】
用例和方面——无缝的协作
...人类通常是从对具体事物的理解中进行抽象。而与此相反,将抽象概念转换为具体事物,则需要近似于宗教般的信仰。在使抽象概念变得别人可以相信之前,需要为此反复宣传。这种工作多年来我已经做过无数次。当我们的实现环境还是汇编程序的时候,将组件和接口具体化几乎是不可能的,但是我们做到了。现代的语言,比如Java和C#本身就已经将这些抽象(组件和接口)具体化了,因此我们没有必要再花功夫宣传了。将一种扩展机制具体化也曾是一种挑战,因为当时我们没有能为它提供支持的编程语言。即使现在UML已经通过用例建模提供了支持,许多专家还是直言不讳地反对使用它。但是,借助面向方面的程序设计,我们终于有了具体地解释扩展的工具,因为通过像AspectJ[2]一样的语言,可以在整个开发过程中自始至终直到代码支持扩展。即使它只是我们所需要的一部分,它也已经改变了很多。 ...
电信行业的软件开发过程案例研究
...为了确定敏捷方法在电信行业的适用性,我们对一家电信公司的软件开发过程进行了研究。该案例中的电信公司Telkom SA Ltd.是目前南非唯一的固话运行商。作为第一个步骤,Telkom中同软件相关的一些部门被确定出来。然后这些部门中最具影响力的被挑选出来以进行下一步的研究。这个部门被称之为TDL,它进行内部的软硬件开发以满足电信方面的要求。选择这个部门的原因是:一、它参与了范围广泛的电信项目,这种广泛性同时体现在规模(成本和时间)和使用的技术上。二、这个部门所参与的项目的复杂程度超出其他部门。一些项目不仅需要软件开发,而且同时需要进行相关的硬件开发。...
使用用例探索需求――一次解决需求问题的对话
...不,不是这个意思。我们经常看到有人讨论用例应该写得多细,用例的“粒度”应该多大的问题,实际上这些讨论是没有意义的。用例或者说需求不是面团,要怎么捏就怎么捏。这里面实际上就是四个字“实事求是”,用例是一种实事求是的技术,反映出“真正想要的是什么”。“选定某个任务”和“点击某个任务”之间,哪一个是需求,要去和MIS工程师交流,得到真实的答案。 ...
七步搞死RUP
...RUP的作者并不认为RUP是重型的或者预见性的,这种认为RUP是重型的或者预见性的错误观点是由于加入了不正确的过程思想或者对RUP的误解,RUP本身提供的大量详细的过程文档也加剧了这种认识,以至于RUP被错误的刻画或者蹩脚的实现。RUP作者的本意是用轻量、敏捷和适应性的过程精神来应用RUP。如何这样做的一些指导如下:...
关于重构研究与实践的一次论述
...高级的MDA工具能够逆向工程,即把现有代码转变成抽象模型,从而实现平台集成[97]。显而易见地,这种解析方法只有在现有代码遵守一个预定义结构时才能工作。这样,重构能够被用来把现有代码转换为MDA工具所能理解的规格。而在实践中如何扩展这种方法工作以及扩展什么,这方面还需要更多的研究。 ...
积极主动的软件工具使应用开发潜力最大化
...Ivar Jacobson发展了对UML和RUP的进化至关重要的“use case”(用例)的概念,他还在软件组件重用专题上发表了无数的文章,将重用概念应用于包装可重用的过程知识组件上。在与经常被RUP知识主体制服的客户打交道多年以后,Jacobson团队决定法律化这些知识,使其在基于内容的系统中易于访问,多年的结果就是WayPointer。 ...

第38期


【新闻】
微软计划为Visual Studio增加测试建模等工具
IBM生命周期管理软件决胜Visual Studio 2005
Borland Together新版本推动.Net开发
Ivar Jacobson博士最近忙什么?
Bertrand Meyer“面向对象软件构造”讲座即将举行
【方法】
转化用例为设计
...对许多UML和统一过程的从事者,特别是新手来说,从一个类似于故事的用例集生成详细的、充实的设计模型可以证明是相当漫长的一段路程。从陈述的需求建模类和组件之间的交互,这些类和组件每一个都具有各自的属性,方法和责任,而且还要建立明确的架构,这是令人相当为难的。在网上以设计为主题的论坛上经常被问到的一个非常普遍的问题是“我怎样转换这些用例为设计?” ...
实用用例:事件建模使用例变得严密
...在过去的几年中,OCG参加了许多客户(的开发)。这些客户都使用用例作为主要的分析工具。通过使用用例模型的经历,我们发现了两个主要的问题。第一个问题是决定什么组成用例很困难。第二个是如何更好地使用文字描述你所关注的用例的细节。...
复发责任分析模式
...保险公司和客户签订保险合同获取保费。该合同在一定期间内有效,而客户不必一次付清所有保费。保险公司需要时刻知道实际的保费总额和已经支付了多少。为使这项询问简单高效,查询保费的命令要能够在任何时候可执行(例如每天晚上)。图1是用UML描述的将查询保费命令从保险合同中去耦的类图示例。[Booch+ 1998]...
状态图模式语言
...当实体从一个超级状态转移到另一个,又返回原先的超级状态时,进入的可能需要是其退出时的状态,而不是其缺省状态。我们可以使用状态图规约的历史属性做到这一点,具体实现时超级状态应知道它最后的状态对象。对于不使用历史属性的超级状态,进入时“CurrentState”指针指向的是其缺省的内部状态对象,如下所示:...
设计模式中的可分析性和可更改性
...既然设计质量可以通过指标来衡量,那么运用设计模式应该获得更好的指标。但是,许多面向对象设计的通用指标都显示运用模式的设计是低质量的设计。 Reibing曾说过,如果对于同一问题有两种类似的设计A和B,B使用了设计模式,A未使用,那么B的质量应比A高。但是,如果我们使用传统的标准来衡量这两个设计,指标显示A的质量更好——主要因为A中类、操作、继承、关联等更少。到底谁错了?是指标?还是模式社区?是我们使用了错误的质量标准来度量面向对象的设计?还是使用模式确实使设计变得更糟而不是更好?人们期望使用模式提高质量,而使用模式后质量指标却变差了,到底是什么原因导致了两者之间的矛盾呢?...
UML之“四书五经”
...什么?推荐这本“烂书”?是的。这本书从原书内容到中文翻译,被人骂得太多了。问题在于刚听说UML、Rose等新字眼时,你以为人人都有耐心去“打基础”?不是,这个时候最想的就是先动手试试再说。不管怎么说,这本书至少系统地介绍了Rational Rose的使用,看着书照做,至少可以画出图来,坚定下一步的信心。虽然书中的UML概念有的地方值得商榷,但是类似的书很少,它算是最不差的,你让读者怎么办?估计作者还会紧跟工具版本更新,不断推出此书的新版本,希望一版更比一版好。...
《敏捷数据》中译本样章(草稿)
...数据无疑是基于软件的系统的一个重要方面――这为我们近十年来所共知,然而许多组织机构依然在与他们解决「其软件过程中的面向数据问题」的方法作斗争。敏捷数据(AD)方法的目标是定义「使IT专业人员在软件系统的数据方面能够相互有效工作」的策略。这并不是说AD是一种“放之四海皆准”方法论。相反,可以将AD看作一组观念集,其将使你们组织机构内的软件开发者在基于软件的系统的数据方面能有效地一起工作。尽管本书着重于敏捷软件开发中那些经证实的技术,但定义一种基本的方法基石是必不可少的。
...
业务建模vs 系统建模
...内容刊登于2004年7期《程序员》杂志...

第39期


【新闻】
建模工具领域的IBM和微软对决
Rational揭开其工具集升级版的面纱
Leap SE将自然语言直接转换为对象模型
IBM为Rational打开Hyades大门
【访谈】
Grady Booch展望UML之路
...我的观点是,很高兴看到微软认识到建模的重要性。因为我们已经为之努力多年,而且我们也很高兴地看到几乎所有的主流平台厂商都在真正进入这一领域。看看Sun公司的James Gosling以及他的TopHat项目,这显然是在同一方向上的努力。天啊,当你面对这些对手的时候,有一点是可以保证的:巨大的变化是不可避免的。 ...
【方法】
基于模型的通信系统设计
...图2 大致描述了在系统实现时采用组装和分解方式逐步细化服务描述的过程。一个扩展的设计方法将覆盖从服务说明到完全实现的各个阶段。不同的阶段参与的人也不同。举例来说,在协议工程中,设计方法覆盖了从前标准化到协议实现的所有阶段。服务说明阶段与文献【4】中标准化过程的阶段1相对应。服务分解阶段主要是在标准化阶段2中,服务分配阶段覆盖了标准化阶段2和阶段3 ...
软件工程与软件工艺
...工程未必追求最佳的质量,但是能够控制质量。对工程产品和工艺产品看法的一个误区是工程产品的质量会比较高。其实未必是这样的。比如,很多人就觉得妈妈或女友编织的毛衣(工艺产品)要比商店里买到的机器编织的毛衣(工业产品)要好;手工制作的糕点和馒头要比机器制作的好吃;天然的食品要比工场化养殖/种植的食品好吃,而人工养殖/种植的食品又要比通过生物技术手段生产的人工合成蛋白质食品好吃。当然,前者的价格也往往比后者贵,而质量差距往往其实也没有你想象得那么大。事实上,工业产品的质量一般都在某个中等范围内,不会太差,但工艺产品的质量可能会参差不齐。(可能你妈妈织的毛衣非常精美,但你女友的作品却一个袖子长、一个袖子短。)总的来说,这些产品并不复杂,手工制作是可行的,质量差异也是可以接受的。工程主要扮演了降低成本的角色。...
使用Together让你的项目变得更加敏捷(上)
...通过建模,加强了团队成员之间的沟通。例如,笔者在进行PeopleSoft ERP系统的运行维护时,为了深入了解系统在处理业务时的商业逻辑,更为了与业务人员的沟通,使用Together根据对系统的了解绘制了如下的费用报销状态图:...
【书籍】
《人月神话》、《人件》近期动态
...昨天,看了《手机》的DVD,恰好这几天也看了《人件》中关于电话和工作环境的论述,感觉两者有很多的相似之处,我不知道刘震云和冯小刚是否读过《人件》...
《领域驱动设计》中译本(草稿)节选
...这张十八世纪的中国地图表示整个世界。中间占据了绝大多数空间的部分是中国,周围寥寥几笔勾勒了其他的国家。这是适应于那个社会的世界模型,它有意地偏重于内部。这张地图表现的世界视图对于外国人是没有太大用处的,当然它也不能够适应于现代的中国。地图就是模型,每个模型都代表了我们所感兴趣的现实或观点的某些方面。模型是一种简化,它对现实进行阐述,只是抽象出对于解决手头问题有关的方面而忽略掉无关的细节问题。...

第40期


【新闻】
UMLChina讲座大师不断
像Booch一样思考
Gentleware新版本提供新的License机制
Select公司和政府签署产品采购合同
【方法】
数据模型的质量:良好数据的开始
...令人惊奇的是,这些使用不同方法进行数据建模的人之间还能互相交流。尽管如此,数据模型毕竟是要交付给客户的一个产品,并且至少在表面上,它们之间还是有好坏之分的。不幸的是,这一好坏之分的判断标准却很少被人清楚的表述出来,并且大多数时候,每个人建立的数据模型还是以几乎宗教般的热情用一种有争论的形式表述出来。本文试图能平息这些争论,并尽可能冷静客观地描述有关数据模型质量的一些基本原则。至少,我们希望能够把问题摆到桌面上来讨论。 ...
羊的门
...两个客户来观看我们的样品,他们对我们的创造赞不绝口,尤其是那个三轮车的轻便性。可是,其中一个问道:“请诸位解释一下这种设备如何在艾格尔上的北坡用于救援登山者。”我们呆在那里了。你是否也呆在那里了? ...
打开需求之门――在中国实践用例技术的感悟
...用例确定的只是交流的目的,而不是交流的手段。客户并不需要了解执行者、用例这些概念。用例能告诉开发团队“去向客户了解什么”(目的),不能告诉你如何向客户去了解(手段)。把目的当手段,当然行不通。...
敏捷软件过程的局限性
...尽管看起来有许多软件开发基于敏捷过程获得成功,到目前为止大多数成功的故事都仅仅是逸闻。对比敏捷方法和非敏捷方法的效果和局限性将极大地促进我们理解敏捷过程真正的优点和局限性。本文我们根据对部分称为“敏捷”的过程的原则和假设的研究列举了一系列局限性。并不是所有的假定适应所有这些过程,例如,仍然未发表的“Crystal Blue”,亦即 “Crystal Clear”的兄弟 [7],就很好地支持大型软件的开发,但可能并不很“敏捷”。很显然,有些领域更需要敏捷开发过程,其中有Internet应用领域,这些应用面临着显著的尽快推向市场的压力和下一个版本更新的成本尽可能小。然而,同样很明显,开发长期规划、大型复杂系统的公司在目前形式下不太可能采用敏捷过程。...
适应性Web应用程序开发模式
...我们的模式基于UML Web工程方法所支持的适应性技术,它用于适应性Web应用程序[Koch 01]的开发。在本文的模式集和[Rossi 01]中的链接个性化(Link Personalization)、内容个性化(Content Personalization)、结构个性化(Structure Personalization)和客户端个性化(Client-Side Personalization)等模式之间,在概念上有两种主要的区别。首先新模式的粒度更细,其次,通过内容和应用拓扑的动态适应性,它们提供了一种更动态的个性化方法。我们在附录中讲述了前面提到的模式。 ...
Put it into a Context!――跨越用例的粒度问题
...那么,这会引出一个新的问题:我们应该关注系统用例的哪个层次?(这也是一个粒度的问题)。还有其他一些由粒度引发的相关问题:采用倒推法,让我们来思考,用例驱动的受益者,他们都需要从用例中得到什么?现在他们还有什么需要我们没有满足?如何能在我们需要保证的质量和有限的工作时间之间做一个最优化的平衡? ...
【书籍】
以美的名义
...从他的作品中,我们可以明显地看出:Martin Fowler一直致力于为企业级应用开发者提供一套完备、自足的话语系统,一个理型的世界。Analysis Patterns告诉我们如何分析用户需求,Refactoring告诉我们如何改善代码质量,Planninge Xtreme Programming告诉我们如何规划敏捷的开发过程。这本PoEAA恰好是拼图的最后一块,它所记录的47个模式直指架构企业级应用时无法回避的那些问题。现在,Martin Fowler的信徒们可以完全用自己的一套话语来谈论企业级应用开发了。 ...
《UML风格》书评
...完成了《UML风格》一书,Scott Ambler给软件建模界帮了个大忙。作为一名为数个公司客户服务的咨询者和培训者,我看到许多团队里尽管个人了解UML的语义符号学,但还不能达成整个团队的共同的实现和风格。对于这些团队,当争论聚焦于“为什么某些东西以这种方式建模,而我的方法如何之好”的时候,沟通力和生产率往往大打折扣。团队成员应该在共同的实现和风格问题上达成一致。《UML风格》就可作为解决此类问题的入门教材。...

第41期


【新闻】
Sun在应用生命周期管理(ALM)上另辟蹊径
PolySpace和EmbeddedPlus发布第一个UML测试集成环境
Borland倾力连接软件与业务要求
用Wilde来进行软件设计
UML:大了,小了,还是刚好?
【方法】
打开需求之门――在中国实践用例技术的感悟
...需求工程师应该把捕获需求的责任承担起来,他需要亲临第一线,到涉众那里去,灵活运用各种方法从各类涉众那里得到需求的素材【5】,而不应该对客户有太多的要求,只要客户了解自己的利益,需求工程师就应该有能力完成工作。婴儿也不会直接表达需求,但出色的公司仍然可以探索出“天线宝宝”这样的需求。...
从基本用例到对象(详见程序员杂志2004年第10期)
...一个典型的CRC程序应当从一个候选类或对象集开始,每个候选类或对象都具有初始职责建议。然后跟踪用例来研究分布,反复修正对象和职责。可选的DSR程序应当从简单系统对象和它的职责开始,然后跟踪CRC。就典型的CRC来说,我们也应该找出一个候选的对象和它们的职责集,并且我们也应该研究作为用例驱动的设计。 ...
敏捷MDA
...我们认识到建模者和敏捷程序员之间的冲突是基本和广泛的,一方面因为不同的技术焦点不同,对预设的流程反应激烈,一部分原因是因为各自的夸大。然而,在现实中,这种隔阂是很小的。敏捷联盟和极限编程的许多思想同时控制着模型,是否我们简单地用可执行模型代替文字编码。无论如何,你的作者已经成为敏捷宣言的签名者就足够了。...
使用分析模式的软件重用
...与Fowler(1997)不同的是,他采用的是一种自由的,非正式的方式来描述分析模式,而我们采用的则是一种统一的,前后一致的方式。Vlissides(1998)和其他作者都强调,依照某种结构来描述模式是非常重要的,因为,对结构化信息来说,一旦其组织方式被理解,它就会易于被传授、学习、比较、描述和使用。表格1介绍了我们为描述分析模式而提出的模板,本文后面部分中的四个模式实例都使用了这一模板。...
使用XP和Scrum通过CMM L2和ISO9001认证
...然后Scrum来了。经历了一年的仅XP使用的工作后,一本关于Scrum [8]的书引起了我们的注意。我们立即认可了问题(issue)3到6,和由Scrum提供的比得上我们介绍自己的解决方案。我们决定结合Scrum和XP,因为XP注重与工程实践,Scrum注重于管理和组织方面,工作进行得非常平稳。他们由称为Sprint的XP计划竞赛和在Scrum中的计划会议相互交迭,这不奇怪,正如Kent Beck在XP中重用Scrum中的元素。后来,我们意识到经常结合使用XP和Scrum,甚至给它一个名字XP@Scrum。 ...
【工具】
通过用例整合业务流、工作流和对象模型
...新的建模技术和应用软件从90年代就已经出现了,主要是由于大量的BPR和OO的出现。今天,工作流模型、统一建模语言(UML)、关系技术、面向对象技术(OO)和用例建模技术代表了主要的无异议的标准。总之,这些是连续生命周期的关键组件。 ...
使用Together让你的项目变得更加敏捷(下)
...我们知道,在CMM中,特别强调在项目中进行代码评审,代码评审可以提高软件项目的成功率,因而XP提倡结对编程,将这一做法发挥到了极致。Together的审计与度量特性可以使你的代码评审过程更加富有效率。....
利用模型驱动架构加速嵌入式软件开发
...MDA特别适用于嵌入式软件开发,是因为它把功能逻辑从执行细节分离出来,并且自动生成和测试任何嵌入应用架构都只使用MDA技术。MDA为嵌入式软件开发人员提供一个根本不同的、高水平的方法来适应变化的需求,提高重用率和扩展系统寿命。....

第42期


【新闻】
Borland为微软的VSTS提供UML支持
IBM Rational新开发平台对非洲的影响
Aonix发布High-Integrity Profile for Ameos
Metamill公司发布Metamill 4.0-支持UML2.0的UML CASE工具
【访谈】
连接三种建模技术――王晓昀访谈
...一般大公司里会有三个软件:用Rose或Together画UML,用PowerDesigner或者ERWin做数据库设计,还有企业流程建模的工具。如果说只允许选择一种工具来完成上面三个任务,一般人都会选PowerDesigner。因此微软的动作对我们来说影响不大,我们支持微软,不和微软竞争。像某些厂商那样集成度高有好处也有坏处,很容易造成重复购买。应该允许从这家买点这个,从那家买点那个,这样有选择的话,厂家就不容易提价。...
重构极限编程(上)
...从根源来说,我最早是几年前在OTUG(the Object Technology User Group),主要是与Bob Martin和Ron Jeffries,开始关于XP的争论。在热烈讨论克莱斯勒C3项目的下马到底是公司所声称的成功还是在我们很多人看来的失败时,这场争论达到了白热化。我随后的一些幽默讽刺被广为接受,特别是我在UMLWorld主题演讲并且在最近的Rational用户大会再次演说的《Alice in Use Case Land》 ...
【方法】
使用Borland ALM解决方案的统一过程
...统一过程 (UP) 和它的一个广为人知的改进产品——IBM Rational 统一过程或称RUP,都包含一个最佳实践的集合。以下6个实践都来自于对成功开发团队的观察资料。[RUPBP]下面的部分将描述Borland ALM解决方案是如何在对这些最佳实践的支持中领先于同类产品的。...
Charles Simonyi的新方向
...如果你让Simonyi 解释怎样使像工蜂那样的编程工作可以自动完成,从而消除由于人为差错造成的程序错误,他会给你举出喷气发动机的例子。他说,拿涡轮叶片来说,它们必须做得非常精确。即使由很细心的熟练工人加工叶片,仍然不可能达到你要求的精度,而必须另造一台机器来加工叶片。其中会有人干预这个过程吗?当然,制造、维修和调整机器必须由人来完成。机器也会出错,机器一旦出错会很显著,你能马上发现,并改正它。程序编码也是如此。不需要人去接触编码。否则程序易于出错。人能制造这种机器。...
XP和FDD的比较
...XP几乎完全省略了这个步骤。来自XP社区的建议是:“我们建议你应该写一个能够满足需求的程序,文档尽可能少”。FDD也不需要创建设计文档。在Process One的最后,开发者创建一个UML图的描述,用来记录一些被否决的可选方法以及该决定的原因。这些文档以后会有用:在一个耗时很长的项目里,人们可能会忘记最初决定的细节,文档可以作为提醒。如果用户要求,正式的用户需求可以在这个文档的基础上撰写。 ...
开源软件的可用性
...但是当为这些非技术用户设计产品时,传统的可用性问题就出来了。在Greenstone研究(Nichols et al., 2001)中,一些命令行的使用习惯,如正确的执行没有提示会使用户迷惑。使用名词’man’(UNIX命令行)来代表帮助系统,在GNOME界面中使用名词’regexp’(正则表达式)都是典型的将开发人员的术语呈现给最终用户的案例。开源软件方法在解决可用性问题时失效了,因为查看界面的都是一些“错误的眼球”,他们不能发现可用性问题。从某些方面来说,开源软件可用性的问题重现了早期商业软件开发中的一些问题:最初,大多数应用是计算机专家为另一些计算机专家开发的,但随着时间推移,系统的使用者中的大多数变成了非专家用户。向非专家用户转移,开源软件和商业软件走过了相同的轨迹,只是开源软件晚了几年。 ...

第43期


【新闻】
聆听James Rumbaugh的演讲
Borland的ALM产品2004年赞誉如潮
IBM掀起Atlantic大潮
Accelerated为使用UML的嵌入式开发人员提供应用开发平台
【访谈】
通过纪律达到敏捷——一场辩论
...从前,在一个叫“隐喻”的岛上,住着一只猴子和一只大象。他们都住在一条宽阔、水流湍急的河水的一边。河水两岸长满了果树。猴子很敏捷。他能够爬到果树的顶部,尽情地吃水果。大象很高。他能够用躯干够着果实并尽情享受。 但是果树越长越高。很快大象就够不着果实,也就吃不饱了。但是他很强壮,能够自给自足。他发现当他饥饿的时候,他可以把树扳倒,吃果实。
...
【方法】
业务建模 vs 系统建模
...业务用例就是使用用例的观点来研究业务,把业务内部的各种流程看成是为业务执行者提供价值的方式。这种思路对改进业务流程有非常大的帮助:先归纳出业务对外提供什么价值,再思考如何更好地优化内部流程来实现这些价值。Ivar Jacobson在这方面做出了主要的贡献,可以参看他的著作《软件复用》...
业务建模实践:使用RUP、WBI Modeler和Rose/XDE
...目前,IBM软件组提供两个用来指导业务建模的补充产品组: IBM WBI Modeler,它与IBM的流程配合与监控的产品捆绑。WBI Modeler支持在RUP业务建模规则中定义的建模活动的一个子集,主要是业务用例的可视化实现。WBI Modeler也提供了允许分析模型的模拟能力。IBM Rational Rose/XDE, 支持全面的UML业务建模,并且捆绑在IBM的软件开发平台和由RUP业务建模规则定义的所有建模活动中。...
需求问题的根源-需求启发
...当我们关起门来“编写有效用例”的时候,当我们激烈争辩一个用例的“粒度”的时候,一定要记住,答案根本不在我们这里,在涉众那里。到第一线去,用我们上面提到的各种技术,探索涉众心中所想,才是需求的正道。...
从基本用例到对象
...Sokoban是一种涉及仓库中“箱子”、“架子”和“墙”的难题。当唯一可用操作是“推箱子”时,目标是将所有的箱子放到架子上。这里有一些变化。其中一个如下:Sokoban游戏包含一个关卡集。每个关卡描述一个仓库,由一个墙、架子、箱子和工人的起始位置的集合组成。倘若箱子对面是空的或空架子,工人可能在任何空位置移动,或者移动到被箱子占有的位置。也就是说,工人只能“推”箱子。当所有的箱子在架子上时,这一关卡完成,下一关卡开始。一旦所有关卡完成,游戏结束。如果游戏结束时游戏者既没有重新开始一个关卡也没有跳过任何关卡,然后他们输入游戏排行榜中他们的名字。...
UML重构浏览器
...其中一个role name是和类名本身一样。这样看来DeliveryAddress这个类名不是很合适。使用rename class重构,把类名改成Address,这样就更好的反映出它的用法。因为这是一个非常简单的重构,不会出现冲突。如图2...

第44期


【新闻】
DMTF和OMG结盟用UML和XMI来打造CIM
新工具简化UML顺序图和call flow图的绘制
Ivar Jacobson中国行,在CSDN做交流
IRIS2.0自动化RUP过程
软件工厂+DSL: 微软对MDA的回答
Sybase宣布PowerDesigner 11
【方法】
从业务建模到需求说明的转换
...从业务建模到需求说明的转换至今尚无规范的定义,但用我们的方法可以得到一种直观感受。我们的方法包含了以下几步: 首先建立业务流程模型,再由业务流程导出用例模型,然后通过模式匹配来组织用例。...
UP实作的一些常见问题(上)
...用"治病"举例,对于复杂的病情,必须承认这个事实:一次性地检查症状、拟定治疗方案、实施是不可能的。应该分成若干疗程,根据病人的情况随时调整。但不管如何“迭代”地治疗,检查 (拍片、望闻问切) 的技能、拟定治疗方案的技能,实施治疗方案(打针、理疗、手术)的技能必不可少。如果医院团队不具备这些技能,把一个虚的“过程”倒背如流又有什么用?...
掌握需求管理中的需求
...如果使用了统一的模版,就上升到了第二级别(有组织的)。有组织的文档不但要求所有的文档格式化,而且要求它们要采用统一的格式和编号方案,并进行版本控制,这一点与CMM的第二级别是相同的。然而,组织可以不借用任何具体的需求管理工具而达到这一级别,这是因为这一级别关注的是一致性和建立过程,而非可跟踪性和度量指标。这一级别还要求组织进行培训并对原有过程做出相应改进。...
方面——丢失的链接
...自从1986年用例被引入到需求规约中,很快,用例就成了这方面的流行工具。在需求获取阶段开始用例,在分析和设计阶段被转化为协作关系,并在测试阶段转化为一种变体——测试用例。因此,我们可以把系统概念化,就如同把一条面包切成片。使用用例,我们能够通过生命周期各个阶段的元素把系统切成“用例片”,几乎所有的阶段都可以做到。为何是“几乎”,而不是全部呢?有两个原因:首先,构造一个构件或类,我们必须合并来自多个用例的代码,最终这些独立的块已无法辨别。其次,UML中的用例扩展机制(通过<<extend>>关系表现)却无法被分析元素和设计元素(类、构件等)的“协作关系”所支持,更不能被Java、C#等实现语言所支持。根本的问题是当前实现语言的局限性造成的。...
从UML状态图产生代码
...使用状态图的OO方法学充分的叙述了描述对象行为所遵循的步骤,但是未能描述在OO语言中状态图的实现,这是因为缺乏对状态图的语法支持。高层次的建模语言和编程语言之间存在一个鸿沟。从类图到OO编程语言的转化是简单的,并被多数CASE工具支持。为了实现面向对象系统的行为,必须要实现描述类动态行为的状态图。我们的工作是在设计和实现之间架起一座桥梁。通过在Java语言和UML之间的映射,我们可以直接从状态图产生低层次的Java代码。我们的主要目的是在OO语言,如Java中,展示一个简单和有效的UML状态图实现方法。本文所提出的实现技术是有价值的,因为它们提升了抽象层次,并且支持直接将状态图映射到紧凑和有效的代码。...
Web应用中的设计模式
...例如,在设计对不同在线商店中的书目价格进行比较的应用时,用户可能需要通过作者、题目、关键字、或ISBN号来进行检索。检索结果是由每一个商店中的价格、是否有货构成的表格。用户可以将在该网站上不同的检索结果进行保存。关键的功能(如about us, search, saved results)在每一个页面中都应该具备。站点的导航设计产生了上述的站点地图。...

第45期


【新闻】
微软: "UML and more" 的延期和期待
Forrester发布MDA和基于模式开发报告
Excel公司正式发售WinA&D 4.0
【访谈】
重构极限编程(下)
...相关于我们一直在做的研究,Rob和我最近几天创作的一首歌已经在我的脑子里(甚至Matt都还没看到过,它是新歌,但是它涉及到我们已经讨论过的一些观点)。如果您的杂志还有地方,您的读者或许对此有兴趣…它叫“单元测试编写者”,它配上披头士乐队“Paperback Writer”的旋律。...
【方法】
《UML参考手册》2.0中译本摘录
...UML是一门博大多变的建模语言,适用于许多层次和开发生命周期的不同阶段。有人批评它过于庞大和复杂,但是对于任何现实世界中实际使用的通用应用程序来说,复杂性都是固有的,比如操作系统、编程语言、多媒体编辑软件、电子表格编辑器和桌面系统。这些应用能够变得很小,如果把他们做成玩具。UML的开发者们并不希望它只是一个玩具。...
《对象设计》中译本样章
...对于软件对象,Alan Kay最喜欢的类比是生物系统。和细胞一样,软件对象并不知道别的对象内部是怎么工作的,但是它们互相沟通,并且协同执行复杂任务。与此相反,“浑然一体”的单体式软件则像机械钟那样包含无数的齿轮。每个齿轮都不具备智能,只和其他邻近的齿轮发生关系。这样的设计不仅仅是具有瑕疵,而且无可救药。Kay说过,“当你制造机械钟的时候,最后复杂性总会达到某个地步,就像搭积木一样,再多垒一块整个结构就会倒塌。”...
UP实作的一些常见问题(中)
...这种习惯比较隐蔽。“订单项”里带有“零件编号”,看起来很符合现实――订单打印出来,每一个订单项上会有零件编号,但“零件编号”并不是“订单项”的属性,而是零件的属性。“订单项”知道的是“零件”。映射到关系数据库时,确实需要把“零件”表的主键(可能不是“编号”而是系统生成的代理主键)放在“订单项”表中建立外键连接,但类图并不需要理会这些。...
《About Face 2.0》中译本精彩节选
...很多开发人员认为理想的界面应该与用户进行双向交流。然而,大多数用户都不这样想。例如,他们更愿意用和自己的车交互的方式与软件交互。打开车门,上车,然后去目的地。要继续向前时踩油门,想停下来时踩刹车,转弯的时候打方向盘。 这种理想的交互情形不是对话,更像是在使用工具。当木匠看到锤子时,他不想和锤子讨论钉子的问题。他会直接用锤子钉钉子。在车里,如果司机想改变方向,他转动方向盘。司机喜欢通过合适的设备从车子和外部环境直接获得反馈:挡风玻璃外面的视野;仪表板的读数;疾驰而过的风声;轮胎压在道路上的声音;对侧向重力的感觉以及路面传来的的振动。木匠也希望有类似的反馈:钉子下沉的感觉,铁互相击打的声音以及举起锤子的感觉。 司机当然不期望车子通过对话框与自己交互,木匠更不希望看锤子上显示这样的信息(如图9-1)。...

用例点估算方法
...人们设想,基于用例模型来估算规模和工作量是可能的。因为用例模型被广泛用于捕捉功能需求,所以人们认为,应该有基于用例的估算方法来代替功能点方法。然而,有几点困难可能阻碍基于用例的估算方法的应用(Smith, 1999):....
使战略规划和敏捷开发相一致: 扩展敏捷思考用于业务改进
...在确信对订单处理过程有控制能力以及希望降低物资损耗的情况下,客户要求我们实现一个在上午11点前将店长锁在系统之外的功能,以此迫使他们在掌握实际需要的供货量之前就把订单发出来。我们同他在物流中心一起坐下来开了一个会议,他说:“哈哈,我现在能让所有的店长在中午之前就把他们的订单发出来!”...
【书籍】
《人月神话》和《功夫》……
...忽然发现“功夫”是一个描述软件开发度量的理想单位(终于绕回本行了 ),想想《人月神话》中反复讨论的人-月之间的关系,想想项目管理三角中的资源-时间-功能和三角中间的质量。“功夫”两个字,似乎都已蕴含其中了。 ...

第46期


【新闻】
Borland购入外脑来驱动SDO
微软冷眼旁观UML2.0
Compuware和SteelTrace结盟
【方法】
会写代码就会写需求
...写得好的程序包含增加代码信息解释它做什么或为什么这样书写的注释。好的注释不解释代码如何做,这些从代码本身看来很明显,相反地,它提供帮助用户,维护者和评审员去理解代码做什么和保证编码质量的知识。同样,需求也有属性,使需求更易于理解和使用的信息。当你得出需求时,你也应当发现属性信息。例如,一个重要的属性是来源:需求来自何处?如果你需要回去得到更多的信息,对你的需求来源保持跟踪将节省大量的时间。另一个属性是用户优先级。如果一个用户给你50条需求,它也应当让你知道每一条需求与它相关的需求如何重要。然后在项目周期的后期,当时间越来越少,你意识到不能满足每一条需求时,你至少知道哪一些是最重要的。...
精确用例
...Cockburn[7]总结说人们不喜欢写形式的用例。他坚决认为,虽然形式或者非形式的用例都不能自动产生系统设计,用户界面设计,或者特征表单。形式用例似乎(做起来)费力,没有什么益处。但是,形式的用例能支持自动设计测试(手工或者自动的)脚本。另外,在精确上的尝试可以发现非形式描述中的潜在问题。有时,由于产品风险的本身和其涉及的范围必须保证是形式的...
在嵌入式系统开发中应用敏捷方法
...一个要求所有组件都工作才能提供有用功能的系统称为“整体式系统”。组件性能到系统性能的非线性跳跃和其他类型的软件相反,其他软件在完成50%时就能提供50%或更多的功能。例如,建造一个用于旅行或到其它星球并发回信息的航天探测器。虽然存在很多航天探测器组件的底层职责,例如定位、着陆、展开探测器、展开太阳电池板、和通讯,且每个底层职责都是整体功能不可缺少的组成部分。但如果任一重要组件失灵,航天探测器就无法使用,即使此时其他的所有组件都运作正常。...
UP实作的一些常见问题(下)
...甚至也可以不用UML的元素。如使用CRC卡取代顺序图(协作图)作为职责分配的工具,用户故事取代用例作为一种需求的表现形式等。模型不一定等于图形,它可以表现成任何一种形式,用例文档一定要是“文本”文档吗?对象交互一定是交互“图”吗?关键是其中的内容!...

第47期


【新闻】
微软将在VSTS中集成CMMI
Genuitec宣布MyEclipse 4.0
Borland升级在Eclipse的会员资格
Ivar Jacobson中国行
【方法】
字斟句酌看UML变迁(上)
...那个《database》不见了。在UML1中,组件可以用来表示物理结构,象数据库、DLL、EXE、JSP…等,在UML2中,这样的表达由部署图中的工件承担。组件的重点已经从UML1中的物理视图转向了更加逻辑的概念,这样它们就能够在概念模型中使用。...
用UML为系统的系统建模
...如今,随着系统的复杂程度日益提高,产生了“系统的系统(Systems-of-Systems)”这一概念。传统系统工程(System Engineering)中,为复杂系统进行建模的方法是进行功能分解,从而确定系统的每个主要功能;接下来,一旦主要功能被确定,就再使用同样的方法将大的功能划分为小的功能。该建模方法倾向于从工程师视角,而不是用户视角来描述系统。这种做法有失偏颇,因为它可能导致产生一个技术复杂、而未必满足用户需求的系统。相反,本文介绍了一种现代面向对象系统工程(object oriented systems engineering ,OOSE)方法,来解决“系统的系统”相关的规格说明及分解问题。...
在核仪器控制软件中应用敏捷方法
...NBIP(The Neutron Beam Instruments Project,中子波仪器项目)的主要任务是为一个正在准备实施的仪器提供一个先进、稳定、可扩展的控制系统,并能够积累操作员的经验。这个项目的特殊之处在于,开发团队是在没有硬件设备,甚至有时连元器件都没用的条件下开始工作的。...
游戏设计模式
...我们的level设计人员无法百分之百地保证什么样的droid会穿过房间,在许多情况下,他们创造出独特的物理过滤器机制,在一个level只允许特定类型的droid能通过:一个陡峭的山丘会清除两足的droid,一个深坑会清除有轮子、不能跳跃的droid,一个峡谷会清除宽的droid,一扇矮门会挡住高的droid。设计者使用地形作为障碍,来降低迷宫的复杂度。...
【工具】
UML相关工具一览A-I
...自称为“IMDE”(集成建模和开发环境)。双向工程以垃圾代码少而颇受好评。提供对Visual Studio .NET 2003和Sun One Studio Java开发平台的集成支持。还可以和ER/Studio, Caliber, DOORS集成,支持协作开发。...

第48期


【新闻】
Borland再次携手.NET
SI的军队系统UML应用
UML工具SDE获得Jolt奖
【访谈】
Rumbaugh嘲笑微软在UML上的姿态
...我们会看他们是否真正支持UML。他们现在也在用其他方式支持UML。他们似乎在骑墙,我打赌如果他们发现有足够的人想用UML,如果他们不能说服人们使用他们的方法,他们最终会回到UML上的。但再重复一次,很多的人都认为UML是有用的。只是微软说了一些其他的话,这代表不了任何事情。他们并没有在所有可能的领域获得成功,这是肯定的。...
【方法】
字斟句酌看UML变迁(下)
...在UML2中,状态机和活动的元模型被分离开,并且活动的语义主要(松散地)基于Petri网的语义(把活动图理解成令牌沿活动边流动而不是状态转换),添加了许多新的流特征。节点、令牌等概念就来自Petri网。...
敏捷软件开发中的需求工程
...在DSDM中,JAD 会议用于在项目的开始时获取对新系统的理解。JAD 促进了在不同参加者小组之间的合作、理解和配合。由于参加者会具有不同背景,关于新系统的不同部份的信息可能被收集并为进一步需求捕获提供基础。它们也鼓励客户介入和信任。这显然与敏捷原则是一致的。...
一个生物化学领域的面向对象案例研究
...有五种类型的关系:关联,聚合,组合,泛化,依赖。这四个类设计了复杂的凝血过程(图1),共用了三种关系。接触阶段的类,相应于凝块形成的初期(受损的血管壁中血浆形成胶原质),因为其对内源通路的类有着逻辑上和物理上的依赖,所以使用一个聚合的连线把它们联系起来。这个连线在关系对象的一方有菱形箭头。...
基于MDA的Web信息系统开发方法
...在本节中,我们将展示研究案例的一部分。这是一个马德里电影协会的Web信息系统,电影协会由几条电影院线组成。这个WIS可以在http://kybele.escet.urjc.es/ejemplos/cine_entradas/访问到。它提供协会方方面面的信息,以及在线购买电影票的服务。本文只集中讨论这个WIS的结构维。...
应用程序的安全架构模式
...军事基地的工作人员都有一个徽章,它会在通过检查岗时被检查。他们同样有一些钥匙,允许他们进入他们已被授权的区域。任何人如果没有徽章都不允许进入受限区域。任何人如果没有经过许可而进入受限区域都将受到严厉的处罚。...

第49期


【新闻】
Telelogic收购Popkin
【方法】
爱丽丝漫游用例奇境
...爱丽丝走着走着,突然一只大白兔从身旁冲了过去,在她面前突然停了下来,转了三圈,嘴里喊道,“我们迟了!我们迟了!我们要马上开始写代码!公爵夫人要发怒了!” “你到底在干什么呢?”爱丽丝问道。“迭代!”兔子说道,然后又开始转了圈。“停下来!”爱丽丝说道。“这样的迭代不会让你头晕吗?”她问道。“你能告诉我怎么样从用例到代码吗?”
...
控制软件设计的复杂性
...我们的研究聚焦于辩识出软件开发过程中采用的技术,应用这些技术开发的软件能够经受住代码重构的考验。在这方面,“Demeter法则”(LoD)作出了贡献。“LoD”,通俗的表述就是只与你的朋友们通信,在严格面向对象的开发环境下,遵循“LoD”引起了一些问题,正是这些问题促使我们在“面向方面的软件开发”(AOSD)这个领域进行研究。...
领域驱动设计讨论
...Eric: 很多领域还在领域建模的阶段,只有少数领域已经做得很好,象会计,已经有很多强有力的抽象,总帐,贷方,借方等。但大多数其他领域还是处女地。...
【工具】
UML相关工具一览I-N
...和Eclipse集成,支持多国语言。支持RUP和WAE设计模式,支持DoDAF框架。...

第50期

【新闻】
敏捷开发者发现新西兰人干得更好
Visual Studio 2005要等到2006年了
Telelogic发布基于角色的生命周期集成解决方案
【方法】
敏捷软件开发调查――改进项目的方法
...在Scrum 中强调管理者也能参加会议——但是他们不允许坐在会议桌旁,也不允许站在参与者中。他们不可以说话,只可以倾听。Ken Schwaber以一个不是很有趣的笑话的强调了这点: 一只鸡和一头猪在一起,这时这只鸡说“我们开一个餐厅吧”猪想了想然后说“我们给餐厅起什么名字呢?” 鸡说:“Ham n’ Eggs!” 猪说:“不好。我要对餐厅负责,但是名字中只提到你!” ...
模型驱动软件开发模式(上)
...模型驱动软件开发(Model-Driven Software Development,MDSD)是一种软件开发方法,旨在通过领域相关模型(domain-specific model)开发软件。领域分析、元建模、模型驱动的自动生成、模板语言、领域驱动的框架设计、以及敏捷软件开发原则,扮演着这种方法的中坚力量,而OMG的MDA是这种方法的“特有风味”。 ...
采纳RUP――缺陷和解决方案
...项目成员被分派到一个学习流中,这个学习流符合RUP的原则。这比选择RUP角色更重要,它激励团队通过小组学习整合。下表列出了学习流、项目成员在流中执行的关键活动、执行活动所需的技能以及使用的工具。...
需求工程师的素质
...一大群人,半夜不睡觉,讨论过去一天的各种事情,然后把它们整理成厚厚的一叠纸,送到你的办公室,只收1元钱。 有一种动物很奇怪,每天从壳子钻进钻出,一到晚上,就几个一组钻进一个壳子里盯着一个发出荧光的盒子一动不动。 ...
【工具】
UML相关工具一览O-Q
...线上的Flash UML工具...基于开源项目ArgoUML的商业产品,支持多国语言。集成到Eclipse,使得Poseidon利用其他工具的方便性大大增加,减少了许多import/export的工作。支持团队建模。下载量已经超过1,000,000份。...

第51期


【新闻】
惠普裁员,Alan Kay离开
Borland发布Together2006
用UML2.0对Linux 2.6 kernel建模
【方法】
模型驱动软件开发模式(下)
...在“Zemindar”项目中,本文作者之一运用DSL实现了在运行期间终端用户的复杂算法和统计函数的设计。在这个例子中,DSL不必发明创造,并且第三方的现货供应的Java电子表格组件被作为DSL在项目中应用。这个项目也用到了模型驱动产生器,但重新从头实现一个电子表格功能的框架是很不切实际的——甚至是更加糟糕的,应该尽量“产生”这样的功能。 ...
测试驱动开发全攻略
...千万不要把“测试”和“除虫”混为一谈!“除虫”是指程序员通过自己的努力来减少bug的数量(消除bug这样的字眼我们还是不要讲为好^_^),而“测试”是指程序员书写产品以外的一段代码来确保产品能有效工作。虽然TDD所编写的测试用例在一定程度上为寻找bug提供了依据,但事实上,按照TDD的方式进行的软件开发是不可能通过TDD再找到bug的(想想我们前面说的“完工时完工”),你想啊,当我们的代码完成的时候,所有的测试用例都亮了绿灯,这时隐藏在代码中的bug一个都不会露出马脚来。 ...
【工具】
UML工具发展趋势
...你不喜欢那么正规,觉得白板是最方便的“UML工具”?也行!使用Ideogramic UML(http://www.ideogramic.com/products/uml/),你可以随意在白板上建模,这个工具会使用特有的识别算法把你的涂鸦转换成UML图,还可以通过XMI,输入到Rose等各种提供XMI支持的工具。 ...
UML相关工具一览R-S
...Rose/XDE的新版本。基于UML2.0的高端建模以及工具集,还包括应用开发、Web开发、软件配置管理等工具. 这些工具中都增加了对Eclipse3.0的支持,以及减少手工编码的各种新功能...
【书籍】
《人月神话》2005最新动态
...我们发专业英语的课本,也叫人吐血啊!一个汉字找不到不说,里面的软件工程思想更是表达的那个叫曲折! :( 不过名字还是好听的,叫《人月神话》。刚开始看的时候感觉很浪漫,后来知道人月就是一个人一个月的工作量
本来该半个小时读四篇的,却一篇读了半个小时,还都是错的,好受不了哦. 读完都觉的很内疚呢. ...