软
件
开
发
过
程
管
理
为什么要学习?
软件(系统)开发有难度、很复杂
过程质量影响结果质量,影响成本
软件定义
软件即服务
20世纪50年代:软件 = 程序
20世纪60年代:软件 = 程序 + 文档
20世纪70年代:软件 = 程序 + 文档 + 数据
软件的特点
软件是一种逻辑实体
开发过程中没有明显的制造过程
软件是知识与智慧型产品
软件不会磨损,维护相对困难
软件开发项目组
为什么要建立项目组?
为软件开发临时成立的项目组
根据软件开发复杂程度不同,项目
组人员多少存在区别,但分工类似
软件开发需要的人员
项目经理或组长
系统分析师/设计师
软件开发工程师
软件测试员/测试师
技术协作
美工
手册编写
文档
软件开发过程
软件开发过程:是指软件开发人员用于软件
开发、软件维护以及软件相关产品(包括项
目计划、设计文档、代码、测试用例和用户
手册)的一系列的活动、方法、实践和创新
软件生命周期:软件从需求确定、设计、
开发、测试直至投入使用,并在使用中不
断地修改、增补和完善,直至被新系统替
代而停止该软件使用的全过程
可行性研究
需求分析和定义
总体设计
详细设计
编码实现
软件测试、运行、维护
得
到
软
件
设计规
格
说
明
书
得
到
软
件
需
求
规
格
说
明
书
需求分析
业务需求
来自组织或客户的总体要求,为什么开发,达到
什么目标
用户需求 来自具体用户的要求,用户能使用软件做什么
功能需求 描述要实现什么,开发人员要实现什么
非功能需求 主要指系统需求:例如性能、可靠性、安全性等
设计
基于需求分析结果,对软件的业务逻辑、
功能及实现方法等进行设计,一般分为概
要设计和详细设计,主要包括
流程设计
数据结构设计
软件体系结构设计
应用接口设计
模块设计
界面设计等
概要设计
含义
怎么做,建立系统的物理模型
描述软件的总体体系结构,即概要设计
任务与步骤
设计系统方案,确定大致
的功能模块数据库设计
模块功能分解描述-流程图
页面结构的设计
编写概要设计文档等等
详细设计
分解、细化已划分出的每个功能模块
确定具体的算法,并清晰、准确的描述
包
括数据
库
表设计
等
设计成果的描述方式
程序流程图
伪代码
形式化软件设计语言
详
细
设计
的
大
纲
根
据
概
要设
计
进
行
,
结
果
质
量
基
本
决
定
了
最
终
的
代
码
质
量
编程实现:将设计转换成计算机可读的程序或代码
测试:对设计、编程进行验证和用户需求确认的过程
黑盒测试
白盒测试
发布、使用与维护:维持软件运行,修改软件
缺陷、增强已有功能、增加新功能、升级等
做什么
,
做到什么
程
度
怎
么做
软件开发过程模型
定义
指软件开发全部过程、活动和任务的结构框架
能清晰、直观地表达软件开发全过程
明确规定了要完成的主要活动和任务,包括
需求
设计
编码
测试等阶段
有时也包括维护阶段
典型模型
瀑布模型
原型模型
快速应用开发(RAD)模型
增量模型
螺旋模型
喷泉模型
瀑布模型
各个阶段的划分完全固定,阶段之间产生大量的
文档,极大地增加了工作量
由于开发模型是线性的,用户只有等到整个过程
末期才能见到开发成果,增加了开发的风险
早期的错误可能要等到开发后期的测试阶段才能
发现,进而带来严重的后果
线
性
过
程
太
过
理
想
化
,
这
些
是
瀑
布
模
型
的
主
要
问题
改进的瀑布模型
相比瀑布模型在各阶段添加了反馈
路径,不再是线性的,含有反馈环
快速原型模型
特点
在需求定义之前,需要快速构建一个系统
根据构建系统的优缺点,用户给开发人员
提出反馈意见
根据反馈意见修改软件需求规格,以便系
统可以更正确地反映用户的需求
减少各种假设以及风险
关键点
获得一组基本需求说明后,快速实
现一个原型,满足用户基本要求
用户在试用过程中受到启发,进一
步补充和完善需求
用户与开发者加强通信与反馈,反
复评价和改进原型
螺旋模型
简介
将瀑布模型和快速原型结合起来
强调了其他模型所忽视的风险分析
特别适合于大型复杂的系统
螺旋模型沿着螺线旋转,自内向外每旋转一圈便
开发出更完善的一个新版本
螺旋模型 = 瀑布模型 + 快速原型 + **风险分析**
通常包含的工作
制定计划
确定软件目标,选定实施方案,**弄清项
目开发的限制条件**
风险分析 分析所选方案,考虑如何识别和消除风险
实施工程 实施软件开发
客户评估 评价开发,提出修正建议,进入下一阶段
强
调
开
发
方
法
、
思
路
软件开发过程与软件测试的关系
软件开发过程包含了
单元测试
综合测试
确认测试
测试的问题
测试什么
如何测试
何时测试
谁来测试
软件测试就是**产品质量测试**
软件开发过程管理
关于过程管理
从大量项目实践中归纳总结出的行之有效的过程
称为最佳实践(Best Practices)
软件过程管理就是在软件开发过程中,对最佳实
践进行有效的积累,形成可重复的软件过程,并
使最佳实践在组织范围内共享
软件过程管理可以将个人能力转变为企业的能力
主要内容
过程定义
对最佳实践进行总结,形成一套稳定的、可重复
的软件过程
过程改进
发现软件生产过程中对产品质量产生影响的问题
并对软件过程中的偏差和不足进行不断优化,提
高软件过程能力
改
进
评论0