我的项目同时变得越来越大。现在,我发现自己迷失在我的代码中,甚至改变了我脑海中已经修复过的概念。这太可怕了,因为随着我的代码行增加,我的工作效率会降低。我只想实现我的生产力保持不变。现在我想把我的应用程序写在纸上以获取概述,如果我再次丢失,并且有一些我可以坚持的东西。但我不知道如何正确建模。我试图在状态图中对其进行完整建模,但是,例如,如果代码只执行没有逐行状态的事情,则不适用。在这种情况下,流程图会很好。但是我不知道它是如何混合的,所以它总体上是有意义的。
我该如何开始写纸?建模更大的应用程序的常见做法是什么?我什么时候使用哪个图表?
答案 0 :(得分:2)
要了解程序的流程,您可以使用Activity Diagrams。要了解对象之间的交互,可以使用序列图。要理解这些模块,您可以使用类图并可能在包中引入相关的类。然后,您可以在模块之间绘制高级依赖关系。这将为您提供有关项目的高级别和详细级别信息。
答案 1 :(得分:0)
作为评论的答案“但是你如何向人们说明应用程序的整体运作方式?”:对于大型应用程序,你不能。 MsWord如何全面工作?
要显示应用程序中的部件如何工作,请使用use-cases。从那以后,您可以使用class diagrams(结构),sequence diagrams(程序流程)和state diagrams(状态)来显示每个用例的设计。您的代码应该反映这些图表
答案 2 :(得分:0)
模型驱动开发允许您为您的软件带来质量保证。首先,无论代价多么昂贵或耗时,都应该对所有项目进行,特别是在项目规模扩大时。我对自己的项目有同样的问题,这个项目是在没有任何模型的情况下首先开发的。请耐心等待。
实现系统实现的第一步是描述系统应该做什么,什么是可观察的,如何与用户和其他系统进行交互。用例图是回答这些问题的方法。
然后你可以考虑一下你可能需要多少课程。在您的情况下,因为您已经编写了一些部分,考虑如何将主要功能分解为许多小类并建立它们之间的关系。那里你需要类图。
这两个是最常见的符号,您必须至少要概述整体结构。
如果你现在有很多课程,那么系统的表现如何?数据和工作流程的顺序或顺序如何?在您最重要的场景中,应该执行哪种调用以执行任务?这就是您需要序列图或协作图的原因。
我会说从这些开始,然后继续more models。
答案 3 :(得分:0)
为了解决大问题,我首先要确定应用程序的不同主题是什么。例如,在无人驾驶汽车中,您可能有图像处理,异物检测和避免,道路获取和跟踪,速度调节,导航等。如果您在同一模块中混合主题,则会遇到麻烦。这些主题中的每一个都可以是命名空间。然后,将您的类/模块划分为适当的命名空间。弄清楚如何通过类处理各种用例并根据需要添加/删除类。然后遵循“清洁代码”一书的规则,并保持简单的方法。
体系结构中的4 + 1视图表明没有单一视图描述整个系统。 4 + 1讨论了使用逻辑,开发,流程,物理和方案视图。所有这些都有UML对应物。