期间:2003
发布接口
发布接口是我使用的一个术语(第一次在华体会app下载二维码)来引用在定义它的代码基之外使用的类接口。因此,它比Java中的public更有意义,甚至比c#中的非内部public更有意义。在我为IEEE Software撰写的专栏中,我提出了这个观点公开与公开的区别实际上比公开与私人的区别更重要。
《西方往事
我的朋友们都是极客,所以他们中的许多人都期待着2003年11月《双塔奇兵》加长版DVD的那一天(在我的朋友中,加长版DVD是唯一值得拥有的)。但对我来说,那一天标志着另一个释放,在很多方面都同样重要,塞尔吉奥·里昂的大西部片终于出了DVD。
导出信息
您如何在UML中表示派生的信息?
P o j o
缩写:普通旧Java对象.
提供服务存根
对于为面向服务的体系结构构建服务的任何人来说,这是一个重要的思想。华体会体育网页版入口在构建服务时,还要构建一个服务存根你的客户可以用来测试。这样的存根应该为一组固定的请求提供固定的响应,模拟错误条件,并且可以在客户机的机器上运行。您需要确保存根正确地模拟真实的系统行为。通过为客户提供存根,您可以使客户更容易使用您的服务;这当然意味着您的服务更有可能被使用。
面向命令的接口
模块接口的最常见风格是使用过程或对象方法。因此,如果你想让一个模块为一个合同计算一堆费用,你可能有一个BillingService类,它有一个方法来进行计算,像这样调用它
aBillingService.calculateCharges(家)
面向命令的接口将为每个操作提供一个命令类,并以如下方式调用
CalculateChargeCommand.new(家).run ()
迭代开发的历史
我遇到的大多数客户都没有听说过迭代开发,或者认为它是一种新的、相对未经尝试的现象。相比之下,迭代开发已经存在了很长一段时间,有各种不同的名称。一个Craig Larman和Vic Basili最近在IEEE软件上发表的文章总结了捕获这段历史的努力,并让您对使用迭代开发方法的成功项目的漫长故事有了一个很好的了解。
不需要的建模语言
UML对不同的人意味着不同的东西,这就是为什么我发现人们使用UML的概念是不同的UmlMode有用的。和我交谈的大多数人都感兴趣UmlAsSketch这个小组对UML 2印象并不深刻。
数据存取例程
封装的一个常见部分,特别是在面向对象的系统中,是隐藏数据结构。然而,在数据访问例程背后暴露大量数据也是很常见的。在本专栏中,我将介绍一些编写数据访问例程的指南。但是不要忘记,如果您可以将数据隐藏起来,那通常会更好。
C - Refactory
到目前为止华体会app下载二维码重构工具已经出现了一些语言。在Smalltalk的引领下,我们看到了几个用于Java的工具和几个用于c#的工具。尽管如此,有一种语言的缺失是显而易见的,那就是c++上诉.尽管事实上第一个重构论文是由华体会app下载二维码比尔Opdyke他的背景是c++。
表示域分离
我发现并遵循的最有用的设计原则之一是在程序的表示方面(用户界面)和其他功能之间保持良好的分离。多年来,我看到了很多这样做的好处:
企业架构华体会体育网页版入口
就在最近,我在亚马逊上看到了一些差评监管局P因为书中没有任何关于企业架构的内容。华体会体育网页版入口当然有一个很好的理由——这本书是关于企业的应用程序华体会体育网页版入口架构,即如何设计企业应用程序。企业架构是一个不同的主华体会体育网页版入口题,如何将企业中的多个应用程序组织成一个连贯的整体。
类图中的局部变量
你如何在UML类图上显示局部变量(参数,温度等)?
远离Xslt
这个站点的所有内容都是用简单的XML文档编写并转换为HTML。我发现这工作得非常好,这意味着我永远不必担心处理HTML格式。(你可以看得出来,我的风格并不是花哨的布局。)我甚至写过一整本书都是这样.
依赖和关联
依赖和关联之间的区别是什么?
平台独立的误用
其中一个重要的观点是模型驱动架构华体会体育网页版入口(MDA)的主要特点是,它允许您以平台独立模型(PIM)开发系统,然后可以将其转换为用于. net或Java等技术的平台特定模型(PSM)。对此,警惕的读者应该说:“等一下,Java的全部意义不就是平台独立吗?所以我为什么要用一些独立于平台的技术来产生另一种独立于平台的技术呢?”
应用程序边界
软件开发中一个悬而未决的问题是确定软件的边界是什么。华体会登录网址(浏览器到底是不是操作系统的一部分?)许多面向服务体系结构的支持者认为,应用程序正在消失——因此,未来的企业软华体会体育网页版入口件开发将是将各种服务组合在一起。华体会登录网址
我不认为应用程序消失的原因与应用程序边界难以划定的原因相同。本质上应用是社会建构:
Seedwork
在面向对象的最早期,像我这样的OO倡导者把大量的注意力放在支持重用的争论上。在前面,我们讨论了类的重用。然后,我们发现重用单个类虽然在某些情况下可行,但在其他地方就不那么管用了。所以我们进入了可重用框架,这让我们有了部分构建的功能应用程序。
重构的词源华体会app下载二维码
这个词是从哪里来的华体会app下载二维码从何而来?
无法衡量生产率
我们看到很多关于软件过程、设计实践等的情绪化讨论。许多这样的争论是不可能解决的,因为软件行业缺乏衡量软件开发有效性的一些基本要素的能力。华体会登录网址特别是,我们没有办法合理地衡量生产率。
货币作为价值
有许多常见的例子ValueObject,我最喜欢的是钱与货币密切相关的是货币。
取悦客户
所有的敏捷方法都强调系统开发人员和最终受益者客户之间直接交互的重要性。敏捷宣言说“在整个项目中,业务人员和开发人员必须每天一起工作”,这是为了强调高频率的交互。极限编程通过实践来强调这一点OnsiteCustomer.
建筑设计师
当人们使用术语“软件架构师”时,他们是在使用一个建筑构造的比喻来帮助人们理解架构师的角色。具有讽刺意味的是,他们这样做误解了建筑建筑师的实际作用。
多重性,而非基数性
当数据建模方法谈论关系时,他们使用这个术语基数表示可以连接在一起的实体数量。因此,您可能在订单和客户之间存在一种关系,并说该关系的基数是一对多的。或者您可能听说订单的客户基数是0到多。
定长字符串
看看大多数介于应用程序编程语言和关系数据库之间的库,您会注意到它们将数据库中的字符串类型(char或varchar)映射到编程语言中的字符串类型。简单,明显,但也许是错误的。
模式并不是什么新鲜事
关于模式书籍的一个常见抱怨是,它们没有什么新内容可以告诉有经验的开发人员。(我最近在亚马逊的评论和网站上看到了一些这样的书服务器端,所以也许我现在感觉很敏感。)这不仅是真的,而且是模式的全部意义。
唱歌的侦探
《歌唱侦探》是英国广播公司在20世纪80年代制作的一部电视连续剧(每集6个小时)。包括我在内的许多人都认为这是他们见过的最好的电视作品。这是一件复杂的作品,可能是有史以来为电视制作的最原始的艺术作品之一。虽然不是每个人都喜欢,但我已经看过很多遍了。最引人注目的是与作家丹尼斯·波特有关,他制作了许多具有挑战性的电视节目。它最近可以在DVD.
固定价格
许多人认为,在敏捷项目中不能采用固定价格的合同。因为敏捷过程的关键在于您无法预测未来,所以这并不是一个不合理的假设。然而,这并不意味着你不能提出一个固定价格的敏捷合同,它真正的意思是你不能提出一个固定范围的合同。
多重规范模型
随便找一家大型企业,您通常会发现一些专注于企业范围概念建模的组织。最常见的是,这将是一个数据管理组,偶尔他们可能参与定义企业范围的服务。它们是企业级的,因为它们不是专注于单个应用程序的工作,而是专注于集成多个应用程序。
历史不是空话
历史或多或少是一派胡言
——亨利·福特
我最近收到了一封来自UML蒸馏的读者的不愉快的电子邮件。当一个愤怒的读者后悔买了我的书,更不用说读了我偶尔的智慧之言时,这对我的一天来说绝不是一个好的开始。但在这位读者的抱怨中,有一点特别有趣。他具体抱怨的是我的“不必要的历史”。
市场结构和架构的区别华体会体育网页版入口
当我们考虑软件架构时,我们通常会想到它的技术架构。华体会体育网页版入口但是还有另一个重要的架构——我们用来与软件客户沟通的架构:营销架构。华体会体育网页版入口忽视这种“市场结构”及其与“体系结构”的关系,可能会给开发项目带来很多麻烦。华体会体育网页版入口
谁需要建筑师?
什么是建筑,建筑华体会体育网页版入口师到底是谁?这些问题似乎让每个人都非常激动。因此,在IEEE软件专栏中,我让Ralph Johnson解释架构:以一种没有人同意的方式匹配所有其他定义。华体会体育网页版入口我也谈到了建筑师的两个亚种:Architectus Reloadus而且Architectus Oryzus.
类型的集合
当人们开始使用对象时,特别是在强类型语言中,一个常见的问题是他们是否应该为不同的域类型拥有特定的集合类。因此,如果你有一个公司类,它存储了员工的集合,你是应该从你的库中使用一个常规的集合类,还是应该创建一个特定的EmployeeList
类——类型化集合。
使存根
测试增强设计的一个常见问题是,如何在测试模式下创建服务存根,同时让真正的存根用于生产(和一些测试)。我的几个同事分享了他们的想法。
Uml2
上周OMG采用了UML 2的上层结构文档。在实践中,这意味着UML 2是一致的。在UML 2中对UML进行了大量的修改——它代表了自UML最初被同意以来对UML的最大的修改。对于普通用户来说,最明显的变化可能是:
包含和扩展
UML用例图定义了用例之间的一堆关系。最著名的是include和extend。关于这两个关系的问题似乎比用例的任何其他部分,甚至可能是UML中的任何部分都要多。
华体会app下载二维码重构畏缩
最近的一次罗伯特·克里格利的作品最近在重构社区引起了一些骚动,因为他批评了重构。华体会app下载二维码菲利普总结了对华体会app下载二维码重构邮件列表带着异常克制的“……”他听起来像个‘怀疑论者’,只会给自己根本不想读的书写评论。”
收获平台
要通过收获构建平台,首先不要尝试构建平台,而是构建应用程序。在构建应用程序时,您不会尝试开发通用代码,而是努力构建一个构造良好且设计良好的应用程序。
基础平台
基础平台是在任何在其上构建的应用程序之前构建的。其思想是分析需要该平台的各种应用程序的需求,然后构建平台。一旦平台完成,就可以在其上构建应用程序。关键在于,在开始开发应用程序之前,平台确实需要有一个稳定的API,否则对平台的更改将难以管理,因为它们会对应用程序产生连锁反应。
Uml模式
当我在看UML 2的时候,我突然想到人们对UML应该是什么有不同的看法,因为对于UML应该是什么有不同的基本观点。当我思考这个问题时,我提出了思考UML的三个主要分类:UmlAsSketch,UmlAsBlueprint,UmlAsProgrammingLanguage.(有趣的是,史蒂夫梅勒独立提出了同样的分类。)
多么了不起的Isa Bliki
我已经关注博客的发展有一段时间了,想不想加入是不可能的。但博客也有我不那么热衷的地方。首先,正如我的同事迈克·托恩(Mike Two)所说,“博客听起来像是我应该花钱请医生去掉的东西”。然而,除了名字之外,博客帖子的短暂性也很重要。短时间的写作在阅读时可能会很有趣,但很快就会过时。我发现写作太难了,不想把它花在消失的东西上。
学习对象的语言
如果我想教人们面向对象,我应该使用哪种语言?
平台建设
你能使用重构来构建一个平华体会app下载二维码台吗?
聚合和组合
在UML中,很少有比聚合和组合更令人吃惊的事情,特别是它们与常规关联的差异。
什么是失败
CHAOS报告称只有34%的项目成功。
斯坦迪什集团的混乱的报告多年来一直在谈论在IT项目上浪费了数十亿美元。34%的成功率实际上比2001年的28%有所提高。但是我们所说的“失败”到底是什么意思呢?
受保护的数据
在我的类中使用数据是好的OO设计吗受保护的AccessModifier吗?
访问修饰符
面向对象语言将程序划分为称为类的模块。每个类都包含由数据(字段)和方法组成的特性。(并不是所有的语言都使用这些术语,但它们会这样做。)对于哪些类可以访问类的特性,语言有各种各样的规则,这些规则通常基于应用于类的访问修饰符。
类图集合
假设你有一个专辑类,它有一个曲目的数组列表。您如何在UML类图中显示这一点?
大型敏捷项目
一个常见的问题是大型项目是否可以用敏捷技术来完成。毕竟,许多敏捷方法是为小型项目设计的,而它们所抗拒的重量级想法在大型项目中更需要。
组件和混乱的世界
为什么混沌理论认为组件组装可能不像它被吹捧的那么容易。
的体系结构华体会体育网页版入口
华体会登录网址软件开发杂志将我的书《企业应用体系结构模式》的第7章(分发策略)改编为他们杂志上的一篇文章。华体会体育网页版入口我怀疑他们喜欢它是因为它的基调和分布式对象设计第一定律。
模式
我的IEEE专栏关于模式对理解软件设计的有价值贡献。
关于扩展XP/敏捷方法的加拿大研讨会
随着XP和其他敏捷方法越来越受欢迎,关于如何将XP扩展到10-12人团队之外的问题开始浮出水面。2003年2月中旬,在加拿大阿尔伯塔省班夫举行了专门讨论这一问题的讲习班。在这篇文章中,我们将报道Ken Schwaber和Martin Fowler以及其他主要从业者的主题演讲。
领域逻辑和SQL
在过去的几十年里,我们看到面向数据库的软件开发人员和内存应用程序软件开发人员之间的差距越来越大。这导致了许多关于如何使用SQL和存储过程等数据库特性的争议。在本文中,我将根据一个简单但丰富的SQL查询示例,主要考虑性能和可维护性,研究业务逻辑是放在SQL查询中还是内存代码中。
何时制作一个类型
关于何时为值创建新的用户定义类型(或类)的指导方针。
使用XML编写
很长一段时间以来,我的大部分写作都是使用XML完成的——甚至我的上一本书也是用XML编写的。当我向人们提起这件事时,他们问了我很多关于我的经历的问题,这足以促使我写这篇关于整件事的小文章。