我目前正面临着一个非常不寻常的设计问题,希望一个比我更聪明的开发人员能够提供一些见解。
背景
不是很具体,我受雇于一家非营利性组织,帮助他们的遗产重新开发,但非常有价值(就社会价值而言)。开发团队不同于我在担任软件开发人员期间遇到的任何团队,它由少量开发人员和大量非编程领域专家组成。这种安排的不同寻常之处在于,领域专家(让我们称他们为内容创建者)使用定制工具,其中一些基于prolog专家系统引擎,来开发基于web的软件组件/表单。
问题所在
系统使用非常笨拙的回发模型来执行逻辑操作,服务器端并返回新的表单/结果。它速度很慢,而且容易失败。简单的事情,比如使用现有的工具创建html表单,比它应该做的要困难得多。随着对更具交互性和更高性能体验的需求的增长,软件开发者越来越发现,他们必须绕过由内容创建者使用的专家系统/可视化工具,并且用javascript手工编写新的组件。内容创建者越来越觉得自己束手无策,因为他们现在无法贡献新的组件。
设计方法:传统/典型
我一直主张完全放弃以前的模型,采用典型的软件开发过程。正如前面提到的,由于非编程开发工具已经不能满足业务需求,项目自然朝着这个方向发展。
然而,内容创建者有一个非常有价值的贡献,我希望看到他们专注于使用Cucumber等工具正式指定软件的预期行为,而不是参与实现。
设计方法:非程序化
我的同事,我非常尊敬他,我怀疑他比我知识丰富得多,他觉得现有的流程很好,我们只需要构建更好的工具。然而,我不禁觉得这种方法存在一些根本性的缺陷。我还没有找到一个例子,无论是在历史上还是在当代,这种软件开发模型都是成功的。COBOL的开发理念是允许业务人员/领域专家在不需要程序员的情况下编写应用程序,在我看来,所有这些都创造了一种新的程序员- COBOL程序员。如果有可能开发有效的系统,允许非程序员创建非平凡的应用程序,那么对程序员的需求肯定会低得多?据我所知,只有SAP的Smart Forms和Microsoft的Dynamix AX大致符合这种模型-这两个框架都是非常特定于领域的ERP系统。
DSL,模板语言
这两个概念之间的某种折衷方案是将某种DSL实现为模板语言。然而,我甚至不确定这是否会成功,因为所有的内容创建者,除了一个例外,都是完全非技术性的。
我还考虑过使用图形化/工具箱风格的工具,基于Visual Studio或Net Beans构建自定义IDE。
有什么想法?
非程序化开发是愚蠢的差事吗?这是否总是会导致一些不令人满意的事情,需要程序员亲自动手开发?
非常感谢你花时间阅读这篇文章,我当然希望得到任何反馈。
发布于 2010-07-12 08:16:07
我认为非开发人员的开发注定要失败。当开发人员尝试它时,这已经够难的了。目前的失败率是多少? 50%或更高?
我的建议是,要么购买你能找到的最接近的商业产品,要么雇佣某人帮助你开发一个定制的解决方案,同时考虑到你的非开发人员维护特征。
作为一名开发人员,意味着同时牢记一百万个细节,并关心细节,如版本控制、部署、测试等。大多数不关心这些事情的人很快就厌倦了复杂性。
一定要让领域专家参与进来。但也不要让他们承担开发和维护的负担。
如果解决方案做得不好,您可能会将您的组织置于风险之中。如果它很重要,那就做对它。
https://stackoverflow.com/questions/3225177
复制相似问题