标记:ieeeSoftware
从2001年到2005年,我编辑了一个关于设计的专栏IEEE软件.除了自己写了几篇专栏外,我还能拉拢到一群非常杰出的撰稿人。
企业架构师加入团队
企业架构组经常因每天的华体会体育网页版入口开发而分离。这可能导致他们对开发工作的认识过时,开发团队不能从公司的角度出发。看到这种情况经常发生,我的同事(Thoughtworks CTO) Rebecca认为企业架构师可以通过加入开发团队而更有效地工作。
设计以适应变化
表驱动技术允许系统在没有重大代码更改的情况下进行更改。
您的咖啡店不使用两阶段提交
咖啡师不做同步处理——他们的原因可能也是你做异步处理的原因。
之前清晰
清晰的代码是好的,但是你应该为了可测试性而牺牲清晰的代码吗?
快速失败
如果软件要走下坡路,吉姆在这个专栏中解释了为什么它应该尽可能快地崩溃。
最重要的设计准则是什么?
每个人都有自己的重要设计准则。Scott专注于接口以及如何设计接口,使其易于正确使用,难于错误使用。
MDA:建模者的复仇还是UML的乌托邦?
在OOPSLA 2003上,Dave Thomas (OTI的创始人)对模型驱动架构进行了深思熟虑而有力的批判。华体会体育网页版入口在本专栏中,他解释了为什么他认为通用模型驱动方法可能失败,并指出UML和领域特定语言仍然有价值。
连续的设计
重构、JUnit等工具和极限编程(XP)等敏捷方法华体会app下载二维码的日益流行带来了一种新的设计风格。持续设计是使用重构来持续改进程序设计的过程。华体会app下载二维码在本专栏中,Jim讨论了他在持续设计方面的经验,特别是在国际化和事务等看起来很棘手的设计问题上。
数据访问例程
封装的一个常见部分,特别是在面向对象的系统中,是隐藏数据结构。然而,在数据访问例程背后暴露大量数据也是很常见的。在本专栏中,我将介绍编写数据访问例程的一些指导原则。但是不要忘记,如果你可以将数据隐藏起来,那通常会更好。
谁需要建筑师?
什么是架构?架构华体会体育网页版入口师到底是谁?这些问题似乎让每个人都很激动。所以在这篇IEEE软件专栏中,我让Ralph Johnson解释架构:用一种没有人认同的方式来匹配所有其他定义。华体会体育网页版入口我还谈到了建筑师的两种亚种:Architectus Reloadus而且Architectus Oryzus.
市场结构和体系结构的区别华体会体育网页版入口
当我们考虑软件架构时,我们通常会想到它的技术架构。华体会体育网页版入口但是还有另一个重要的架构——我们用来与软件客户沟通的架构:营销架构。华体会体育网页版入口忽视这种“市场结构”及其与“体系结构”的关系,会使开发项目陷入许多麻烦之中。华体会体育网页版入口
组件和混乱的世界
为什么混沌理论认为组件组装可能不像它被吹捧的那么容易。
模式
我的IEEE专栏是关于模式对理解软件设计的宝贵贡献。
何时制作一个类型
关于何时为值创建新的用户定义类型(或类)的指南。
使用元数据
您可以使用基于元数据的方法来消除乏味的面向数据任务的痛苦。
.NET的自定义属性如何影响设计
吉姆和阿列克谢在开发新版本的NUnit中起了主要作用。由此,他们思考了新的。net语言属性特性是如何影响设计的。
另一篇优化文章
经常让我感到惊讶的是,许多公认的性能优化原则并不为人所知。本文是讨论这些问题的另一种尝试。
公共接口与发布接口
许多现代语言都对模块中的公共和私有特性进行了区分。公共功能和出版功能之间的区别并不常见:这可能是一个更重要的区别。
避免重复
有时候,在软件中避免重复的简单规则可以带来好的设计,这是非常了不起的
分离用户界面代码
我学到的第一课就是始终将用户界面代码与其他代码分开。这不仅是很好的建议,而且令人惊讶的是,它经常被遗忘。
受保护的变异:被封闭的重要性
Craig在专栏中关注了开闭原则和受保护变异的重要性,以及为什么Parnas的信息隐藏比封装更重要。他还就如何实现受保护的变体给出了一些建议。
缩径管接头
思考如何可视化和减少耦合。
是明确的
通常情况下,设计技术是用来使系统更加灵活,但最终却变得更加难以使用。其中一个原因是,显性是设计中经常被遗忘的属性。
测试总线势在必行
可测试性是一个非常重要的优点,您应该在体系结构决策中改进系统的可测试性。
模块组装
模块化编程不只是对接口进行编程,它还包括将模块组装在一起,而不让各个模块知道它们正在与哪个具体模块进行通信。
有目标感的建模
你画的模型的种类取决于你想把它们用于什么目的。John描述了概念模型、规范模型和实现模型之间的有用区别。