软件工程学之软件过程(软件工程实践之二)

软件工程学之软件过程

                        --------软件过程及过程模型

                                 作者: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.为了解决产业环境中的实际问题,必须综合出一个开发策略,该策略能够

  覆盖过程、方法和工具三个层次和(二23)所述的)软件开发的一般阶

  段。这个策略常常被称为过程模型或软件工程范型。下面讨论各种软件范

  型,每种范型都有各自的优点和缺点,也有各自己的使用场合。

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>
实用环境:软件质量要求特别高,精度要求特别高的项目。

五.过程模型关系图示

 

上一篇:《使用软件工程学开发软件(软件工程实践之一)》

下一篇《面向对象的软件工程学基础(软件工程实践之三)》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值