敏捷开发
快速的软件开发和交付
快速开发:描述,设计,实现过程三位一体
系统通过一系列版本开发出来
用户界面通常用Ide或图形化工具集进行开发
敏捷方法的目标:减少开发过程中繁琐多余的部分,快速响应需求的变化,避免过度返工
敏捷方法的基本原则:
客户参与:客户在开发过程中始终参与其中
增量式交付:软件以增量式开发 客户指定每个增量中包含的需求
人非过程:开发团队的技能应得到承认,团队人员无需遵循固定流程
拥抱变化:预测并设计以适应变更
保持简洁:保持软件开发简洁可用
敏捷方法优缺点:
优点:产生文档较少,开发过程产生的结果与客户对接,用户需求比较清晰
缺点:只适用于小型系统或者中型系统,大型项目不太行
文档较少的话,后面维护系统会有意想不到的困难
敏捷方法之--极限编程
极限编程xp采用一种“极限”的方式进行迭代开发:
一天之内建立多个版本
每两周向客户提交一个增量
每次发布前都进行测试,测试通过才能发布
核心价值:
沟通
简单
反馈
勇气
极限编程实践:
增量式规划
小版本发布
简单设计
测试优先开发
重构
结对编程
集体所有
持续集成
可持续节奏
在场客户
敏捷项目管理
Scrum方法:是一个通用敏捷方法,注重迭代开发管理而不是管理敏捷软件工程的专门技术方法
Scrum的三个阶段:
规划纲要阶段:建立大致项目的目标和设计软件体系结构
冲刺循环 每个循环开发出一个系统增量
项目结束阶段 整理文档
需求工程
需求的定义:系统应当提供的服务和收到约束的描述
对需求的发现,建立文档,检验的过程叫做需求工程
用户需求与系统需求
用户需求使用自然语言家图的形式给出的 简称大白话
比如:小明想要一个支付宝破解版发家致富
系统需求详细给出系统将要提供的服务以及约束
比如:小明开发支付宝破解版时候需要黑掉阿里巴巴的服务器,需要阿里巴巴服务器的某某数据
功能需求与非功能需求
功能需求:包括对系统应当提供的服务,如何对特殊输入做出反应,以及特定条件下的行为的描述
比如:我想开发一个可以提供视频的网站
非功能需求 对系统提供的服务或功能给出的约束,包括时间约束,开发过程约束,受到标准约束
比如:系统需要做出高并发以应对大量访问
过程活动
需求发现
需求分类和组织
需求优先权排序和协商
需求描述
需求发现:对准备建立的系统和正在使用的系统进行信息收集并从信息当中提取用户需求和系统需求的过程