软件工程学之软件过程
--------软件过程及过程模型
作者:Make 发表时间:2005-06-27
导读
1.概述
2.软件工程再定义
3.软件工程与软件过程
4.软件过程模型
5.过程模型关系图示
一、概述
软件过程-我很喜欢的解释就是软件从最初想法到使用灭亡的一个过程。那么很自然人们就会想到,软件过程是就是软件工程呢?答案是:不是,完成不是。下面就是笔者讲述软件过程的及软件工程的一些理论。
二、软件工程的再定义
1、为什么使用软件工程学来开发软件的再定义:使用软件工程来开发软件
的一个根源是什么呢?是为了提高软件产品的质量,因为要求质量的保
证所以采用工程学方法来开发软件。
2.软件工程再定义:在《使用软件工程学来开发软件》一文中,曾经定义过
软件工程是:使用工程学来开发软件,工程学向来包括一个过程,一组方
法和一系列的工具,我们称之为软件工程。现在我们仍然是这个概念,那
么到底软件工程学怎么去组织产品开发的呢?
3、软件工程是一种层次化的技术:过程是软件工程的根基,它定义一组关
键的过程区域。方法,定义“如何做”,它贯穿了过程中每一个步骤,
提供解决方案。工具,是用于是支持过程和方法自动和半自动化的工
作,它同样贯穿过程中每一个步骤。
4.软件工程的一般视图
(1)工程是对技术(或社会)实体的分析、设计、建造、验证和管理。
(2)工程学是如何创建实体的?
<1>要解决的问题是什么?
<2>要用于解决该问题的实体具有什么特点?
<3>如何实现该实体(解决方案)?
<4>如何建造该实体?
<5>采用什么方法去发现该实体设计和建造过程中产生的错误?
(3)软件工程的一般视图:分为三个阶段,<1>定义阶段:解决“做什么”?<2>开发阶段:解决”如何做”?<3>维护阶段:解决“改变”,一般包括“纠错”,“适应”,“修改”,“增强”四种?
(4)其它的视图,下面是补充的视图,也应该附加到软件工程:
·软件项目追踪和控制。
·正式的技术复审。
·软件质量保证。
·软件配置管理。
·文档的准备和产生。
·可复用管理。
·测试。
·风险管理
5.软件工程学理论图示:
三.软件工程与软件过程
三.软件工程与软件过程
三.软件工程与软件过程
三.软件工程与软件过程
三.软件工程与软件过程
通过上面的说明,我们可以完全清楚软件过程只是软件工程中的一个层级,也是软件工程中重要的一层级,是软件工程的根基.软件工程与软件过程是包括与被包括的关系.
四.软件过程模型
1.为了解决产业环境中的实际问题,必须综合出一个开发策略,该策略能够
覆盖过程、方法和工具三个层次和(二2(3)所述的)软件开发的一般阶
段。这个策略常常被称为过程模型或软件工程范型。下面讨论各种软件范
型,每种范型都有各自的优点和缺点,也有各自己的使用场合。
2.所有软件开发都可看成是一个问题循环解决过程,其中包含四个截然不同
的阶段:状态描述,问题定义,技术开发和方案综述。状态描述“表示了事
物的当前状态”;问题定义标识了要解决的特定问题;技术开发通过应用某
些技术来解决问题;方案综述提交结果(如文档、程序、数据、新的商业功
能、新产品)给那些从一开始就需要方案的人。[注意:这四个阶段可以贯
穿过程中每一个开发的阶段]
3.各种模型的描述
(1)线性顺序模型:也称为传统生命周期(或瀑布模型),它定义软件开
发如流水线一样,它包括如下阶段:分析、设计、编码、测试、维
护。
<1>特点:产品开发是成线性型的,虽然有迭代,但这种迭代是不明显
的,也不清楚的,而且用户一定要等到产品开发完成才可以看
到软件。
<2>优点:提供一套开发的模板,也是老牌的开发过程模型。
<3>缺点:首先,需求的变更时,软件变更困难;其次,用户不能跟进项
目,只有等;再其次,软件开发人员的浪费,因为整个组的人
员必须等到上面的阶段完成才可以进行下阶段的工作。
<4>实用环境:所有的环境都适应,但它多用于传统开发中,但软件模型的
使用不是一定的,因些大型项目开发一般也遵守它的模板,
并配合其它的模型开发。
(2)原型模型:先和用户一起,以快速的方法开发出一个模拟系统(也称为
抛弃型系统),这样让客户和软件开发人员一起来评估软
件,以获取总体的一些需求和软件未来的蓝图。
<1>特点:它由用户参与并快速开发出一个用于评估和获取需求的系统作
为根基的,而且他所有的过程是采用迭代方式来开发的,因此
需求的完整性会很强,而且也适合用户的习惯。
<2>优点:系统开发真正的开发出来后,用户非常满意。
<3>缺点:首先,原型应该是抛弃的,但大部分人不会这么做,那么这个
系统就会导致的一些不必要的缺点出现;其次,原型是采用快
速开发方法开发出来的,所以没考虑到各种系统的稳定和优化
性,但如果系统不抛弃,那么真正的系统可能采用原来低效的
东西,因此系统也会低效出现在用户面前。
<4>实用环境:主要是研发全新的产品时最实用。
(3)RAD模型:一种“线性顺序模型”的变种。采用软件复用技术开发,主要
是能在短时间内开发出软件产品,它包括如下几个过程:业务
建模,数据建模,处理模型,应用生成,测试及反复。
<1>特点:节省时间
<2>优点:采用原有的组件,能快速开发出应用,一般用于信息化系统的
开发,如企业管理系统等。
<3>缺点:软件的伸缩性受到很大的限制,而且性能调整及架构调整不方
便,要去更改原来的接口。
<4>实用环境:要求快速开发出软件产品的环境。
(4)演化软件过程模型:采用演化的概念,使软件一步步完善的一种开发模
型,跟线性顺序模型相比完全是不同的一种开发方
法,采用的思想就是迭代的开发。它包括增量开发
模型、螺旋开发模型、构件组装模型和并发开发模
型四种。下面分别介绍:
{1}增量开发模型:一种结合线性顺序模型基本成分和原型开发模型迭代特
征的一种模型,它采用增量式的开发,每次发布一个增
强功能的版本,而且是可评估的产品。
<1>特点:首先开发出核的框架,每次可以少量或大量在上面增加功能。
<2>优点:可以在人少时开发项目,当人员增加时又可扩展,是一种很好
的开发模型。
<3>缺点:
<4>实用环境:面向对象的项目开发。
{2}螺旋开发模型:将原型化模型的迭代特征和线性模型中控制的和系统化
的方面结合起来的一种模型,它包括下面六大任务区
域:1、用户通信——建立开发者和用户之间有效通信
所需要的任务。2、计划——定义资源、进度及其他相
关项目信息所需要的任务。3、风险分析——评估技术
的及管理的风险所需要的任务。4、工程——建立应用
的一个或多个表示所需要的任务。5、建造及发布——
建造、测试、安装和提供用户支持(如文档及培训)所需
要的任务。6、用户评估——基于在工程阶段产生的或
在安装阶段实现的软件表示的评估。
<1>特点:能够在关键点上控制风险,适合大项目的开发。
<2>优点:能够控制关键点的风险。
<3>缺点:用户可信度比较低,因为它比较新的模型,而且评估风险的技
术要求比较高。
<4>实用环境:大项目的开发,风险比较高的项目。
{3}构件组装模型:实现软件复用技术。
<1>特点:采用类的复用来实现软件开发。
<2>优点:能够复用原来的构件。
<3>缺点:
<4>实用环境:组件式的开发。
{4}并发开发模型
(5)形式化方法模型:采用数学的方法用自动化的控制软件开发每一个过
程,净室软件工程就是它的变种
<1>特点:采用数学的方法控制,有一系列的自动化工具检测
<2>优点:软件开发出来准确
<3>缺点:成本很高,对技术人员的要求也特别高
<4>实用环境:软件质量要求特别高,精度要求特别高的项目。
五.过程模型关系图示
上一篇:《使用软件工程学开发软件(软件工程实践之一)》
下一篇:《面向对象的软件工程学基础(软件工程实践之三)》