独立模块中的项目功能,架构决策

时间:2013-04-20 21:10:01

标签: architecture

情况如下:

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

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

所以我们有一小群相对熟练的学生,他们可以完成这项工作。决定选择C ++作为主要编程语言,选择Qt作为跨平台GUI。

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

主要问题是:

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

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

任何想法都会被指定。

2 个答案:

答案 0 :(得分:1)

我首先要为数据提供者和数据使用者设计合同。由于技术限制,合同应表示为函数并实现为本机库。

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

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

我关心的是Delphi的要求以及跨平台开发的要求。我的建议是忘记Delphi并切换到Java。它是跨平台的,有很多免费的开发人员工具,在2年,5年或10年内,它更有可能被项目成员认可。

答案 1 :(得分:0)

基于Wiktor Zychla的回答,如果您选择使用Java和基于组件的架构,我建议使用OSGI(我可能不会对选择产生我的意见,因为我不是非常客观的仅使用java)。 通过OSGI,数据提供者和数据使用者的合同定义得到了完美的管理,系统将根据他们定义的合同自动插入模块。用于部署的扫描文件夹已在此处,它支持热部署,同一组件的多个版本一起运行等...

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

根据功能要求,建议使用为复杂数学运算提供丰富库的语言,但我不了解pascal功能。