`
pouyang
  • 浏览: 322435 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

design 概要设计与详细设计的区别

阅读更多

 

概要设计

就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。

概要设计阶段通常得到软件结构图。

 

详细设计

就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等。

 

概要设计和详细设计

 

    在软件设计中,大家经常问到的一个问题是:概要设计应该怎样一个概要法,详细设计应该怎样一个详细法?

    这个问题在公司内部经常有人问。现在陈述一下:

    我们公司的研发流程是瀑布型的,这个模型中的分析、设计阶段是基于经典的结构化方法。结构化设计方法的基本思路是:按照问题域,将软件逐级细化,分解为不必再分解的的模块,每个模块完成一定的功能,为一个或多个父模块服务(即接受调用),也接受一个或多个子模块的服务(即调用子模块)。模块的概念,和编程语言中的子程序或函数是对应的。

    这样一来,设计可以明显地划分成两个阶段:

    概要(结构)设计阶段:把软件按照一定的原则分解为模块层次,赋予每个模块一定的任务,并确定模块间调用关系和接口。

    详细设计阶段:依据概要设计阶段的分解,设计每个模块内的算法、流程等。

 

    概要设计阶段

    在这个阶段,设计者会大致考虑并照顾模块的内部实现,但不过多纠缠于此。主要集中于划分模块、分配任务、定义调用关系。模块间的接口与传参在这个阶段要定得十分细致明确,应编写严谨的数据字典,避免后续设计产生不解或误解。概要设计一般不是一次就能做到位,而是反复地进行结构调整。典型的调整是合并功能重复的模块,或者进一步分解出可以复用的模块。在概要设计阶段,应最大限度地提取可以重用的模块,建立合理的结构体系,节省后续环节的工作量。

 

    概要设计文档最重要的部分是分层数据流图、结构图、数据字典以及相应的文字说明等。以概要设计文档为依据,各个模块的详细设计就可以并行展开了。

 

    详细设计阶段

在这个阶段,各个模块可以分给不同的人去并行设计。在详细设计阶段,设计者的工作对象是一个模块,根据概要设计赋予的局部任务和对外接口,设计并表达出模块的算法、流程、状态转换等内容。这里要注意,如果发现有结构调整(如分解出子模块等)的必要,必须返回到概要设计阶段,将调整反应到概要设计文档中,而不能就地解决,不打招呼。

 

    详细设计文档最重要的部分是模块的流程图、状态图、局部变量及相应的文字说明等。一个模块一篇详细设计文档。

 

    概要设计文档相当于机械设计中的装配图,而详细设计文档相当于机械设计中的零件图。文档的编排、装订方式也可以参考机械图纸的方法。

    我们公司对模块的认识和传统定义有所不同,认为是较大的软件功能单元才可以称作模块。这种认识使大家对概要设计和详细设计的分工产生了混乱的理解,降低了文档的可用性,应该予以纠正。

    概要设计中较顶层的部分便是所谓的方案。方案文档的作用是在宏观的角度上保持设计的合理性。

    有的项目采用面向对象的分析、设计方法。可能在概要设计、详细设计的分工上疑问更多。其实,面向对象的分析、设计方法并没有强调结构化方法那样的阶段性,因此一般不引入概要、详细设计的概念。如果按照公司的文档体系,非要有这种分工的话,可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看做概要设计;类属性、方法的内部实现看做详细设计。

 

 

      1. 需求分析 -- 产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作(概要设计)。

      2. 概要设计 -- 产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。  

      3. 详细设计 -- 产生软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。理论上要求可以照此编码。

 

      概要设计和详细设计的区别与联系

 

      软件设计采用自顶向下、逐次功能展开的设计方法,首先完成总体设计,然后完成各有机组成部分的设计。

 

      根据工作性质和内容的不同,软件设计分为概要设计和详细设计。概要设计实现软件的总体设计、模块划分、用户界面设计、数据库设计等等;详细设计则根据概要设计所做的模块划分,实现各模块的算法设计,实现用户界面设计、数据结构设计的细化,等等。

 

      概要设计是详细设计的基础,必须在详细设计之前完成,概要设计经复查确认后才可以开始详细设计。概要设计,必须完成概要设计文档,包括系统的总体设计文档、以及各个模块的概要设计文档。每个模块的设计文档都应该独立成册。

 

      详细设计必须遵循概要设计来进行。详细设计方案的更改,不得影响到概要设计方案;如果需要更改概要设计,必须经过项目经理的同意。详细设计,应该完成详细设计文档,主要是模块的详细设计方案说明。和概要设计一样,每个模块的详细设计文档都应该独立成册。

 

      概要设计里面的数据库设计应该重点在描述数据关系上,说明数据的来龙去脉,在这里应该结合我们的一下结果数据,说明这些结果数据的源点,我们这样设计的目的和原因。详细设计里的数据库设计就应该是一份完善的数据结构文档,就是一个包括类型、命名、精度、字段说明、表说明等内容的数据字典。

 

      概要设计里的功能应该是重点在功能描述,对需求的解释和整合,整体划分功能模块,并对各功能模块进行详细的图文描述,应该让读者大致了解系统作完后大体的结构和操作模式。详细设计则是重点在描述系统的实现方式,各模块详细说明实现功能所需的类及具体的方法函数,包括涉及到的sql语句等。

 

      概要设计,详细设计之间的关系是什么?

 

 

      我的看法:

 

 

      概要设计只说明系统有多少个模块,各模块之间的接口和个模块本身的功能。

      详细设计说明某个具体模块如何实现,粒度应该比程序略高一些。

 

      但是问题来了,各个模块之间是有层次关系的,也有先后逻辑关系。这就说明,在概要设计中,还必须考虑模块的实现细节,否则,你怎么知道这个模块下面要划分子模块?你怎么知道各子模块的调用顺序?

      这就说明,概要设计和详细设计是重叠进行的,而软件工程书上说的确是顺序进行的,不知道是不是我的理解有问题。

 

      举个例子,例如排序程序,如果设计2个模块:

      一个主模块用于排序。

 

      子模块用于交换2个变量,主模块调用子模块。

      但是子模块是怎么设计出来的呢?肯定是你先想到了用冒泡等排序方式的时候需要交换数据,这已经考虑了主模块足够多的细节,似乎属于"详细设计"了,但是目前进行的是概要设计,这就产生了我所说的重叠的情况。

 

      看看上面的帖子:

 

      上面也有朋友说到用建筑的例子来比喻。

 

      软件的概要设计,主要是建立软件系统的整体架构,也就是我们在盖房子时候,需要先将房子的整个架子构建起来。

 

      软件的详细设计,主要是将软件系统的各个部分的具体设计方法、逻辑、功能采用文字方式进行表述。这样在实现过程中,Coding人员原则上严格按此进行代码实现即可。

 

      这样的一个最为简单的例证:我们可以将代码交付第三方来做。验证与跟踪采取设计来.

 

分享到:
评论
2 楼 pouyang 2010-04-09  
我也是刚开始写概要设计的,不知道从哪里下手
1 楼 chian_xxp 2010-04-09  
没有必要分得这么清楚。让一个刚开始写设计的人迷糊。

相关推荐

    概要设计与详细设计的区别

    ### 概要设计与详细设计的区别 在软件开发过程中,概要设计与详细设计是两个非常重要的阶段。这两个阶段对于确保软件项目的成功至关重要。本文将详细介绍概要设计与详细设计的概念、它们之间的区别以及如何有效地...

    详细设计和概要设计模板

    在软件开发过程中,详细设计和概要设计是两个至关重要的阶段。它们构成了系统设计的核心,为程序员编写代码提供了清晰的蓝图。以下是对这两个概念的详细解释: **概要设计(High-Level Design)** 概要设计,又...

    概要设计文档、详细设计文档

    详细设计文档(Detailed Design Document)则是在概要设计的基础上,深入到每个模块的内部工作原理,为编码阶段提供具体的指导。这份文档通常包含以下元素: 1. **类和对象设计**:详细列出系统中的类和对象,以及...

    软件工程概要设计与详细设计模板与说明书

    在软件开发过程中,概要设计和详细设计是两个至关重要的阶段,它们构成了软件工程的核心部分。以下是关于这两个设计阶段的一些详细知识。 概要设计(也称为初步设计或高层设计)是软件开发的第一个主要设计阶段,它...

    华为软件概要设计模板.doc

    "华为软件概要设计模板" 华为软件概要设计模板是软件设计的重要组件,它提供了一个通用的模板,帮助软件开发者和设计者快速创建高质量的软件设计文档。本模板涵盖了软件设计的所有方面,从产品名称、版本号、到高级...

    (完整word)华为软件概要设计模板.doc

    Description:本文档提供了华为软件概要设计模板的详细说明,涵盖了软件设计的各个方面,包括设计目的、范围、软件名称、软件功能、软件应用、高层设计、级别0设计描述、级别1设计描述、级别2设计描述、接口描述、...

    软件项目概要和详细设计标准模板和样例

    概要设计主要关注软件系统的大体结构和组件,而详细设计则深入到每个模块的功能和接口,确保软件的可实现性和可维护性。 标题中的"软件项目概要和详细设计标准模板和样例"指的是提供了一套标准化的方法和实例,帮助...

    界面 UI 概要设计

    【界面 UI 概要设计】是用户界面(User Interface, UI)设计的重要环节,它涉及到创建直观、...在界面UI概要设计完成后,将进入详细的界面设计和开发阶段,进一步细化每一个元素和交互细节,直至最终形成完整的用户界面。

    界面UI概要设计工具

    在压缩包文件"GUIDesignStudio"中,我们可以推测这是一个具体的设计工具名称,它可能包含了各种设计模板、资源库、交互模拟工具,以及协作和版本控制功能,便于设计师进行界面UI的概要设计。使用此类工具,设计师...

    概要设计说明书模版

    - **编写目的**:该文档的创建是为了帮助开发团队全面理解系统,明确需求,高效进行概要设计和详细设计,同时便于后续的维护工作。 - **读者对象**:主要面向设计师、开发人员、项目经理、需求分析师等相关专业...

    软件概要设计说明书样本.doc

    软件设计是软件开发的核心活动,它包括需求分析、概要设计、详细设计和实现等阶段。软件设计的主要目的是创建一个满足用户需求的软件系统。概要设计是软件设计的第二阶段,它是对软件系统的总体设计和规划。 二、...

    概要设计说明书模板

    ### 概要设计说明书模板详解 #### 一、引言 **编写目的**:概要设计说明书是软件开发过程中的关键文档之一,旨在为软件设计阶段提供指导和规范,确保软件开发活动按照既定目标和标准进行。它不仅服务于开发团队,...

    软件开发-概要设计说明书.pdf

    软件开发概要设计说明书的编制需要遵循一定的规范和标准,包括 IEEE Std 1016-2007《IEEE Standard for Information Technology—Software Engineering—Design Descriptions》等。该标准提供了软件设计说明书的编制...

    系统概要设计文档模板

    【系统概要设计文档模板】是软件开发过程中不可或缺的一部分,它是对系统进行全面、高层次的规划,为详细设计和实现提供基础。以下是对该文档各部分的详细解释: 1. **引言** - **编写目的**:明确文档的编写是...

    网上书店概要设计说明书

    在网上书店项目中,概要设计说明书 plays a crucial role in outlining the overall architecture and design of the online bookstore system. 1. 背景 在网络购物系统中,网上书店是一个非常popular的应用场景。...

    概要设计说明书、详细设计说明书、数据库设计说明文档

    详细设计说明书(Low-Level Design Document,LLD)是对概要设计的细化,它深入到代码级别,为程序员提供实现指导。主要内容包括: - **类和对象设计**:定义类的属性和方法,以及类之间的关系,如继承、聚合、...

    概要设计ppt

    除了结构图,【面向数据流的设计方法】(Structured Design,SD)也是概要设计中常用的一种技术。这种方法基于数据流图(Data Flow Diagram,DFD),将复杂的系统分解为数据的输入、处理(变换中心)、输出以及可能...

    学生信息管理系统软件概要设计说明书和详细设计说明书

    软件的设计通常分为概要设计和详细设计两个阶段,每个阶段都有其独特的目标和内容。 ### 概要设计说明书(Conceptual Design Document) 概要设计说明书是在软件开发过程中的早期阶段编写的,主要目的是概述系统的...

    概要设计说明书

    ### 概要设计说明书知识点详解 #### 一、引言 **1.1 编写目的** ...以上是对“概要设计说明书”的知识点进行了详细解读,涵盖了系统的设计思路、架构特点、接口功能以及数据库结构等方面的内容。

    人力资源管理系统概要设计说明书

    《人力资源管理系统概要设计说明书》是一份详细阐述如何构建、规划和实现人力资源管理系统的文档,旨在为项目团队和利益相关者提供清晰的指导。本文将深入探讨系统的主要组成部分、功能需求、架构设计以及技术选型等...

Global site tag (gtag.js) - Google Analytics