情况如下:
我们(学生)必须为我们大学编写跨平台软件项目,专为处理统计数据而设计,可能是天文数据。预计学生(具有不同技能)将能够每年继续维护/改进项目。
主要思想是将程序划分为主要部分和不同模块的数量,这些模块可以独立编写和连接,可能作为共享库。这些模块每个都包含分析和处理特定数据的方法,并提供输出(数字,字符串,图像等)。
所以我们有一小群相对熟练的学生,他们可以完成这项工作。决定选择C ++作为主要编程语言,选择Qt作为跨平台GUI。
主要问题是那些将来会开发模块的人。这里的教育主要是基于Pascal / Delphi(它是乌克兰,都说:)),C ++课程很差,而且绝大多数学生都懒得自己学习东西,所以让我们假设,Pascal是他们唯一的东西知道。
主要问题是:
根据以下要求设计模块系统的适当方法是什么:
任何想法都会被指定。
答案 0 :(得分:1)
我首先要为数据提供者和数据使用者设计合同。由于技术限制,合同应表示为函数并实现为本机库。
然后,您的核心模块应接受任何实现数据提供者和数据使用者合同的插件。插件架构应该易于实现,您只需扫描文件夹以查看是否存在具有预期签名功能的共享库(您的合同)。如果是,插件也会自我介绍,以便它可以附加到主菜单。
拥有数据提供者和数据使用者可以让您几乎永远地设计新功能。新的数据提供者可以使用文件,Web服务,任何东西来创建数据。新消费者可以分析数据,导出,创建图表或任何你想要的东西。
我关心的是Delphi的要求以及跨平台开发的要求。我的建议是忘记Delphi并切换到Java。它是跨平台的,有很多免费的开发人员工具,在2年,5年或10年内,它更有可能被项目成员认可。
答案 1 :(得分:0)
基于Wiktor Zychla的回答,如果您选择使用Java和基于组件的架构,我建议使用OSGI(我可能不会对选择产生我的意见,因为我不是非常客观的仅使用java)。 通过OSGI,数据提供者和数据使用者的合同定义得到了完美的管理,系统将根据他们定义的合同自动插入模块。用于部署的扫描文件夹已在此处,它支持热部署,同一组件的多个版本一起运行等...
http://en.wikipedia.org/wiki/OSGi
根据功能要求,建议使用为复杂数学运算提供丰富库的语言,但我不了解pascal功能。