工程项目的三个基本目标:合理的进度
、有限的经费
、必定的质量
。
对于质量目标
,提出戴明环:Plan -> Do -> Check -> Act -> Plan -> ...编程
定义:是为了得到软件产品
,在软件工具
的支持下由软件工程师
完成的一系列软件工程活动
。
主要活动有:
(1). 软件规格说明:规定软件的功能及其使用限制;
(2). 软件开发:产生知足规格说明的软件;
(3). 软件确认:经过有效性验证以保证软件可以知足客户的要求;
(4). 软件演进:为了知足客户的变动要求,软件必须在使用过程当中进行不断地改进。框架
定义:指软件产品从考虑其概念
开始,到该软件产品再也不使用
为止的整个时期,通常包括概念
阶段、分析与设计
阶段、构造
阶段、移交和运行
阶段等不一样时期。模块化
六个基本步骤:制定计划
、需求分析
、设计
、程序编码
、测试
、运行维护
。
设计:概要设计、详细设计。
测试:单元测试、组装测试。
运行维护:改正性维护、适应性维护、完善性维护。工具
软件过程模型:从一个特定角度
提出的对软件过程
的归纳描述
,是对软件开发实际过程
的抽象
,包括构成软件过程的各类活动
、软件工件
以及参与角色
等。
软件生命周期模型是一个框架
,描述从软件需求定义
直至软件经使用后废弃
为止,跨越整个生存期的软件开发、运行和维护所实施的所有过程、活动和任务,同时描述生命周期不一样阶段产生的软件工件,明确活动的执行角色等。单元测试
瀑布模型为软件开发和软件维护提供了一种有效的管理模式
,它在软件开发早期为消除非结构化软件
、下降软件复杂度
、促进软件开发工程化
方面起着显著的做用。
测试
特征:
(1). 本活动的工做对象来自于上一项活动的输出,这些输出通常是表明该阶段活动结束的里程碑式的文档
。
(2). 根据本阶段的活动规程
执行相应的任务。
(3). 产生本阶段活动相关产出—软件工件
,做为下一活动的输入。
(4). 对本阶段活动执行状况进行评审。编码
第一次是试验开发,获得试验性的原型产品
,其目标只是在于探索可行性
,弄清软件需求
;
第二次在此基础上得到较为满意的软件产品。
设计
优势:明确用户需求、提升系统质量、下降开发风险。
缺点:
(1).难于管理、结构较差、技术不成熟;
(2).可能会抛弃瀑布模型的文档控制优势;
(3).可能会致使最后的软件系统的系统结构较差 ;3d
适用范围:需求不清楚
、小型或中小型系统
、开发周期短
。code
首先对系统最核心或最清晰的需求
进行分析、设计、实现、测试并集成到系统中,再按优先级
逐步对后续的需求进行上述工做,逐步建设成一个完整系统的开发方法。结合了瀑布模型和演化模型的优势。
优势:
(1).客户能够在第一次增量后就使用到系统的核心功能,加强了客户使用系统的信心;
(2).项目整体失败的风险较低,由于核心功能先开发出来,即便某一次增量失败,核心功能的产品客户仍然可使用。
(3).因为增量是按照从高到低的优先级肯定的,最高优先级的功能获得最屡次的测试,保障了系统重要功能部分的可靠性。
(4).全部增量都是在同一个体系结构指导下进行集成的,提升了系统的稳定性和可维护性。
缺点:
(1).增量粒度难以选择;
(2).肯定全部的基本业务服务比较困难。
也称迭代模型,认为软件开发过程的各个阶段是相互重叠
和屡次反复
的,就象喷泉同样,水喷上去又能够落下来,既能够落在中间,又能够落到底部。各个开发阶段没有特定的次序要求
,彻底能够并行
进行。
优势:提升开发效率
、缩短开发周期
。
缺点:难于管理
。
将测试活动提早,使得瀑布模型可以驾驭风险。
主要针对大型软件项目
的开发周期长
、风险高
的特色。
四个象限:制定计划
、风险分析
、实施工程
、客户评价
。
原型:模拟某种最终产品的原始模型。
原型方法:在得到一组基本需求
后,经过快速分析
构造出一个小型的软件系统原型
,知足用户的基本要求。用户经过使用原型系统,提出修改意见
,从而减小用户与开发人员对系统需求的误解,使需求尽量准确。主要用于明确需求
,但也能够用于软件开发的其余阶段。
种类:
(1). 废弃策略(探索型、实验型)
(2). 追加策略(进化型)
适用局限性:
(1). 大型系统
(2). 大量运算、逻辑性较强的程序模块
(3). 原有应用的业务流程、信息流程混乱的状况
存在的问题:
(1). 文档容易被忽略
(2). 创建原型的许多工做会被浪费
(3). 项目难以规划和管理
定义:一种软件工程过程框架
,是一个基于面向对象
的程序开发方法论
。
敏捷模型:是概括总结出来的一些敏捷建模价值观
、原则
和实践
等组成的,它是快速软件开发
的一种思想表明。
四个顺序阶段:初始阶段
、细化阶段
、构造阶段
、交付阶段
。
每一个阶段结束于一个主要的里程碑
,并在阶段结尾执行一次评估以肯定这个阶段的目标是否已经知足。若是评估结果使人满意的话,能够容许项目进入下一个阶段。
目标:经过业务场景
了解业务并肯定项目的边界
。包括项目的验收规范、风险评估、所需资源估计、阶段计划等。
要肯定项目边界,需识别全部与系统交互的外部实体
,主要包括识别外部角色
、识别
全部用例并详细描述
一些重要的用例。
里程碑:软件目标里程碑
。包括一些重要的文档(远景。用例模型、风险评估等)。
目标:分析问题领域
,创建适合需求的软件体系结构基础
,编制项目计划
,完成项目中技术要求高、风险大的关键需求
的开发。
里程碑:体系结构里程碑
。包括一些重要的文档(风险分析。软件体系结构基线等)。
目标:将全部剩余的技术构件
和稳定业务需求功能
开发出来,并集成为产品,全部功能被详细测试。
里程碑:运行能力里程碑
。包括可运行的软件产品
、用户手册
等。
重点:确保软件对最终用户是可用的。
能够跨越几回迭代,包括为发布作准备的产品测试,基于用户反馈的少许调整。
里程碑:产品发布里程碑
。要肯定最终目标是否实现。
RUP的特色:以用例
为驱动,软件体系结构
为核心,应用迭代及增量
的新型软件生命周期模型。
核心活动:
6个核心过程工做流:业务建模、需求、分析和设计、实现、测试、部署。
3个核心支持工做流:配置和变动管理、项目管理、环境。
最佳实践,适应性开发:小步骤
、快速反馈
和调整
。
XP是一种轻量级
的软件开发方法,是一种以实践
为基础的软件工程过程和思想。
它使用快速的反馈,大量而迅速的交流,通过保证的测试来最大限度的知足用户的需求。
XP强调用户满意
,开发人员能够对需求的变化
做出快速的反应
。
利用模块化思想将整个系统模块化
,并在必定构件模型
的支持下复用构件库中软件构件,经过组装高效率、高质量地构造软件系统。构件组装模型本质上是演化的
,开发过程是迭代的
。
优势:
(1). 充分利用软件复用,提升了软件开发的效率
。
(2). 容许多个项目同时开发
,下降了费用,提升了可维护性,可实现分步提交软件产品。
缺点:
(1). 缺少通用的构件组装结构标准
,风险
较大;
(2). 构件可重用性
和系统高效性
之间不易协调
;
(3). 因为过度依赖于构件
,构件质量影响着最终产品的质量
。
是一个增量型的软件开发过程模型,强调极短的开发周期
。
缺点:
(1). 并不是全部应用
都适合采用RAD
(2). 因为时间约束,开发人员和客户必须在较短的时间
内完成一系列的需求分析,沟通配合不当都会致使应用RAD模型的失败
(3). RAD适合于管理信息系统的开发
,对于其余类型的应用系统,如技术风险较高、与外围系统的互操做性较高等,不太合适