[转]概要设计与详细设计的区别

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

概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。
详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。

概要设计阶段通常得到软件结构图
详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等

概要设计和详细设计

在软件设计中,大家经常问到的一个问题是:概要设计应该怎样一个概要法,详细设计应该怎样一个详细法?
这个问题在公司内部经常有人问。现在陈述一下。
我们公司的研发流程是瀑布型的,这个模型中的分析、设计阶段是基于经典的结构化方法。
结构化设计方法的基本思路是:按照问题域,将软件逐级细化,分解为不必再分解的的模块,每个模块完成一定的功能,为一个或多个父模块服务(即接受调用),也接受一个或多个子模块的服务(即调用子模块)。模块的概念,和编程语言中的子程序或函数是对应的。
这样一来,设计可以明显地划分成两个阶段:
概要(结构)设计阶段:把软件按照一定的原则分解为模块层次,赋予每个模块一定的任务,并确定模块间调用关系和接口。
详细设计阶段:依据概要设计阶段的分解,设计每个模块内的算法、流程等。

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

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

概要设计文档相当于机械设计中的装配图,而详细设计文档相当于机械设计中的零件图。文档的编排、装订方式也可以参考机械图纸的方法。
我们公司对模块的认识和传统定义有所不同,认为是较大的软件功能单元才可以称作模块。这种认识使大家对概要设计和详细设计的分工产生了混乱的理解,降低了文档的可用性,应该予以纠正。
概要设计中较顶层的部分便是所谓的方案。方案文档的作用是在宏观的角度上保持设计的合理性。
有的项目采用面向对象的分析、设计方法。可能在概要设计、详细设计的分工上疑问更多。其实,面向对象的分析、设计方法并没有强调结构化方法那样的阶段性,
因此一般不引入概要、详细设计的概念。如果按照公司的文档体系,非要有这种分工的话,可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看
做概要设计;类属性、方法的内部实现看做详细设计。

1.需求分析--产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作(概要设计)。
2.概要设计--产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。  
3.详细设计--产生软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。理论上要求可以照此编码。

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

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

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

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

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

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

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

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

Q:
我的看法:
    概要设计只说明系统有多少个模块,各模块之间的接口和个模块本身的功能
    详细设计说明某个具体模块如何实现,粒度应该比程序略高一些

但是问题来了,各个模块之间是有层次关系的,也有先后逻辑关系。这就说明,在概要设计中,还必须考虑模块的实现细节,否则,你怎么知道这个模块下面要划分子模块?你怎么知道各子模块的调用顺序?
    这就说明,概要设计和详细设计是重叠进行的,而软件工程书上说的确是顺序进行的,不知道是不是我的理解有问题。

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

A:

看看上面的帖子,有意思的居多。

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

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

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

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

我看上面还有一个朋友说:快速做代码。这个本身没有值得批评之处。但只要想一下,你写的代码没有任何设计思想、文档留下的情况,一旦你离开,如何维护?重
新设计吗?还是花费几倍人力去研究你写的几千/万,甚至几十万行代码?如果是这样的,你没错,关键是你们老板太对了,钱算什么。

时间: 2024-10-19 16:22:21

[转]概要设计与详细设计的区别的相关文章

概要设计和详细设计说明书的区别

1.需求分析--产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确.无歧义.不涉及具体实现方法.用户能看得明白,开发人员也可据此进行下面的工作(概要设计). 2.概要设计--产生软件概要设计说明书,说明系统模块划分.选择的技术路线等,整体说明软件的实现思路.并且需要指出关键技术难点等. 3.详细设计--产生软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节.理论上要求可以照此编码. 概要设计与详细设计的区别 概要设计就是

概要设计、详细设计(一)概念、方法、实践步骤

1.    概念.方法.实践步骤 设计是指根据需求开发的结果,对产品的技术实现由粗到细进行设计的过程.根据设计粒度和目的的不同可以将设计分为概要设计.详细设计等阶段以便于管理和确保质量.设计内容也要根据软件系统的实际情况进行定义,比如对于交互性要求高的系统可以有视觉设计等等. 一般来说可以将设计阶段划分为概要设计.详细设计2阶段进行管理,程序设计可以结合项目管理.作业配分.开发团队的能力以及质量要求等因素来决定是否作为单独的阶段进行管理. n  概要设计: 定义实现需求的工作产品技功能.技术构架

概要设计、详细设计(三)关键点(Know-How)、运用技巧

1.    关键点(Know-How).运用技巧 4.1 设计准则 制定设计准则是概要设计阶段的最主要.最关键的工作.在实际工作中往往忽略,多数项目牺牲在这个环节.制定设计准则着眼于如何更好的做设计,设计准则通常要考虑的内容包括:设计的内容.方法.工具.模板.命名规约.模块划分规则(尤其设计粒度).质量以及效率评估方式等等.我们首先要根据系统的需求.客户能力.项目的特征(成本.规模.进度.质量)以及自身的经验确定设计的内容.对于软件外包类的工程项目,尤其一些国际外包项目,设计准则一般已经制定好了

概要设计、详细设计(四)心得体会

1. 设计一般来说是个学习迭代的过程.通过不断的评审&确认&改善达到成熟. 但是前提必须写出设计文档,而不能仅仅停留在脑袋里. 2. 分层.抽象.归纳.汇总 是设计的主要方法.其中分层是最最基本的,而是绝大数设计人员不能掌握的(这个有点悲剧),归纳是常见的方法. 3.交互的设计往往是人们关注的重点,所以也要特别注意.特别设计.对于画面的风格.操作等我的理解是“美的事物,任何人都觉得美”. 4. 设计的完整性.严密性.可用性是成功的主要因素. 5.设计不等同于创造和创新,但是好的设计一定包含

概要设计与详细设计

概要设计与详细设计 在写概要设计与详细设计的时候,对于内容以及他们之间的界限很容易模糊.今天写点自己的想法.有问题请大家指教:[email protected] 首先大家要注意这2个文档最后2字,都是设计.设计就是设计,不是代码因此不要误认为详细设计就是贴代码. 概设与详设应该是,总分的关系.概设相当于一个总体规划,拿去大家先评审.然后在概设评审通过后,针对里面的功能进行详细设计.因此概设与详设需要在开始写之前确定他们描述的方向. 概设内容如下: 具体详细设计内容如下: 

学生宿舍管理系统--需求说明、概要设计、详细设计

1.引言 1.1编写目的 学生宿舍管理系统对于一个学校来说是必不可少的组成部分.目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的.而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低.当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物.信息世界永远不会是一个平静的世界,

需求说明书+软件概要设计+软件详细设计

<基于物联网的车内安防系统项目需求说明书+系统概要说明+系统详细说明> 队长:邢正080     队员:董冰068   许国庆079   张琦057   曹华058 ①需求说明书部分: 一.引言 1.编写目的 该需求说明书是“基于物联网的车内安防系统”开发中的重要文献资料,是软件设计的依据,是工程的起点,应是用户需求的真实反映.是开发人员进行系统总体按需设计内容及具体实施开发工程提供必要的参考资料,并且,在系统开发完成后期为系统的测试.验收提供帮助.其编写过程由项目的重要策划人完成.预期读者是

概要设计、详细设计(二) 设计的内容

3.1     概要设计的主要内容 不同的系统类型其概要设计的内容也不相同,通过概要设计准则我们可以根据实际情况确定概要设计的具体内容,但是一般来说,概要设计的内容可以包含系统构架.模块划分.系统接口.数据设计4个主要方面的内容. 1.系统构架 系统构架包含系统使用的软硬件技术平台及相关技术列表.系统的物理架构.物理器件类型.数据库管理系统类型.服务器类型.子系统划分及部署方式.系统的软件架构.第三方软件平台列表等. 例: 硬件架构 例: 软件架构:包括层次划分.子系统&模块划分 例: 软件技术

【设计】概要设计-详细设计-到底需要输出什么???

概要设计-详细设计 概要设计.详细设计:概念.方法.实践步骤-博客-云栖社区-阿里云 概要设计.详细设计(二) 设计的内容_可爱桑树_新浪博客 项目管理_可爱桑树_新浪博客 软件系统概要设计的三大要素 软件概要设计 - 天神一 - 博客园 概要设计与详细设计分别要做什么 - -Numeric- - 博客园 软件概要设计与详细设计的区别 - CSDN博客 详细设计_百度百科 概要设计_百度百科 [图文]大型软件系统的设计思路_百度文库 一分钟教你知道乐观锁和悲观锁的区别 - CSDN博客 原文地址