设计策略
设计策略
自上而下的策略
自上而下的策略使用模块化方法来开发系统设计。之所以这样称呼,是因为它从顶层或最高级别的模块开始,然后向最低级别的模块移动。
在该技术中,识别用于开发软件的最高级别模块或主模块。主模块根据每个模块执行的任务分为几个更小、更简单的子模块或段。然后,每个子模块进一步细分为下一个较低级别的几个子模块。这种将每个模块划分为若干子模块的过程一直持续到无法进一步细分的最低级别模块未被识别为止。
自下而上的策略
自下而上策略遵循模块化方法来开发系统设计。之所以这样称呼,是因为它从最底层或最基本的级别模块开始,向最高级别的模块移动。
在这项技术中,
-
标识了最基本或最低级别的模块。
-
然后根据每个模块执行的功能将这些模块组合在一起,以形成下一个更高级别的模块。
-
然后,这些模块进一步组合形成下一个更高级别的模块。
-
这种将几个更简单的模块组合成更高级别模块的过程一直持续到实现系统开发过程的主要模块。
结构化设计
结构化设计是一种基于数据流的方法,有助于识别开发系统的输入和输出。结构化设计的主要目标是最小化复杂性并增加程序的模块化。结构化设计还有助于描述系统的功能方面。
在结构化设计中,系统规范是在 DFD 的帮助下以图形方式表示软件开发中涉及的数据流和过程序列的基础。在为软件系统开发 DFD 之后,下一步是开发结构图。
模块化
结构化设计将程序划分为小而独立的模块。这些以自上而下的方式组织,细节显示在底部。
因此,结构化设计使用称为模块化或分解的方法来最小化复杂性并通过将问题细分为更小的部分来管理问题。
好处
- 首先测试关键接口。
- 它提供抽象。
- 它允许多个程序员同时工作。
- 它允许代码重用。
- 它提供控制并提高士气。
- 它使识别结构更容易。
结构化图表
结构化图表是设计模块化、自上而下系统的推荐工具,它定义了系统开发的各个模块以及每个模块之间的关系。它显示了系统模块以及它们之间的关系。
它由由代表模块的矩形框、连接箭头或线条组成的图表组成。
-
控制模块– 它是一个更高级别的模块,用于指导较低级别的模块,称为从属模块。
-
库模块– 它是一个可重用的模块,可以从图表中的多个点调用。
我们有两种不同的方法来设计结构化图表 –
-
Transform-Centered Structured Charts – 当所有交易都遵循相同的路径时使用它们。
-
以交易为中心的结构化图表– 当所有交易不遵循相同的路径时使用它们。
使用结构流程图的目的
-
鼓励自上而下的设计。
-
支持模块的概念并确定适当的模块。
-
显示系统的规模和复杂性。
-
确定每个功能中易于识别的功能和模块的数量。
-
描述每个可识别的功能是一个可管理的实体还是应该分解为更小的组件。
影响系统复杂性的因素
要开发出高质量的系统软件,就必须进行良好的设计。因此,在开发系统设计时主要关注的是软件设计的质量。一个高质量的软件设计是这样的,它最大限度地减少了软件开发的复杂性和成本支出。
与系统开发相关的两个有助于确定系统复杂性的重要概念是耦合和内聚。
耦合
耦合是组件独立性的度量。它定义了系统开发的每个模块对另一个模块的依赖程度。在实践中,这意味着系统中模块之间的耦合越强,实现和维护系统的难度就越大。
每个模块都应该与其他模块有简单、干净的接口,并且模块之间应该共享最少数量的数据元素。
高耦合
这些类型的系统与相互依赖的程序单元相互连接。对一个子系统的更改会对另一个子系统产生重大影响。
低耦合
这些类型的系统由独立或几乎独立的组件组成。一个子系统的更改不会影响任何其他子系统。
耦合措施
-
内容耦合– 当一个组件实际修改另一个组件时,修改后的组件完全依赖于修改一个。
-
Common Coupling – 当通过组织系统设计来减少耦合量时,以便可以从公共数据存储访问数据。
-
控制耦合– 当一个组件传递参数来控制另一个组件的活动时。
-
Stamp Coupling – 当数据结构用于将信息从一个组件传递到另一个组件时。
-
数据耦合– 当仅传递数据时,组件通过此耦合连接。
凝聚
内聚力是衡量其组成部分之间关系紧密程度的指标。它定义了一个模块的组件彼此之间的依赖程度。在实践中,这意味着系统设计师必须确保 –
-
它们不会将基本流程拆分为零散的模块。
-
它们不会将在 DFD 上表示为流程的无关流程聚集到无意义的模块中。
最好的模块是那些在功能上具有凝聚力的模块。最糟糕的模块是那些巧合内聚的模块。
最差的凝聚力
巧合内聚存在于一个部件中,该部件的部件与另一个部件无关。
-
逻辑内聚– 将多个逻辑相关的功能或数据元素放置在同一组件中。
-
Temporal Cohesion – 用于初始化系统或设置变量的组件按顺序执行多个功能,但这些功能与所涉及的时间相关。
-
Procedurally Cohesion – 当功能在一个组件中组合在一起时,只是为了确保这个顺序。
-
Sequential Cohesion – 当组件的一部分的输出是其下一部分的输入时。