10年间,致力于中国最专业的UML解决方案
UML一站式解决方案   Trufun QQ:344593239   咨询热线:029-62375359 13379288210  

软件开发过程分析


时间: 2017-06-29    来源: 楚凡科技

 

软件开发过程分析

  很多软件工程师都会问自己,“为什么不能像建筑设计师那样轻松呢?”,或是问“为什么不能像服装设计师那样美妙的工作呢?”。是的,我们多么羡慕建筑设计师啊:现存的任何一座建筑物都不会再建筑时更改其初期的建筑设计。当然,软件工程的主要特征就是可变性。但是,正如我们在前面所说的,任何事物都会有其界限,要是超越了这个自然的界限无疑我们将付出惨重的代价。

  大多数软件过程的提出不是为了停留在学院内供学生来考试和学习的,软件过程的制定是为了从过去的经验和学到的知识中解决和改善原有过程的问题,从而使得项目的成功率大大增加。

  虽然我们分析了这些软件构成在信息化项目中的弊病,但是我们还没有明确这些过程的特征;所以我们还分析这些软件过程是否解决了它们所要解决的问题后,我们才可以准确的分析它们。

  这里我们仅仅分析瀑布模型、快速原型模型、演化模型。

  瀑布模型的引入是为了解决最初的建造修补模型的无序化或无结构化引入的,瀑布模型希望将构建软件的过程“程序化”,使得我们可以明确我们每一个活动的特征,如是开发还是编码。这样我们可以根据不同的活动特征和产物(包括对应产物的文档)进行规范化管理。但是,该模型能够成功被应用是有其依赖的条件的,那就是项目范围必须明确。所以,自动化时代该模型得到了广泛的成功应用。但是,由于该模型需要在项目初期建立明确的、稳固的需求(所有后续活动的原点)。所以在信息化时代基本上该模型的假设被彻底地毁灭。没有明确的范围,那么过多的变更将会超越软件可变性的极限,即使在不考虑成本的情况下,软件的构建依然无法成功。

  快速开发原型希望能够解决需求不明确的问题,所以引入了快速原型使得可以通过引导客户的期盼来明确系统的功能需求。显然,通过我们在第一章的“需求与范围”中的论述,我们知道功能需求与客户需求是有区别的。试图将引导客户告诉我们功能需求,我们必然会在项目开发中面临更多的变更。因为,客户告知我们的任何信息是要说明最终系统的质量要求,而不是系统的功能需求;如在“特长班报名项目”中,我们可能建立了一个“报名菜单”界面来引导客户对于报名系统的功能需求,可是我们又如何知道到什么时候才可以获得客户的完全认同呢?可能唯一的答案就是,客户说这些就是我所要的。好的,我们接下来按照模型的要求进行了相应的活动,最终带出了产品。可是,客户却在验收时说,“啊,我忘了这个报名系统还需要这样展示……”;接下来,当我们按照客户的要求修改完后,修改后的版本又提交给客户,客户又说,“噢,我现在觉得应当改变一下报表的内容,应当加入……这些数据”,然后我们有去修改数据库,则必然会影响某些程序的编码,所以我们还需修改程序、甚至系统的架构。这些情况还会不断发生,最终我们在一个无法预测的时间上,达到了软件可变性的极限,或者在没有达到可变性极限之前我们项目严重超支、超时。

  经过多次的使用,我们发现好像这种包含了原型的线性结构仍然解决不了任何问题。“软件工程根本不能以线性结构来开发吗!”大多数软件工程师们发现了这个现象。所以,很自然的“迭代”和“增量”这两个特性被认为是软件工程所必须涵盖的特性,然后又很自然的“演化模型”被开发出来解决非线性结构问题,实际上是要解决“不明确的功能需求”这一问题。当然,如果问题都不能明确,显然答案的制定必定是错误的。这种方法从开发角度而言,会有与不断的变更致使软件的变更接近极限。

Trufun十五年专注致力于软件工程全过程解决方案,提供从需求、分析、设计、开发到测试的完整管理开发过程,愿与各方进行科研、开发等方面的合作。


分享到: