1.软件过程:开发软件产品的一系列活动的集合,定义了软件开发和维护的一组有序活动集合。
怎么理解?
写不同的软件有不同的过程。自己手写一个2048小项目软件,和黑神话悟空的开发两者完全不同。
2.软件过程类型:
1)线性(linear)
2)迭代(iterative)
3)增量(incremental)
4) 并行(parallel)
3.典型的软件过程模型:
瀑布模型、原型模型、增量模型、UP模型、螺旋模型
4.瀑布模型:
步骤和第一章的软件生命周期很相似:需求分析, 软件设计 , 编码实现, 软件测试,运行维护
隐式包含两个理想化的假设:
假设一:软件开发活动完成后,经过评审或测试不会出现任何问题。
假设二:需求分析阶段就能获得关于软件系统的完整需求。
适用于需求易于定义、不易变动的软件系统开发。
带反馈的瀑布模型、V形瀑布模型,尝试解决假设一不成立的情况。
瀑布模型的缺点很明显,得到需要的软件系统的时间会很晚,实际的软件开发过程不会像瀑布模型这样的理想顺序进行。
5.原型模型:
解决瀑布模型的问题,开始给用户一个模型,解决开发者和用户需求分析不一致的问题。
比如房地产商售楼部的大楼模型。能给用户一个直观的对产品的印象。
思想:在软件开发早期(通常是需求分析阶段)根据用户的初步需求构建软件原型并将其交给用户使用。
6.增量模型:
改进式的瀑布模型,不一次性实现软件的所有功能,而是在确定好软件开发和总体设计之后,采用增量开发的模式渐进性地实现。
适用于初始需求明确,需要尽早交付满足核心需求的产品的情况,有限功能后续拓展。
优点:用户可以更早的使用软件,核心功能能更早的被调试
7.UP(unified process), 统一过程。
初始 细化 构造 发布
8.敏捷方法:主张软件开发要以代码、以人为核心,迭代、增量式地开发。
敏捷 = 理念 + 优秀实践 + 具体应用
9.极限编程(XP)
核心理念和价值观:交流、反馈、简单、勇气
重要实施原则之一:
重构(refactoring): 在不改变程序代码功能的前提下,改进代码设计和结构,使程序代码具有更高的质量。
重构方法:
1.提炼类、方法,解决重复代码、冗余代码的问题。
2.分解条件式,解决条件逻辑太过复杂的问题。
3.封装字段、隐藏方法。解决数据暴露的问题。
4.提取方法。解决方法过长的问题。
等等参见常见重构方法大汇总-优快云博客
10.测试驱动开发(TDD)
11.Scrum:一种特殊的敏捷方法。
包含三类角色。
Scrum主人(SM)
产品拥有者(PO)
开发团队