文档介绍:“系统应该如何实现?”这个问题。软件设计的任务,就是把分析阶段产生的软件需求说明转换为用适当手段表示的软件设计文档。。系统结构设计表示(即基于计算机的系统的框架)可以从系统规约、分析模型以及分析模型中所定义的子系统的交互中导出。,如数据字典、数据流图等,转变为实现软件所需的数据结构。部分数据设计可能和软件系统结构的设计同时发生,但更详细的数据设计活动则会发生在设计每个具体软件构件(或模块)的时候。(包括数据流和控制流)。一个接口意味着特定的信息流(如数据流或控制流)以及行为类型,因此,数据和控制流图提供了接口设计所需的信息。,传统的软件设计任务通常分两个阶段完成,即概要设计和详细设计。,模块是一个明确定义的输入、输出和特性的程序实体,通常程序中单独命名且可通过名字访问的过程函数、子程序或宏调用都可看作模块。一般模块具有以下几种特征:(1)接口:模块的输入/输出。(2)功能:模块实现什么功能,有什么作用。(3)逻辑:描述模块内部如何实现需求及所需数据。(4)状态:模块的运行环境,模块间调用与被调用关系。软件设计应当遵循“模块化”的原则。所谓“模块化”,就是将程序划分成若干个独立的模块的过程,其中,每个模块完成一个特定子功能,每个模块既相对独立,又相互联系,它们共同完成系统指定的各项功能。,而忽略其非本质细节的差异。细化是一种先总体、后局部的思维原则,也就是一种逐层分解、分而治之的方法。模块的“粒度”是指模块的规模。如果模块的规模过大,会使得模块的可重用性差,同时,修改、维护也比较困难。在模块设计中,“细化”与“抽象”的思想极为重要。通过细化,可以将一个大模块分解成若干个小模块;通过抽象,可以将多个模块中的公共部分概括出来,用单独的模块表示,从而降低了模块的粒度。