软件构造心得1

第一章
1.AST(抽象语法树):倒着看,父节点为两子节点的操作符,条件condition会单列出一个分支。

2.编译和build时,IDE和JVM需要知道库的位置,或者链接了什么库

3.库被拷贝进入代码形成整体,执行的时候无需提供库文件

4.静态链接发生在构造阶段。

5.库文件不会在build阶段被加入可执行软件,仅仅做出标记

6. 程序运行时,根据标记装载库至内存。发布软件时,记得将程序所依赖的所有动态库都复制给用户。

7. 代码快照图:描述程序运行时内存里变量层面的状态

8.执行跟踪:用日志方式记录程序执行的调用次序。

9.外部质量取决于内部质量。外部影响用户。内部影响软件本身与开发者。

10.质量与目标间的冲突需要重视

第二章
1. 软件测试可以提高软件性能,但软件性能不取决于软件测试。

2.即使最好的测试,也不会有百分百的正确率。再好的测试,也不能证明系统不存在错误。

3.测试:发现是否存在错误。调试:识别错误根源,消除错误。

4.白盒测试:对程序内部代码结构的测试。黑盒测试:对程序外部表现出来的行为的测试。二者要求结构必须完整,只有在程序开发完成后进行。

5.优秀测试样例的特征:最可能发现错误,不重复、不冗余,最有效,不简单也不复杂。

6.写测试代码的过程:先写spec,再写符合spec的测试用例。写代码、执行测试、有问题再改、再执行测试用例,直到通过它。

7.单元测试:隔离各个模块,容易定位错误和调试。

8.划分等价类。将被测函数的输入域划(分为等价类(根据每个输入数据需要满足的约束条件来划分),从等价类中导出测试用例。

9.一些等价类划分的指导:输入数据限定了数据范围、指明来特定值,确定了一组数组、是Y/N。(1)、选择测试用例覆盖等价类(2)、根据测试用例划分等价类。

10.等价类划分时,边界作为等价类之一加入考虑。

11.代码覆盖度越低,测试越不充分。

12.测试效果:路径覆盖>分支覆盖>语句覆盖。

13. 测试难度:路径覆盖>分支覆盖>语句覆盖。

14.测试策略就是等价类的划分。

第三章
1.螺旋迭代:长周期,风险大/不确定的大程序

2.敏捷模型(开发):几乎不需要文档。快速适应变化。

3. 火箭发射系统,要求有详细的文档描述,高要求高风险的软件应使用传统开发模型。敏捷模型适用于迭代快的小型软件。

4.Agile=增量+迭代。

5.   绑定开发和测试,将方案与设计中的文档全部去掉

6.SCM/软件配置管理:追踪和控制软件的变化。

7.SCI软件配置项:软件发生变化的基本单元(如文件)。

基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)

8.git仓库的三个部分:.git 目录(本地的CMDB)。工作目录(本地文件系统)。暂存区(隔离工作目录和GIT仓库)。

三个状态:已修改,已暂存,已提交。

9.版本控制:为软件的任一特定时刻(Moment)的形态指派一个唯一的编号,作为“身份标识”。

10. 版本之间的演化关系图(有向无环图),一条边 A->B表征了“在版本B的基础上作出变化,形成了版本A。

11. 每个commit指向一个父亲。多个commit指向同一个父亲:分支。      一个commit指向两个父亲:合并。   注:一个子对象最多两个父对象,一个父对象可有多个子对象

12. 是两个分支末端和分支公共祖先的三个快照合并成一个新的快照,并自动生成一次commit。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值