导图社区 软件项目管理概念关系图
定义软件项目管理基本概念,项目集是一组互相关联、且被协调管理的项目集合。它帮助管理者从宏观视角出发,通过创建项目集,分解子项目集,维护项目的预算、周期、负责人等情况,制定公司战略规划、分配资源。项目集在整个框架中属于最高层级。
编辑于2023-09-13 11:20:41 江苏省这是一篇关于软件测试用例设计模板的思维导图,主要内容包括:性能测试,功能测试。以期为测试人员提供清晰的指导,助力他们高效地规划和执行软件测试工作。
定义软件项目管理基本概念,项目集是一组互相关联、且被协调管理的项目集合。它帮助管理者从宏观视角出发,通过创建项目集,分解子项目集,维护项目的预算、周期、负责人等情况,制定公司战略规划、分配资源。项目集在整个框架中属于最高层级。
软件产品需求生命周期(用户需求-研发需求模型)的思维导图,有用户需求发起、用户需求价值评估、用户需求提出、用户需求方案探讨、用户需求固化、用户需求调研、用户需求梳理、MRD编写、项目立项、PRD编写、PRD评审、研发需求生成、研发需求确认、研发需求实现设计、分配需求(AR)开发设计... ...
社区模板帮助中心,点此进入>>
这是一篇关于软件测试用例设计模板的思维导图,主要内容包括:性能测试,功能测试。以期为测试人员提供清晰的指导,助力他们高效地规划和执行软件测试工作。
定义软件项目管理基本概念,项目集是一组互相关联、且被协调管理的项目集合。它帮助管理者从宏观视角出发,通过创建项目集,分解子项目集,维护项目的预算、周期、负责人等情况,制定公司战略规划、分配资源。项目集在整个框架中属于最高层级。
软件产品需求生命周期(用户需求-研发需求模型)的思维导图,有用户需求发起、用户需求价值评估、用户需求提出、用户需求方案探讨、用户需求固化、用户需求调研、用户需求梳理、MRD编写、项目立项、PRD编写、PRD评审、研发需求生成、研发需求确认、研发需求实现设计、分配需求(AR)开发设计... ...
软件项目管理概念关系图
项目集
是一组互相关联、且被协调管理的项目集合。它帮助管理者从宏观视角出发,通过创建项目集,分解子项目集,维护项目的预算、周期、负责人等情况,制定公司战略规划、分配资源。项目集在整个框架中属于最高层级
分类方式
P0级项目集
P1级项目集
企业管理域
营销域
制造平台产品域
数据智能部
应用技术部
质量部
业务流程部
软件产品
软件产品是指通过编程和开发过程创建的具有独立功能和特性的计算机程序。它是为了满足用户需求而开发的,可以在计算机或其他设备上运行的应用程序或系统。
软件产品常见特点
1. 虚拟性
软件产品是以代码和算法的逻辑形式存在的,没有实体形态,不依赖于特定的物理设备或硬件平台,可以在不同的环境中灵活运行和提供各种功能和服务的数字化产品
虚拟性的特点
硬件无关性
软件可以在不同的硬件平台上运行,不受特定硬件的限制。
例如,同一个软件程序可以在不同的操作系统上运行,或者在不同的计算机、智能手机、平板电脑等设备上运行。
软件模拟
软件可以模拟物理实体或过程。
例如,虚拟机软件可以模拟出一个完整的计算机系统,让用户在其中运行其他操作系统或应用程序。另外,游戏软件可以模拟出各种虚拟的世界和角色。
软件定义的网络
软件定义的网络(Software-Defined Networking,SDN)是一种通过软件来管理和控制网络的方法。它将网络的控制平面与数据平面分离,使得网络可以根据需求进行动态配置和管理,而不受特定硬件设备的限制。
软件服务
软件可以作为服务(Software as a Service,SaaS)提供,用户可以通过互联网访问和使用软件功能,而无需在本地安装和维护软件。这种模式下,软件的运行和管理都由服务提供商负责。
虚拟性的好处
软件的虚拟性使得软件产品不依赖于特定的物理设备或硬件平台,可以在不同的环境中灵活运行和提供各种功能和服务。它为用户带来了方便性、灵活性和可扩展性。
2. 可定制性
软件的可定制性指的是软件产品可以根据用户的需求进行定制和配置,以及提供用户自定义和调整的能力。它允许用户根据自己的需求和偏好,对软件的外观、功能、配置和行为进行修改和调整,以满足不同用户个性化的特定需求。
可定制性的特点
用户界面定制
软件可以提供灵活的用户界面定制选项,允许用户根据自己的喜好进行界面布局、颜色主题、字体大小等的调整。
功能定制
软件可以提供可插拔的功能模块或插件系统,使用户可以根据自己的需求选择安装、启用或禁用不同的功能模块,以实现个性化的功能定制。
配置定制
软件可以提供丰富的配置选项,允许用户对软件的各项参数进行调整和配置,以适应不同的工作流程或使用习惯。
数据定制
软件可以支持用户自定义数据字段或数据模型,以满足特定领域或行业的需求,使用户可以灵活地管理和处理自己的数据。
可定制性的好处
通过提供可定制性,软件能够更好地适应用户的需求,提高用户的满意度和工作效率。同时,可定制性也为软件的开发者提供了更大的灵活性和扩展性,使得软件可以更好地应对不同用户群体和市场的需求变化。
3. 可升级更新性
软件产品可以通过升级和更新来改进和修复错误,以适应不断变化的需求和技术环境。
可升级更新性的特点
版本升级
软件可以通过发布新的版本来提供功能增强、性能改进、错误修复等更新。用户可以方便地升级到新版本,以获得更好的体验和功能。
自动更新
软件可以支持自动更新机制,即在有新版本发布时,自动下载并安装更新,减少用户的操作和干预。这样可以确保用户始终使用最新的软件版本。
可选更新
软件可以提供可选的更新选项,让用户可以选择是否进行更新。这对于一些对稳定性要求较高或者对新功能不感兴趣的用户来说,可以保持当前版本的稳定性和一致性。
兼容性考虑
在进行软件版本升级时,软件开发者需要考虑向后兼容性,确保新版本能够与旧版本的数据格式、配置和接口兼容,以便用户顺利升级而不会造成数据丢失或功能冲突。
可升级更新性
通过具备可升级更新性,软件能够及时修复漏洞、提供新功能、改进性能,并保持与技术环境和用户需求的同步。这样可以提高软件的稳定性、安全性和用户体验,同时也为软件的开发者提供了持续改进和创新的机会。
4. 可复制性
软件产品的可复制性指的是该软件产品可以轻松地进行复制和分发,并在在多个环境中进行复制和部署的能力
可复制性的特点
安装复制
软件产品应该能够在不同的计算机系统上进行安装和部署,而不需要进行大量的定制和配置。这样可以方便用户在不同的设备上使用该软件。
数据复制
软件产品应该能够将数据从一个环境复制到另一个环境,以便用户可以在不同的设备或系统之间共享和同步数据。这对于数据的备份、迁移和共享非常重要。
功能复制
软件产品应该能够在不同的环境中复制其功能和特性。这意味着用户可以在不同的设备或系统上获得相同的功能和用户体验。
配置复制
软件产品的配置信息应该能够在不同的环境中进行复制和应用。这样用户在不同的设备上使用该软件时,可以轻松地应用他们之前的配置,而不需要重新进行配置。
可复制性的好处
通过提供可复制性,软件产品可以更好地适应不同的环境和需求,提供一致的用户体验,降低用户成本,并简化用户的部署和使用过程。这对于软件产品的成功和用户接受度非常重要
5. 可重复使用性
软件的可重复使用性是指软件组件、模块或代码可以在多个项目或系统中被多次使用的能力。它强调了软件开发中的模块化和组件化思想,以便将已开发和测试过的代码、功能或解决方案应用于其他项目或系统中,而不需要重新编写或重新设计,提高开发效率和资源利用率。
可重复使用性的特点
模块化设计
软件可以采用模块化的设计,将功能划分为独立的模块或组件,使得这些模块可以在不同的软件项目中被重复使用。这样可以提高软件开发的效率和质量,减少重复的工作。
库和框架
软件可以使用库和框架来提供通用的功能和工具,使得开发者可以在不同的软件项目中重复使用这些库和框架。这样可以加快软件开发的速度,提高代码的可维护性和稳定性。
组件化和服务化
软件可以采用组件化和服务化的架构,将功能拆分为独立的组件或服务,可以在不同的系统中被复用。这样可以实现系统的灵活组装和集成,提高系统的可扩展性和可定制性。
可重复使用性的好处
可重复使用性的概念是为了提高软件开发的效率和质量。通过将常用的功能、算法或模块抽象出来,并以可重复使用的形式提供给其他开发人员使用,可以避免重复劳动,减少开发时间和成本。
可重复使用的组件经过充分的测试和验证,可以提供更高的稳定性和可靠性。
软件的可重复使用性提升了软件产品的可维护性和可扩展性,为用户的定制提供了更多的选择和灵活性,使得他们可以根据自己的需求和预算选择合适的软件产品
6. 可维护性
软件产品的可维护性是指软件在发布后能够方便地进行修改、更新、修复的能力和优化的能力。可维护性是一个软件系统的重要属性,它直接影响到软件系统的可靠性、可用性和可扩展性。具有良好可维护性的软件产品能够快速响应用户的需求变化和技术演进,并且能够保持稳定和高质量的运行。
可维护性的特点
代码高可读性
编写清晰、可读性高的代码,使用有意义的变量和函数命名,注释代码以便于理解。这样可以提高代码的可维护性,使得其他开发人员能够更容易地理解和修改代码。
模块化设计
软件系统应该采用模块化的设计,将功能划分为独立的模块,模块之间的依赖关系应该尽量降低,这样在修改时可以更方便地定位和修改相关模块。
低耦合度
模块之间的耦合度应该尽量降低,模块之间的依赖关系应该明确且松散,这样在修改一个模块时不会影响到其他模块。
高内聚度
模块内部的功能应该高度相关,模块的职责应该清晰,这样在修改一个模块时可以更容易地理解和修改。
易测试性
软件系统应该具备良好的测试性,即可以方便地进行单元测试、集成测试和系统测试,以保证修改后的代码的正确性。
自动化测试
编写自动化测试用例来验证软件的功能和性能。这样可以在修改和更新代码时快速发现潜在的问题,提高代码的质量和稳定性。
版本控制
使用版本控制系统(如Git)来管理代码的变更历史和不同版本。这样可以追踪代码的修改,方便回滚和恢复之前的版本,同时也能够支持多人协作开发。
文档和注释
软件系统应该有清晰的文档和注释,包括设计文档、API文档、用户手册等,以便开发人员和维护人员能够快速理解和修改代码。同时,建立知识共享的平台,促进团队成员之间的交流和合作。
错误日志和监控
在软件中集成错误日志和监控系统,记录软件运行时的异常和错误信息。这样可以及时发现和排查问题,并进行必要的修复。
可维护性的好处
通过具备良好的可维护性,软件系统可以更容易地进行修改和维护,减少错误和故障的发生,提高系统的可靠性和可用性,从而降低开发和维护的成本,提高用户满意度。
7. 可扩展性
软件产品的可扩展性是指软件在面对需求变化或规模扩大时,能够方便地进行功能扩展和性能提升的能力。
可扩展性的特点
模块化设计
将软件系统划分为多个模块,每个模块负责独立的功能。这样可以降低模块之间的依赖性,使得新增功能或修改功能只需要对特定的模块进行操作,而不会对整个系统产生影响。
松耦合架构
采用松耦合的架构设计,将模块之间的依赖关系降到最低。这样可以使得新增功能或修改功能时,不会对其他模块产生影响,提高了系统的灵活性和可扩展性。
可插拔架构
软件系统应该使用可插拔架构,允许新的功能模块被添加到系统中,而不需要对现有的模块进行修改。这样可以降低对现有功能的影响,提高系统的灵活性。
扩展点和扩展接口
软件系统应该提供明确定义的扩展点和扩展接口,以便开发人员能够在不修改核心代码的情况下进行功能扩展。
接口设计
定义清晰、稳定的接口,以便于新增功能或修改功能时与其他模块进行交互。接口设计应该考虑到未来的扩展需求,避免频繁的接口变更和破坏性修改。
使用标准化和通用化技术
采用标准化和通用化的技术和组件,可以降低集成和扩展的难度。例如,使用开放标准的数据格式和协议,采用常用的开发框架和库等。
水平扩展和垂直扩展
采用水平扩展和垂直扩展的策略来应对系统的需求增长。水平扩展是通过增加更多的服务器节点来提高系统的负载能力,而垂直扩展是通过增加单个服务器的处理能力来提高系统的性能。
异步和分布式处理
采用异步和分布式的处理方式,可以提高系统的并发性和处理能力。例如,使用消息队列来解耦请求和处理过程,使用分布式计算来实现任务的并行处理等。
可扩展性的好处
具有良好可扩展性的软件产品能够适应不断变化的需求和增长的用户量,保持系统的高性能和稳定性,而不需要进行大规模的重构或重新设计。
8. 可移植性
可移植性是软件产品的另一个重要特性。它指的是软件能够在不同的平台、操作系统或环境中运行的能力
可移植性的特点
遵循标准化
使用广泛接受的标准和规范,如编程语言标准、网络协议等,以确保软件在不同环境中的兼容性。
使用跨平台的编程语言和框架
选择跨平台的编程语言和框架,如Java、Python、HTML5等,可以减少对特定平台的依赖,提高可移植性。
抽象、分离和模块化设计
将软件划分为独立的模块,将与特定平台相关的代码与核心业务逻辑分离,通过使用抽象层和接口,降低模块之间的耦合度,使得模块可以在不同环境中独立地进行移植和替换。
避免平台特定的依赖
避免过度依赖特定平台或操作系统的功能和特性,而是使用跨平台的解决方案或库来实现相同的功能。
提供配置选项和参数
为软件提供可配置的选项和参数,使得用户能够根据不同环境的需求进行调整和适应。
良好的文档和注释
提供清晰和详尽的文档和注释,以便其他开发人员能够理解和修改代码,从而方便软件的移植和维护。
测试和验证
在不同的目标平台上进行全面的测试和验证,以确保软件在各种环境下的正确运行。
可移植性的好处
具有良好的可移植性意味着软件可以轻松地迁移到不同的硬件或软件环境中,而无需进行大量的修改或重新编写代码。
通过提高软件产品的可移植性,可以使软件更具灵活性和可扩展性,并且可以降低迁移和适应新环境的成本。这对于跨平台应用程序、移动应用程序和云计算等领域尤为重要。
9. 可交互性
可交互性指的是软件与用户之间的互动和沟通能力,软件产品通过用户界面和输入设备来接收用户的指令和数据,并向用户反馈处理的结果,以此与用户进行交互。
可交互性的特点
用户友好的界面设计
软件界面应该简洁、直观、易于理解和操作。使用符合用户习惯和期望的布局、图标、颜色和字体等元素,以提供良好的用户体验。
响应性能
软件应该能够快速响应用户的操作和请求,避免长时间的等待和延迟,以提高用户满意度。
交互反馈
软件应该能够及时地向用户提供反馈,例如显示进度条、提示消息或错误信息,以帮助用户了解当前操作的状态和结果。
上下文感知
软件应该能够根据用户的上下文和需求提供相关的功能和选项,以提供个性化和定制化的用户体验。
用户个性化
软件可以提供个性化的设置选项,允许用户自定义界面布局、颜色主题、快捷键等,以满足不同用户的需求和喜好。
快捷操作和快捷键
提供快捷操作和快捷键,使用户能够更高效地完成任务,减少繁琐的鼠标操作。
引导和帮助文档
软件应该提供清晰的导航功能和帮助文档,帮助用户快速找到所需的功能和解决问题。
可交互性的好处
具有良好的可交互性意味着软件能够提供直观、方便和高效的用户界面,使用户能够轻松地与软件进行交互、操作和使用。
通过提高软件产品的可交互性,可以提升用户的使用体验,减少学习曲线,增加用户的满意度和忠诚度。同时,良好的可交互性还有助于提高软件的市场竞争力和用户口碑。
10. 可网络化
软件的可网络化指的是软件系统能够通过网络进行通信和交互的能力。它使得软件能够在分布式环境中运行,并与其他计算机、设备或用户进行数据传输、共享信息和协同工作。
可网络化的特点
网络通信
软件可以通过网络协议(如TCP/IP)与其他计算机或设备进行通信。这使得软件能够在不同的计算机之间传输数据、发送请求和接收响应。
远程访问
软件可以通过网络远程访问其他计算机或设备上的资源和服务。例如,通过远程桌面协议(如RDP)可以远程访问其他计算机的桌面界面,通过FTP协议可以远程访问文件服务器上的文件。
分布式计算
软件可以利用网络连接多台计算机进行分布式计算。这样可以将计算任务分配给不同的计算机节点,提高计算速度和处理能力。
云计算
软件可以利用云平台提供的网络化资源和服务。通过将软件部署在云服务器上,可以实现弹性扩展、高可用性和灵活的资源管理。
网络协同
软件可以通过网络实现用户之间的协同工作和信息共享。例如,通过在线协作工具,多个用户可以同时编辑和讨论文档,通过即时通讯工具,用户可以实时交流和共享信息。
可网络化的好处
通过提供网络化的功能,软件可以实现远程访问、分布式计算、云计算和协同工作,提高软件的灵活性、适应性和用户体验。同时,它也为软件的部署、维护和扩展提供了更多的选择和便利性。
11. 可自动化
软件产品可以执行各种自动化任务和流程,提高效率和准确性。
软件的可自动化性指的是软件系统能够自动执行任务、流程或操作,而无需人工干预或直接参与。它涉及到使用计算机程序和算法来代替人工操作和决策,从而提高效率、减少错误和节约时间成本。 软件的可自动化性可以通过以下方式实现: 通过提高软件的自动化能力,可以减少人工操作和干预,降低错误率,提高工作效率,节约时间和成本,并提供更好的用户体验
可自动化的特点
自动化流程
软件可以自动执行复杂的任务和流程,例如数据处理、报告生成、批量操作等。通过编写脚本或使用工作流程引擎,可以定义和自动化各种操作步骤,从而减少人工干预和提高效率。
自动化决策
软件可以使用算法和规则来自动进行决策和推断。例如,基于特定的规则和条件,软件可以自动选择最佳的行动方案或生成预测结果。
自动化集成
软件可以与其他系统和服务进行集成,实现数据的自动传输和交换。通过使用应用程序接口(API)和集成工具,可以实现不同系统之间的自动化数据流动,提高工作效率和数据准确性。
自动化测试
软件可以自动执行测试用例和验证功能的正确性。自动化测试可以快速、准确地检测和报告软件中的错误和缺陷,从而提高软件的质量和稳定性。
可自动化的好处
12. 可测量性
软件的可测量性是指软件系统或软件特性可以被度量、评估或量化的能力。它强调了在软件开发和维护过程中,能够通过各种指标和工具对软件进行可量化的衡量和评估,以便了解软件的质量、性能和可靠性。
以下是一些常见的软件可测量性指标和方法:
可测量性的特点
代码覆盖率
衡量代码中被测试用例覆盖的程度,以评估测试的全面性和有效性。
缺陷密度
衡量单位代码中存在的缺陷数量,以评估代码的质量和稳定性,通常用千行代码缺陷率来展示。
响应时间
衡量系统对用户请求的响应时间,以评估系统的性能和用户体验。
可用性
衡量系统在给定时间内可用的百分比,以评估系统的可靠性和可用性。
用户满意度
通过用户反馈、调查或评级来衡量用户对软件产品的满意程度,以评估软件的质量和用户体验。
成本效益
衡量开发和维护软件所需的成本与所获得的价值之间的比例,以评估软件项目的经济效益。
可测量性的好处
可测量性在软件工程中非常重要,它可以帮助开发团队和相关利益相关者对软件进行定量分析和评估,以便做出有效的决策和改进。通过度量和评估,可以更好地了解软件的优点和不足,发现问题并采取适当的措施来提高软件的质量和性能。
通过对软件进行度量和评估,可以获得客观的数据和指标,帮助开发团队和管理者了解软件的实际情况,及时发现问题并采取措施进行改进。可测量性有助于提高软件开发的质量、效率和可维护性,从而提升用户满意度和市场竞争力。
13. 可重构性
软件的可重构性是指软件系统或软件代码在不改变其外部行为的前提下,能够以一种可控的、经济合理的方式进行修改和重构的能力。可重构性是软件质量的一个重要属性,它强调了软件系统在面对需求变化、技术进步或错误修复等情况下,能够快速、有效地进行修改和演化。
可重构性的特点
模块化设计:将软件系统划分为独立的模块,每个模块负责特定的功能或任务。这样,当需要修改或改进特定功能时,只需对相应的模块进行修改,而不会影响到整个系统。
清晰的接口定义:模块之间通过清晰的接口进行通信和交互,接口定义应该稳定和一致。这样,当需要修改某个模块时,可以保持接口不变,从而减少对其他模块的影响。
松耦合和高内聚:模块之间应该尽量减少耦合度,即模块之间的依赖关系应该尽量简单和清晰。同时,模块内部应该具有高内聚性,即模块内的功能相关性应该高,模块内部的修改不会对其他模块产生影响。
重构技术:使用重构技术可以改进软件系统的结构和设计,例如提取重复代码、简化复杂的逻辑、优化性能等。重构技术可以帮助开发人员改善代码质量,减少代码的冗余和复杂性。
自动化测试:建立全面的自动化测试套件,可以在重构过程中确保软件系统的正确性和稳定性。自动化测试可以帮助开发人员快速发现和修复引入的错误。
可重构性的好处
通过提高软件系统的可重构性,可以减少修改和改进的风险,降低维护成本,并保持软件系统的稳定性和可用性。可重构性是软件系统长期成功和可持续发展的关键因素之一。
软件产品的版本
在软件开发和管理中,版本(Version)是指软件或软件组件的特定发布或发行。每个版本都具有一个唯一的标识符,通常是一个数字、字母或数字与字母的组合,用于区分不同的软件版本。 版本控制是软件开发过程中的重要环节,它用于管理和跟踪软件的不同版本。通过版本控制系统,开发团队可以记录每个版本的变更历史、修复的错误、新增的功能等信息。这样可以方便开发人员追踪和管理软件的演化过程,并确保团队成员之间的协作和代码的一致性。 通过版本控制,软件开发团队可以管理和跟踪软件的不同版本,方便发布、测试和维护。用户可以根据自己的需求选择合适的版本,并及时更新到最新版本以获得更好的功能和性能。
常见版本号
主版本号(Major Version)
表示软件的重大更新或功能改变。当软件进行了重大的架构变更或功能增强时,主版本号会递增。
样例
V1.0
V1
次版本号(Minor Version)
表示软件的较小更新或功能扩展。当软件添加了新的功能或进行了一些较小的改进时,次版本号会递增。
样例
V1.1
V1R1
修订号(Patch Version)
表示软件的错误修复或补丁更新。当软件修复了已知的错误或进行了一些小的调整时,修订号会递增。
样例
V1.1.3
V1R2C03
版本分支
版本分支是指在软件开发过程中,为了同时进行多个不同的开发任务或实现不同的功能需求,将代码库中的代码分成多个独立的分支。每个分支都是从主线(通常是稳定的主要版本)中创建的,开发人员可以在分支上进行独立的开发工作,而不会影响主线的稳定性。
版本分支的创建可以基于不同的需求,例如修复错误、添加新功能、测试实验性功能等。每个分支都有自己的代码提交历史和版本号,开发人员可以在分支上进行代码修改、测试和调试,而不会影响其他分支或主线。
版本分支的创建和管理可以通过版本控制系统来实现,例如Git。开发人员可以创建新的分支,并在不同的分支之间进行切换和合并操作,以便在不同的开发任务之间进行无缝切换和协同工作。一旦在分支上的开发工作完成并通过测试,可以将分支合并回主线,使得新的代码变化成为主线版本的一部分。
版本分支的使用可以提高团队的开发效率和灵活性,使得不同的开发任务可以并行进行,同时也可以保持主线版本的稳定性。
样例
V1.1.3M1
主干版本
V1.1.3T1
分支1
V1.1.3T2
分支2
V1.1.3RD03
第三批研发需求分支版本
分支合并
分支合并是指将一个或多个分支的代码变更合并到目标分支(通常是主线或其他稳定分支)的过程。这个过程可以将不同分支上的代码修改、新增或删除的内容合并到一起,以创建一个包含所有变更的新版本。
分支合并通常是在开发人员完成在特定分支上的工作并经过测试之后进行的。合并的目的是将分支上的新功能、修复或其他变更集成到目标分支中,使得目标分支具备分支上的改动。
在进行分支合并时,版本控制系统会尝试自动合并两个分支上的代码修改。如果两个分支上的修改没有冲突,合并过程将会顺利进行,合并后的代码将包含来自两个分支的变更。然而,如果两个分支上的修改存在冲突(即对同一行代码进行了不同的修改),则需要手动解决冲突,以确定最终的代码变更。
分支合并的好处是可以将不同分支上的工作整合在一起,避免代码的重复开发和维护。它还可以促进团队协作,使得不同开发人员可以独立工作并将自己的改动合并到共享代码库中。
然而,分支合并也需要谨慎处理,特别是在多人协作的项目中。合并过程中可能会出现冲突和错误,因此在进行分支合并之前,建议进行充分的测试和代码审查,以确保合并后的代码质量和稳定性。
项目版本
指软件产品的不同发布或迭代的标识。每个项目版本代表着软件在特定时间点的状态和功能集合。项目版本也是我们常说的主干版本,发布版本
一个瀑布项目对应一个项目版本
一个迭代对应一个项目版本
测试版本
一个项目内,不同阶段下提供给测试人员进行测试的版本
Dev
DevSmoke
QASSmoke
QAS
PRE
CSV
补丁版本
补丁版本通常用于解决软件中的错误、漏洞或其他问题,并提供一些小的改进或增强。
对于补丁而言,补丁版本=测试版本
补丁版本目前定义为总工作量≤10人天的功能优化版本或解决已上线项目版本的线上缺陷的版本
软件项目
软件项目是指为了开发、交付和维护一个软件产品而进行的一系列计划、活动和任务的集合。它通常由一个团队或组织来完成,包括项目经理、开发人员、测试人员、产品设计师等。
软件项目活动
1. 需求分析
与客户和利益相关者合作,收集、分析和明确软件的需求和功能。
2. 产品定义
根据需求分析的结果,将需求集合定义为新产品或规划为已有产品的更新内容
3. 可行性研究
评估项目的可行性,包括技术可行性、经济可行性和操作可行性等方面的分析。
4. 需求立项
根据需求的范围,进行立项,启动项目工作,确认项目内涉及的产品和范围
5. 需求规划
根据需求的优先级和可行性研究结果,制定需求规划,确定项目的范围和目标。
6. 设计和架构
基于需求规划,进行软件的设计和架构,确定软件的整体结构和组织方式。
7. 开发和编码
根据设计和架构,进行软件的编码和开发工作,实现软件的功能和特性。
8. 测试和验证
对软件进行各种测试,包括单元测试、集成测试和系统测试等,以验证软件的正确性和稳定性。
9. 部署和交付
将软件部署到目标环境中,并交付给客户或最终用户使。
10. 维护和支持
对已交付的软件进行维护和支持工作,包括修复缺陷、提供技术支持和进行软件更新等
11. 项目管理
协调和管理项目的各项活动,包括项目计划、资源分配、进度控制和风险管理等。
这些活动通常是按照一定的顺序和依赖关系进行,但在敏捷开发等灵活的方法中,这些活动可能会以迭代和增量的方式进行,以便更好地响应需求变化和快速交付价值。
P0级项目瀑布管理方式
基本原则
P0项目集对应一个主产品的一个或多个P0级项目
有PMO进行项目集创建并关联产品和项目
一个P0级项目对应主产品的一个发布版本
P0级项目均采用瀑布模型进行管理
瀑布模型定义
1. 瀑布模型是一种传统的软件开发生命周期模型,也被称为经典生命周期模型。它是一种线性顺序模型,将软件开发过程划分为一系列有序的阶段,每个阶段在前一个阶段完成后开始,并且在下一个阶段开始之前必须完成。
2. 瀑布模型是一种线性的开发模型,每个阶段都有明确的开始和结束。在这个模型中,每个阶段的输出成果物作为下一个阶段的输入。这种顺序性和阶段划分的特点使得瀑布模型适用于一些对需求变动较少的项目。
瀑布模型阶段
1. 需求收集阶段
在这个阶段,团队与用户进行沟通和交流,以了解他们的需求和期望。用户需求被收集并记录下来。
产品设计产出MRD
MRD文档是在需求收集阶段产出的,它主要描述了产品或系统的市场需求和用户需求。MRD文档包含了对目标市场、目标用户、产品功能和特性的详细描述,以及对竞争对手和市场趋势的分析。MRD文档的目的是为了确保产品开发团队对市场需求有一个清晰的了解,以便在后续的研发过程中能够满足用户的期望。
用户需求记录入主产品的用户需求列表内
立项前工作
工时关联产品域公共项目
禅道项目内不体现
2. 产品设计阶段
在这个阶段,产品设计对收集到的用户需求进行详细的分析和澄清;编写PRD文档,并将用户需求转化为研发需求,明确需求的功能和特性。
产品设计产出PRD
PRD文档是在需求分析阶段产出的,它是根据MRD文档进一步细化和明确的产品需求文档。PRD文档详细描述了产品的功能、性能、界面、用户交互和其他技术要求。它包含了对每个功能的详细描述、用户故事、用例和非功能性需求等。PRD文档的目的是为了将用户需求转化为具体的研发需求,为研发团队提供明确的指导。
3. 需求确认阶段
在这个阶段,开发和测试团队对产品设计产出的PRD和研发需求进行评审,分析,工作量评估,确认在项目规划期内可完成落地的需求范围
明确研发需求范围
将产品内的研发需求关联入项目,明确项目范围
4. 研发设计阶段
在这个阶段,团队基于研发需求开始进行系统设计。他们确定系统的技术架构、技术模块和组件,并制定详细的技术设计规范。
产出研发设计和测试设计
确定项目开发、测试工作排期
5. 开发编码阶段
在这个阶段,团队根据设计阶段的规范开始进行软件开发。开发人员编写代码,测试人员执行测试,并确保软件按照规范进行开发。
开发编码
代码评审走读
代码静态扫描,白盒测试
系统内部集成
测试用例产出
白
灰
黑
自动化测试产出
理想状态
6. 冒烟测试
在这个阶段,是项目版本开发完成,由开发团队向测试团队交接的关键节点。通过开发冒烟测试完成代表开发交付完成,已达成产品设计的核心目标;通过测试冒烟测试,表示测试验证认可开发交付产品达到启动测试工作要求,产品设计的核心目标已验证达成。
开发冒烟测试
测试冒烟测试
相同冒烟用例集
100%通过率,100%执行率
7. QAS测试阶段
在这个阶段,团队对开发完成的软件进行全面的测试。他们执行功能测试、性能测试和用户验收测试,以确保软件的质量和稳定性。
2+1
一轮全量测试
一轮非异常全量测试
一轮回归测试
3+1
一轮全量测试
两轮非异常全量测试
一轮回归测试
项目版本测试报告
功能测试报告
性能测试报告
DFX测试报告
测试交付条件
遗留DI值<10
阻塞
DI=10
核心
DI=3
重要
DI=1
一般
DI=0.1
一级用例全部通过
90%通过率,100%执行率
测试报告项目组评审通过
用户验收测试Pass(按需)
用户验收测试
按需在QAS测试阶段进行或独立PRE阶段进行
产品设计团队
用户代表团队
UAT用例执行
8. 部署阶段
在这个阶段,团队将已经测试通过的软件部署到生产环境中。他们确保软件能够正常运行,并提供必要的培训和支持。
发布评审
部署上线
PRE上线
生产上线
用户培训
项目内阶段顺序开展进行
9. 项目收尾
项目复盘
10. PRE阶段
用户验收测试
产品设计队
用户代表团队
UAT用例执行
用户试用
生产上线
11. CSV阶段
CSV合规验证
用户试运行
能力优化
问题修复
持续集成
补丁版本,融合敏捷
正式商用
12. 运维阶段
在这个阶段,团队负责监控和维护已经部署的软件。他们修复可能出现的问题,并进行软件的升级和优化。
故障处理
产生延期均需按变更流程进行审批
单产品单发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分基础平台类产品
主产品对依赖产品无需求
产品仅被立项一个项目
一个项目仅做一次发布版本
限制条件
建立独立项目集
项目集及项目最长3个月
运作管理机制
参见产研测流程
单产品多发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分基础平台类产品
主产品对依赖产品无需求
产品当期版本已立项且已明确后续项目版本节奏
每个项目版本建一个独立的瀑布模型项目进行管理
限制条件
建立独立项目集,项目集最长6个月
项目集内可包含多个主产品不同版本的项目
每个项目最长3个月
运作管理机制
参见产研测流程
每个项目版本发布后,对应项目均需关闭
项目集到期后,需新立项目集和项目
多产品单发布版本
条件
仅涉及一个主产品
关联多个支撑产品,主产品与支撑产品相互强耦合,且支撑产品与主产品打包进行版本发布上线
主产品对关联产品有需求
产品仅被立项一个项目
一个项目仅做一次发布版本,发布包含全主产品和关联支撑产品
限制条件
建立独立项目集
项目集及项目最长3个月
项目内关联主产品和支撑产品
项目管理约束
支撑产品可按自身节奏开展工作,任务挂载主产品项目内
需求管控
项目涉及产品的研发需求,均落入本项目内
支撑产品的研发需求,不在支撑产品自身作为主产品的项目内体现
阶段管控
仅一套以主产品进度为准的阶段规范时间节点
支撑产品不严格要求阶段时间节点与主产品匹配,除提测和发布
提测管控
冒烟测试按项目整体进行
提测用例
主产品用例
支撑产品用例
提测冒烟版本
DevSmoke
-01
-02
QASSmoke
-01
-02
冒烟提测单
对应提测冒烟版本
测试环境管控
集成测试环境
主产品与支撑产品统一版本,统一环境
版本发布
仅一次发布上线项目内全部产品
运作管理机制
参见产研测流程
当期项目版本发布后,对应项目及项目集需关闭
多产品多发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分支撑产品
主产品对支撑产品有需求
产品当期版本已立项且已明确后续项目版本节奏
一个项目仅做一次发布版本,发布仅包含主产品
支撑产品按自身节奏运作发版,仅保障主产品项目发版上线前所依赖能力已上线
限制条件
建立独立项目集
项目集最长6个月
项目集内可包含多个主产品不同版本的项目
每个项目最长3个月
P0项目内仅关联主产品
支撑产品以自身项目运作
项目管理约束
主产品一套阶段规范时间节点
支撑产品以自身项目运作
需求管控
项目内仅包含主产品自身研发需求
主产品对支撑产品产生的研发需求,分解在支撑产品内,仅在支撑产品自身项目内体现
阶段管控
只对主产品进度进行管控
支撑产品不在项目内管控,仅要求在主产品提测前提供所分解下来的研发需求能力
提测管控
冒烟测试按项目进行
提测用例
主产品用例
提测冒烟版本
DevSmoke
-01
-02
QASSmoke
-01
-02
冒烟提测单
对应提测冒烟版本
测试环境管控
主产品测试环境
支撑产品环境仅需保障主产品所需能力已QAS上线
运作管理机制
参见产研测流程
当期主产品项目版本发布后,对应主产品项目需关闭
主产品项目集根据主产品项目版本节奏,可创建多个主产品项目
主产品项目集到期后,需新立主产品项目集和主产品项目
子主题
子主题
非P0融合敏捷管理方式
基本原则
P1项目集对应一个主产品的一个或多个P1级项目
由PMO进行项目集创建并关联产品和项目
一个P1级项目对应主产品的多个发布版本
一个P1级项目下一个迭代对应主产品的一个发布版本
非P1级项目均采用融合敏捷模型进行管理
敏捷模型定义
行业标准定义
敏捷开发模型是一种软件开发方法论,强调在开发过程中不断迭代、快速响应变化,并与客户紧密合作。它强调团队合作、自组织、灵活性和适应性,以快速交付高质量的软件。敏捷开发模型采用迭代和增量的方式进行开发,每个迭代通常是一个固定的时间段,称为“冲刺”。在每个冲刺中,团队会开发一部分功能,并进行测试和验证。这种迭代的方式可以让团队及时获得反馈,并根据反馈进行调整和改进。 总体而言,敏捷开发模型注重灵活性、快速交付和持续改进,以满足不断变化的客户需求。它适用于需要快速响应市场变化和不确定需求的软件开发项目。
敏捷开发模型的核心原则
个体和互动胜过流程和工具
强调团队成员之间的有效沟通和合作,以及与客户的密切合作。
可工作的软件胜过详尽的文档
强调软件的实际运行和功能,而不是过多的文档。
客户合作胜过合同谈判
强调与客户的积极合作,以满足他们的需求和期望。
响应变化胜过遵循计划
强调对需求变化的灵活响应,以便及时调整开发方向和优先级。
数创定义
仅借用禅道敏捷项目外壳,进行非P0级项目快速管理,本质实行瀑布模型管理
一个融合敏捷项目可包含多个迭代
每个迭代实质是一个瀑布模型的项目版本
融合敏捷项目的迭代重点关注提测完成时间点与交付时间点
产生延期均需按变更流程进行审批
P1级项目
单产品单发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分基础平台类产品
主产品对依赖产品无需求
产品仅被立项一个融合敏捷项目
一个项目仅做一次发布版本
限制条件
建立独立项目集
项目集及项目最长3个月
运作管理机制
参见产研测流程
允许根据实际项目发展情况,在项目内创建多个项目迭代
单产品多发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分基础平台类产品
主产品对依赖产品无需求
产品当期版本已立项且已明确后续项目版本节奏
每个项目版本建一个融合敏捷项目进行管理
每一个发布项目版本建一个项目迭代进行跟踪
限制条件
建立独立项目集,项目集最长6个月
每个项目最长3个月
项目内可包含多个主产品不同版本的迭代
运作管理机制
参见产研测流程
每个迭代版本发布后,对应迭代均需关闭
项目集到期后,需新立项目集和项目
多产品单发布版本
条件
仅涉及一个主产品
关联多个支撑产品,主产品与支撑产品相互强耦合,且支撑产品与主产品打包进行版本发布上线
主产品对关联产品有需求
产品仅被立项一个项目
一个项目仅做一次发布版本,发布包含全主产品和关联支撑产品
限制条件
建立独立项目集
项目集及项目最长3个月
项目内关联主产品和支撑产品
项目内主产品和支撑产品建立各自的迭代版本
项目管理约束
支撑产品可按自身节奏开展工作,任务挂载项目内自身的迭代版本内
需求管控
项目涉及产品的研发需求,均落入本项目内
支撑产品的研发需求,仅在支撑产品自身迭代版本内体现,不关联支撑产品作为主产品的项目内体现
迭代管控
仅以主产品的提测完成时间节点和测试交付时间节点为强管控时间节点
支撑产品迭代版本
支撑产品工作任务在项目内自身的迭代版本内创建
支撑产品时间节点在项目内自身的迭代版本内跟踪
支撑产品提测完成时间节点应早于主产品提测启动
若支撑产品提测未通过导致主产品提测无法按期进行,则需上升PMO抉择
提测用例
支撑产品用例
提测冒烟版本
项目代码-支撑产品-迭代版本-DevSmoke
-01
-02
项目代码-支撑产品-迭代版本-QASSmoke
-01
-02
冒烟提测单
对应提测冒烟版本
主产品迭代版本
主产品的迭代版本提测通过后代表项目完全进入QAS阶段
提测用例
主产品用例
提测冒烟版本
项目代码-主产品-迭代版本-DevSmoke
-01
-02
项目代码-主产品-迭代版本-QASSmoke
-01
-02
冒烟提测单
对应提测冒烟版本
测试环境管控
支撑产品自身环境
主产品集成测试环境
主产品
支撑产品
版本发布
仅一次发布上线项目内全部产品迭代版本内容
运作管理机制
参见产研测流程
迭代版本发布后项目内所有主产品迭代版本相关迭代关闭
主迭代关闭后,项目内原则上仅允许后续创建工作量≤10人天的补丁版本
当期项目结束或到期后,对应项目应关闭
新需求需落地,则在项目集内新建新的版本项目
多产品多发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分支撑产品
主产品对支撑产品有需求
产品当期版本已立项且已明确后续项目版本节奏
一个项目可见多个迭代版本,每个迭代版本仅一次发布版本,发布仅包含主产品
支撑产品按自身节奏运作发版,仅保障主产品项目发版上线前所依赖能力已上线
限制条件
建立独立项目集
项目集最长6个月
项目集内可包含多个主产品不同版本的项目
每个项目最长3个月
每个项目内可包含多个版本迭代
P1项目内仅关联主产品
支撑产品以自身项目运作
项目管理约束
主产品一套阶段规范时间节点
支撑产品以自身项目运作
需求管控
项目内仅包含主产品自身研发需求
主产品对支撑产品产生的研发需求,分解在支撑产品内,仅在支撑产品自身项目内体现
阶段管控
只对主产品进度进行管控
支撑产品不在项目内管控,仅要求在主产品提测前提供所分解下来的研发需求能力
提测管控
冒烟测试按项目进行
提测用例
主产品用例
提测冒烟版本
DevSmoke
-01
-02
QASSmoke
-01
-02
冒烟提测单
对应提测冒烟版本
测试环境管控
主产品测试环境
支撑产品环境仅需保障主产品所需能力已QAS上线
运作管理机制
参见产研测流程
当期主产品迭代版本发布后,对应主产品迭代需关闭
原则上主产品运行状态迭代最多不超过3个
不建议在项目集下建多个主产品的融合敏捷项目,但可多个瀑布项目
主产品项目集到期后,需新立主产品项目集和主产品项目
其他级别项目
按产品域或部门创建项目集
项目均为融合敏捷型
项目归属对应产品域或部门项目集下
其余要求同P1级项目
软件项目管理概念关系图
项目集
是一组互相关联、且被协调管理的项目集合。它帮助管理者从宏观视角出发,通过创建项目集,分解子项目集,维护项目的预算、周期、负责人等情况,制定公司战略规划、分配资源。项目集在整个框架中属于最高层级
分类方式
P0级项目集
P1级项目集
企业管理域
营销域
制造平台产品域
数据智能部
应用技术部
质量部
业务流程部
软件产品
软件产品是指通过编程和开发过程创建的具有独立功能和特性的计算机程序。它是为了满足用户需求而开发的,可以在计算机或其他设备上运行的应用程序或系统。
软件产品常见特点
1. 虚拟性
软件产品是以代码和算法的逻辑形式存在的,没有实体形态,不依赖于特定的物理设备或硬件平台,可以在不同的环境中灵活运行和提供各种功能和服务的数字化产品
虚拟性的特点
硬件无关性
软件可以在不同的硬件平台上运行,不受特定硬件的限制。
例如,同一个软件程序可以在不同的操作系统上运行,或者在不同的计算机、智能手机、平板电脑等设备上运行。
软件模拟
软件可以模拟物理实体或过程。
例如,虚拟机软件可以模拟出一个完整的计算机系统,让用户在其中运行其他操作系统或应用程序。另外,游戏软件可以模拟出各种虚拟的世界和角色。
软件定义的网络
软件定义的网络(Software-Defined Networking,SDN)是一种通过软件来管理和控制网络的方法。它将网络的控制平面与数据平面分离,使得网络可以根据需求进行动态配置和管理,而不受特定硬件设备的限制。
软件服务
软件可以作为服务(Software as a Service,SaaS)提供,用户可以通过互联网访问和使用软件功能,而无需在本地安装和维护软件。这种模式下,软件的运行和管理都由服务提供商负责。
虚拟性的好处
软件的虚拟性使得软件产品不依赖于特定的物理设备或硬件平台,可以在不同的环境中灵活运行和提供各种功能和服务。它为用户带来了方便性、灵活性和可扩展性。
2. 可定制性
软件的可定制性指的是软件产品可以根据用户的需求进行定制和配置,以及提供用户自定义和调整的能力。它允许用户根据自己的需求和偏好,对软件的外观、功能、配置和行为进行修改和调整,以满足不同用户个性化的特定需求。
可定制性的特点
用户界面定制
软件可以提供灵活的用户界面定制选项,允许用户根据自己的喜好进行界面布局、颜色主题、字体大小等的调整。
功能定制
软件可以提供可插拔的功能模块或插件系统,使用户可以根据自己的需求选择安装、启用或禁用不同的功能模块,以实现个性化的功能定制。
配置定制
软件可以提供丰富的配置选项,允许用户对软件的各项参数进行调整和配置,以适应不同的工作流程或使用习惯。
数据定制
软件可以支持用户自定义数据字段或数据模型,以满足特定领域或行业的需求,使用户可以灵活地管理和处理自己的数据。
可定制性的好处
通过提供可定制性,软件能够更好地适应用户的需求,提高用户的满意度和工作效率。同时,可定制性也为软件的开发者提供了更大的灵活性和扩展性,使得软件可以更好地应对不同用户群体和市场的需求变化。
3. 可升级更新性
软件产品可以通过升级和更新来改进和修复错误,以适应不断变化的需求和技术环境。
可升级更新性的特点
版本升级
软件可以通过发布新的版本来提供功能增强、性能改进、错误修复等更新。用户可以方便地升级到新版本,以获得更好的体验和功能。
自动更新
软件可以支持自动更新机制,即在有新版本发布时,自动下载并安装更新,减少用户的操作和干预。这样可以确保用户始终使用最新的软件版本。
可选更新
软件可以提供可选的更新选项,让用户可以选择是否进行更新。这对于一些对稳定性要求较高或者对新功能不感兴趣的用户来说,可以保持当前版本的稳定性和一致性。
兼容性考虑
在进行软件版本升级时,软件开发者需要考虑向后兼容性,确保新版本能够与旧版本的数据格式、配置和接口兼容,以便用户顺利升级而不会造成数据丢失或功能冲突。
可升级更新性
通过具备可升级更新性,软件能够及时修复漏洞、提供新功能、改进性能,并保持与技术环境和用户需求的同步。这样可以提高软件的稳定性、安全性和用户体验,同时也为软件的开发者提供了持续改进和创新的机会。
4. 可复制性
软件产品的可复制性指的是该软件产品可以轻松地进行复制和分发,并在在多个环境中进行复制和部署的能力
可复制性的特点
安装复制
软件产品应该能够在不同的计算机系统上进行安装和部署,而不需要进行大量的定制和配置。这样可以方便用户在不同的设备上使用该软件。
数据复制
软件产品应该能够将数据从一个环境复制到另一个环境,以便用户可以在不同的设备或系统之间共享和同步数据。这对于数据的备份、迁移和共享非常重要。
功能复制
软件产品应该能够在不同的环境中复制其功能和特性。这意味着用户可以在不同的设备或系统上获得相同的功能和用户体验。
配置复制
软件产品的配置信息应该能够在不同的环境中进行复制和应用。这样用户在不同的设备上使用该软件时,可以轻松地应用他们之前的配置,而不需要重新进行配置。
可复制性的好处
通过提供可复制性,软件产品可以更好地适应不同的环境和需求,提供一致的用户体验,降低用户成本,并简化用户的部署和使用过程。这对于软件产品的成功和用户接受度非常重要
5. 可重复使用性
软件的可重复使用性是指软件组件、模块或代码可以在多个项目或系统中被多次使用的能力。它强调了软件开发中的模块化和组件化思想,以便将已开发和测试过的代码、功能或解决方案应用于其他项目或系统中,而不需要重新编写或重新设计,提高开发效率和资源利用率。
可重复使用性的特点
模块化设计
软件可以采用模块化的设计,将功能划分为独立的模块或组件,使得这些模块可以在不同的软件项目中被重复使用。这样可以提高软件开发的效率和质量,减少重复的工作。
库和框架
软件可以使用库和框架来提供通用的功能和工具,使得开发者可以在不同的软件项目中重复使用这些库和框架。这样可以加快软件开发的速度,提高代码的可维护性和稳定性。
组件化和服务化
软件可以采用组件化和服务化的架构,将功能拆分为独立的组件或服务,可以在不同的系统中被复用。这样可以实现系统的灵活组装和集成,提高系统的可扩展性和可定制性。
可重复使用性的好处
可重复使用性的概念是为了提高软件开发的效率和质量。通过将常用的功能、算法或模块抽象出来,并以可重复使用的形式提供给其他开发人员使用,可以避免重复劳动,减少开发时间和成本。
可重复使用的组件经过充分的测试和验证,可以提供更高的稳定性和可靠性。
软件的可重复使用性提升了软件产品的可维护性和可扩展性,为用户的定制提供了更多的选择和灵活性,使得他们可以根据自己的需求和预算选择合适的软件产品
6. 可维护性
软件产品的可维护性是指软件在发布后能够方便地进行修改、更新、修复的能力和优化的能力。可维护性是一个软件系统的重要属性,它直接影响到软件系统的可靠性、可用性和可扩展性。具有良好可维护性的软件产品能够快速响应用户的需求变化和技术演进,并且能够保持稳定和高质量的运行。
可维护性的特点
代码高可读性
编写清晰、可读性高的代码,使用有意义的变量和函数命名,注释代码以便于理解。这样可以提高代码的可维护性,使得其他开发人员能够更容易地理解和修改代码。
模块化设计
软件系统应该采用模块化的设计,将功能划分为独立的模块,模块之间的依赖关系应该尽量降低,这样在修改时可以更方便地定位和修改相关模块。
低耦合度
模块之间的耦合度应该尽量降低,模块之间的依赖关系应该明确且松散,这样在修改一个模块时不会影响到其他模块。
高内聚度
模块内部的功能应该高度相关,模块的职责应该清晰,这样在修改一个模块时可以更容易地理解和修改。
易测试性
软件系统应该具备良好的测试性,即可以方便地进行单元测试、集成测试和系统测试,以保证修改后的代码的正确性。
自动化测试
编写自动化测试用例来验证软件的功能和性能。这样可以在修改和更新代码时快速发现潜在的问题,提高代码的质量和稳定性。
版本控制
使用版本控制系统(如Git)来管理代码的变更历史和不同版本。这样可以追踪代码的修改,方便回滚和恢复之前的版本,同时也能够支持多人协作开发。
文档和注释
软件系统应该有清晰的文档和注释,包括设计文档、API文档、用户手册等,以便开发人员和维护人员能够快速理解和修改代码。同时,建立知识共享的平台,促进团队成员之间的交流和合作。
错误日志和监控
在软件中集成错误日志和监控系统,记录软件运行时的异常和错误信息。这样可以及时发现和排查问题,并进行必要的修复。
可维护性的好处
通过具备良好的可维护性,软件系统可以更容易地进行修改和维护,减少错误和故障的发生,提高系统的可靠性和可用性,从而降低开发和维护的成本,提高用户满意度。
7. 可扩展性
软件产品的可扩展性是指软件在面对需求变化或规模扩大时,能够方便地进行功能扩展和性能提升的能力。
可扩展性的特点
模块化设计
将软件系统划分为多个模块,每个模块负责独立的功能。这样可以降低模块之间的依赖性,使得新增功能或修改功能只需要对特定的模块进行操作,而不会对整个系统产生影响。
松耦合架构
采用松耦合的架构设计,将模块之间的依赖关系降到最低。这样可以使得新增功能或修改功能时,不会对其他模块产生影响,提高了系统的灵活性和可扩展性。
可插拔架构
软件系统应该使用可插拔架构,允许新的功能模块被添加到系统中,而不需要对现有的模块进行修改。这样可以降低对现有功能的影响,提高系统的灵活性。
扩展点和扩展接口
软件系统应该提供明确定义的扩展点和扩展接口,以便开发人员能够在不修改核心代码的情况下进行功能扩展。
接口设计
定义清晰、稳定的接口,以便于新增功能或修改功能时与其他模块进行交互。接口设计应该考虑到未来的扩展需求,避免频繁的接口变更和破坏性修改。
使用标准化和通用化技术
采用标准化和通用化的技术和组件,可以降低集成和扩展的难度。例如,使用开放标准的数据格式和协议,采用常用的开发框架和库等。
水平扩展和垂直扩展
采用水平扩展和垂直扩展的策略来应对系统的需求增长。水平扩展是通过增加更多的服务器节点来提高系统的负载能力,而垂直扩展是通过增加单个服务器的处理能力来提高系统的性能。
异步和分布式处理
采用异步和分布式的处理方式,可以提高系统的并发性和处理能力。例如,使用消息队列来解耦请求和处理过程,使用分布式计算来实现任务的并行处理等。
可扩展性的好处
具有良好可扩展性的软件产品能够适应不断变化的需求和增长的用户量,保持系统的高性能和稳定性,而不需要进行大规模的重构或重新设计。
8. 可移植性
可移植性是软件产品的另一个重要特性。它指的是软件能够在不同的平台、操作系统或环境中运行的能力
可移植性的特点
遵循标准化
使用广泛接受的标准和规范,如编程语言标准、网络协议等,以确保软件在不同环境中的兼容性。
使用跨平台的编程语言和框架
选择跨平台的编程语言和框架,如Java、Python、HTML5等,可以减少对特定平台的依赖,提高可移植性。
抽象、分离和模块化设计
将软件划分为独立的模块,将与特定平台相关的代码与核心业务逻辑分离,通过使用抽象层和接口,降低模块之间的耦合度,使得模块可以在不同环境中独立地进行移植和替换。
避免平台特定的依赖
避免过度依赖特定平台或操作系统的功能和特性,而是使用跨平台的解决方案或库来实现相同的功能。
提供配置选项和参数
为软件提供可配置的选项和参数,使得用户能够根据不同环境的需求进行调整和适应。
良好的文档和注释
提供清晰和详尽的文档和注释,以便其他开发人员能够理解和修改代码,从而方便软件的移植和维护。
测试和验证
在不同的目标平台上进行全面的测试和验证,以确保软件在各种环境下的正确运行。
可移植性的好处
具有良好的可移植性意味着软件可以轻松地迁移到不同的硬件或软件环境中,而无需进行大量的修改或重新编写代码。
通过提高软件产品的可移植性,可以使软件更具灵活性和可扩展性,并且可以降低迁移和适应新环境的成本。这对于跨平台应用程序、移动应用程序和云计算等领域尤为重要。
9. 可交互性
可交互性指的是软件与用户之间的互动和沟通能力,软件产品通过用户界面和输入设备来接收用户的指令和数据,并向用户反馈处理的结果,以此与用户进行交互。
可交互性的特点
用户友好的界面设计
软件界面应该简洁、直观、易于理解和操作。使用符合用户习惯和期望的布局、图标、颜色和字体等元素,以提供良好的用户体验。
响应性能
软件应该能够快速响应用户的操作和请求,避免长时间的等待和延迟,以提高用户满意度。
交互反馈
软件应该能够及时地向用户提供反馈,例如显示进度条、提示消息或错误信息,以帮助用户了解当前操作的状态和结果。
上下文感知
软件应该能够根据用户的上下文和需求提供相关的功能和选项,以提供个性化和定制化的用户体验。
用户个性化
软件可以提供个性化的设置选项,允许用户自定义界面布局、颜色主题、快捷键等,以满足不同用户的需求和喜好。
快捷操作和快捷键
提供快捷操作和快捷键,使用户能够更高效地完成任务,减少繁琐的鼠标操作。
引导和帮助文档
软件应该提供清晰的导航功能和帮助文档,帮助用户快速找到所需的功能和解决问题。
可交互性的好处
具有良好的可交互性意味着软件能够提供直观、方便和高效的用户界面,使用户能够轻松地与软件进行交互、操作和使用。
通过提高软件产品的可交互性,可以提升用户的使用体验,减少学习曲线,增加用户的满意度和忠诚度。同时,良好的可交互性还有助于提高软件的市场竞争力和用户口碑。
10. 可网络化
软件的可网络化指的是软件系统能够通过网络进行通信和交互的能力。它使得软件能够在分布式环境中运行,并与其他计算机、设备或用户进行数据传输、共享信息和协同工作。
可网络化的特点
网络通信
软件可以通过网络协议(如TCP/IP)与其他计算机或设备进行通信。这使得软件能够在不同的计算机之间传输数据、发送请求和接收响应。
远程访问
软件可以通过网络远程访问其他计算机或设备上的资源和服务。例如,通过远程桌面协议(如RDP)可以远程访问其他计算机的桌面界面,通过FTP协议可以远程访问文件服务器上的文件。
分布式计算
软件可以利用网络连接多台计算机进行分布式计算。这样可以将计算任务分配给不同的计算机节点,提高计算速度和处理能力。
云计算
软件可以利用云平台提供的网络化资源和服务。通过将软件部署在云服务器上,可以实现弹性扩展、高可用性和灵活的资源管理。
网络协同
软件可以通过网络实现用户之间的协同工作和信息共享。例如,通过在线协作工具,多个用户可以同时编辑和讨论文档,通过即时通讯工具,用户可以实时交流和共享信息。
可网络化的好处
通过提供网络化的功能,软件可以实现远程访问、分布式计算、云计算和协同工作,提高软件的灵活性、适应性和用户体验。同时,它也为软件的部署、维护和扩展提供了更多的选择和便利性。
11. 可自动化
软件产品可以执行各种自动化任务和流程,提高效率和准确性。
软件的可自动化性指的是软件系统能够自动执行任务、流程或操作,而无需人工干预或直接参与。它涉及到使用计算机程序和算法来代替人工操作和决策,从而提高效率、减少错误和节约时间成本。 软件的可自动化性可以通过以下方式实现: 通过提高软件的自动化能力,可以减少人工操作和干预,降低错误率,提高工作效率,节约时间和成本,并提供更好的用户体验
可自动化的特点
自动化流程
软件可以自动执行复杂的任务和流程,例如数据处理、报告生成、批量操作等。通过编写脚本或使用工作流程引擎,可以定义和自动化各种操作步骤,从而减少人工干预和提高效率。
自动化决策
软件可以使用算法和规则来自动进行决策和推断。例如,基于特定的规则和条件,软件可以自动选择最佳的行动方案或生成预测结果。
自动化集成
软件可以与其他系统和服务进行集成,实现数据的自动传输和交换。通过使用应用程序接口(API)和集成工具,可以实现不同系统之间的自动化数据流动,提高工作效率和数据准确性。
自动化测试
软件可以自动执行测试用例和验证功能的正确性。自动化测试可以快速、准确地检测和报告软件中的错误和缺陷,从而提高软件的质量和稳定性。
可自动化的好处
12. 可测量性
软件的可测量性是指软件系统或软件特性可以被度量、评估或量化的能力。它强调了在软件开发和维护过程中,能够通过各种指标和工具对软件进行可量化的衡量和评估,以便了解软件的质量、性能和可靠性。
以下是一些常见的软件可测量性指标和方法:
可测量性的特点
代码覆盖率
衡量代码中被测试用例覆盖的程度,以评估测试的全面性和有效性。
缺陷密度
衡量单位代码中存在的缺陷数量,以评估代码的质量和稳定性,通常用千行代码缺陷率来展示。
响应时间
衡量系统对用户请求的响应时间,以评估系统的性能和用户体验。
可用性
衡量系统在给定时间内可用的百分比,以评估系统的可靠性和可用性。
用户满意度
通过用户反馈、调查或评级来衡量用户对软件产品的满意程度,以评估软件的质量和用户体验。
成本效益
衡量开发和维护软件所需的成本与所获得的价值之间的比例,以评估软件项目的经济效益。
可测量性的好处
可测量性在软件工程中非常重要,它可以帮助开发团队和相关利益相关者对软件进行定量分析和评估,以便做出有效的决策和改进。通过度量和评估,可以更好地了解软件的优点和不足,发现问题并采取适当的措施来提高软件的质量和性能。
通过对软件进行度量和评估,可以获得客观的数据和指标,帮助开发团队和管理者了解软件的实际情况,及时发现问题并采取措施进行改进。可测量性有助于提高软件开发的质量、效率和可维护性,从而提升用户满意度和市场竞争力。
13. 可重构性
软件的可重构性是指软件系统或软件代码在不改变其外部行为的前提下,能够以一种可控的、经济合理的方式进行修改和重构的能力。可重构性是软件质量的一个重要属性,它强调了软件系统在面对需求变化、技术进步或错误修复等情况下,能够快速、有效地进行修改和演化。
可重构性的特点
模块化设计:将软件系统划分为独立的模块,每个模块负责特定的功能或任务。这样,当需要修改或改进特定功能时,只需对相应的模块进行修改,而不会影响到整个系统。
清晰的接口定义:模块之间通过清晰的接口进行通信和交互,接口定义应该稳定和一致。这样,当需要修改某个模块时,可以保持接口不变,从而减少对其他模块的影响。
松耦合和高内聚:模块之间应该尽量减少耦合度,即模块之间的依赖关系应该尽量简单和清晰。同时,模块内部应该具有高内聚性,即模块内的功能相关性应该高,模块内部的修改不会对其他模块产生影响。
重构技术:使用重构技术可以改进软件系统的结构和设计,例如提取重复代码、简化复杂的逻辑、优化性能等。重构技术可以帮助开发人员改善代码质量,减少代码的冗余和复杂性。
自动化测试:建立全面的自动化测试套件,可以在重构过程中确保软件系统的正确性和稳定性。自动化测试可以帮助开发人员快速发现和修复引入的错误。
可重构性的好处
通过提高软件系统的可重构性,可以减少修改和改进的风险,降低维护成本,并保持软件系统的稳定性和可用性。可重构性是软件系统长期成功和可持续发展的关键因素之一。
软件产品的版本
在软件开发和管理中,版本(Version)是指软件或软件组件的特定发布或发行。每个版本都具有一个唯一的标识符,通常是一个数字、字母或数字与字母的组合,用于区分不同的软件版本。 版本控制是软件开发过程中的重要环节,它用于管理和跟踪软件的不同版本及所承载的需求。通过版本控制系统,开发团队可以记录每个版本的变更历史、修复的错误、新增的功能等信息。这样可以方便开发人员追踪和管理软件的演化过程,并确保团队成员之间的协作和代码的一致性。 通过版本控制,软件开发团队可以管理和跟踪软件的不同版本,方便发布、测试和维护。用户可以根据自己的需求选择合适的版本,并及时更新到最新版本以获得更好的功能和性能。
常见版本号
主版本号(Major Version)
表示软件的重大更新或功能改变。当软件进行了重大的架构变更或功能增强时,主版本号会递增。
样例
V1.0
V1
次版本号(Minor Version)
表示软件的较小更新或功能扩展。当软件添加了新的功能或进行了一些较小的改进时,次版本号会递增。
样例
V1.1
V1R1
修订号(Patch Version)
表示软件的错误修复或补丁更新。当软件修复了已知的错误或进行了一些小的调整时,修订号会递增。
样例
V1.1.3
V1R2C03
项目版本
指软件产品的不同发布或迭代的标识。每个项目版本代表着软件在特定时间点的状态和功能集合。项目版本也是我们常说的主干版本,发布版本
禅道内一个瀑布模型的项目对应一个项目版本
禅道内敏捷模型的项目内一个迭代对应一个项目版本
测试版本
一个项目内,不同阶段下提供给测试人员进行测试的版本
Dev
DevSmoke
QASSmoke
QAS
PRE
CSV
版本分支
版本分支是指在软件开发过程中,为了同时进行多个不同的开发任务或实现不同的功能需求,将代码库中的代码分成多个独立的分支。每个分支都是从主线(通常是稳定的主要版本)中创建的,开发人员可以在分支上进行独立的开发工作,而不会影响主线的稳定性。
版本分支的创建可以基于不同的需求,例如修复错误、添加新功能、测试实验性功能等。每个分支都有自己的代码提交历史和版本号,开发人员可以在分支上进行代码修改、测试和调试,而不会影响其他分支或主线。
版本分支的创建和管理可以通过版本控制系统来实现,例如Git。开发人员可以创建新的分支,并在不同的分支之间进行切换和合并操作,以便在不同的开发任务之间进行无缝切换和协同工作。一旦在分支上的开发工作完成并通过测试,可以将分支合并回主线,使得新的代码变化成为主线版本的一部分。
版本分支的使用可以提高团队的开发效率和灵活性,使得不同的开发任务可以并行进行,同时也可以保持主线版本的稳定性。
样例
V1.1M1
主干版本
V1.1.3T1
分支1
V1.1.3T2
分支2
V1.1.3RD03
第三批研发需求分支版本
分支合并
分支合并是指将一个或多个分支的代码变更合并到目标分支(通常是主线或其他稳定分支)的过程。这个过程可以将不同分支上的代码修改、新增或删除的内容合并到一起,以创建一个包含所有变更的新版本。
分支合并通常是在开发人员完成在特定分支上的工作并经过测试之后进行的。合并的目的是将分支上的新功能、修复或其他变更集成到目标分支中,使得目标分支具备分支上的改动。
在进行分支合并时,版本控制系统会尝试自动合并两个分支上的代码修改。如果两个分支上的修改没有冲突,合并过程将会顺利进行,合并后的代码将包含来自两个分支的变更。然而,如果两个分支上的修改存在冲突(即对同一行代码进行了不同的修改),则需要手动解决冲突,以确定最终的代码变更。
分支合并的好处是可以将不同分支上的工作整合在一起,避免代码的重复开发和维护。它还可以促进团队协作,使得不同开发人员可以独立工作并将自己的改动合并到共享代码库中。
然而,分支合并也需要谨慎处理,特别是在多人协作的项目中。合并过程中可能会出现冲突和错误,因此在进行分支合并之前,建议进行充分的测试和代码审查,以确保合并后的代码质量和稳定性。
补丁版本
补丁版本通常用于解决软件中的错误、漏洞或其他问题,并提供一些小的改进或增强。
对于补丁而言,补丁版本=测试版本
补丁版本目前定义为总工作量≤10人天的功能优化版本或解决已上线项目版本的线上缺陷的版本
软件项目
软件项目是指为了开发、交付和维护一个软件产品而进行的一系列计划、活动和任务的集合。它通常由一个团队或组织来完成,包括项目经理、开发人员、测试人员、产品设计师等。
软件项目活动
1. 需求分析
与客户和利益相关者合作,收集、分析和明确软件的需求和功能。
2. 产品定义
根据需求分析的结果,将需求集合定义为新产品或规划为已有产品的更新内容
3. 可行性研究
评估项目的可行性,包括技术可行性、经济可行性和操作可行性等方面的分析。
4. 需求立项
根据需求的范围,进行立项,启动项目工作,确认项目内涉及的产品和范围
5. 需求规划
根据需求的优先级和可行性研究结果,制定需求规划,确定项目的范围和目标。
确定了版本
6. 设计和架构
基于需求规划,进行软件的设计和架构,确定软件的整体结构和组织方式。
7. 开发和编码
根据设计和架构,进行软件的编码和开发工作,实现软件的功能和特性。
8. 测试和验证
对软件进行各种测试,包括单元测试、集成测试和系统测试等,以验证软件的正确性和稳定性。
9. 部署和交付
将软件部署到目标环境中,并交付给客户或最终用户使。
10. 维护和支持
对已交付的软件进行维护和支持工作,包括修复缺陷、提供技术支持和进行软件更新等
11. 项目管理
协调和管理项目的各项活动,包括项目计划、资源分配、进度控制和风险管理等。
这些活动通常是按照一定的顺序和依赖关系进行,但在敏捷开发等灵活的方法中,这些活动可能会以迭代和增量的方式进行,以便更好地响应需求变化和快速交付价值。
P0级项目瀑布管理方式
基本原则
P0项目集对应涵盖在该项目下的一个或多个产品的一个或多个P0级项目
P0项目集下项目,均为一个项目仅关联一个产品
由PMO进行项目集创建并关联产品和项目
一个P0级项目对应产品的一个发布版本
P0级项目均采用瀑布模型进行管理
瀑布模型定义
瀑布模型是一种传统的软件开发生命周期模型,也被称为经典生命周期模型。它是一种线性顺序模型,将软件开发过程划分为一系列有序的阶段,每个阶段都有明确的开始和结束,每个阶段的输出成果物作为下一个阶段的输入,每个阶段在前一个阶段完成后开始,并且在下一个阶段开始之前必须完成。这种顺序性和阶段划分的特点使得瀑布模型适用于一些对需求变动较少的项目。
瀑布模型阶段
1. 需求收集阶段
在这个阶段,团队与用户进行沟通和交流,以了解他们的需求和期望。用户需求被收集并记录下来。
产品设计产出MRD
MRD文档是在需求收集阶段产出的,它主要描述了产品或系统的市场需求和用户需求。MRD文档包含了对目标市场、目标用户、产品功能和特性的详细描述,以及对竞争对手和市场趋势的分析。MRD文档的目的是为了确保产品开发团队对市场需求有一个清晰的了解,以便在后续的研发过程中能够满足用户的期望。
用户需求记录入主产品的用户需求列表内
立项前工作
工时关联产品域公共项目
禅道项目内不体现
2. 产品设计阶段
在这个阶段,产品设计对收集到的用户需求进行详细的分析和澄清;编写PRD文档,并将用户需求转化为研发需求,明确需求的功能和特性。
产品设计产出PRD
PRD文档是在需求分析阶段产出的,它是根据MRD文档进一步细化和明确的产品需求文档。PRD文档详细描述了产品的功能、性能、界面、用户交互和其他技术要求。它包含了对每个功能的详细描述、用户故事、用例和非功能性需求等。PRD文档的目的是为了将用户需求转化为具体的研发需求,为研发团队提供明确的指导。
3. 需求确认阶段
在这个阶段,开发和测试团队对产品设计产出的PRD和研发需求进行评审,分析,工作量评估,确认在项目规划期内可完成落地的需求范围
明确研发需求范围
将产品内的研发需求关联入项目,明确项目范围
4. 研发设计阶段
在这个阶段,团队基于研发需求开始进行系统设计。他们确定系统的技术架构、技术模块和组件,并制定详细的技术设计规范。
产出研发设计和测试设计
确定项目开发、测试工作排期
5. 开发编码阶段
在这个阶段,团队根据设计阶段的规范开始进行软件开发。开发人员编写代码,测试人员编写自动化测试脚本,并确保软件按照规范进行开发。
开发编码
代码评审走读
代码静态扫描,白盒测试
系统内部集成
测试用例产出
白
灰
黑
自动化测试产出
理想状态
6. 冒烟测试
在这个阶段,是项目版本开发完成,由开发团队向测试团队交接的关键节点。通过开发冒烟测试完成代表开发交付完成,已达成产品设计的核心目标;通过测试冒烟测试,表示测试验证认可开发交付产品达到启动测试工作要求,产品设计的核心目标已验证达成。
开发冒烟测试
测试冒烟测试
相同冒烟用例集
100%通过率,100%执行率
7. QAS测试阶段
在这个阶段,团队对开发完成的软件进行全面的测试。他们执行功能测试、性能测试和用户验收测试,以确保软件的质量和稳定性。
2+1
一轮全量测试
一轮非异常全量测试
一轮回归测试
3+1
一轮全量测试
两轮非异常全量测试
一轮回归测试
项目版本测试报告
功能测试报告
性能测试报告
DFX测试报告
测试交付条件
遗留DI值<10
阻塞
DI=10
核心
DI=3
重要
DI=1
一般
DI=0.1
一级用例全部通过
90%通过率,100%执行率
测试报告项目组评审通过
用户验收测试Pass(按需)
用户验收测试
按需在QAS测试阶段进行或独立PRE阶段进行
产品设计团队
用户代表团队
UAT用例执行
8. 部署阶段
在这个阶段,团队将已经测试通过的软件部署到生产环境中。他们确保软件能够正常运行,并提供必要的培训和支持。
发布评审
部署上线
PRE上线
生产上线
用户培训
9. 项目收尾
项目复盘
项目内阶段顺序开展进行
10. PRE阶段
用户验收测试
产品设计队
用户代表团队
UAT用例执行
用户试用
生产上线
11. CSV阶段
CSV合规验证
用户试运行
能力优化
问题修复
持续集成
补丁版本,融合敏捷
正式商用
12. 运维阶段
在这个阶段,团队负责监控和维护已经部署的软件。他们修复可能出现的问题,并进行软件的升级和优化。
故障处理
产生延期均需按变更流程进行审批
单产品单发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分基础平台类产品
主产品对依赖产品无需求
产品仅被立项一个项目
一个项目仅做一次发布版本
限制条件
建立独立项目集
项目集及项目最长3个月
运作管理机制
参见产研测流程
单产品多发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分基础平台类产品
主产品对依赖产品无需求
产品当期版本已立项且已明确后续项目版本节奏
每个项目版本建一个独立的瀑布模型项目进行管理
限制条件
建立独立项目集,项目集最长6个月
项目集内可包含多个主产品不同版本的项目
每个项目最长3个月
运作管理机制
参见产研测流程
每个项目版本发布后,对应项目均需关闭
项目集到期后,需新立项目集和项目
多产品单发布版本
条件
P0项目下主产品关联多个支撑产品,主产品与支撑产品相互强耦合,且支撑产品与主产品打包进行版本发布上线
P0项目下包含多个产品,产品无主次之分,产品的发布版本均根据项目统一时间发布
主产品对关联产品有需求
产品仅被立项一个项目
整改项目集仅做一次发布版本,发布包含全部产品版本
限制条件
建立独立项目集
项目集下一个产品建一个项目
项目集及项目最长3个月
项目内关联主产品和支撑产品
项目管理约束
每个产品的研发节奏按自行节奏在各自项目内运作,仅版本发布由P0项目统一进行
需求管控
项目涉及产品的研发需求,均落入本项目集下各产品的项目内
阶段管控
各产品的研发阶段由各产品的项目经理自行控制
提测管控
各产品冒烟测试按产品所在项目进行,整个P0项目不统一进行冒烟管控
提测用例
各产品用例
提测冒烟版本
项目-产品-发布版本-DevSmoke
-01
-02
项目-产品-发布版本-QASSmoke
-01
-02
冒烟提测单
各产品对应提测冒烟版本
测试环境管控
集成测试环境
主产品与支撑产品统一版本,统一环境
版本发布
仅一次发布上线项目内全部产品
运作管理机制
参见产研测流程
当期项目版本发布后,对应项目及项目集需关闭
多产品多发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分支撑产品
主产品对支撑产品有需求
产品当期版本已立项且已明确后续项目版本节奏
一个项目仅做一次发布版本,发布仅包含主产品
支撑产品按自身节奏运作发版,仅保障主产品项目发版上线前所依赖能力已上线
限制条件
建立独立项目集
项目集最长6个月
项目集内可包含多个主产品不同版本的项目
每个项目最长3个月
P0项目内仅关联主产品
支撑产品以自身项目运作
项目管理约束
主产品一套阶段规范时间节点
支撑产品以自身项目运作
需求管控
项目内仅包含主产品自身研发需求
主产品对支撑产品产生的研发需求,分解在支撑产品内,仅在支撑产品自身项目内体现
阶段管控
只对主产品进度进行管控
支撑产品不在项目内管控,仅要求在主产品提测前提供所分解下来的研发需求能力
提测管控
冒烟测试按项目进行
提测用例
主产品用例
提测冒烟版本
DevSmoke
-01
-02
QASSmoke
-01
-02
冒烟提测单
对应提测冒烟版本
测试环境管控
主产品测试环境
支撑产品环境仅需保障主产品所需能力已QAS上线
运作管理机制
参见产研测流程
当期主产品项目版本发布后,对应主产品项目需关闭
主产品项目集根据主产品项目版本节奏,可创建多个主产品项目
主产品项目集到期后,需新立主产品项目集和主产品项目
非P0融合敏捷管理方式
基本原则
P1项目集对应一个主产品的一个或多个P1级项目
由PMO进行项目集创建并关联产品和项目
一个P1级项目对应主产品的多个发布版本
一个P1级项目下一个迭代对应主产品的一个发布版本
非P0级项目均采用融合敏捷模型进行管理
敏捷模型定义
行业标准定义
敏捷开发模型是一种软件开发方法论,强调在开发过程中不断迭代、快速响应变化,并与客户紧密合作。它强调团队合作、自组织、灵活性和适应性,以快速交付高质量的软件。敏捷开发模型采用迭代和增量的方式进行开发,每个迭代通常是一个固定的时间段,称为“冲刺”。在每个冲刺中,团队会开发一部分功能,并进行测试和验证。这种迭代的方式可以让团队及时获得反馈,并根据反馈进行调整和改进。 总体而言,敏捷开发模型注重灵活性、快速交付和持续改进,以满足不断变化的客户需求。它适用于需要快速响应市场变化和不确定需求的软件开发项目。
敏捷开发模型的核心原则
个体和互动胜过流程和工具
强调团队成员之间的有效沟通和合作,以及与客户的密切合作。
可工作的软件胜过详尽的文档
强调软件的实际运行和功能,而不是过多的文档。
客户合作胜过合同谈判
强调与客户的积极合作,以满足他们的需求和期望。
响应变化胜过遵循计划
强调对需求变化的灵活响应,以便及时调整开发方向和优先级。
数创定义
仅借用禅道敏捷项目外壳,进行非P0级项目快速管理,本质实行瀑布模型管理
一个融合敏捷项目可包含多个迭代
每个迭代实质是一个瀑布模型的项目版本
融合敏捷项目的迭代重点关注提测完成时间点与交付时间点
产生延期均需按变更流程进行审批
P1级项目
单产品单发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分基础平台类产品
主产品对依赖产品无需求
产品仅被立项一个融合敏捷项目
一个项目仅做一次发布版本
限制条件
建立独立项目集
项目集及项目最长3个月
运作管理机制
参见产研测流程
允许根据实际项目发展情况,在项目内创建多个项目迭代
单产品多发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分基础平台类产品
主产品对依赖产品无需求
产品当期版本已立项且已明确后续项目版本节奏
每个项目版本建一个融合敏捷项目进行管理
每一个发布项目版本建一个项目迭代进行跟踪
限制条件
建立独立项目集,项目集最长6个月
每个项目最长3个月
项目内可包含多个主产品不同版本的迭代
运作管理机制
参见产研测流程
每个迭代版本发布后,对应迭代均需关闭
项目集到期后,需新立项目集和项目
多产品单发布版本
条件
仅涉及一个主产品
关联多个支撑产品,主产品与支撑产品相互强耦合,且支撑产品与主产品打包进行版本发布上线
主产品对关联产品有需求
多产品仅被立项一个项目
一个项目仅做一次发布版本,发布包含全主产品和关联支撑产品
限制条件
建立独立项目集
项目集及项目最长3个月
项目内关联主产品和支撑产品
项目内主产品和支撑产品建立各自的迭代版本
项目集内项目为一个产品创建一个项目
项目管理约束
项目集内各产品的项目可按自身节奏开展工作,任务挂载产品对应项目的迭代版本内
需求管控
各产品涉及项目的研发需求,均落入产品对应项目
迭代管控
仅以主产品的提测完成时间节点和测试交付时间节点为强管控时间节点
支撑产品迭代版本
支撑产品工作任务在项目内自身的迭代版本内创建
支撑产品时间节点在项目内自身的迭代版本内跟踪
支撑产品提测完成时间节点应早于主产品提测启动
若支撑产品提测未通过导致主产品提测无法按期进行,则需上升PMO抉择
提测用例
支撑产品用例
提测冒烟版本
项目代码-支撑产品-迭代版本-DevSmoke
-01
-02
项目代码-支撑产品-迭代版本-QASSmoke
-01
-02
冒烟提测单
对应提测冒烟版本
主产品迭代版本
主产品的迭代版本提测通过后代表项目完全进入QAS阶段
提测用例
主产品用例
提测冒烟版本
项目-产品-迭代版本-DevSmoke
-01
-02
项目-产品-迭代版本-QASSmoke
-01
-02
冒烟提测单
对应提测冒烟版本
测试环境管控
支撑产品自身环境
主产品集成测试环境
主产品
支撑产品
版本发布
仅一次发布上线项目内全部产品迭代版本内容
运作管理机制
参见产研测流程
迭代版本发布后项目内所有主产品迭代版本相关迭代关闭
主迭代关闭后,项目内原则上仅允许后续创建工作量≤10人天的补丁版本
当期项目结束或到期后,对应项目应关闭
新需求需落地,则在项目集内新建新的版本项目
多产品多发布版本
条件
仅涉及一个主产品
主产品无强耦合其他产品,仅可依赖部分支撑产品
主产品对支撑产品有需求
产品当期版本已立项且已明确后续项目版本节奏
一个项目可见多个迭代版本,每个迭代版本仅一次发布版本,发布仅包含主产品
支撑产品按自身节奏运作发版,仅保障主产品项目发版上线前所依赖能力已上线
限制条件
建立独立项目集
项目集最长6个月
项目集内可包含多个主产品不同版本的项目
每个项目最长3个月
每个项目内可包含多个版本迭代
P1项目内仅关联主产品
支撑产品以自身项目运作
项目管理约束
主产品一套阶段规范时间节点
支撑产品以自身项目运作
需求管控
项目内仅包含主产品自身研发需求
主产品对支撑产品产生的研发需求,分解在支撑产品内,仅在支撑产品自身项目内体现
阶段管控
只对主产品进度进行管控
支撑产品不在项目内管控,仅要求在主产品提测前提供所分解下来的研发需求能力
提测管控
冒烟测试按项目进行
提测用例
主产品用例
提测冒烟版本
DevSmoke
-01
-02
QASSmoke
-01
-02
冒烟提测单
对应提测冒烟版本
测试环境管控
主产品测试环境
支撑产品环境仅需保障主产品所需能力已QAS上线
运作管理机制
参见产研测流程
当期主产品迭代版本发布后,对应主产品迭代需关闭
原则上主产品运行状态迭代最多不超过3个
不建议在项目集下建多个主产品的融合敏捷项目,但可多个瀑布项目
主产品项目集到期后,需新立主产品项目集和主产品项目
其他级别项目
按产品域或部门创建项目集
项目均为融合敏捷型
项目归属对应产品域或部门项目集下
其余要求同P1级项目