Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Domain driven design 非编程软件开发是否可行?_Domain Driven Design - Fatal编程技术网

Domain driven design 非编程软件开发是否可行?

Domain driven design 非编程软件开发是否可行?,domain-driven-design,Domain Driven Design,我目前面临一个非常不寻常的设计问题,希望比我聪明的开发人员能够提供一些见解 背景 我被一家非营利性组织雇佣来帮助他们重新开发他们遗留下来的,但非常有价值的(社会价值方面的)软件。开发团队不同于我作为软件开发人员时遇到的任何团队,它由少数开发人员和更多的非编程领域专家组成。让这种安排与众不同的是,领域专家(让我们称他们为内容创建者)使用定制工具(其中一些工具基于prolog专家系统引擎)来开发基于web的软件组件/表单 问题 系统使用非常笨拙的回发模型在服务器端执行逻辑操作并返回新表单/结果。它速

我目前面临一个非常不寻常的设计问题,希望比我聪明的开发人员能够提供一些见解

背景 我被一家非营利性组织雇佣来帮助他们重新开发他们遗留下来的,但非常有价值的(社会价值方面的)软件。开发团队不同于我作为软件开发人员时遇到的任何团队,它由少数开发人员和更多的非编程领域专家组成。让这种安排与众不同的是,领域专家(让我们称他们为内容创建者)使用定制工具(其中一些工具基于prolog专家系统引擎)来开发基于web的软件组件/表单

问题 系统使用非常笨拙的回发模型在服务器端执行逻辑操作并返回新表单/结果。它速度慢,而且容易失败。简单的事情,比如使用现有的工具创建html表单,比它应该做的要困难得多。随着对更具交互性和性能体验需求的增长,软件开发人员越来越发现,他们必须绕过内容创建者使用的专家系统/可视化工具,用javascript手工编写新组件。内容创作者越来越感到自己束手无策,因为他们现在无法贡献新的组件

设计方法:传统/典型 我一直主张完全放弃以前的模型,采用典型的软件开发过程。如前所述,由于非编程开发工具已无法满足业务需求,项目自然朝着这一方向发展

然而,内容创作者可以做出非常有价值的贡献,我希望他们专注于使用Cucumber等工具正式指定软件的预期行为,而不是参与实现

设计方法:非编程 我的同事,我非常尊重他,并且怀疑他比我知识渊博得多,觉得现有的流程很好,我们只需要构建更好的工具。然而,我忍不住觉得这种方法存在一些根本性的缺陷。我还没有找到一个例子,无论是历史上的还是当代的,这种软件开发模式是成功的。COBOL的开发理念是允许业务人员/领域专家在不需要程序员的情况下编写应用程序,在我看来,这一切都是为了创建一种新的程序员——COBOL程序员。如果有可能开发出有效的系统,允许非程序员创建非平凡的应用程序,那么对程序员的需求肯定会低得多?据我所知,仅SAP的Smart Forms和Microsoft的Dynamics AX是大致适合此模型的框架,它们都是非常特定于领域的ERP系统

DSL,模板语言 这两个概念之间的某种折衷是实现某种DSL作为模板语言。然而,我甚至不确定这是否会成功,因为除了一个例外,所有的内容创建者都是完全非技术性的

我还考虑过使用图形/工具箱风格的工具基于VisualStudio或NetBean构建自定义IDE

思想? 非编程开发是傻瓜的差事吗?这会不会总是导致一些不满意的结果,需要程序员亲自开发


如果您花时间阅读本文,我将非常感谢您的反馈。

我认为非开发人员的开发注定会失败。当开发人员尝试它时,这已经足够困难了。目前的失败率是多少?50%或更高

我的建议是要么购买你能找到的最接近的商业产品,要么雇佣某人帮助你开发一个定制的解决方案,并考虑到你的非开发人员维护特点

作为一名开发人员,意味着一次记住一百万个细节,并关心诸如版本控制、部署、测试等细节。大多数不关心这些事情的人很快就厌倦了复杂性

一定要让领域专家参与进来。但也不要让他们承担开发和维护的责任


如果您的解决方案做得不好,可能会使您的组织面临风险。如果这很重要,那就把它做好。

这是一个相当哲学的话题,很难回答每一个问题,但总的来说

非编程开发是傻瓜的差事吗

在非常狭窄的范围之外,是的。多年来,主要软件供应商已投资数十亿美元创建各种软件包,试图让非技术用户创建和定义工作流和流程,但成效有限。你最好的办法是利用在那个领域已经做过的事情,而不是试图重新发明它

编辑
Sharepoint、InfoPath和一些SAP的东西就是我要讲的例子。正如我上面所说,“一个非常狭窄的范围”。可以让非程序员创建工作流、复杂表单和一些领域流程,但仅此而已。任何更通用的东西都只是试图通过给非程序员提供非常粗糙的工具来将他们变成程序员。

是一个非常成功的非编程编程环境。

我之前曾说过这一点,但我认为它值得更多的评价

我可以马上想到,确实有很多成功的“非编程”工具,而且(编辑:我刚刚注意到这个链接上的着色器远远不止这些)着色器在3D应用程序中非常流行

话虽如此,我不知道有哪一种适合基于web的开发(这似乎是您的情况)

我不认为在开发这样的工具上的投资会对b