Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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
如何在Java软件体系结构中实现可插入的特性和模块?_Java_Architecture_Software Design - Fatal编程技术网

如何在Java软件体系结构中实现可插入的特性和模块?

如何在Java软件体系结构中实现可插入的特性和模块?,java,architecture,software-design,Java,Architecture,Software Design,我即将开始一个新的软件项目。我知道一个好的规划和软件设计最终会导致一个成功的软件项目 我想知道,在一个有核心模块和其他可插拔或附加模块的软件体系结构中,我该怎么做。可以根据客户的需求和定价排除和包括模块,也可以根据客户自己的配置关闭和打开模块 例如,让我们拿一些金融软件来说,有一个模块可以对市场客户进行统计。然后,我的产品的一些客户不想购买这个模块,因为他们不需要它。设计我的体系结构的最佳方法是什么,这样我就可以用最少的努力和最少的代码接触(如果可能的话,根本不接触它)来排除? 我们可以讨论一些

我即将开始一个新的软件项目。我知道一个好的规划和软件设计最终会导致一个成功的软件项目

我想知道,在一个有核心模块和其他可插拔或附加模块的软件体系结构中,我该怎么做。可以根据客户的需求和定价排除和包括模块,也可以根据客户自己的配置关闭和打开模块

例如,让我们拿一些金融软件来说,有一个模块可以对市场客户进行统计。然后,我的产品的一些客户不想购买这个模块,因为他们不需要它。设计我的体系结构的最佳方法是什么,这样我就可以用最少的努力和最少的代码接触(如果可能的话,根本不接触它)来排除? 我们可以讨论一些主题,比如包组织、使用JPF、接口和继承等框架


提前谢谢

这是一个非常广泛的话题,可以在stackoverflow讨论中对其进行总结,但让我们尝试一下。在我看来,第一个真正基本的需求是对软件将要服务的领域有一个非常详细的了解。在开始任何不涉及编码的设计之前,首先要具备该领域的必要知识

一旦你有了这些,你就开始定义一些核心模块,这将是你软件的基础。通常,例如,您需要网络、配置、io、核心、持久性、工具等。我个人用一个包定义一个模块,例如,如果我说core模块,我会引用包,例如:
com.example.core.com.example.core.utils
。核心包是更多的基础设施工作。就像在开始构建真正的软件之前准备好基础一样


黑板上有独立模块及其依赖项的设计,一个好的做法是使用maven作为构建工具。将每个模块设计为单独的项目,并通过maven将其作为其他模块/项目的依赖项。这将形成插塞式山墙模块。在每个模块中提供配置支持(基于xml、json甚至普通txt文件),因此可以打开/关闭或修改某些功能。因此,根据许可协议,您可以轻松地提供包含所需模块的构建,并在每个模块内部修改功能配置

这是一个非常有趣的问题,开发人员通常认为这是理所当然的

一些开发人员认为,跳入代码会随着时间的推移产生想法、需求和功能——尽管这可能是真的,但通常会危及良好的体系结构、灵活性和健壮性

对于一个新的软件,应该把时间花在需求收集上(即使可能,也要阅读并获得对领域及其当前流程、规则和其他约束的广泛而具体的理解)

  • 对该领域有更多的了解
  • 提出一份需求文件
  • 识别域中的关键对象
  • 创建一个简单的模型图,并在广泛的上下文中确定关系
  • 确定主要用例
  • 尽管这段时间似乎被浪费了,而且在产生想法和需求方面也走到了死胡同,但回顾过去,人们总会感激为实现这一点而牺牲的时间

    我最近也开始了一个新的软件项目,在做计划的时候真的很辛苦,但从长远来看,我和其他看过需求文档和图表的人都很欣赏

    具体到您的问题,元编程是一种非常好的方法来建模可扩展的核心模块…………查看此开源软件,了解非常好的核心体系结构