软件开发生命周期程序员
SDLC--Software Development Life Cycle.编程
传统的软件开发生命周期有:工具
瀑布模型:顺序进行,只有完成上一个阶段才能开启下一个阶段,将软件生命周期分为:制定计划、需求分析、软件设计、编写程序、软件测试及运行维护六个基本活动。优势是为项目提供了按阶段划分的检查点及关注点,必须为其提供模板来使分析、设计、编码、测试、支持有一个共同的指导。缺点是各个阶段划分固定,其间产生大量文档,极大地增长了工做量,用户只有等到整个过程的末期才能看到开发成果,增长了开发风险,不适应用户需求的变化。
原型模型:创建样品,逐步求精,又称为样品模型,借用已有系统或构建样品做为原型模型,经过对样品的改进知足客户的需求。其优势是可让开发和用户在原型上达成一致,减小设计中的错误和开发中的风险,缩短开发周期,下降成本。缺点是客户与开发者对原型的理解有差别不适合准确的原型设计,也限制了开发人员的创新。
螺旋模型:通常系统级应用使用螺旋模型,其引入了风险分析。它是一种演化软件开发过程模型,兼顾了原型模型的迭代和瀑布模型的系统化及严格监控。优势是设计上的灵活性更易于适应客户的需求变化,客户有效的交互保证了项目的正确方向及可控性。缺点是须要具有至关丰富的风险评估经验及专门的知识,而过多的迭代会增长开发成本,延迟交付时间。单元测试
敏捷开发测试
敏捷开发以用户的需求进化为核心,持续迭代的方式进行开发。软件项目在构建初期切分红多个子项目,各个子项目的成果通过测试均具有可视、可集成和可运行使用的特征。敏捷的目标是提升开发效率和响应能力。编码
敏捷开发模型:设计
敏捷宣言:3d
个体交互高于流程和工具
可工做软件高于理解文档
客户协做高于合同协商
响应变化高于遵循计划blog
敏捷原则: 生命周期
经过早期和连续型的高价值工做交付知足“客户”。
大工做分红能够迅速完成的较小组成部门。
识别最好的工做是从自我组织的团队中出现的,
为积极员工提供他们须要的环境和支持,并相信他们能够完成工做。
建立能够改善可持续工做的流程。
维持完整工做的不变的步调。
欢迎改变的需求,即时是在项目后期。
在项目期间天天与项目团队和业务全部者开会。
在按期修正期,让团队反映如何能高效,而后进行相应地行为调整。
经过完车的工做量计量工做进度。
不断地追求完善。
利用调整得到竞争优点。
敏捷名词一览:
Scrum: 橄榄球运动的一个专业术语,表示"争球"的动做,把一个开发流程的名字取名为Scrum,意味着你们要像打橄榄球同样迅速、富有战斗激情、高效的工做。
Scrum Team: 开发团队,主要负责软件产品在Scrum规定流程下进行开发工做,人数控制在5~10人左右,每一个成员可能负责不一样的技术方面,但要求每一个成员必须有很强的自我管理能力,同时具备必定的表达能力,成员能够采用任何工做方式,只要能达到Sprint目标。
Product Owner: 产品负责人,主要负责肯定产品的功能和达到要求的标准,指定软件的发布日期和交付的内容,同时有权力接受或拒绝开发团队的工做成果
Scrum Master: 流程管理员,主要负责整个Scrum流程在项目中的顺利实施和进行,以及清除挡在客户和开发之间的沟通障碍,使得客户能够直接驱动开发
Sprint burn-down chart:Sprint燃尽图,它显示了Sprint中累积剩余的工做量,它是一个反映工做量完成情况的趋势图。
Product backlog list:产品待办列表,指一个产品或项目指望的、排列好优先级的功能列表。
Sprint backlog list:Sprint待办列表,Sprint任务清单,从Product backlog list中拉取出来的一部分。
Sprint:短距离赛跑的意思,这里指一次迭代,周期为2周到1个月时间,即,咱们把一次迭代的开发内容以最快的速度完成的过程称为Sprint。
User story:用户故事,从用户的角度来描述用户渴望获得的功能。
敏捷实践
TDD--测试驱动开发:Test Drive Development,即从测试的角度来检验整个项目。其原理是在开发功能代码以前,先编写单元测试用例代码,测试代码肯定须要编写什么产品代码。其基本思路是经过测试来推进整个开发的进行,它是将需求分析、设计、质量控制量化的过程。TDD过程:明确须要完成的功能,针对该功能编写测试用例,编译不经过的测试代码,编写相应的功能代码,执行测试代码直到测试经过,对代码进行重构并保证测试经过,循环完成全部功能的开发。即 不可运行---可运行---重构。TDD原则:独立测试、测试列表、测试驱动、先写断言、可测试性、及时重构、小步前进。
BDD--行为驱动开发:Behavior Drive Development, 是对TDD的一种补充,或者说是TDD的一个分支,与测试概念相比,行为是一种更天然的开发驱动因素,考虑行为会天然而然地促使你先编写规范类,成为一个很是有效的实现驱动因素。测试驱动开发让咱们明白测试先行的道理,可是并无明确告诉咱们测试什么,你写出一个测试,但它们不会告诉你应该发生什么也不会告诉你实际预期是什么,它不清楚需求究竟是什么。而行为驱动开发旨在帮助开发人员肯定应该测试什么。并且行为驱动开发提供了一种通用语言来避免客户与开发之间的不一致,从而实现设计与测试相结合来开发产品。
结对编程:两个程序员在一个计算机上共同工做,一我的输入代码,另外一我的审查他输入的每一行代码。优势是程序员互帮互助,能够获得能力上的互补且让编程环境有效贯彻设计及加强代码和产品质量,并有效减小bug,在编程中互相讨论可能更快更有效地解决问题。缺点也很明显,编程人员习惯不一样引发的麻烦,或对一个问题争吵不休,若交谈内容与工做无关,反而分散注意力致使效率低下等等。
代码重构:对软件代码作任何更动以增长可读性或简化结构而不影响输出结果。重构的目的是:持续性改进设计,帮助发现隐藏的代码缺陷,提升编程效率。通常重构方法有:封装成员变量,提取方法,通常化类型,方法重命名等。