了解软件系统

时间:2010-03-10 11:10:31

标签: legacy-code

我最近成为了一个复杂的嵌入式项目团队的一员,我将为此开发一个部分。对于我负责的部分,只有旧代码而不是很多文档。

我渴望有一个良好的开端,但害羞和害怕出现愚蠢使得提问很难。如何提问?

我想问一下你们用什么技巧来理解一个项目?我的意思是有许多技术细节,必须记住并保持在上下文中才能进行设计。您阅读了代码并获得了一些事实,但如何继续前进? 例如,您阅读了代码和文档,并获得了一些事实A和事实B.如何得出合适的结论X,您可能需要或可能不需要考虑事实C和D?

5 个答案:

答案 0 :(得分:1)

如果没有足够的文档并且代码记录不当且写得不好,则代码读取可能会特别困难。我想现在最好的方法是找到代码的入口点,慢慢了解它的流程以及它使用的数据。我会留意

  1. 结构 - 是否有实体/系统的分区?代码中的位置(以及如何)彼此通信?

  2. 数据 - 用于保存全局数据的结构类型是什么?如何访问和保存数据?

  3. 如果您正在使用C或C ++,那么了解内存的处理方式也很重要,对于C ++(以及其他相关的非托管内存OOP语言,我猜),如何包含对象所有权。

  4. 由于它是一个嵌入式项目,是否使用了任何非标准代码或编码结构?

答案 1 :(得分:0)

通过编写文档来平衡阅读代码。

编写替换所需的文档。想象一个比你更了解的人。为那个人解释一下。

当您无法向替换人员解释时,请提出问题。

如果您有完整的说明,您将“了解”系统。

您将制作完整的文档。

答案 2 :(得分:0)

您没有提到存在哪种测试。如果存在测试用例,请修改它们并跟踪这将如何影响最终结果。

答案 3 :(得分:0)

您可能希望查看能够全面了解系统逻辑结构的图表,例如,查看OOP系统中的类图将会有很大帮助。查看大型和复杂应用程序的设计图表,可以清楚地了解系统的内部模块是如何组织的,这样就可以确定特定代码片段的功能更加容易。在没有图表的情况下,你最好的选择是从应用程序的入口点开始,比如main(),然后从那里开始绘制(字面上绘制或写下纸上)你自己关于系统的结论(通过这种方式,您可以拥有自己的文档),并询问您的同行是否正确。

答案 4 :(得分:0)

我的经验是,最好从某种任务开始 - 修复错误或进行其他小改动。这将为您的学习提供重点。我发现很难通过活页夹阅读或筛选源代码或文档页面而无法应用它。

如果您有一个沙箱,您可以在其中使用您所做的更改而不会弄乱代码库,那么这可能会更有帮助。

相关问题