预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共65页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4章软件设计4.1软件设计概述4.1.1软件设计的任务软件设计的基本目的就是回答“系统应该如何实现?”这个问题。软件设计的任务,就是把分析阶段产生的软件需求说明转换为用适当手段表示的软件设计文档。1.系统结构设计系统结构设计用于定义软件主要结构性元素之间的关系。系统结构设计表示(即基于计算机的系统的框架)可以从系统规约、分析模型以及分析模型中所定义的子系统的交互中导出。2.数据设计数据设计用于将分析阶段创建的信息模型,如数据字典、数据流图等,转变为实现软件所需的数据结构。部分数据设计可能和软件系统结构的设计同时发生,但更详细的数据设计活动则会发生在设计每个具体软件构件(或模块)的时候。3.接口设计接口设计描述软件内部模块之间以及软件与人之间是如何通信的(包括数据流和控制流)。一个接口意味着特定的信息流(如数据流或控制流)以及行为类型,因此,数据和控制流图提供了接口设计所需的信息。4.构件设计从工程管理的角度来看,传统的软件设计任务通常分两个阶段完成,即概要设计和详细设计。4.1.2模块与模块化在软件系统设计中,模块是一个明确定义的输入、输出和特性的程序实体,通常程序中单独命名且可通过名字访问的过程函数、子程序或宏调用都可看作模块。一般模块具有以下几种特征:(1)接口:模块的输入/输出。(2)功能:模块实现什么功能,有什么作用。(3)逻辑:描述模块内部如何实现需求及所需数据。(4)状态:模块的运行环境,模块间调用与被调用关系。软件设计应当遵循“模块化”的原则。所谓“模块化”,就是将程序划分成若干个独立的模块的过程,其中,每个模块完成一个特定子功能,每个模块既相对独立,又相互联系,它们共同完成系统指定的各项功能。4.1.3抽象与细化抽象是指从一些事物中抽取其本质的共同的特性,而忽略其非本质细节的差异。细化是一种先总体、后局部的思维原则,也就是一种逐层分解、分而治之的方法。模块的“粒度”是指模块的规模。如果模块的规模过大,会使得模块的可重用性差,同时,修改、维护也比较困难。在模块设计中,“细化”与“抽象”的思想极为重要。通过细化,可以将一个大模块分解成若干个小模块;通过抽象,可以将多个模块中的公共部分概括出来,用单独的模块表示,从而降低了模块的粒度。4.1.4信息隐蔽信息隐蔽是在设计和确定模块时,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说是不能访问的。它通过定义一组独立的模块来实现有效的模块化。信息隐蔽作为一种设计准则用于模块化系统,在测试与维护期间会为软件修改带来极大的好处。4.1.5模块的独立性模块的独立性是指软件系统中的每个模块只涉及软件要求的具体的子功能,应与软件系统中其他模块的接口保持简单化,即模块间的联系不要太多。例如,若一个模块只具有单一的功能,且与其他模块没有太多的联系,那么称此模块具有模块独立性。1.耦合2)数据耦合数据耦合指的是模块间的通信参数都是数据项。数据是模块间进行信息交流的一种必不可少的联系形式。在模块之间传输的数据项越少,产生的不利影响越少。3)标记耦合如果两个模块通过参数表传递记录信息,而这个记录是某一数据结构的子结构(如字符串),而不是简单变量4)控制耦合控制耦合是指一个模块向另一个模块传送的信息控制了另一个模块的执行。图4-3控制耦合的修改5)外部耦合如果一组模块通过同—个全局简单变量相互作用,那么它们之间的耦合称为外部耦合。6)公共耦合公共耦合就是一组模块都访问同一全局数据结构。7)内容耦合内容耦合是指一个模块直接访问另一模块的内容。图4-47种耦合的耦合性及数据独立性2.内聚3)时间内聚时间内聚是指一个模块的各个组成部分的处理动作和时间有关。4)通信内聚通信内聚是指一个模块内各个组成部分的处理动作都使用相同的输入数据或产生相同的输出数据。5)顺序内聚顺序内聚是指一个模块内部的各个组成部分执行的几个处理动作有这样的特征:前一处理动作所产生的输出数据是下一个处理动作的输入数据。6)功能内聚功能内聚是指一个模块内部的各个组成部分的处理动作全部都为执行同一个功能而存在,并且只执行一个功能。图4-56种耦合的耦合性及数据独立4.1.6自底向上与自顶向下设计策略采用自顶向下的策略,首先将整个系统分解成子系统,再将子系统分解成更小的子系统,直至分解为能够直接实现的软件模块。采用自底向上的策略则首先考虑最基本的系统构件和系统的内部函数,然后逐步将这些构件聚合成更大的软件模块、子系统,最终形成整个系统。4.1.7结构化设计原则(1)设计过程应该能够预测和评估。(2)设计对于分析模型应该是可跟踪的。(3)设计应该重视资源重用。(4)设计应该使最终软件尽可能和现实世界中的问题“相似”,也就是说,软件设计的结构应该尽可能地模拟