26

有很多网站可以教人们如何构建更好的软件,但为什么很少有网站能够真正详细描述我们(作为程序员)应该创建的领域呢?在不同类型的系统开始出现共同需求模式之前,人们只能构建如此多的库存、会计和 ERP 系统。从逻辑上讲,如果程序员花费大量时间试图在他们的架构中创建可重用的组件,这是否意味着他们应该有一些可重用的“蓝图”来描述他们应该创建的系统?换句话说,似乎软件开发的重点过于关注“如何”

所以我的问题是:是否有任何工作将所有不同类型的系统规范分类到一个地方,都在一个站点上?如果在项目开始时缺乏适当的需求是软件开发的祸根之一,那么能够“重用”以前已经编写的相同类型系统的需求规范不是更有意义吗?

4

12 回答 12

6

有,但它们通常由想要向您出售解决方案的供应商运营。:-/;

于 2009-01-19T02:28:22.347 回答
5

有一个站点Database Answers试图为常见的数据库设计提供解决方案。这与您所描述的完整解决方案不同,但这是朝着正确方向迈出的一步。

你评论“[o]ne can only build so many [...] systems before”共性变得显而易见。然而,那些已经构建了足够多的此类系统以发现共性的人然后试图通过创建他们的通用系统版本来从中受益,然后他们将其出售。向可能做同样事情的其他人伸出援助之手不符合他们的利益(被认为是)。

于 2009-01-19T02:54:47.457 回答
4

我完全同意,“虚拟库存 IT 指南”、客户、地址和联系方式等的认可数据模型在哪里。我发现自己在许多不同的地方重新实现相同的代码,但字段略有不同和逻辑,但基本相同。几年前,我发现了一个预先准备好的数据模型网站——朝着正确方向迈出了一小步,但不是通用数据模型的全部内容(无连接)。你会注意到他们对他们的产品没有太大的兴趣。

我还曾在一些正在开发自己的“通用”数据模型作为可销售产品的组织中工作。一个是在金融服务领域,他们获得了 1500 多个 DB2 表,然后放弃了。组织以自己的独特性而自豪,而我们(技术人员)意识到,大多数人在幕后都在做非常相似的事情——我认为这可能对企业自我造成太大的伤害,无法坦白,并承认他们和其他人一样使用 UniversalCustomer (TM) 1.7。这也使这些公司成熟了一些 SAP、Peopleware 等。

作为最后的想法 - 这里的企业家有很多低调的果实。一套体面的描述共同领域的短书。我的意思是超级简单的东西,人名、地址、电话等——所有的小缺点,比如不同文化中的标题,以及处理的电话号码布局——现在有很多人可以使用的书/wiki。

于 2009-01-19T02:48:02.230 回答
3

根据我的经验,它分崩离析的是 UI 包含的用例。事实上,我已经设计并构建了一个库存系统,该系统已应用于各种组织和行业(电信、食品、医疗保健、电子制造和分销、消费品、服装、航空航天等)。上半年之后——十几个,一个很好的数据模型出现了,对所有这些模型几乎没有变化(扩展,但不是变化)。

但即使在一个行业内,由于各种原因(产品性质、数量变化、进出的平均订单大小、会计要求、员工积极性等),真人完成工作的方式差异很大,有充分的理由。

请注意,以上所有示例似乎都是关于更深层次的抽象级别 - 特别是数据模型 - 我们程序员可以按照自己的方式进行操作,这对我们有利。我们离用户越近,我们的兴趣就越需要成为次要的。

最坏的例子:有没有其他人注意到员工计划和工作时间报告系统中每个屏幕显示一周和多屏幕数据输入表单的模式?

于 2009-01-19T09:06:37.923 回答
2

查看 Len Silverston 的数据模型资源书:

http://www.amazon.com/Data-Model-Resource-Book-Vol/dp/0471380237/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1232336996&sr=8-1

它从数据模型的角度接近可重用设计,而不是最终用户需求或 OO 设计。但是,我发现这非常有用——一旦你很好地掌握了数据模型,你就会对最终将被建模为类的需求和实体有了很大的了解。

于 2009-01-19T03:54:43.233 回答
1

它会卖不出去。您不可避免地从任何为系统分发 RFQ 的人那里得到的第一个断言是:“我们与其他公司不同。我们的要求是独一无二的。” (而且从来都不是。)

于 2009-01-19T02:59:27.633 回答
1

如果你要重用需求,你也可以重用代码。但是在较低级别上,我认为您正在寻找的是“需求模式”,类似于“编程模式”。

现在这里有一本来自 Microsoft 的关于该主题的书,但与所有域模式一样,其想法是它们应该有机地发展并满足域用户和专家的需求。如果您想了解这个想法的真正来源,请查看关于模式的开创性书籍,尽管它来自架构而不是编程,但令人惊讶 :)

于 2009-01-19T03:07:23.827 回答
1

早在 80 年代和 90 年代初期,就有一场巨大的“软件重用”运动。建立和调整软件组件目录的人员规模相当大。许多人认为它是软件的未来。一个很好的概述是 Will Tracz 的“二手软件推销员的自白”;谷歌术语“Brad Cox Software IC”、“Martin Griss”。我记得,胜利宣告了,每个人都转向其他问题。

我看到布拉德考克斯的“规划软件工业革命”在线: http:
//www.virtualschool.edu/cox/pub/PSIR/

于 2009-01-29T12:12:37.343 回答
0

政府为尝试标准化数据模型以实现不同机构之间的共享做出了各种努力,但除了需要的地方之外,这些方法几乎没有采用。例如,在加拿大,我们有CPSIN

于 2009-01-19T03:10:16.850 回答
0

您可能想查看 Martin Fowler 的企业应用程序架构模式- 虽然不是规范,但它似乎与您所追求的东西有关。

免责声明:我自己没有读过它,我只知道它的存在。

于 2009-01-29T12:30:25.043 回答
0

拥有一个包含各种语言的代码模式的中央存储库会很好。然后,我们既可以展示我们令人惊叹的代码,让彼此更容易学习,也可以通过提供 xyz 服务/产品的良好示例来提高整体代码质量。

我的意思是,我们有多少独一无二的编码项目是其他人从未做过的?

我粗略的猜测是,我们 98% 的工作都是由许多不同公司、类似行业、类似功能需求的其他人完成的。

我的意思是这是stackoverflow应该落后的那种事情。不仅要分享和讨论问题,还要学习彼此的代码。

于 2010-10-13T14:02:36.417 回答
-1

谁会创造这样的东西?谁会使用它?

据我所知,您说的是应用程序设计库。愿意分享这些详细设计的人们已经在这样做了——以开放规范或开源的形式。前者往往会吸引大部分已经参与创建实现此类规范的产品的人员和组织,或者与实现此类规范的系统互操作的产品。后者……好吧,既然可以破解源代码,为什么还要费心重新实现设计呢?

正如Mark Harrison 所说,有很多公司愿意推广他们的通用业务系统设计。“购买我们的系统,然后为您的组织添加必要的功能”,他们会告诉您;“为什么要浪费时间重新实现我们已经做过的事情?” 他们真的很少有动力分享详细的实施规范,因为他们真的不希望你重新实施他们试图卖给你的东西。

最后......这些事情真的没有那么复杂。或者更确切地说,它们是……但复杂性源于规模,源于任何给定组织可能对系统施加的各种神秘要求的组合。真正的工作在于解释这些需求,将它们构建到基础系统中——尽管可能很乏味,但这是不可避免的。

于 2009-01-19T02:53:34.667 回答