极限编程XP
极限编程XP
把整个开发过程分解为比较小而简单的周期,通过大家积极的沟通反馈,开发人员和客户都比较清楚当前的开发进度、需要解决的问题等等,根据这些实际情况去调整开发进程,这是极限编程的思想。
水晶法
相对于其它敏捷方法,水晶系列方法强调软件开发流程的纪律性,所以它比其它敏捷方法易于使用,但它的生产率不如XP等其它敏捷方法。水晶系列与XP一样,都有以人为中心的理念,但在实践上有所不同。人们一般很难严格遵循一个纪律约束很强的过程,因此,与XP的高度纪律性不同,水晶系列方法试图用最少纪律约束而仍能成功的方法,从而在产出效率与易于运作上达到一种平衡。
并列争球法
也就是我们通常说的Scrum。Scrum是一个增量、迭代的开发过程。在这个框架中,把每段时间(30 天)一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。在每个迭代结束时,Scrum团队将递交潜在的可交付的产品增量。
自适应软件开发(ASD)
ASD强调开发方法的适应性,这一思想来源于复杂系统的混沌理论。ASD不像其他方法那样有很多具体的实践做法,它更侧重为ASD的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。
软件设计模块之间7种耦合关系
一般来说,模块之间的耦合有七种类型:
- 根据耦合性从低到高为非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合和内容耦合。
- 两个模块之间没有直接关系, 它们之间的联系完全是通过主模块的控制和调用实现的,这种耦合为 非直接耦合;
- 如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合;
- 如果一组模块通过数据结构本身传递,则称这种耦合为标记耦合;
- 如果一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调模块通过该控制变量的值有选择地执行块内某一功能,这种耦合为控制耦合;
- 一组模块都访问同一全局简单变量,而且不通过参数表传递该全局变量的信息,则称之为外部耦合;
- 若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合;
- 若一个模块直接访问另一个模块的内部数据、一个模块不通过正常入口转到另一个模块内部、两个模块有一部分程序代码重叠或者一个模块有多个入口,上述几个情形之一发生则两个模块之间就发生了内容耦合。
| 许可类型 | 软件著作权人能否使用 | 软件著作权人能否将软件使用权授予第三方 |
|---|---|---|
| 独占许可使用 | × | × |
| 独家许可使用 | √ | × |
| 普通许可使用 | √ | √ |
| 类型 | 功能 | 示例 |
|---|---|---|
| 数据寄存器 | 用于存储数据和中间计算结果 | 通用寄存器(如x86架构中的EAX、EBX等) |
| 地址寄存器 | 用于存储内存地址,以便访问内存中的数据 | 基址寄存器、变址寄存器 |
| 指令寄存器 | 用于存储当前正在执行的指令 | CPU从内存中读取指令,并将其存储在指令寄存器中进行译码和执行 |
| 程序计数器 | 用于存储下一条将要执行的指令地址 | 指向内存中的指令地址,每执行一条指令后自动加1,指向下一条指令 |
| 状态寄存器 | 用于存储CPU当前的状态和条件码(如零标志、进位标志等) | 在算术运算后,状态寄存器中的标志位可以反映运算结果的性质(如结果是否为零) |
| 堆栈指针寄存器 | 用于指示栈顶位置,管理函数调用和返回 | 在函数调用过程中,堆栈指针寄存器用于保存返回地址和局部变量 |
二叉排序树
又称二叉查找树或二叉搜索树。
其定义为空树或满足以下性质的二叉树:
- 左子树所有节点值均小于根节点;
- 右子树所有节点值均大于根节点;
- 且左右子树本身也为二叉排序树。
通过中序遍历可输出有序序列,递归查找使得平均时间复杂度为\(O(\log n)\),但在极端情况下退化为单支树时复杂度升至\(O(n)\)。
强制性国家标准代号为GB,推荐性国家标准代号为GB/T,其中“T”表示推荐。
位示图大小 = 磁盘容量 / 物理块大小
海明校验码是在 \(n\) 个数据位之外增设 \(k\) 个校验位,从而形成一个 \(k+n\) 位的新的码字,使新的码字的码距比较均匀地拉大。\(n\) 与 \(k\) 的关系是 \(2^k-1 >= n+k\)
