问题标签 [software-product-lines]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 构建相同 C/C++ 应用程序变体的最佳方法是什么
我有三个密切相关的应用程序,它们是从相同的源代码构建的——比如说 APP_A、APP_B 和 APP_C。APP_C 是 APP_B 的超集,而 APP_B 又是 APP_A 的超集。
到目前为止,我一直在使用预处理器定义来指定正在构建的应用程序,它的工作原理是这样的。
然后我的 IDE 构建选项指定(例如)
...在源代码中,我会有类似的东西
但是,今天早上我开枪打死了自己,只是从一个文件中省略了 #include "app_defines.h" 行,这浪费了很多时间。一切编译正常,但应用程序在启动时与 AV 一起崩溃。
我想知道处理这个问题的更好方法是什么。以前,这通常是我认为可以使用#define 的少数几次之一(无论如何,在 C++ 中),但我仍然搞砸了,编译器没有保护我。
automation - 有人推荐软件产品线生成的“纯变体”吗?
我正在与我的教授合作开发用于在线测试自动构建的软件产品线。他向我推荐了“Pure Variants”作为一个开源工具,可以用作 Eclips 的插件。但是,我不确定是去寻找它还是寻找其他的。所以如果你推荐这个工具,那么请告诉我你为什么这么认为,或者为我推荐另一个你发现更好的工具!谢谢
java - C++ 中的“面向特征的编程”(FOP) 是什么意思,在 Java 和 C# 中是否有意义?
可悲的是,我不记得我在哪里读过它,但是...
...在 C++ 中,您可以从模板参数派生一个类。我很确定它被称为
面向特征的编程(FOP),并且意味着某种用途。
它是这样的:
我对此的疑问:
这种模式的意义是什么?
既然这在 Java / C# 中是不可能的,那么这种模式是如何在这些语言中实现的?
可以期待有一天用Java/C#实现吗?
(嗯,首先 Java 需要摆脱类型擦除)
编辑:
我真的不是在谈论 Java / C#
中的泛型(你不能从泛型类型参数派生类)
methodology - 产品线软件开发的优缺点
这里是否有人实施了SEI定义的软件产品线方法?您如何管理变更?你如何测试?您必须处理哪些问题?
多年来,我们基本上一直在尝试遵循产品线方法,但我一直在与那些不想为他们的程序严格要求的测试更改付费但又想要免费的错误修复的程序经理作斗争。他们也非常害怕发生在他们不需要的代码库上的更改……这不是不合理的恐惧。
这最终导致我在上一次 PDR 中获得了一个行动项目来解释产品线方法以及我认为我们应该遵循它的原因。我找到了softwareproductlines.com,它有一些成功案例,但没有足够的细节来说明如何应对潜在的陷阱。
code-generation - 如何为多个客户端维护多个组件以实现多个功能?
基本上我的项目是基于产品的。一旦我们开发了一个项目并捕获多个客户端并根据他们的需求部署应用程序。但是我们决定把新功能和项目依赖的模块都作为组件。现在我的应用程序有很多客户。每个客户都需要基于组件的不同功能。但是我们有所有客户端的集中组件。我们将组件附加功能移动到客户端特定文件夹并部署。我的问题是,我无法为多个客户端维护组件功能。我的组件功能代码增加了,我无法跟踪客户端功能。是否有任何解决方案可以为多个客户端维护多个组件功能?
javascript - Javascript 群组开发流程
我们作为一个团队开发 Javascript/JSP web 应用程序,问题是我们正在根据客户的要求开发 webapps,而另一个团队(核心团队)开发“核心”webapp 产品。
换句话说,我们为不同的客户以不同的方式“定制”了 Javascript/JSP webapp,大部分定制都在 Javascript 代码中。
问题是,每次核心团队发布一个新版本,我们都必须将我们的定制合并到新发布的产品中,这是相当痛苦的。
本质上,我们必须将我们定制的 webapps 与旧版本进行比较,然后将旧版本与新版本进行比较,然后将它们同步。
处理这种情况的最佳做法是什么?
dsl - 领域特定语言 (DSL) 的软件产品线 (SPL)
遵循软件产品线方法专注于领域特定语言 (DSL) 开发是否有意义?
有谁知道同时创建和维护几种相关领域特定语言的任何其他方法?请注意,要支持自定义语言,需要支持多种工具,从解析器、编译器、解释器到当前最先进的 IDE 等。
design-patterns - 面向特征的编程 - 示例
我读过一些关于面向特征的编程的东西,但我错过了用例和示例。是否有任何适用于 FOP 的技术或模式?
java - 如何同时管理多个版本的类?
我们正在实施一个企业财务网络应用软件。我们正在使用 spring、hibernate、oracle(DB)、JSF。需求在软件的维护阶段发生变化,由于以前版本的软件的兼容性,我们必须同时拥有某些实体(也包括管理器、表单、...类)的多个版本。类的更改包括:添加/删除字段、更改字段、添加/删除类……一般来说,这个问题是同时运行多个版本的软件。请帮助我找到解决此问题的方法。
澄清:
此问题与软件产品线中的“时间可变性”类似(有关更多信息,请参阅elsner_vamos2010)。这意味着我们可能同时拥有一个类的多个版本,并且我们必须获取带有(或日期)参数的类。在每个日期,必须使用一个版本的课程,因为与该日期的程序状态兼容。我们用 XML 文件在 Bean 类上解决了这个问题,并得到了带有日期的类的版本。因此,程序知道必须为这种程序状态(其他实体的日期)运行什么 bean。
但是对于spring中的实体、jsp、form等其他对象类型我们解决不了?
c# - Visual Studio 和 .NET 中的条件文件编译
我正在为我的公司开发一个软件工具。我正在使用 Visual Studio、C# 并以 .NET 4.0 为目标。要求之一是软件将发布三个版本(受限、标准和扩展)。我公司有几个实习生/实习生,还有一些正式员工和经理。并且每组将获得其他版本的软件。实习生限量版,员工标准版和经理扩展版。这些是给我的要求。此外,每个版本必须是一个可执行文件(无 dll 文件)。
因此,我创建了一个项目,其中包含一组将有条件地编译和构建的文件。在主程序中,我可以使用指令 #if 和/或 [Conditional] 属性根据当前配置仅实例化所需的类。
但是无论如何编译和构建当前不需要的文件。并且创建的可执行文件包含这些文件中的所有代码,这些代码是不受欢迎的并且不符合给我的要求。每个可执行文件应仅包含目标员工组所需的代码。(这是出于安全原因。)
所以我的问题是如何根据当前配置从编译过程中排除一组文件?