敏捷的定义
Scrum是一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程。敏捷开发遵循软件客观规律,不断的进行迭代增量开发,最终交付符合客户价值的产品。
敏捷软件开发宣言
敏捷宣言是敏捷起源的基础,由上述4个简单的价值观组成,敏捷宣言的签署推动了敏捷运动。
敏捷宣言本质是揭示一种更好的软件开发方式,启迪人们重新思考软件开发中的价值和如何更好的工作。
敏捷更符合软件开发规律
软件更像一个活着的植物,软件开发是自底向上逐步有序的生长过程,类似于植物自然生长通过学习,应能编写简单程序。
敏捷开发遵循软件客观规律,不断的进行迭代增量开发,最终交付符合客户价值的产品。
Scrum流程
产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。
Sprint即为一个迭代周期,整个开发过程由若干个短的迭代周期组成。
Sprintbacklog为挑选最高优先级的需求进行开发,在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表。
敏捷团队的角色
敏捷团队包括3个核心角色: PO(Product Owner)、Scrum Master(Scrum教练)和Team(开发产品)。
敏捷团队的角色职责
迭代过程—需求澄清
需求澄清组织者由其中的FO(function owner)来牵头组织。
需求澄清的参与人员包括:算法设计人员,系统设计人员,开发人员,测试人员。
需求澄清的过程主要由算法设计人员和系统设计人员讲解其中需求的背景,功能要求,在产品中的实现落地。
对于交付的AR进行理解。
需求澄清后制定交付的计划时间。
迭代过程—开发人员/测试人员工作
在开发过程中,FO通过组织站会了解整个特性/需求交付进展和风险
开发人员进行相应的模块设计、代码编写和代码自测,已达到功能可用的签收标准
测试人员通过了解方案/AR要求,来设计签收的用例
在整个迭代过程中,开发人员,测试人员,设计人员对于方案进行交流和理解。
签收阶段/迭代出口
开发人员经过验证后,将负责的AR功能的代码提交到正式的版本上。
签收的过程一般以某个功能作为签收点,签收由测试人员的签收用例来保证。
签收用例一般可以分为功能的用例和性能的用例。性能方面的用例可以在之后的系统测试中进行测试。
迭代出口要求功能测试和系统测试的缺陷率满足一定要求才可以达到健康迭代。
再说持续集成(CI)
每个开发人员提交代码都需要满足编译通过,版本库上的代码上的所有的测试用例都需要保证是OK。
每个交付的功能特性,需要设计相应的测试用例,以保证后期代码变更的看护功能。
系统集成的人员每天都会进行基本的集成测试(冒烟),冒烟保证系统的基本的功能是正常的。
系统集成的人员每天都会有一个滚动的版本,以保证最新的签收验证工作。
每个人都可以往版本主干分支提交代码,但需要保证版本的质量。
产品维护
TTI跟踪这个跟踪用来记录整个功能的运行流程,是产品内部问题解决的主要工具。
Log打印日志这个主要是用来记录系统异常运行时的日志打印信息,通常分为几个等级:严重,告警,信息。
CHR这个日志系统主要是用来记录系统的一些统计变量,主要是用来对于产品内部的一些功能维护。
COUNT统计量,这个主要也是用来维护系统的一些状态统计量,对于客户是可见的。一般要求版本升级前后不要引起变化。
MR,这个主要是OMCR界面上对于某个用户的一些关键变量进行信息跟踪,采集,验证一些功能/性能问题。
附录:Huawei软件代码质量要求
编写简洁、可维护、可靠、可测试、高效和可移植代码是每一位软件开发人员的责任和目标。针对当前突出的软件腐化问题,明确软件代码的质量要求如下:
简洁:代码简洁就是易于理解并且易于实现。尽量编写少但功能完备的简洁代码,日后可以随时为额外的功能添加更多的代码。提高简洁的方法有:单一功能、强内聚且低耦合、避免函数过长、避免嵌套过深、避免重复等。
可维护:代码可维护性是软件被修改的能力,包括纠错、改进、新需求或功能规格变化的适应能力。面对进度压力开发人员容易忽略代码的可维护性。我们要谨慎的编程,使系统中每个组件尽可能地“保护”自己;同时不要做任何假想,随着代码的增长,没有记录下来的假想会不断地造成缺陷。提高可维护性的方法有:使用好的编码风格、编码清晰、降低代码复杂度、尽可能减少全局变量等。
可靠:代码可靠性是软件在给定时间间隔和环境条件下,按设计要求成功运行程序的概率。提高可靠性的方法有:使用安全的函数和数据结构、编译时打开所有的警告开关并清除所有警告、使用静态检查工具分析代码并清除所有警告、检查所有的输入、验证所有的运算、检查所有返回值、避免强制转换、避免内存越界、避免内存泄漏等。
可测试:代码可测试性是指软件发现故障并隔离、定位故障的能力,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力。提高可测试性的方法有:尽量减少依赖、保持代码可观测性、限制代码复杂度等。
高效:代码性能高效是尽可能少地占用系统资源,包括内存和执行时间。提高性能的方法有:合理利用语言特性和编译选项,例如禁用C++的RTTI,可以减少可执行文件大小;代码内嵌,可以减少方法调用的开销;将不变条件的计算移到循环体外;利用并行和线程来防止串行操作;避免或者移除过多的锁;添加缓存或者缓冲层,以加快较慢的数据访问,或防止漫长的重复计算;创建资源库,以减少分配对象的开销。
可移植:可移植性是为了在原来设计的特定环境之外运行,对系统进行修改的能力。提高可移植性的方法有:使用标准库函数,并且把它们和类似ANSI/ISO C标准中定义的头文件放在一起使用;尽可能使所写的程序适用于更多的编译环境;把不可移植的代码分离出来。
领取专属 10元无门槛券
私享最新 技术干货