目录
C1:概览Introduction
(1)软件的4个特性
(2)软件产品的2种类型
(3)软件过程的4个活动过程
(4)软件的6个质量特性
C2:软件过程Software Processes
(1)软件过程的模型
(2)改进
C3:敏捷开发Agile Software Development
(1)敏捷开发vs传统开发
(2)敏捷宣言的4句话
(3)敏捷方法适用的情况
(4)极限编程(eXtreme Processing)
(5)Planning Poker
(6)重构Refactoring
(7)结对编程
(8)Scrum
(9)燃尽图(Burndown Chart)
一致性(Conformity):软件必须符合严格的规格和要求,包括与其他组件的接口和环境的连接,避免因为不一致导致无法复用或开发问题。
不可见性(Invisibility):软件没有物理属性,项目进展无法直观查看,开发者只能通过文档和代码进行间接管理,增加了项目管理的难度。
复杂性(Complexity):软件系统由大量相互作用的组件构成,包括并发调用、状态转换、数据耦合等,复杂性增加了缺陷隐藏的可能,且难以发现。
演化性(Changeability):软件是最容易修改的系统部分,但也因此面临更高的更改难度,尤其当复杂性和一致性要求较高时,修改变得极其困难。
其中,软件验证过程包含Verification和Validation,目的是确保系统符合规范和客户需求。包含3种测试类型:
组件测试Component Testing: 测试单个组件。
系统测试System Testing: 测试整个系统,重点关注优先程度高的功能。
客户测试Customer Testing: 用实际客户的数据来测试系统。
根据ISO 9126,软件的质量特性包括:
模型核心主要分为“计划驱动”和“敏捷”两类。计划驱动,即所有活动在开始时就已规划好。敏捷,即增量开发和灵活性,能够轻松适应变更。
①瀑布模型:从需求收集到维护的顺序阶段。适用于需求稳定且易于理解的系统,但在开发开始后处理变更方面存在困难。
②原型模型:通过创建原型来帮助需求收集、设计验证和探索系统特性。适用于早期用户反馈的收集,但可能无法完全代表最终系统。
③增量模型:开发分阶段进行,每个版本提供部分功能。该模型更容易适应变更,并允许更早的用户反馈,但如果管理不当,可能导致系统结构退化。
目标:提升质量、降低成本并提高软件过程效率。
过程:
改进方法:
过程成熟度:专注于完善项目管理和软件工程实践。
敏捷方法:专注于迭代开发和灵活应对客户需求。
能力成熟度模型(CMM):评估和改进软件过程成熟度的框架。
开发目标、需求变化与响应速度、交付与反馈、开发文档与沟通、迭代与增量方式5个角度。
①开发目标:
②需求变化与响应速度
③交付与反馈的频繁性
④开发文档与沟通
⑤迭代与增量的方式
选择敏捷方法后,开发过程中对需求的快速响应、交付周期的短频、团队的高协作性以及文档和计划的简化是主要的变更。这些变化能够显著提高项目的灵活性和适应性,但也可能带来一些实际的挑战,比如需求频繁变动时的成本控制、团队的协调和沟通等问题。
①重构在做什么:重构是对现有代码进行优化和修改的过程,目的是提高代码的结构和可读性,而不改变其外部行为。
②重构的目的是什么:重构是一种持续改进代码的实践,目的是使代码保持简洁、可维护,同时避免过度设计,减少重复代码,并提高系统的灵活性和扩展性。
③重构怎么做:通过逐步修改和优化代码,如提取函数、简化条件语句、删除重复代码、调整类和方法的职责等,确保每次修改后系统仍然能够正常运行,并且每次修改的范围都尽可能小,以降低引入错误的风险。
①结对编程是什么:是程序员成对地在同一台计算机上共同开发代码。
②结对编程的优点:
共同拥有:团队成员之间共享知识。
非正式审查:代码由多人进行审查。
鼓励重构:提升代码质量。
效率:研究表明,结对编程可能比独立工作更高效。
①scrum是什么:是一种轻量级框架,用于解决复杂问题并交付高价值产品。
②scrum的特点:简单易懂,但难以掌握;不是一个过程,而是应用各种技术的框架。
③scrum角色:
④scrum组件:
• 产品待办事项(Product Backlog):产品所需的特性和任务清单。
• Sprint待办事项(Sprint Backlog):当前Sprint计划的产品待办事项子集。
• 潜在可交付的产品增量(Potentially Shippable Product Increment):一个Sprint的最终、完成的输出。
⑤scrum事件(会议):
⑤scrum和XP(极限编程)对比:
• Scrum:专注于自组织,并可以与XP或看板(Kanban)等额外框架进行定制。
• XP:强调工程实践,并为任务制定严格的优先顺序。
①燃尽图是什么:是可视化剩余工作量与时间的关系,帮助团队追踪进度、预测项目是否按时完成。是一种广泛使用的项目管理工具,尤其在敏捷开发和敏捷框架中非常常见,虽然在Scrum中使用得最为普遍。虽然它在Scrum中被广泛使用,作为跟踪Sprint进度的工具,但在其他敏捷方法,如极限编程(XP)、看板(Kanban)等中,也可以使用燃尽图来追踪进度。
。。。。。