适当的UML图来建模Android应用程序的线程,网络活动,处理程序等



我正在编写一个Android应用,其中包括:

  • 当{Activity} .onresume()执行并将传入的数据派遣到处理程序时,将网络套接字绑定到端口42777的线程。除非当前没有WLAN适配器与本地(192.168。,10。,172.16-31。*)IP地址...WLAN连接成立,ConnectivityManager通知我的听众。

  • 产生一个线程,该线程从LinkedBlockingqueue中获取可运行的线索,并将其提交给单线程执行人员服务。此时,RunnableS基本上通过UDP广播数据报到255.255.255.255。

  • {activity} .onpause()执行时,端口42777上的套接字被关闭&LinkedBlockingqueue发布了,明确了()'Ed,而执行人员服务(以及供供运行的线程的线)被中断和杀死。并希望在下次{activity} .onresume()启动并试图重新打开插座之前释放到插座的端口。在网络堆栈上放开直到端口最终发布。

哪些UML图(s)可以记录这样的内容,这样我就可以对这些类别之间的相互作用有一个相当清楚的了解?我已经使用了类图多年了,但是记录事件的链条间接产生线程对处理程序事件的产卵线程(直到现在)对我来说是未开发的领域。

您与序列和状态图的混合在一起。

  • 序列图可以显示在某些情况下如何执行功能。例如。对于您的第一个示例,您在左侧的main实例实例化thread(无论它是有意义的名称)。这将首先调用bind,收听传入的数据,然后将数据调用到Handler。等等。您将为不同方案创建此类SD,您可能会认为图形表示为模型的读者增加了价值。最终,您可以通过活动图来解释较高的抽象级别的行为。
  • 状态图可用于传达机器的"如果这样"状态。因此,thread进入Connect状态,直到获得端口,然后进入Listening状态,该状态转移到Dispatch,等等。

请注意,这两个图不是冗余。状态机几乎可以直接传输到代码。还有一些工具可以模拟状态机,这对复杂的机器最有帮助。序列图仅显示了场景如何工作的示例。您最终使用它进行某种"静态模拟"。在大多数情况下,您需要一组不同的序列图来传输想法。

正如@ister指出的那样,您将需要适当的类图来显示类模型的静态结构。这是必不可少的,通常是模型的"露点"。我以为这已经存在: - )

您的问题语句提到了处理队列内容的活动,可以暂停并恢复(似乎是特殊事件)。

最适合记录此类"间接产生线程螺纹的事件的链的链"的图是活动图,它提供了表示的手段:

  • 复杂控制以一系列动作,条件,事件和信号流动;*对象流动创建测序的对象(即一个动作获取用于下一个动作的对象,例如RunnableDatagram);
  • 并发流的产卵和连接(即您的线程);
  • 以灵活和表现力的方式分配到小组子流量。

这种图的图表不太擅长显示对象之间的相互作用。这些将最好由序列图表示。

当然,这可以用国家图来补充,如其他答案中所述。但是我认为,对于两个已确定的状态(处理和从一个向另一个国家的过渡而停顿),这将是过分的,并且不会对国家过渡时发生的情况进行详细描述,正如您在子弹中所描述的那样。

i相信状态图最适合对其进行建模。看看Wikipedia在这里对此有何评论。

最新更新