有很多网站教人们如何构建更好的软件,但为什么很少有网站真正提供我们(作为程序员)应该创建的域的详细描述?在不同类型的系统中出现共同需求模式之前,人们只能构建如此多的库存,会计和ERP系统。从逻辑上讲,如果程序员花费大量时间尝试在他们的架构中创建可重用的组件,这是否意味着他们应该有一些可重用的“蓝图”来描述他们应该创建的系统?换句话说,似乎软件开发的重点一直集中在“应该如何”构建软件而不是编目和准确指定(具有详细要求)首先应该使用“什么”。
所以我的问题是:是否有任何工作要将所有不同类型的系统规范编入一个地方,所有这些都在一个站点上?如果在项目开始时缺乏适当的要求是软件开发的祸根之一,那么能够从已经编写过的相同类型的先前系统中“重用”需求规范会不会更有意义吗? / p>
答案 0 :(得分:6)
有,但它们通常由想要向您推销解决方案的供应商运营。 : - /;
答案 1 :(得分:5)
有一个网站Database Answers试图为常见的数据库设计提供解决方案。这与你所描述的完整解决方案不同,但它是朝着正确方向迈出的一步。
你评论“[o] ne只能在”共性变得明显之前构建这么多系统。然而,那些构建了足够的系统以发现共性的人然后试图通过创建他们的共同系统版本从中受益,然后他们将其出售。为了让其他可能做同样事情的人能够伸出援助之手,他们并没有(被认为是)他们的利益。
答案 2 :(得分:4)
我完全同意,'Dummy的库存IT指南',客户认可的数据模型,地址和联系方式等等。我发现自己在很多不同的地方重新实现相同的代码,巧妙的不同领域和逻辑,但基本相同的东西。几年前,我找到了一个预煮数据模型的网站 - 朝着正确方向迈出了一小步,但不是整个故事Universal Data Models(没有连接)。你会注意到他们对他们的产品没什么兴趣。
我还在一些组织中工作,这些组织正在开发自己的“通用”数据模型作为可销售的产品。一个是金融服务领域,他们有超过1500个DB2表,并放弃了。组织以自己的独特性而自豪,而我们(技术人员)意识到,在幕后大多数人都在做类似的事情 - 我认为这可能对公司的自我造成太大损害,并承认他们与其他人一样使用UniversalCustomer(TM)1.7。这也使得这些公司成熟了一些SAP,Peopleware等。
作为最后的想法 - 这里的entreprenaurs有很多低调的果实。一套体面的描述共同领域的短书。我的意思是超级简单的东西,人名,地址,电话等 - 所有的小错误,如不同文化中的标题,处理电话号码布局 - 现在有很多人可以使用的书/维基。
答案 3 :(得分:3)
根据我的经验,它分崩离析是用户界面所包含的用例。事实上,我已经设计并建立了一个库存系统,该系统已应用于各种组织和行业(电信,食品,医疗保健,电子制造和分销,消费品,服装,航空航天等许多其他行业。)上半年后 - 打了一个很好的数据模型,它对所有这些模型的变化很小(扩展,但没有变化)。
但即使在一个行业内,由于多种原因(产品性质,数量变化,平均订单规模进出,会计要求,员工激励等等),工作方式由真人完成因为很好的理由而变化很大。
请注意,上面的示例似乎都是关于更深层次的抽象级别 - 特别是数据模型 - 我们的程序员可以按照我们的方式,为了我们的利益。离我们移动的用户越近,我们的兴趣就越需要成为他们的继承者。
最坏情况示例:是否有其他人注意到员工安排和工作日报告系统中的模式显示每个屏幕一周,以及多屏数据输入表单?
答案 4 :(得分:2)
查看Len Silverston撰写的数据模型资源手册:
从数据模型的角度来看,它与可重用设计相对应,而不是最终用户要求或OO设计。但是,我发现这非常有用 - 一旦掌握了数据模型,就会大大提高需求和最终将被建模为类的实体。
答案 5 :(得分:1)
这将是无法解决的。您不可避免地从为系统分发RFQ的任何人那里获得的第一个断言是:“我们不像其他公司。我们的要求是独一无二的。” (而且从来都不是。)
答案 6 :(得分:1)
如果您要重用这些要求,您也可以重用代码。但在较低的层面上,我认为你所寻找的将是“需求模式”,与“编程模式”一致。
现在来自Microsoft的here is a book主题,但与所有域模式一样,我们的想法是它们应该有机地增长并满足域用户和专家的需求。如果你想要这个想法的真正来源,请查看seminal book on patterns,虽然它来自架构,而不是编程,但惊喜:)
答案 7 :(得分:1)
在80年代和90年代早期,有一个巨大的“软件重用”运动。有一个相当大的行业人员构建和调整软件组件的目录。它被许多人视为软件的未来。 Will Tracz的“使用软件销售员的自白”是一个很好的概述;谷歌术语“布拉德考克斯软件IC”,“马丁格里斯”。我记得,胜利被宣布,每个人都转向其他问题。
我看到Brad Cox的“规划软件工业革命”在线:
http://www.virtualschool.edu/cox/pub/PSIR/
答案 8 :(得分:0)
政府已经做出各种努力来尝试和标准化数据模型,以便在不同的机构之间进行共享,但这些在所需要的地方之外几乎没有被采用。例如,在加拿大,我们有CPSIN。
答案 9 :(得分:0)
你可能想查看Martin Fowler的Patterns of Enterprise Application Architecture - 虽然不是规格,但它似乎是关于你所追求的事情。
免责声明:我自己没有看过,我只知道它的存在。
答案 10 :(得分:0)
拥有一个代码模式的中央存储库,各种语言都会很好。然后,我们可以展示我们惊人的代码,让它更容易相互学习,并通过提供xyz服务/产品的良好示例来提高整体代码质量。
我的意思是,我们的编码项目中有多少是独一无二的,没有人曾经做过它?
我粗略猜测,我们98%的工作是由许多不同公司,类似行业,类似功能需求的其他人完成的工作。
我的意思是这是stackoverflow应该落后的事情。不仅要分享和讨论问题,还要学习彼此的代码。
答案 11 :(得分:-1)
谁会创造这样的东西?谁使用呢?
我可以说,您正在谈论应用程序设计库。愿意分享这些详细设计的人已经这样做 - 以开放式规范或开源形式。前者倾向于吸引大多数已经参与创建实现此类规范的产品的人员和组织,或者与系统相互作用的产品。后者......好吧,为什么在你可以破解资源的时候为什么要重新设计呢?
作为Mark Harrison notes, 有很多公司愿意推广他们的常见业务系统设计。他们会告诉你,“购买我们的系统,只需坚持你的组织所需的功能”。 “为什么浪费时间重新实施我们已经完成的事情?”他们分享详细的实施规范的动机真的很少,因为他们真的不希望你重新实现他们想要卖给你的东西。
最后......这些事情真的不是那么复杂。或者更确切地说,它们是......但是复杂性是由于任何给定组织可能对系统施加的各种神秘要求组合而产生的。真正的工作在于解释这些要求,将它们构建到基础系统中 - 虽然可能很乏味,但这是不可避免的。