软件开发
软件
能够完成预定功能和性能的可执行的计算机程序,支持程序正常运行的数据,以及描述程序的操作和使用的文档
软件工程
将系统的,严格约束的,可量化的方法应用于软件的开发,运行和维护。
将工程化应用于软件
软件开发生命周期
确定问题
可行性分析
系统分析
编码
测试
安装,维护
软件开发模式
瀑布模式
螺旋模式
快速原型模式
喷泉模式
混合模式
敏捷开发模式
-
瀑布模式
重视各个阶段的顺序性
当一个阶段的文档获得认可才进入下一阶段。
-
螺旋模式
设计,执行并测试原型
再设计,执行并测试新特征
将原型逐步扩展为最终程序 体育竞技分析
本质:模拟一场比赛simOneGame()
原型
假设每个球员都有机会在50对50的概率下赢得有一分
打了30 会合
谁会得分或改变球权
原型的例子
import random
def simOneGame():
scoreA = 0
scoreB = 0
serving = 'A'
for i in range(30):
if serving == 'A':
if random.random() < 0.5:
scoreA = scoreA + 1
else:
serving = 'B'
else:
if random.random() < 0.5:
scoreB = scoreB + 1
else:
serving = 'A'
print(scoreA)
print(scoreB)
simOneGame()
阶段一:构建最初的原型
阶段二:添加两个参数代表两个球员赢球的概率
阶段三:进行比赛,直到一个球员达到15分
阶段四:将比赛扩展为多场比赛
阶段五:建立完整的程序
敏捷开发
以人为核心,迭代。循环渐进
针对传统的瀑布开发模式的弊端
分为多个相互联系,独立运行的小项目
软件一直处于可使用状态
- 敏捷开发更符合软件开发的规律
软件---植物
自底向下
逐步有序
遵循软件客观规律
迭代增量开发
- 开发效率更高
在传统方式中
管理者“控制”团队
团队成员被动的等待指令,独立工作,协作少
在敏捷开发方式中
管理者“激发”团队
团队成员共同参与
- 轻量级软件开发方法
Scrum
极限编程(XP)
精益开发(Lean Development)
动态系统开发方法(DSDM)
特征驱动开发(Feature Driver develpment)
水晶开发(Cristal Clear)
- Scrum
一个开发过程
几种角色
产品负责人
流程管理员
开发团队
一套规范的实施方法
- 敏捷开发典型过程
1.对成品形成共识
2.建立和维护产品需求列表,并进行优先级排序
3.筛选高优先级需求进入本轮迭代开发
4.细节本轮迭代需求,一次在本轮迭代完成
5.每日召开站立会议
- 任务看板
任务未完成
任务正在做
任务已完成
6.对每轮迭代交付的可工作软件,进行现验场收和反馈
7.从第3步开始,开始下一轮迭代