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

讨论了软件工程中概要设计与详细设计的关系及其实施过程中的重叠性问题。认为两者并非完全顺序进行,而是存在一定的交叠。通过排序程序案例分析了这种重叠性。

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

楼主lanying(蓝鹰)(问个不休)2004-08-12 19:22:06 在 软件工程/管理 / 管理版 提问
我的看法:  
  概要设计只说明系统有多少个模块,各模块之间的接口和个模块本身的功能  
  详细设计说明某个具体模块如何实现,粒度应该比程序略高一些  
   
  但是问题来了,各个模块之间是有层次关系的,也有先后逻辑关系。这就说明,在概要设计中,还必须考虑模块的实现细节,否则,你怎么知道这个模块下面要划分子模块?你怎么知道各子模块的调用顺序?  
  这就说明,概要设计和详细设计是重叠进行的,而软件工程书上说的确是顺序进行的,不知道是不是我的理解有问题。  
   
  举个例子,例如排序程序,如果设计2个模块:  
  一个主模块用于排序  
  子模块用于交换2个变量,主模块调用子模块  
  但是子模块是怎么设计出来的呢?肯定是你先想到了用冒泡等排序方式的时候需要交换数据,这已经考虑了主模块足够多的细节,似乎属于“详细设计”了,但是目前进行的是概要设计,这就产生了我所说的重叠的情况。

 


1 楼qingrun(青润)回复于 2004-08-12 19:56:38 得分 20

你的看法有点问题。  
  概要设计是对需求分析的一个进一步细化。不是一个简单的模块性的描述。  
  概要设计阶段就要把一些考虑到的最大的技术难点做一次突破,因此我认为,概要设计实现的是对需求的进一步细化,也就是需求数字化的第一个实际步骤,同时部分需求较为稳定的模块要做先期的开发,技术最难的模块要做技术探索,逐渐推进。

2 楼spgoal(敏捷的狗狗)回复于 2004-08-12 21:31:59 得分 0

如果从需求分析直接跳到详细设计,中间没有一个过渡的过程,出现问题的几率会大很多,软件开发需要按部就班,最简单的按部就班就是按照传统的过程走一次,现在还搞迭代开发,其实也是一步一步走,使软件不断的完善。   
  楼主说的例子,在概要设计阶段,你就可以对排序的算法进行选择,分析其优劣性,概要设计结束时,基本上就已经确定用什么算法了,那么在详细设计时就可以专注与这个算法的具体实现

 

 

### 软件设计中的概要设计详细设计 #### 概要设计的定义 概要设计(也称为顶层设计或高层设计)是软件设计的第一阶段,主要任务是将需求分析的结果转化为软件的顶层架构组织结构。这一阶段需要划分系统的功能模块,并明确各模块之间关系接口[^1]。具体包括以下内容: - 系统总体结构设计:确定系统由哪些模块组成以及这些模块如何协作。 - 数据结构及数据库设计:完成概念设计、逻辑设计物理设计,为后续详细设计奠定基础。 - 编写概要设计文档并进行评审:确保设计满足需求且具有可行性。 #### 详细设计的定义 详细设计是软件设计的第二阶段,其目标是为每个模块提供详细的实现方案,以便程序员能够直接根据设计进行编码[^1]。详细设计的内容通常包括以下几个方面: - 算法设计:为每个模块选择合适的算法以实现所需功能。 - 数据结构设计:定义模块内部使用的数据结构及其操作方法。 - 数据库设计其他设计:细化数据库表结构、索引、视图等;同时考虑代码设计、输入输出设计用户界面设计。 - 编写详细设计说明书并进行评审:确保设计的正确性完整性。 #### 概要设计详细设计关系 概要设计详细设计是软件设计过程中两个紧密相连的阶段。概要设计侧重于宏观层面,关注系统整体架构模块划分;而详细设计则聚焦于微观层面,深入到每个模块的具体实现细节[^1]。两者的关系可以概括为以下几点: - **层次关系**:概要设计位于较高层次,提供全局视角;详细设计位于较低层次,提供局部视角。 - **依赖关系**:详细设计依赖于概要设计的结果,必须在概要设计完成之后才能开始。 - **补充关系**:概要设计提供了系统的大致框架,而详细设计则在此基础上进一步完善细化,使设计更加具体可操作。 ```python # 示例代码展示概要设计详细设计关系 # 概要设计:定义系统的主要模块及其接口 class PaymentSystem: def __init__(self): self.gateway = PaymentGateway() def process_payment(self, amount): return self.gateway.handle_payment(amount) class PaymentGateway: def handle_payment(self, amount): # 详细设计:实现支付处理的具体逻辑 if amount > 0: print(f"Processing payment of {amount}...") return "Payment successful" else: return "Invalid amount" # 使用示例 system = PaymentSystem() result = system.process_payment(100) print(result) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值