`
coolerbaosi
  • 浏览: 730869 次
文章分类
社区版块
存档分类
最新评论

现代软件过程概述

 
阅读更多

作者:徐建祥(netpirate@gmail.com

时间:2006/09/22

来自:http://www.anymobile.org

1、软件过程

随着软件系统的规模和复杂性的增加,其开发成本和风险随之增加,软件的质量问题已成为制约软件发展的关键因素之一。

所谓软件过程,即软件项目的开发过程,是指软件生命周期中,用于开发和维护软件产品的一系列过程,它与团队的组织管理以及开发技能相辅相成,全面提升软件产品的质量。

近年来,软件过程日益得到重视,国际软件界的敏捷、统一热也在持续升温。与传统的开发过程相比,敏捷过程更强调快速灵活反应,主动迎接和适应变化,主张更紧密的客户与开发商协作,以人为本的可持续发展,典型的有XP(极限编程)、FDD(特征驱动开发)等;统一软件过程以RUP为代表,采用OO技术对软件开发过程本身进行业务建模,集成了迭代开发、用例驱动、UML可视化建模、OOAD、架构设计、项目管理等许多主流先进的当代软件工艺。

在软件项目开发过程中,应该能够识别、分析不同软件项目的特点,采用相对适合的开发实践来适应软件开发过程,保证对软件开发的有效支持,如RUPXP的融合。

2、XP,极限编程

极限编程(eXtreme PropgrammingXP)是由Kent Beck1996年开创,是一种演进式的原型化方法,以最大化发挥人的能量为核心目标,以“小步快走”的逻辑指导开发,具有沟通高效、设计简单、反馈迅速等特点,是一种轻量级、敏捷的过程方法。

极限编程基于四个价值目标:沟通(communication)、简化(simplicity)、反馈(feedback)和勇气(courage),由12个最佳实践为这四个价值提供支持。

极限编程的生命周期包括4个基本活动:编码(coding)、测试(testing)、聆听(listening)、设计(designing)

2.14个价值目标

沟通:让开发人员集体负责所有代码并结队工作,鼓励与客户及团队内部保持沟通。

简化:鼓励只开发当前的功能,避免过多的文档,专注于最小化解决方案,做好为为新特性改变设计,在系统隐喻和代码规范下不断重构的准备。

反馈:通过单元测试和功能测试获得快速反馈。

勇气:提倡积极面对现实和处理问题的勇气,拥抱变化。

2.212个最佳实践


(图片1 XP最佳实践)

有计划的开发:通过结合使用优先级“故事”和技术估算,确定下一版本的功能。

小型发布:以小的增量版本经常向客户发布软件。

系统隐喻:隐喻是一个高层次的系统构想;需要不断的细化架构,来指导全部开发。

简单设计:通过保持代码简单从而保证设计简单。不断的在代码中寻找复杂点并且立刻进行移除。

测试驱动:“先测试,后编码”。用户编写测试内容以对"故事"进行测试。程序员编写测试内容来发现代码中的任何问题。在编写代码前先编写测试内容。

重构:这是一项简化技术,用来移除代码中的重复内容和复杂之处。

结对编程:团队中的两个成员使用同一台计算机开发所有的代码。一个人编写代码或者驱动,另一个人同时审查代码的正确性和可理解性。

集体代码所有权:任何人都拥有所有的代码。提高代码透明度,增强团队合作精神。

持续集成:每天按任务多次创建和集成系统,随着需求变化,进行不断的回归测试。

每周40小时工作制:程序员在疲劳时无法保证最高效率。连续两周加班是绝对不允许的,否则会影响工作效率。

现场客户:至少有一名真实的客户全天候工作于开发环境中,帮助定义系统、编写测试内容并回答问题。

编码规范:程序员采用统一的编码规范。

总体来说,XP部分满足了CMM2~3级关键过程域(KPA)的要求,XP侧重与过程和技术,CMM更注重组织和管理。

3、FDD,特征驱动开发

特征驱动开发(Feature Drive DevelopFDD),Together创始人Peter Coad所创。通过特征来制定开发计划,以每日构建为核心,强调按特征分步开发和交付。一个特征就是一个小的、具有客户价值的功能,通常表示为<action><result><object>

4、RUPRational统一过程

迭代软件开发的发展背景:软件的不确定和高风险等特性,使得传统的瀑布式开发力不从心;迭代有助于尽快发现和解决风险;迭代有助于控制项目的节奏,加快反馈,增强项目的控制力度,实现过程的有序化;迭代符合人们对事物的认识逐步加深,解决问题的能力随经验逐步提高。

Rational统一过程(Rational Unified ProcessRUP),是用例驱动、以体系结构为中心,迭代、增量的软件开发过程。适合大、中型项目。

RUP强调采用现代软件开发的一些最佳实践,作为一种降低开发新软件所带来的内在风险的方式。这些最佳实践包括:

1)迭代开发;

2)管理需求;

3)使用基于组件的构架;

4)可视建模;

5)持续的质量验证;

6)控制变更。

RUP是一个迭代过程,确定了任何软件开发项目的四个阶段:初始阶段、精化阶段、构建阶段和交付阶段。每个阶段包括一次或多次迭代;每一次迭代都会生成更加接近最终产品的可执行版本。

a、初始阶段:识别和规避项目的主要风险,建立用例模型框架,并制定里程碑日期的阶段计划;

b、精化阶段:分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素,完成部分优先级最高的用例开发;

c、构建阶段:分为多个迭代,逐步完成不同优先级的用例开发,核心Case->高风险Case->次核心Case->其它Case

d、交付阶段:进行各种功能、性能测试,进行产品化、部署,完成整个系统的开发工作。

(图片2 RUP概述图)

RUP迭代开发过程

a、第一次迭代

1)捕获需求

2) 建立初始的领域模型

3)建立用例模型框架

4)制定开发计划

b、第二次迭代

1)关键用例的Robustness分析与交互建模

2)体系结构设计

3)建立类模型

4)关键用例的开发与测试

5)完善用例模型

c、第n次迭代

完成所有用例的分析、设计与开发。

d、最后的迭代

1)整体测试:进行各种功能、性能和压力测试。

2)部署与安装:生成相应的部署图。

3)产品化:进行一些产品化的包装。

注:每一次迭代之后,都应该交付一个可以运行的中间版本。

(图片3 RUP迭代流)

5、SPP,精简并行过程

精简并行过程(Simplified Parallel ProcessSPP),对CMMI 3级以内各过程域的内容和要求作了“精简”处理,包括19个过程域、40余个规程和近60个文档模板。强调在产品生命周期之内,项目管理过程、项目研发过程和机构支撑过程“并行”开展。

(图片4 SPP)

软件过程改进解决方案(SPIS)――林锐发明。

核心组成部分

1)软件过程改进咨询服务;

2)软件工程与项目管理培训;

3)基于Web的集成化项目管理工具,Future

Future采用CMMISPP为参考标准。主要功能包括项目规划、项目监控、质量管理、配置管理、需求管理、日常工作管理等。

网站:http://www.chinaspis.com

分享到:
评论

相关推荐

    软件测试技术整体实施过程概述

    技术1、软件测试概述与... 随着软件规模的增大,软件的复杂程度也越来越大,与其他系统的接口不断增多应用越来越广泛,集成度越来越高,这使得没有现代软件开发经验的人很难理解它。为了尽可能地减少错误,软件测试这

    [详细完整版]软件工程.pdf

    1. 软件工程学的概述: 为了更有效的开发与维护软件,软件工作者在20世纪60年 代后期 开始认为研究消除软件危机的途径,从而组 建形成了一门新兴的工程学科——计算机软 件工程学。 2. 软件危机的介绍: 软件危机是...

    非常实用的软件测试综合资料库

    图形用户界面(GUI),客户/服务器结构,分布式应用,数据通信,超大型关系型数据库以及庞大的系统规模,使得软件及系统的复杂性呈指数增长,没有现代软件开发经验的人很难理解它。 ③、程序设计错误 向所有的人一样...

    软件工程作业62336.doc

    答:软件危机指的是软件开发和维护过程中遇到的一系列严重问题。软件危机包含下述两 方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀 的已有软件. 软件危机主要有下列表现: 产品不...

    软件工程知识点

    瀑布模型诞生于20世纪70年代,是最经典的并获得最广泛应用的软件过程模型。瀑布模型中的“瀑布”是对这个模型的形象表达,即山顶倾泻下来的水,自顶向下、逐层细化。 (1)特点:线性化模型、阶段具有里程碑特征、...

    《软件工程导论》张海潘_第五版_清华_课后答案

    1.4 软件过程14 1.4.1 瀑布模型15 1.4.2 快速原型模型16 1.4.3 增量模型17 1.4.4 螺旋模型19 1.4.5 喷泉模型21 1.4.6 Rational统一过程22 1.4.7 敏捷过程与极限编程25 1.4.8 微软过程29 1.5 小结31 习题132 第2章 ...

    《软件工程课程设计》报告

    本篇论文编写写的目的是为了说明系统需求概述、设计概要情况和设计思路,为系统后期维护基础,同时作为开发人员在系统分析设计阶段的工作成果和本阶段的结束标志。使用户和软件开发者,对系统的设计有一个全面的认识...

    学籍管理系统软件设计说明书

    为了适应现代社会人们高度强烈的时间观念,学籍管理系统软件为教学办公室带来了极大的方便。该软件是以汉语编程语言为实现语言,其功能在系统内部有源代码直接完成。通过操作手册,使用者可以了解本软件的基本工作...

    IBM Rational ClearCase 部署指南

    随着时间的推移,可视化设计与软件配置管理(SCM)已经逐渐成为现代软件项目成功的关键因素。IBM Rational 是 IBM Rational XDE 和 IBM Rational ClearCase 的供应商,它们分别是在可视化设计与软件配置管理方面的...

    人工智能概述:1.人工智能的基本概念 2.智能的特征人工智能的定义 3.人工智能的发展经历三次繁荣期、两次寒冬 …………

    智能是中枢神经系统的信号加工过程及其产物;从 心理角度看,智能是智力和能力的总称,其中,智 力侧重于认知,能力侧重于活动。 3.人工智能的发展经历三次繁荣期、两次寒冬。主要有三大流派:真正奠定现代计算机...

    架构之美精选版

    世界顶级软件专家揭秘软件设计之美,《架构之美》 pdf中文精选版将带你了解架构概述、两个系统的故事:现代软件神话、伸缩性架构设计、数据增长、Facebook平台的架构、支付宝架构师:如何看到一滴水的美丽。...

    软件工程需求文档

    2. 任务概述 ......................................................................................................................... 5 2.1. 目标.........................................................

    虚拟雕塑软件JDVirs 1.0帮助文件

    第一章 概述部分,简单介绍了虚拟浮雕软件,并讲解了软件中的基本概念,包括矩形网格、层模型、操作模式、高斯分布、限高保低、刷子、拼合方式等概念。 第二章 介绍了模型工具的使用方法,包括新建模型、位图转浮雕...

    数据库基础与管理信息系统概述.doc

    第1章 数据库基础与管理信息系统概述 数据库广泛地应用于各企业组织和政府机构,与人们的日常生活息息相关。在现代信 息社会中,将有更高比例的人力物力投入信息产业。数据是信息产业的原料,数据需要 经过组织和...

    现代统计学与SAS应用

     第1篇 统计学基础知识与SAS软件应用技巧 第1章 绪论  第1节 统计学的理论基础和研究对象  第2节 统计学的任务和作用  第3节 统计学的主要内容  第4节 学习统计方法的捷径  第5节 统计资料的...

    计算机软件开发信息管理系统的设计与应用研究.docx

    1信息管理系统概述 1.1信息管理的概念和意义 计算机软件开发信息管理系统的设计与应用研究全文共7页,当前为第2页。计算机软件开发信息管理系统的设计与应用研究全文共7页,当前为第2页。 计算机软件开发信息管理...

    JAVA在计算机软件开发中的应用研究.pdf

    随着我国科学技术的不断创新与发展,java编程语言的应用率越来越高,其在实际应用过程中能够更好地适应现代网络环境,具有一定的安全稳定性,能够保证计算机软件开发的质量。本文首先介绍了java编程语言的理论基础,并...

    超市管理系统-需求规格说明书.doc

    是为使用户、软件开发者及分析人员对该软件的初始规定有一个共同的理解,它说明了本产品的各项功能需求、性能需求和数据要求,明确标识各功能的实现过程,阐述实用背景及范围,提供客户解决问题或达到目标所需的条件...

    豪车销售管理系统需求说明书.doc

    是为使用户、软件开发者及分析人员对该软件的初始规定有一个共同的理解,它说明了本产品的各项功能需求、性能需求和数据要求,明确标识各功能的实现过程,阐述实用背景及范围,提供客户解决问题或达到目标所需的条件...

    计算机信息技术对会计信息的影响.docx

    传统的会计工作利用现代计算机信息技术,并通过网络传输系统,计算机财务软件系统,建立财务系统软件,并利用软件将财务信息收集、整合,整个过程就是计算机信息技术和财务工作的高度结合。使财务信息的处理自动化,...

Global site tag (gtag.js) - Google Analytics