5. 软件设计
5.1. FAQ
5.1.1. 软件设计中的概要设计和详细设计有什么区别?
软件设计中的概要设计和详细设计有以下区别:
粒度:概要设计的粒度更大,关注系统的整体框架和体系结构;详细设计的粒度更小,关注每个模块和组件的具体实现。
抽象程度:概要设计更加抽象,只定定义模块和组件之间的关系、接口和交互;详细设计更加具体,定义每个模块和组件内部的详细逻辑和算法。
变动性:概要设计的变动性更大,体系结构的变更会影响整个系统;详细设计的变动性更小,模块内部的变更影响更加局限。
依赖性:后续的详细设计依赖于早期的概要设计,但概要设计则比较独立。
实施顺序:概要设计先行,详细设计后续,软件实施过程也遵循这个顺序。
所以,总体来说,概要设计关注 forest,定义系统框架和体系结构;详细设计关注 trees,定义每个模块的详细功能和算法。它们有着不同的粒度、抽象程度和依赖性,软件设计过程也按照从概要到详细的顺序逐步实施。概要设计为详细设计提供了基础和指导,两者共同驱动软件系统设计的完备性和质量。
5.1.2. 软件概要设计和详细设计的另一种解释
概要设计:Architectural Design 或 High-level Design,
详细设计:Detailed Design 或 Low-level Design,
概要设计关注系统的整体架构,定义各个模块和组件之间的关系。它是高层次的设计,对应着系统的宏观视角。
详细设计关注每个模块内部的具体实现细节,定义详细的逻辑和算法。它是低层次的设计,对应着系统的微观视角。
所以,Architectural Design与Detailed Design可以视为软件设计的宏观层面与微观层面,它们共同确保设计的完备与质量。
高层次的设计为低层次的设计提供指导,而低层次的设计也反过来验证高层次设计方案的可行性。
除此之外,概要设计也被称为“顶层设计”或“框架设计”,详细设计也被称为“底层设计”或“逻辑设计”。
而按照软件工程的设计过程,我们通常先进行概要设计,然后是详细设计,最终才进入代码实施的阶段。
所以,Architectural Design和Detailed Design在软件系统设计过程中有着非常重要而紧密的逻辑关系。它们共同推动设计的完备性与质量,是高质软件设计不可或缺的两个层面。