1

情况如下:

我们(学生)必须为我们大学编写跨平台软件项目,专为处理统计数据而设计,可能是天文数字。预计学生(具有不同技能)将能够年复一年地继续维护/改进项目。

主要思想是将程序分成主要部分和多个不同的模块,可以独立编写和连接,可能是共享库。这些模块每个都包含分析和处理特定数据的方法,并给出输出(数字、字符串、图像等)。

所以我们有一小部分比较精通的学生,他们可以做主要的工作。决定选择 C++ 作为主要编程语言,选择 Qt 作为跨平台 GUI。

主要问题是关于那些将来开发模块的人。这里的教育主要是基于 Pascal/Delphi(这是乌克兰,都说:)),C++ 课程很差,绝大多数学生都懒得自己学东西,所以让我们假设,Pascal 是他们唯一的东西知道。

主要问题来了:

设计具有以下要求的模块系统的适当方法是什么:

  • 项目必须是跨平台的
  • 数据处理的主要功能必须作为一组(相对)独立的模块来实现
  • 模块应该用不同的语言编写(Pascal 是必须的)
  • 模块应该能够通过创建窗口来请求额外的数据,或者以某种方式触发主窗体中的窗口生成机制并获取新数据或更好的方法?
  • 不能使用 COM 技术
  • 将来编写新模块的学生的平均技能可能很低

任何想法都会被接受。

4

2 回答 2

1

我将从为数据提供者和数据消费者设计合同开始。由于技术上的限制,合约应该以函数的形式表达,并以原生库的形式实现。

然后,您的核心模块应该接受任何实现数据提供者和数据消费者合同的插件。插件架构应该很容易实现,你只需扫描一个文件夹,看看是否有任何具有预期签名功能的共享库(你的合约)。如果是,插件也会自我介绍,以便它可以附加到主菜单。

拥有数据提供者和数据消费者可以让您几乎永远设计新功能。新的数据提供者可以使用文件、网络服务、任何东西来创建数据。新消费者可以分析数据、导出、创建图表或任何您想要的东西。

我关心的是Delphi的要求以及跨平台开发的要求。我的建议是忘记 Delphi 并转而使用 Java。它是跨平台的,有很棒的免费开发者工具,并且在 2、5 或 10 年内它更有可能被项目成员认可。

于 2013-04-20T22:24:11.807 回答
0

根据 Wiktor Zychla 的回答,如果您选择使用 Java 和基于组件的体系结构,我建议使用 OSGI(我可能不会对选择发表意见,因为我不是很客观,因为只使用 java)。使用 OSGI,数据提供者和数据消费者的合约定义得到了完美的管理,系统会根据他们定义的合约自动将模块插入在一起。部署的扫描文件夹已经在这里,它支持热部署,相同组件的多个版本一起运行等......

http://en.wikipedia.org/wiki/OSGi

根据功能要求,还建议使用为复杂数学运算提供丰富库的语言,但我不知道帕斯卡功能。

于 2013-04-20T22:54:28.380 回答