140DDO15310 施耐德 离散量输出模块
,这时应适当地增加中间层次,扇出太小则可以把下级模块进一步分解成若干个子功能模块,或者合并到上级功能模块中去。一个功能模块的扇入是表明有多少个上级功能模块直接调用它,扇入越大则共享该模块的上级模块数目越多,这是有好处的。
4.要使模块的作用范围保持在该模块的控制范围内
功能模块的作用范围是指受该功能模块内一个判定影响的所有功能模块的集合。功能模块的控制范围是指这个功能模块本身以及所有直接或间接从属于它的功能模块的集合。在一个设计得很好的系统中,所有受判定影响的功能模块应该都从属于作出判定的那个功能模块,最棒局限于做出判定的那个功能模块本身及它的直接下级模块。对于那些不满足这一条件的软件结构修改的办法是:将判定点上移或者将那些在作用范围内但是不在控制范围内的功能模块移植到控制范围内。
5.应减少功能模块的接口的复杂性和冗余度,并改善一致性
功能模块接口复杂是软件发生错误的一个主要原因。应该仔细设计模块接口,使得信息传递简单并且和模块的功能一致。
6.设计成单入口、单出口的功能模块,避免病态连接
要防止内容耦合性,如果功能模块都是从顶部入口、从底部出口的话,这样的软件也更易于理解和易于维护。病态连接关系是指从中部进入或访问一个模块。
7.模块的功能可预测
如果一个功能模块可以当做一个黑箱,即只要输入的数据相同就产生同样的输出,这个模块的功能就是可以预测的。而那些具有内部记忆的功能模块则可能是不可预知的,因为它可能记载了某个内部标志并且利用这个标志去选择处理方案。由于这个标志对上级功能模块来说是看不见的,因而可能引起混乱。
8.组装软件根据设计的约束和移植的需要
组装是指用来把软件组合起来,以便把软件放入特定的处理环境或送往其他的地方。有时,设计约束要求一个程序要在内存中覆盖自己。如果有这种要求的话,原设计结构就可能必须重新组织以便按照重复的次数
140DDO35301C
140DDO35301
140DDO35300C
140DDO35300
140DDO15310C
140DDO15310
140DDM69000C
140DDM69000
140DDM39000C
140DDM39000
140DDI85300C
140DDI85300
140DDI84100C
140DDI84100
140DDI67300C
140DDI67300
140DDI36400C
140DDI36400
140DDI35310C
140DDI35310
140DDI35300C
140DDI35300
140DDI15310C
140DDI15310
140DAO85300C
140DAO85300
140DAO84220C
140DAO84220
140DAO84210C
140DAO84210
140DAO84010C
140DAO84010
140DAO84000C
140DAO84000
140DAM59000C
140DAM59000
140DAI75300C
140DAI75300
140DAI74000C
140DAI74000
140DAI55300C
140DAI55300
140DAI54300C
140DAI54300
140DAI54000C
140DAI54000
140DAI45300C
140DAI45300
140DAI35300C
140DAI35300
140DAI34000C
140DAI34000
140CRP93200C
140CRP93200
140CRP93100C
140CRP93100
140CRP31200C
140CRP31200
140CRA93200C
140CRA93200
140CRA93101C
140CRA93101
140CRA93100C
140CRA93100
140CRA31200C
140CRA31200
140CRA21220C
140CRA21220
140CRA21210C
140CRA21210
140CRA21120C
140CRA21120
140CRA21110C
140CRA21110
140CPS52400C
140CPS52400
140CPS51100C
140CPS51100
140CPS42400C
140CPS42400
140CPS41400C
140CPS41400
140CPS22400C
140CPS22400
140CPS21400C
140CPS21400
140CPS21100C
140CPS21100
140CPS12420C
140CPS12420
140CPS11420C
140CPS11420
140CPS11100C
140CPS11100
140CHS41020
140CHS41010
140CHS32000