zoukankan      html  css  js  c++  java
  • 构建之法阅读笔记06

    这次主要读了构建之法的第十一章:分析和设计方法

          其实在上课的时候,就特别想了解这一章节的主要内容了。当时老师讲到了鸡兔同笼的问题,这种问题的解法其实很多,这就考验了我们分析问题的能力。如果仔细去思考,除了列出公式之外,小时候还曾听过这样的方法:就是让所有动物先立起一只脚,将所有脚的数量减一,再立起一只脚,再减一。因为兔子有四只脚,而鸡只有两只脚,所以这时,鸡就已经一屁股坐到地上,而兔子没有,这样一来,剩下的所有脚便都是兔子的了。

          问题虽然简单,其实里面有一个很浅显的道理。只要思路找到了,便可以将复杂的问题简化。列出公式和矩阵就是思路的构建方法之一。所以我们要学会去分析问题,在解决问题的时候分析问题和设计思路往往最为重要。但是,我认为,如果要有这样的能力,首先,应该积累觉绝对的代码量。其次,应该掌握一定的方法,方法和经验往往是解决问题最快的出路。第三,理应有一颗热衷于探索并且不屈不挠的心。以下是我从书里找到的一些分析和设计的方法:

    图形建模表达实体和实体之间的关系:

     1.思维导图:“一图胜千言”,人们经常用图形来帮助他们了解概念,强化记忆。思维导图是其中的一个例子。思维导图没有严格的语法定义,一般来说是从图形的正中开始写下一个概念,然后按照绘图者所关心的属性扩展,几乎每个人都能马上开始画图。这个看似简单的工具其实很适合团队一起讨论和理解核心概念——例如,我们的主要用户有什么特点、什么需求。

    2.实体关系图:如果我们着重于表达现实世界中的实体和它们之间的关系,那么实体关系图ERD是最自然的表达方式。

    书中所提到的一些设计方法:

    1.形式化的方法
    很多软件需求(例如计算机语言的编译器)可以抽象为对符号的运算和变换,很多软件的某些核心功能需要严密地验证,保证没有问题。一些科学家一直在努力,希望用无歧义的、形式化的语言描述我们要解决的问题,然后用严密的数学推理和变换一步一步把软件实现出来,或者证明我们的实现的确完整和正确地解决了问题。在这个领域一个比较成熟和经过实践考验的方法是Vienna DevelopmentMethod(VDM)

    2. 文学化编程
    程序员在写程序的时候,要理解在文档中的需求,同时还要在程序里写相关的注释,这些不同目的的“写作”各有价值,但是一旦需求或程序发生变化,这些不同的文档很难保持同步。更不用说程序员最常见的毛病“我以后会加上注释的……”Donald Knuth在20世纪70年代末开始尝试并提倡Literate Programming的思想并在自己的软件项目中身体力行。这一方法和常见的“写程序,时不时加上一些注释”相反,它是“写文档,时不时有些代码”。它使用了宏(Macro)来进行抽象和信息隐藏。通过工具的支持,它的源代码可以提取出让计算机编译执行的部分以及文档。

          对于构建之法这本书自然只是学了一些皮毛,不过在接下来的时间里,必然细细研读,这对于正走在程序员之路上的我来说,必定获益匪浅。

  • 相关阅读:
    DATA_PUMP_DIR impdp 指定导出目录
    MasScan
    VMWare:vSphere6 企业版参考序列号
    ORA-12519: TNS:no appropriate service handler found 解决
    百度IOT
    IPMI远程管理一点记录
    关于parallel(并行)的几个基本常识
    hdu 4811 数学 不难
    关于i++ 和 ++i
    sqlplus中怎么将你全部的操作和结果记录保存到你指定的文件里
  • 原文地址:https://www.cnblogs.com/hph1313/p/5589800.html
Copyright © 2011-2022 走看看