软件工程2:软件过程
一、软件过程
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,他规定了完成各项工作任务的工作步骤、运用方法的顺序、文档资料、管理措施、各个阶段的里程碑。
生命周期模型(过程模型):规定了把生命周期互粉成哪些阶段及各个阶段的执行顺序。
常见软件生命周期模型:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、统一过程及敏捷过程及极限编程。
二、常见软件的过程模型
1.典型的过程模型:
- 瀑布模型
- 快读原始开发模型
- 增量模型
- 螺旋模型
2.其他模型
- 喷泉模型
- 极限编程
- RUP
- 修造-修补模型
三、瀑布模型
在20世纪80年代之前,是唯一被广泛采用的生命周期模型,现在仍然是软件工程中应用最广泛的过程模型。
主要用于描述传统软件工程方法学的软件过程
3.1模型图
3.2基本思想
“分而治之”
3.3 特点
- 相邻阶段依赖性
- 推迟实现的观点
- 质量保证的观点(文档与评审)
3.4 优点
- 迫使开发人员采用规范的方法
- 严格规定了每阶段必须提交的文档
- 要求各阶段的产品必须经过质量验证
3.5 缺点
- 需求男开始就完全确定
- 文档驱动,风险太大
- 开发期长,一旦修改,则损失惨重
- 不支持软件复用和集成技术
3.6 适用范围
- 结构化方法,面向过程的软件开发方法
- 需求变化少
- 开发人员熟悉领域
- 低风险项目
- 使用环境稳定
瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。
四、快速原型模型
快速原型模型:快速构建起一个可在计算机上运行的原型系统,让用户适用原型并收集用户反馈意见的办法,获取用户的真实需求。
4.1模型图
4.2基本思想:
系统的需求定义贯穿于真个开发过程,逐步精确与完善
4.3与瀑布模型的比较
瀑布模型视图题词就获得了正确的产品。快速原型平凡变化然后放弃。
4.4 原型分类
1.废弃型
也称为快速建立需求规格原型RSP法
2.追加型
也称快速建立渐进原型RCP法
4.5快速原型开发过程
- 快速分析
- 构造原型
- 运行和评价原型
- 修正与改进
4.6 快速开发原型的途径
- 模拟软件系统的人机界面和人机交互方式
- 开发工作原型,实现软件系统的部分功能
- 找来正在运行的类似软件
4.7特点
- 线性开发模型(不带反馈)
- 减少开发活动的盲目性和需求不确定
- 开发的系统能满足需求,修改较小
4.8 优点
- 处理模糊需求
- 用户参与
- 快速
4.9 缺点
- 快速(弱功能)
- 资源规划和管理较为困难
- 对开发环境要求高
4.10 适用范围
- 已有产品(原型)
- 简单而熟悉的领域
- 有快速原型开发工具
- 进行产品移植或升级
用户需求不完全或不准确,有快速的原型开发工具项目投标时,可以以原型模型作为软件的开发模型,产品移植或升级或对已有产品原型进行客户化工作
4.11 软件开发的风险
产品交付给用户后用户可能不满意
到了预定的交付日期软件可能还未开发出来
实际的开发成本可能超预算
产品完成前一些关键的开发人员可能“跳槽”了
产品投入市场之前竞争对手发布了一个功能相近、价格更低的软件…
五、增量模型
软件模块化,把软件产品作为一系列增量组(构)件来设计、编码、继承和测试。
组(构)件:代码块,代码块来自多个相互作用的模块,完成特定的功能。
5.1 模型
5.2 基本思想
递增式开发,先提供基本核心功能的增量组件,创建一个具备基本功能的子系统,然后对其完善。
5.3 特点
系统模块化和组件化
5.4 优点
- 系统模块化,分批次地提交软件产品,使用户可以及时了解软件项目的进展
- 已组建为单位进行开发降低了软件开发的风险
- 开发顺序灵活
5.5 缺点
要求待开发的软件系统可以被模块化
5.6 使用范围
增量模型适用于具有以下特征的软件开发项目:
- 软件可以分批次的进行交付
- 待开发的软件系统能够被模块化
- 软件开发人员对应用领域部署需,难以一次性地进行系统开发
- 项目管理人员把握全局的水平较高
六、螺旋模型
6.1基本思想
使用原型及其他方法来尽量降低,在每个阶段之前都增加了风险分析过程的快速原型模型。
每个螺旋周期可分为4个工作步骤:制定计划、风险分析、实事工程、客户评估。
6.2 优点
- 风险驱动
- 质量保证
- 利于维护
6.3 缺点
- 风险驱动
- 对开发人员要求高
- 要求客户参与阶段评价,对用户来说比较困难,不以取得好的效果
6.4 适用范围
-
庞大、复杂、高风险的系统
-
内部开发的大规模软件项目
七、其他模型
7.1 喷泉模型
1.基本思想
软件开发过程自下而上周期的各阶段是相互重复和多次反复的,可以并行工作。
2.特点
迭代、演进、无缝
7.2 统一过程模型
1.基本思想
根据时间和RUP的核心工作划分为二维空间
7.3 构件组装模型
利用模块化思想将整个系统模块化,并在一定构建模型的支持下复用构建库中一个或多个软件构建,同组装高效率、高质量的构造软件系统。构建组装模型本质上是演化的,开发过程是迭代的。
1.优点
- 充分利用软件复用,提高了软件开发的效率
- 允许多个吸纳灌木同时开发,降低了费用,提高了可维护性,可实现分布提交软件产品。
2.缺点
- 缺乏通用的构建组装结构标准,风险较大
- 构建可重用性和系统高效性之间不易协调
- 由于过分依赖于构建,构建质量影响着最终产品的质量
7.4 快速应用开发
侧重于短开发周期增量过程模型,是批捕模型的高速变体,通过基于构件的构建方法实现快速开发。
多个团队并行开发,但启动时间又先后,县启动的团队的提交物将作为后启动团队的输入
八、软件生存周期模型的选择
- 模型因符合软件本身的性质(规模、复杂性)
- 模型应满足软件应用系统整体开发进度要求
- 模型应有可能控制并消除软件开发风险
- 模型应有可用的计算机辅助工具(如快速原型工具)的支持
- 模型应与用户和软件开发人员的知识和技能相匹配
- 模型应有利于软件开发的管理与控制
九、软件生存周期模型的剪裁
程模型,是批捕模型的高速变体,通过基于构件的构建方法实现快速开发。
多个团队并行开发,但启动时间又先后,县启动的团队的提交物将作为后启动团队的输入
八、软件生存周期模型的选择
- 模型因符合软件本身的性质(规模、复杂性)
- 模型应满足软件应用系统整体开发进度要求
- 模型应有可能控制并消除软件开发风险
- 模型应有可用的计算机辅助工具(如快速原型工具)的支持
- 模型应与用户和软件开发人员的知识和技能相匹配
- 模型应有利于软件开发的管理与控制
九、软件生存周期模型的剪裁
在一个成俗和的IT企业或软件组织内部,通常需要根据各种软件开发模型的忒安,结合本单位的开发经验和行业特点的具体实际,还需要定制适合本单位的“生存周期模型裁剪指南”,有正对性的对选定的软件开发模型中定义的生存周期,进行适当裁剪,使他完全适合于本单位的需求。所谓裁剪,就是对元模型中定义的内容进行增、改、删,去掉对本单位不适用的内容,同时进一步细化,从而构成了完全适合本单位的“软件生存周期模型裁剪指南”。该指南在软件组织内部,专门供高层经理和项目经理在软件策划中选取软件开发模型时使用。