3

通常安全关键系统是否使用封装?假设一个用AdaC实现的嵌入式系统,用于卫星、喷气式战斗机、潜艇或客机。

我得到了这个问题,因为对我来说,封装的概念是为了帮助软件开发维护过程,而不是软件本身。由于通过访问器而不是直接在内存中访问来访问数据会增加一点开销,我想知道这样一个安全关键的应用程序是否可以接受像封装这样的抽象层。

此外,我假设有大量代码为客机提供动力,所以如果他们不想将这些概念放在机上,那么软件开发可能会在某个时候失控。

PS如果问题似乎离题,请随意填写评论或编辑,因为这对我来说是一个真正的问题,我希望从已经从事过类似应用程序的人那里得到一些答案。

PPS 为了避免一些混淆,现代版本的Ada具有 OOP 特性,并且封装也可以简单地在C中实现。

4

1 回答 1

5

在安全关键系统中,最重要的方面之一是认证和可维护性。显然,第二部分使用封装会更容易,事实上第一部分也是因为它更容易跟踪问题或在封装时证明某些内容(例如,您可以通过几行调试检查分配给执行期间的属性)。

关于开销,您可以使用inlineC 函数或 Ada避免大部分开销,pragma Inline();因此您仍然有封装(您不能使用.or访问器访问属性->)但使用 getter 将被内联,因此不会(或很少)添加开销。

我不知道它是否在实际行业中使用,但我不明白为什么应该避免它。事实上,真正的问题可能是工业不使用,如你所说,现代版本的 Ada 与 OOP 或现代 C 版本的inline功能(与 C99 一起)。

于 2014-04-25T08:36:12.313 回答