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

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

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

举个例子,例如排序程序,如果设计2个模块:
一个主模块用于排序
子模块用于交换2个变量,主模块调用子模块
但是子模块是怎么设计出来的呢?肯定是你先想到了用冒泡等排序方式的时候需要交换数据,这已经考虑了主模块足够多的细节,似乎属于“详细设计”了,但是目前进行的是概要设计,这就产生了我所说的重叠的情况。
...全文
3030 67 打赏 收藏 转发到动态 举报
写回复
用AI写文章
67 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixiaoqiang 2005-02-06
  • 打赏
  • 举报
回复
今天刚看了鱼骨图,觉得概要设计好像就是做个鱼骨图,把每个需求用鱼骨图画出来,基本就明了了。
详细设计就是实现骨头上的每个细节,不知道这想法对不?
agiler_charming 2005-02-05
  • 打赏
  • 举报
回复
文档的本质应该是抽象,文档的价值也在于此.
"详细设计文档"本来就是一个谬误:设计要详细干嘛?再详细有代码详细吗,再详细能验证吗?能运行吗?能测试吗?
wqch22hit 2005-02-05
  • 打赏
  • 举报
回复
有些观点很好,学习中,觉得设计图和施工图的比喻很形象
zuihouyibeicha 2005-02-04
  • 打赏
  • 举报
回复
不要忽略的一点:
以上各位都是从完成程序功能的角度来讲的,用的比喻也很形象,但有一点,你们在从这个角度描述二者区别时给我感觉是这样的:程序应该是由你来完成,概要设计和详细设计只是你在完成该程序中用的手段。如果是这样的话,那这又何必呢,不如自己完成程序后写个详细的文档,说说程序的功能模块和实现的细节不就ok了吗?!

所以要换个角度再看这个问题,在说明这个角度之前,前提你要承认我们现在说得程序是那种有团队写的程序,该程序的开发和设计在软件开发流程管理过程之中,这一点至关重要!

从面向的对象来看,概要设计是给那些在单位或公司中非专业人士看的,要他们知道程序为了满足哪些需求而要完成的功能和结构,这个里面不牵扯到什么具体的实现,你想想,和这些人说程序给他们讲具体实现他们懂吗?就是有点明白,我想他们也不关心这些细节是怎么来实现的:)

而详细设计是给那些程序员看的,在一个团队中,你不可能要求这些程序员水平都很高,大部分应该是经验很有限的,所以详细设计里的每一步要让他们都能写出对应的代码来实现,不能太难,那样程序员没有办法完成,也不能太易,那样不如你自己来完成,这里面有个度。

在这些过程中同时也形成了文档,应对了人员变动而带来的风险。

这样才有软件的管理和软件工程化啊,也只有这样才能形成能够完成大型功能的程序啊!
Hasonsg 2005-01-27
  • 打赏
  • 举报
回复
看看上面的帖子,有意思的居多。

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

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

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

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

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

另外的一个问题是:中国人如此聪明,但中国为什么没有出现巨型软件产品呢?个人英雄主义依然很严重,老板的短视利益行为大行其道。

如果是如此,再对比一下你自身,如果我的有点道理,请大家不要批我。
programeyonger 2005-01-27
  • 打赏
  • 举报
回复
这个帖子很好!

好贴
很好贴
真是好贴。
非常的好贴。
值得一看好贴。
。。。。。。。。。
zhishao 2004-12-08
  • 打赏
  • 举报
回复
个人非常欣赏pllli(不懂装懂)用建筑作的比喻!

虽然详细说明怎么做概要设计、怎么做详细设计比较费劲一些。不过,区分两者我觉得倒是简单得很:

概要设计,或者叫模块设计,站在每个模块外部,描述这个模块的外在。比如各位都已经提到的接口、完成的功能。我更喜欢称之为每个模块所能提供的服务,以及需要的服务!非常类似于合同实体中的权利和义务,两者不可或缺!

详细设计,站在每个模块的内部探讨如何实现对外的承诺(向外部系统或其他模块提供的服务),以及如何使用合理的使用外部系统或其他模块提供的服务。——我很喜欢“施工图”的说法。:)

不当之处,请高手多指教。
hncdczp 2004-12-07
  • 打赏
  • 举报
回复
看看
myzqj 2004-12-07
  • 打赏
  • 举报
回复
學習
elseif 2004-11-30
  • 打赏
  • 举报
回复
OOAD里有概要设计和详细设计一说么?????
RUP里有提到这两个概念么?

不要把传统软件工程中的概念搬到OOAD中来,这样子对号入座不可能对准!
mmmaaa 2004-11-29
  • 打赏
  • 举报
回复
凑凑热闹:p
概要设计: 是以需求分析为基础,涵盖其全部内容,解决怎么作得问题,为详细设计做基础
详细设计: 在概要设计的基础上解决每个模块如何实现得问题.简单得说就是程序流程图
futuredreams 2004-11-29
  • 打赏
  • 举报
回复
概要设计和原型设计
设计图标和用户界面。
进行概要设计、制作产品原型(如果是B/S版本则制作页面流程),提供给用户并收集用户反馈意见循环改进。
功能详细设计
按照统一的文档规范编写详细设计文档,包含算法设计、流程设计和数据结构设计。
xshflyhigher 2004-11-29
  • 打赏
  • 举报
回复
mark 第一次来这里
ted888 2004-11-29
  • 打赏
  • 举报
回复
楼上说的不错!
kingdom99 2004-11-28
  • 打赏
  • 举报
回复
概要设计:程序架构
详细设计:程序流程图
pandix 2004-11-24
  • 打赏
  • 举报
回复
个人之见:
概要设计主要是在需求规格说明书的基础上对整个系统的架构进行描述和功能模块的划分、以及结构算法的分析描述
详细设计可以结合系统的开发语言对概要设计中的所划分的功能模块进行细化,表现形式就是伪代码和数据流向图
wenww 2004-11-23
  • 打赏
  • 举报
回复
hao tie
knifezhtx 2004-11-23
  • 打赏
  • 举报
回复
师者,传道、授业、解惑也!
多谢楼上的前辈们。
流星亚瑟 2004-11-11
  • 打赏
  • 举报
回复
搬个凳子坐下听课
jianl 2004-11-08
  • 打赏
  • 举报
回复
>既然这样,为什么不开始编码而要去做什么详细设计呢?
简单,除非不是做详细设计的人写代码,否则不必进行详细设计,做到概要设计就可以了。
做好接口设计就好了。
加载更多回复(43)

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧