结构图(耦合、内聚)

结构图

                  反映程序中模块之间的层次调用关系和联系。

  • 模块

  • 模块的调用关系和接口

  • 模块A有条件调用另一个模块

  • 模块化

       把大而复杂软件系统划分成易于理解的比较单纯的模块结构。

  • 抽象化

        有不同的抽象层次。

         功能抽象:   抽象层次1:用问题所处环境的术语来描述这个软件。

                                      抽象层次2:任务需求的描述。在这个抽象层次上,未给出“怎样做”的信息,不能直接实现。

                                             抽象层次3:程序过程表示。

数据抽象 :在不同层次上的描述数据局对象的细节,定义与该数据对象相关的操作。 

信息隐蔽:数据发生变化不影响其他模块,模块所包含的信息不允许其他模块使用。

模块的独立性:每个模块只涉及软件要求的具体子功能,一般采用两个准则度模块独立性,即模块间耦合性和模块内聚。

  • 结构设计原则:1.改进软件结构提高模块独立性

                                2.模块规模应该适中

                                       3.适当选择深度、宽度、扇出和扇入

                                             4.作用域应该在控制欲之内

                                                    5.降低模块接口的复杂程度

                                                            6.设计单入口单出口的模块

                                                                     7.功能可以预测

  • 模块的基本属性:1.功能:描述模块实现什么功能

                                    2.逻辑:描述模块内部怎摸做

                                           3.状态:该模块使用时的环境和条件

  • 模块间的耦合

非直接耦合:两个模块之间没有任何直接关系

数据耦合:一个模块让问另一个模块时之间通过简单数据参数来交换输入、输出信息。

          标记耦合(特征耦合):通过参数表传递记录信息。

          控制耦合:一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能。

          

          外部耦合:一组模块都访问同一全局变量而不是同一全部数据结构,而且不是通过参数表传递该全局变量的信息。(连接外部环境)

          公共耦合:一组模块都访问同一公共数据环境

           

           内容耦合

           

结论:尽量使用数据耦合,少用控制耦合,限制公共耦合,完全不用内容耦合

 

模块内聚

                    一个模块中各个部分都是完成某一具体功能必不可少的组成部分,是不可分割的。

信息内聚

模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。

通讯内聚

模块内部个各个功能部分都使用相同的输入数据,或产生了相同的输出数据。

过程内聚

当一个模块当中包含一种任务,当这种任务必须按某一特定顺序执行的时候。

时间内聚

模块中任务必须在同一时间段内执行。

逻辑内聚

把相关的功能组合在一起。

巧合内聚

模块内各部分之间没有联系,或者即使有也很松散。

 

 

 

 

 

 

 

  • 系统结构图中的模块

  • 变换型系统结构图

  • 事务型系统结构图

               结构一项事务,根据事务处理特点和性质,选择分派一个适当的处理单元,然后给出结果。