《大道至简-软件工程实践者的思想》之笔记

1.程序=算法+结构+方法
     编程的第一要务是先把事情分析清楚,把事件先后的逻辑关系和依赖关系搞清楚,然后再去写代码实现。代码是不存在的,存在的只是思想。
     编程退到数据结构更合理。
     算法是对一个程序的逻辑实现的描述,而结构是逻辑实现所依附的数据实体。
     所有算法的描述中,有且仅有顺序、分支、循环这三种执行逻辑。
     编程语言只有喜欢不喜欢的问题,没有会不会的问题。语言的差别主要表现在适用范围上。
     方法:面向过程是对“流程”、“结构”和“编程方法”的高度概括;
                而面向对象本身只解决了“结构”和“编程方法”的问题,并没有对“流程”加以改造。面向对象的数据结构是树。
     
2.学了长时间的编程,却不会写程序,主要是因为没有把所学的知识分类、归纳,整整齐齐地放在脑子里。

3.项目编程经验:总体结构->面向对象,关系->数据结构,实现->算法


4.软件工程的瀑布模型
瀑布模型将软件开发的过程分成需求、分析、设计、开发和测试五个主要阶段。


5.软件工程层状模型(EHM)



6.过程
    过程伴生工程而出现。过程解决的是工程中角色间的关系问题。
    过程说的是很多人(团队)如何组织在一起进行开发的问题。它首先把工程中的环节分解出来。这样,有了环节,就有了角色;有了角色,就有了沟通。
    过程中的问题,就是角色、环节和沟通的问题。
    哪些环节重要,取决于具体的编程行为,也就是具体的项目。

7.软件工程体系层次


工具、方法和过程也是软件工程的三个要素

8.软件开发的本质需求是:实现。
实现方法总是最先出现的,而后才有分析和设计方法。

9.Scott的“成为敏捷软件开发人员”三个关键见解:(都是围绕“如何解决问题”而提出的“敏捷方法”)
      “你不必非要做一个超人”---强调沟通:找别人解决问题比自己解决问题来的迅速
      “敏捷性只是一个思维集”---敏捷的根源:学会思维而不是立即着手解决问题
      “成为一名博学型的专家”---“知道更多”则更容易找到解决问题的方法,因而比“精通”重要

10.分治
“分类法”也是思维方法的问题。从思维法的角度来看,广义工程考虑的是对工程问题的“统治”,而具体工程则考虑的是“分治”。
所谓分治,关键在于隔离问题域:
找到造成混乱的问题之间的关系,以及分类出无关的问题;
把问题放到界面上去讨论,而不是放在里面去讨论。
在一个项目中:
把问题分解在EHM图的不同层中,用不同的角色去解决;
将“域”间关联密切的问题,放在关注点界面上,由相关的角色去解决。
  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值