一、模块?模块化?
模块:是执行一个特殊任务的一组例程以及相关的数据结构。通常分为两部分:一部分是接口,给出可由其它模块或里程访问的常量、变量、函数等。另一部分是模块体,是接口的实现。
模块化设计两个主要问题:1.如何将系统分解成软件模块,2.如何设计模块。
模块化:把一个待开发的软件分解成若干简单的、具有高内聚低耦合的模块。
二、耦合?耦合类型?产生耦合的因素?
耦合是对不同模块之间相互依赖程度的度量。
耦合类型:1.内容耦合,一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口二转入到另一个模块时。
2.公共耦合:两个或两个以上的模块共同引用一个全局数据项。
3.控制耦合:一个模块通过接口向另一个模块传递一个控制信号,接收信号的模块根据信号值而进行适当的动 作,这种耦合称为控制耦合。
4.标记耦合:若一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和C之间存在一个标记耦合。
产生耦合主要因素:1.一个模块对另一个模块的引用2.一个模块向另一个模块传递数据3.一个模块对另一个模块施加控制。
三、内聚?内聚类型?
内聚:是对一个模块内部各成分之前相互关联程度的度量。
内聚类型:1.偶然内聚: 一个模块的各个成分之间基本不存在任何关系。
2.逻辑内聚:几个逻辑上相关的功能被放到同一模块中。
3.时间内聚:如果一个模块完成的功能必须在同一时间内执行
4.过程内聚:如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行。
5.通信内聚:如果一个模块的所有成分都操作同一数据集或生成同一数据集。
6.顺序内聚:一个模块的各个成分都与同一个功能密切相关,而且一个成分的输出作为另一个成分的输入。
7。功能内聚:模块的所有成分对于完成单一的功能都是基本的。
四、实现软件“高内聚低耦合”启发式规则
(1)改进软件结构提高模块独立性
(2)力求模块规模适中
(3)力求深度、宽度、扇出和扇入适中。深度表示控制的层数。宽度指同一个层次上模块总数的最大值。扇出:一个模块直接控制的下级模块数。扇入:表明有多少个上级模块直接调用它。
(4)尽力使模块的作用域在其控制域之内。模块控制域:这个模块本身以及所有直接或间接从属于它的模块的集 合。模块作用域:指受该模块内一个判定所影响的所有模块的集合。
(5)尽力降低模块接口的复杂性
(6)力求模块功能可预测。
五、根据“高内聚,低耦合”原则
对输入部分进行精化
(1)为每一物理输入设计一个模块
(2)对那些不进行实际数据输入的输入模块,且输入的数据是预加工或辅助加工得到的结果,将它们合并在一起。
(3)对于既简单、规模有效的模块合并在一起。
对输出部分进行精化
(1)把相同或类似的物理输出合并为 一个模块。
(2)其他求精的规则与输入部分相同。
对变换部分进行精化
六、详细设计
目标:将总体设计阶段所产生的数据项和数据结构比详细设计更加抽象;
七、结构化程序设计方法
概念?是一种特定的程序设计方法学。它是一种基于结构的编程方法,即采用顺序结构、判定结构以及重复结构进行编程,其中每一结构只允许一个入口和一个出口。
八、详细设计工具
1.程序流程图
2.盒图(N-S图)
3.PAD图
4.PDL
begin
s1();
if x <= 5 then
begin
s2()
end
i:=i+1;
while i < 3 do
begin
s3();
i:=i+1;
end
if y < 0 then
begin
s4();
end
else
begin
s5()
end
九.设计规约
在完成软件设计之后,应产生设计规约,完整准确的描述满足系统需求规约中所有功能以及它们之间的关系等的软件结构。设计规约通常包括概要设计规约和详细设计规约,分别为相应设计过程的输出文档。