一、敏捷开发
1. 并列争求法
注:类比橄榄球中的并列争球打法。精彩刺激
注:多个自组织小组并行递增按照优先级实现产品,小组之间相互协调通过简短的日常情况会议来进行。如把30天一次的迭代成为一个冲刺来迭代产品
橄榄球中并列争球发
在橄榄球中,并列争球(Scrum)是一种特殊的争球方式,尤其在英式橄榄球中非常常见。它被认为是规模最大的争球方法。
在并列争球时,双方各出八名球员,排成三排(3-3-2)的阵型。球从双方的中间投入,然后双方以类似"顶牛"的方式争球。橄榄球的规则要求,球不能从对方后面被抢走。因此,进攻方的目标是想尽办法让对方后退,或者把球往前传,以达到快速向前推进的目的。
这种争球方式不仅考验球员的体力和力量,还需要良好的团队协作和策略规划。在并列争球的过程中,球员们需要紧密配合,通过协同努力来争夺控球权,为后续的进攻或防守创造有利条件。
总之,并列争球是橄榄球比赛中一种重要且独特的争球方式,它充分展示了橄榄球运动的激烈和精彩。
2. 极限编程
四个价值观。强调简单性、反馈、尊重和勇气这四个核心价值观
关键实践
以下是极限编程的一些关键实践:
简单设计:保持设计的简单性,避免过度设计和不必要的复杂性。通过不断重构代码,确保系统始终保持简洁和易于理解。
小步快跑:将大型项目分解为一系列小的、可管理的任务(即"用户故事")。通过迭代的方式完成这些任务,并尽快交付有价值的软件增量。
结对编程:两名开发人员共同工作在同一台计算机上,轮流担任"驾驶员"和"观察员"的角色。这种方式有助于知识共享、提高代码质量,并减少错误。
持续集成:开发人员频繁地将代码集成到共享的代码库中,并通过自动化测试来验证集成结果。这有助于及早发现问题,减少集成风险。
测试驱动开发:在编写实际功能代码之前,先编写测试代码。这有助于确保代码的正确性,并降低后期修改和重构的风险。
现场客户:邀请客户参与开发过程,以便及时反馈需求变化,确保软件能够满足客户的实际需求。
可持续开发:保持开发人员的工作节奏和精力,避免过度加班和疲劳。通过合理安排工作和休息时间,确保团队能够持续、高效地工作。
3. 水晶法
创建水晶法的目的。其目的在于发展一种提倡"机动性"的方法,这种方法包含具有共性的核心元素,每个元素都包含独特的角色、过程模式、工作产品和实践
水晶法的区名含义。水晶法之所以命名为"水晶",是因为它强调透明度和清晰性,正如水晶一样。透明水晶方法(Crystal Clear)特别适合于小团队进行敏捷开发,人数在6人以下为宜
Crystal Clear:这是Crystal家族中最简单、最基础的方法。它适用于小型、自组织团队,强调团队之间的沟通和交互,以提高软件开发的效率。Crystal Clear注重保持透明度,确保团队成员能够及时了解项目的进展和变更。Crystal Yellow:相对于Crystal Clear,Crystal Yellow更加复杂一些,适用于稍大或更复杂的项目。它增加了更多的管理实践和角色,以应对项目中的更多挑战。Crystal Yellow同样强调团队成员之间的沟通和协作,以确保项目的顺利进行。
Crystal Orange:这种方法适用于更大规模的团队和更复杂的项目。Crystal Orange在Crystal Yellow的基础上进一步增加了管理层的角色和责任,以确保项目能够有序进行。它同样注重团队的透明度和协作,通过频繁的交流和反馈来推动项目的进展。
二、控制变量
- 语义上可以理解为两种:控制变量、控制->变量。
- 解释:可以决定使用不同功能的可变变量。例如要测试两种算法谁产生的效果更好,可以控制处算法以外的变量均不变,支队算法的选择做更改来进行测试。
三、管道-过滤器软件体系风格
这种风格的优点包括:
良好的隐蔽性和高内聚、低耦合:每个过滤器都是封装好的实体,彼此独立,降低了系统各部分之间的耦合度,提高了系统的可维护性和可重用性。
支持并发:由于每个过滤器都是单独工作的,它们可以并行处理数据,从而提高系统的处理速度。
方便维护和升级:可以随时删除旧的过滤器或添加新的过滤器,以满足系统的新需求。
然而,这种风格也存在一些缺点:不适合处理有交互的应用:由于数据的单向流动和缺乏直接的交互机制,管道-过滤器风格在处理需要用户交互的应用时可能不够灵活。
系统性能不高:由于数据缺乏统一的标准,每个过滤器都需要进行数据转换,这可能导致大量的时间和处理能力被用于数据转换,而不是实际的业务处理。
四、白盒测试
最强覆盖:路径覆盖
复杂度:可以通过几个实例完成测试,即复杂度等于几
McCabe公式:V(G)=m-n+2,其中m和n分别代表图中的边数和顶点数。
怎样知道边的个数:它是一个带箭头的弧线。
它连接了两个节点。
它表示了控制流的方向。
五、软件修改维护
A.改正性维护:是指修复软件系统中已知的问题或缺陷
B.适应性维护:是指对软件系统进行适应性修改,以适应变化的环境、硬件、操作系统等
D.预防性维护:是指在软件系统还没有发生实际问题之前,对可能发生问题的代码进行被动或主动的检查和改进,以预防未来可能出现的问题
C. 改善性维护:使系统易用、提升性能、效率、质量、可维护性等方面特征
六、软件测试所分层级
1. 算法层:类中方法
2. 类层:方法与属性之间相互作用
3. 模板层:类之间协同交互
4. 系统层:模板之间交互测试
七、UML序列描述
1. 共同重用
共同重用原则就是要求把经常一起使用的类放在一起,形成一个组件或包
2. 共同封闭
封闭中的功能修改不会对封闭外的功能产生影响
3. 开发-封闭
对修改封闭,对拓展开放
4. 接口分离
不强迫使用着使用他们用不到的方法。应该面向抽象编程,而不是面向具体编程