“自顶向下,逐步求精”的方法

本文通过直角三角形的故事介绍了自顶向下设计方法,这是一种逐步求精的设计过程,从复杂问题出发,将其分解为简单的小问题,最终形成具有层次结构的程序。并推荐了《计算机网络自顶向下方法》一书。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自顶向下就是将复杂的大问题分解为相对简单的小问题,找出每个问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。其核心本质是”分解”。
自顶向下设计 :一种逐步求精的设计程序的过程和方法。对要完成的任务进行分解,先对最高层次中的问题进行定义、设计、编程和测试,而将其中未解决的问题作为一个子任务放到下一层次中去解决。这样逐层、逐个地进行定义、设计、编程和测试,直到所有层次上的问题均由实用程序来解决,就能设计出具有层次结构的程序。 按自顶向下的方法设计时,设计师首先对所设计的系统要有一个全面的理解.然后从顶层开始,连续地逐层向下分解,起到系统的所有模块都小到便于掌握为止。

这里写图片描述

来自某博客:用两个简单的例子说明一下:某日小明上数学课,他的老师给了很多个不同的直角三角板让小明用尺子去量三角板的三个边,并将长度记录下来。两个小时过去,小明完成任务,把数据拿给老师。老师给他说,还有一个任务就是观察三条边之间的数量关系。又是两个小时,聪明的小明连蹦带跳走进了办公室,说:“老师,我找到了,三条边之中有两条,它们的平方和约等于另外一条的平方。”老师拍拍小明的头,“你今天学会了一个定理,勾股定理。它就是说直角三角形有两边平方和等于第三边的平方和”。另一个故事,某日老师告诉小明“今天要教你一个定理,勾股定理。”小明说,“什么是勾股定理呢?”“勾股定理是说,直角三角形中有两条边的平方和等于第三边的平方。”然后老师给了一大堆直角三角板给小明,让他去验证。两个小时后,小明告诉老师定理是正确的.两个故事刚好是语法分析里面对应的两个方法:第一个故事说的是自底向上的分析方法,第二个故事说的是自顶而下的分析方法。在三维建模软件里也存在这个问题:自底向上就是先建零件图,然后去组装装配图!三维网技术论坛; b2 c2 d( t9 G” k自顶向下就是先建装配图,再在装配图中建零件图!或者先建立一个总装配体的零件图,然后切割成各个零件图!两种分析方法的根本区别是:自底向上的分析,是从具体到抽象;自顶向下的分析,是从抽象到具体。两种分析思路恰恰又是哲学思考问题的两大方向。可见计算机科学与哲学也是相通的。

最后推荐书:《计算机网络自顶向下方法》,它是2009年机械工业出版社出版的图书,作者是(美)库罗斯。作者采用了独创的自顶向下的方法来讲授计算机网络的原理及其协议,即从应用层协议开始沿协议栈向下讲解,强调应用层范例和应用编程接口,使读者尽快进入每天使用的应用程序环境之中进行学习和“创造”。本书的讲解以因特网为例,学以致用;注重教学法,深入浅出地重点讲解计算机网络的基本原理。

### 自顶向下逐步求精绘制数据流图 #### 绘制顶层数据流图 在开始绘制之前,需理解数据流图的主要构成部分:源点或终点、处理、数据存储和数据流。对于任何系统而言,首先应创建一个概括性的顶层数据流图(也称为上下文级),该层仅展示整个系统的单一处理节点及其外部实体之间的交互关系[^2]。 ```mermaid graph TD; A(客户) --> B{订购图书}; C(库存管理) --> B; D(支付网关) --> B; ``` 此阶段的目标在于捕捉并表示出主要的功能流程以及与外界环境的接口位置。 #### 展开下一层细节 一旦完成了最上层的设计,则按照“自顶向下”的原则继续深入细化各个功能模块。针对每一个重要的处理环节展开更详细的层次描述,在这里以“订购图书”为例: - **订单接收**:负责接受来自客户的购书请求; - **查询库存**:检查所需书籍是否有货; - **更新记录**:修改数据库中的商品数量信息; - **通知确认**:告知顾客交易状态。 这些子过程构成了第二级别的视图,并且各自可能还会有更低等级别的细分操作等待进一步探索[^3]。 ```mermaid graph TD; subgraph 订购图书 { E([订单接收]) --> F({查询库存}); F --> G([更新记录]); H([通知确认]) <-- G; } I(客户) -.->|提交订单| E; J(库存管理系统) .-.> |提供库存详情|F; K(邮件服务器) <-. |发送电子邮件|H; ``` #### 进一步深化具体实现 随着分析工作的推进,会逐渐触及到底层的具体业务逻辑和技术实现层面的内容。此时应当保持清晰条理地展现每一步骤间的转换规则及关联方式,确保最终形成的文档既全面又易于理解和维护。 例如,“查询库存”的内部运作机制可以被拆解成如下几个方面: - 接收参数解析; - 执行SQL语句访问数据库表单; - 返回结果集给调用方。 通过这种方式不断重复上述步骤直至所有的关键路径都被充分说明为止[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值