精华内容
下载资源
问答
  • 自顶向下和自底向上
    万次阅读
    2017-03-09 16:21:06
    自顶向下测试方法的主要优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。
    自顶向下测试方法的主要缺点是需要存根程序,可能遇到与此相联系的测试困难,低层关键模块中的错误发现较晚,而且用这种方法在早期不能充分展开人力。
    自底向上测试方法的优缺点与上述自顶向下测试方法的优缺点刚好相反
    更多相关内容
  • 主要介绍了css控制元素高度实现自底向上和自顶向下的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 架构思维 自顶向下构建架构 要点主要如下: 1.首先定义问题,而定义问题中最重要的是定义客户的问题。定义问题,特别是识别出关键问题,关键问题是对客户有体感,能够解决客户痛点,通过一定的数据化来衡量识别出来...

    导读:架构师是一个既能掌控整体又能洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。看似完美的“人格模型”背后,是艰辛的探索。本文对多年的架构经验进行系统性地总结,帮助更多架构师在进阶这条路上走得更“顺畅”,姿态更“优雅”。

    架构师职责

    架构师不是一个人,他需要建立高效卓越的体系,带领团队去攻城略地,在规定的时间内完成项目。

    架构师需要能够识别定义并确认需求,能够进行系统分解形成整体架构,能够正确地技术选型,能够制定技术规格说明并有效推动实施落地。

    按 TOGAF 的定义,架构师的职责是了解并关注实际上关系重大但未变得过载的一些关键细节和界面,架构师的角色有:理解并解析需求,创建有用的模型,确认、细化并扩展模型,管理架构。

    从业界来看对于架构师的理解可以大概区分为:

    • 企业架构师:专注于企业总体 IT 架构的设计。
    • IT 架构师-软件产品架构师:专注于软件产品的研发。
    • IT 架构师-应用架构师:专注于结合企业需求,定制化 IT 解决方案;大部分需要交付的工作包括总体架构、应用架构、数据架构,甚至部署架构。
    • IT 架构师-技术架构师:专注于基础设施,某种软硬件体系,甚至云平台,提交:产品建议、产品选型、部署架构、网络方案,甚至数据中心建设方案等。

    架构思维

    自顶向下构建架构

    要点主要如下:

    1.首先定义问题,而定义问题中最重要的是定义客户的问题。定义问题,特别是识别出关键问题,关键问题是对客户有体感,能够解决客户痛点,通过一定的数据化来衡量识别出来,关键问题要优先给出解决方案。

    2.问题定义务必加入时间维度,把手段/方案和问题定义区分开来。

    3.问题定义中,需要对问题进行升层思考后再进行升维思考,从而真正抓到问题的本质,理清和挖掘清楚需求;要善用第一性原理思维进行分析思考问题(通过第一原理,我把事情升华到最根本的真理(本质),然后从最核心处开始推理……)。 第一性原理请看《优秀架构师必须掌握方法论(第一性原理)》

    4.问题解决原则:先解决客户的问题(使命),然后才能解决自己的问题(愿景);务必记住不是强调我们怎么样,而是我们能为客户具体解决什么问题,然后才是我们变成什么,从而怎么样去更好得服务客户。

     

    5.善用多种方法对客户问题进行分析,转换成我们产品或者平台需要提供的能力,比如仓储系统 WMS 可以提供哪些商业能力。

    6.对我们的现有的流程和能力模型进行梳理,找到需要提升的地方,升层思考和升维思考真正明确提升部分。

    7.定义指标,并能够对指标进行拆解,然后进行数学建模。

    8.将抽象出来的能力诉求转换成技术挑战,此步对于技术人员来说相当于找到了靶子,可以进行方案的设计了,需要结合自底向上的架构推导方式。

    9.创新可以是业务创新,也可以是产品创新,也可以是技术创新,也可以是运营创新,升层思考、升维思考,使用第一性原理思维、生物学(进化论--进化=变异+选择+隔离、熵增定律、分形和涌现)思维等哲科思维可以帮助我们在业务,产品,技术上发现不同的创新可能。可以说哲科思维是架构师的灵魂思维。

     

    image

    自底向上推导应用架构

    先根据业务流程,分解出系统时序图,根据时序图开始对模块进行归纳,从而得到粒度更大的模块,模块的组合/聚合构建整个系统架构。

     

    基本上应用逻辑架构的推导有4个子路径,他们分别是:

    1. 业务概念架构:业务概念架构来自于业务概念模型和业务流程;
    2. 系统模型:来自于业务概念模型;
    3. 系统流程:来自业务流程;
    4. 非功能性的系统支撑:来自对性能、稳定性、成本的需要。

    效率、稳定性、性能是最影响逻辑架构落地成物理架构的三大主要因素,所以从逻辑架构到物理架构,一定需要先对效率、稳定性和性能做出明确的量化要求。

    自底向上重度依赖于演绎和归纳。

    如果是产品方案已经明确,程序员需要理解这个业务需求,并根据产品方案推导出架构,此时一般使用自底向上的方法,而领域建模就是这种自底向上的分析方法。

    对于自底向上的分析方法,如果提炼一下关键词,会得到如下两个关键词:

    1.演绎:演绎就是逻辑推导,越是底层的,越需要演绎:

    • 从用例到业务模型就属于演绎;
    • 从业务模型到系统模型也属于演绎;
    • 根据目前的问题,推导出要实施某种稳定性措施,这是也是演绎。

    2.归纳:这里的归纳是根据事物的某个维度来进行归类,越是高层的,越需要归纳:

    • 问题空间模块划分属于归纳;
    • 逻辑架构中有部分也属于归纳;
    • 根据一堆稳定性问题,归纳出,事前,事中,事后都需要做对应的操作,是就是根据时间维度来进行归纳。

     

    image

    领域驱动设计架构

    大部分传统架构都是基于领域模型分析架构,典型的领域实现模型设计可以参考DDD(领域驱动设计),详细可以参考《实现领域驱动设计》这本书,另外《UML和模式应用》在领域建模实操方面比较好,前者偏理论了解,后者便于落地实践。

    领域划分设计步骤:

    1.对用户需求场景分析,识别出业务全维度 Use Case;

    2.分析模型鲁棒图,识别出业务场景中所有的实体对象。鲁棒图 —— 是需求设计过程中使用的一种方法(鲁棒性分析),通过鲁棒分析法可以让设计人员更清晰,更全面地了解需求。它通常使用在需求分析后及需求设计前做软件架构分析之用,它主要注重于功能需求的设计分析工作。需求规格说明书为其输入信息,设计模型为其输出信息。它是从功能需求向设计方案过渡的第一步,重点是识别组成软件系统的高级职责模块、规划模块之间的关系。鲁棒图包含三种图形:边界、控制、实体,三个图形如下:

     

    image

    3、领域划分,将所有识别出的实体对象进行分类;

    4、评估域划分合理性,并进行优化。

    基于数据驱动设计架构

    随着 IoT、大数据和人工智能的发展,以领域驱动的方式进行架构往往满足不了需求或者达不到预期的效果,在大数据时代,在大数据应用场景,我们需要转变思维,从领域分析升维到基于大数据统计分析结果来进行业务架构、应用架构、数据架构和技术架构。这里需要架构师具备数理统计分析的基础和 BI 的能力,以数据思维来架构系统,典型的系统像阿里的数据分析平台采云间和菜鸟的数据分析平台 FBI。

    上述四种思维,往往在架构设计中是融合使用的,需要根据业务或者系统的需求来选择侧重思维方式。

    有了架构思维的指导,具体有没有通用/标准化的架构框架以更好的执行架构设计?答案是肯定的,请关注我,后续将为您揭晓。

    展开全文
  • 按照归并顺序的不同,归并排序可以分为自顶向下和自底向上两类。自顶向下的归并排序进行的操作主要就是对数组的拆分与合并。通过层层拆分得到单元素数组,天生有序,然后归并两个单元素数组得到一个较大的有序数组,...

    归并排序中最基本的操作是“归并”,即将两个(2-路归并)或两个以上的有序数组组合成一个更大的有序数组。按照归并顺序的不同,归并排序可以分为自顶向下和自底向上两类。


    自顶向下

    自顶向下的归并排序进行的操作主要就是对数组的拆分与合并。通过层层拆分得到单元素数组,天生有序,然后归并两个单元素数组得到一个较大的有序数组,接着再归并两个较大数组得到更大的一个有序数组,重复这个过程,最终归并便得到了一个排好序的数组。


    自底向上
    自底向上的归并排序算法的思想就是数组中先一个一个归并成两两有序的序列,两两有序的序列归并成四个四个有序的序列,然后四个四个有序的序列归并八个八个有序的序列,以此类推,直到,归并的长度大于整个数组的长度,此时整个数组有序。需要注意的是数组按照归并长度划分,最后一个子数组可能不满足长度要求,这个情况需要特殊处理。自顶下下的归并排序算法一般用递归来实现,而自底向上可以用循环来实现。

    展开全文
  • 底向上和自顶向下的架构设计区别

    万次阅读 多人点赞 2019-07-09 18:48:09
    又是两个小时,聪明的小明连蹦带跳走进了办公室,说:“老师,我找到了,三条边之中有两条,它们的平方约等于另外一条的平方。”老师拍拍小明的头,“你今天学会了一个定理,勾股定理。它就是说直角三角形有两边平...

    某日小明上数学课,他的老师给了很多个不同的直角三角板让小明用尺子去量三角板的三个边,并将长度记录下来。两个小时过去,小明完成任务,把数据拿给老师。老师给他说,还有一个任务就是观察三条边之间的数量关系。又是两个小时,聪明的小明连蹦带跳走进了办公室,说:“老师,我找到了,三条边之中有两条,它们的平方和约等于另外一条的平方。”老师拍拍小明的头,“你今天学会了一个定理,勾股定理。它就是说直角三角形有两边平方和等于第三边的平方和”。

     

    另一个故事,某日老师告诉小明“今天要教你一个定理,勾股定理。”小明说,“什么是勾股定理呢?”“勾股定理是说,直角三角形中有两条边的平方和等于第三边的平方。”然后老师给了一大堆直角三角板给小明,让他去验证。两个小时后,小明告诉老师定理是正确的.

    第一个故事说的是自底向上的设计分析方法,第二个故事说的是自顶而下的设计分析方法。

    我们用领域建模DDD这种方式,从一个一个用例去推导然后建模一个的业务的方式是自底向上的方式。

    而我们在抽象的角度去定义问题,然后问题拆解,这是一个自顶向下的方式。自顶向下最重要的是定义问题,而如何定义问题的前提是知道问题的定义。

    阿尔伯特· 爱因斯坦曾经说:“ 提出一个问题往往比解决一个问题更重要。因为解决问题也许仅是一个数学上或实验上的技能而已,而提出新的问题,却需要有创造性的想象力,而且标志着科学的真正进步。”

     

    两种分析方法的根本区别是:自底向上的分析,是从具体到抽象;自顶向下的分析,是从抽象到具体。两种分析思路恰恰又是哲学思考问题的两大方向。

    展开全文
  • 集成测试之自顶向下、自底向上、三明治集成

    万次阅读 多人点赞 2019-01-05 16:24:27
    自顶向下测试 目的:从顶层控制(主控模块)开始,采用同设计顺序...自我理解:自顶向下测试包含两种测试策略,分别是深度优先广度优先,这个不难理解,看例子基本就能懂 例子如下: 实现自顶向下测试方...
  • 自顶向下和自底向上 自顶向下 (设计):解决复杂问题的有效方法 将一个总问题表达为若干个小问题组成的形式 使用同样方法进一步分解小问题 ,直至小问题可以用计算机简单明了的解决。 自底向上(执行) :逐步组建...
  • 在国内的网站上搜索什么叫“自底向上”编程,给人的感受似乎是同一个问题有两种解决思路,一个是“自顶向下”,一个是“自底向上”。但你仔细看那些文章的讲解,其实说的都只是“自顶向下”。 为了说清楚“自底向上...
  • 自顶向下的集成是从主控模块(主程序,即根结点)开始,按照系统程序结构,沿着控制层次从上而下,逐渐将各模块组装起来。在从上向下的集成测试过程中,需对那些未经集成的模块开发桩模块。在集成过程中,可以采用...
  • 底向上和自顶向下的区别

    千次阅读 2020-04-18 20:51:48
    而我们在抽象的角度去定义问题,然后问题拆解,这是一个自顶向下的方式。自顶向下最重要的是定义问题,而如何定义问题的前提是知道问题的定义。 阿尔伯特· 爱因斯坦曾经说:“ 提出一个问题往往比解决一个问题更...
  • 自顶向下测试:是从程序的初始模块开始测试。 (1)在早期发现顶层的错误。 (2)早期的程序框架可以进行演示 (3)需要开发桩模块辅助测试。有些甚至需要多个桩模块辅助,加大了桩模块本来的错误影响。 (4)...
  • 人体姿态估计 自顶向下与自底向上

    千次阅读 2021-07-02 13:32:54
    自顶向下 自顶向下的算法先从图像中检测出所有人,随后利用单人姿态估计的方法对所有人进行姿态估计。自顶向下算法的缺点是算法运行效率随着人数增加而降低,且部分被遮挡的人无法被检测,精度不高。 自底向上 ...
  • 前言:一直搞不清楚自顶向下和自底向上的区别 下面从几个例子来简要分析 一、区分两个概念: 自顶向下:直接return 函数调用自身下一级实现,比如 return Fibonacci(n-1) + Fibonacci(n-2); 自底向上:先递归到最小...
  • 43.基本的面向对象分析设计 文章目录前言一、Atom文本编辑器二、运行Python程序总结 前言   程序的注释很重要!有两个重要的作用: (1) 说明某段代码的作用。 (2) 临时禁用这段代码。    # 号,英文为...
  • 底向上和自顶向下

    千次阅读 2018-04-04 14:25:48
    (以上可构造一个DAG)自底向上就是已经知道了所有递归边界,把所有可能的状态都算出来。基本步骤是一个拓扑排序的过程,从所有递归边界出发,当一个状态被所有可能的下层状态更新后,就用这个状态去更新...
  • 就是说DP, memo, Backtracking之间有什么区别? 回溯法是带剪枝的穷举(就是说虽然是穷举 但是如果能尽可能的提前发现苗头不对 立刻就不往进行了)
  • 目录递归“自顶向下”“自底向上” 递归 递归的四条基本准则: 基准:无需递归就能得到的解; 不断推进:每一次递归调用都必须使其朝向一种基准推进; 设计法则:所用的递归调用都能运行; 合成效益法则:求解一个...
  • 一.自顶向下 方法 二.自底向上 方法 短语:在一个树中所有的子树的叶子结点 直接短语所有的子树中,高度为1的叶子结点 句柄 在所有的直接短语中最左边那个 例题: 步骤: ...
  • 底向上自顶向下(递归与动态规划)

    万次阅读 多人点赞 2019-09-13 17:02:22
    从子问题解决原问题, 无非是两种方法,自底向上(Bottom-Up)与自顶向下(Top-Down),形式上前者对应iteration,利用循环将结果存在数组里,从数组起始位置向后计算;后者对应recursion,即利用函数调用自身实现。如果...
  • 验证程序概要设计说明的一致性,具体检测包括功能正确性验证、接口测试、全局数据结构等。 单元测试与集成测试分别谁来完成? 单元测试主要是由开发人员来承担,相关测试人员辅助。 集成测试主要由测试人员...
  • 自顶向下和自底向上的实现方法

    千次阅读 2020-11-01 09:07:34
    1将一个大问题分解为小的易处理的子问题,每个子问题可以使用一个方法来实现,这种方法使得问题更加易于编写重用调试,修改维护 2当一个大问题分解为许多子问题,各个子问题可以分配给不同的编程人员,这更加易于...
  • 集成测试(自顶向下、自底向上

    千次阅读 2019-09-17 22:30:12
    集成测试 ...缺点:容易混乱,出现错误不容易进行查找定位。 2、增量集成(以小增量的方式逐步进行构造测试) 优点:范围扩大,容易定位,更易对接口进行彻底测试,并且可以运用系统化测试方法...
  • 自顶向下集成 优点:较早地验证了主要控制判断点;按深度优先可以首先实现验证一个完整的软件功能;功能较早证实,带来信心;只需一个驱动,减少驱动器开发的费用;支持故障隔离。 缺点:柱的开发量大;底层验证...
  • 自顶向下测试和自底向上测试

    万次阅读 2015-08-19 16:39:58
    自顶向下测试:是从程序的初始模块开始测试。 (1)该方法会在早期发现顶层的错误。 (2)早期的程序框架可以进行演示 (3)需要开发桩模块辅助测试。有些甚至需要多个桩模块辅助,加大了桩模块本来的错误影响。 ...
  • 何谓"自顶向下",何谓"自底向上

    万次阅读 多人点赞 2017-03-05 23:41:31
    相信每一个coder都听说过“自顶向下”以及“自底向上”这两个名词。 我也是很早就听说过这两个名词,感觉是”不明觉厉”。 有一天,我打电话给一个做C语言开发的朋友说,我说我一直在做Java,想学一点C,问他有...
  • 自顶向下测试和自底向上测试的优缺点; 软件开发周期流程; 不同的测试方法针对不同的测试阶段一、 自顶向下测试: 优点: 1、如果主要的缺陷发生在程序的顶层将非常有利 2、一旦引入I/O功能,提交测试或更...
  • //自顶向下堆化 void fixDown(Item a[],int k,int n){ //k表示破坏堆规则关键字的位置 ,n为堆的大小 int j; while(2*k){ j = 2*k; if(j[j].data[j+1].data)j++; //处理好啦K处节点只有一个子节点的情况 ...
  • 针对自底向上的设计技术的不足,利用自顶向下的设计方法,结合Solidworks API接口Visual C++6.0开发平台进行参数化设计。结果表明:自顶向下的参数化设计技术具有更快的模型重建速度,并且可以缩短设计周期、提高设计...
  • 完整代码 博文链接:https://jarg.iteye.com/blog/859391

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 103,000
精华内容 41,200
关键字:

自顶向下和自底向上

友情链接: lcd_flash.zip