软件生存周期各阶段活动定义浅释

发表于:2008-02-18来源:作者:点击数: 标签:软件生存周期定义浅释
首先讲一下软件生存周期的定义,即以需求为触发点,提出软件开发计划的那一刻开始直到软件在实际应用中完全报废为止可以认为是一个完整的软件生存周期,软件生存周期的提出是为了更好的管理、维护和升级软件。其中更大的意义在于管理软件开发的步骤和方法。它
首先讲一下软件生存周期的定义,即以需求为触发点,提出软件开发计划的那一刻开始直到软件在实际应用中完全报废为止可以认为是一个完整的软件生存周期,软件生存周期的提出是为了更好的管理、维护和升级软件。其中更大的意义在于管理软件开发的步骤和方法。它把整个的软件生存时间看作是一个整体,以时间的推移和软件开发的工作重心之间作为划分点,把软件开发和维护的工作细分为若干个相对独立的部份,从而更好的控制软件的开发进度和难度,同时也十分有利于降低软件的出错频律,协调各个部门间的工作配合和责任分配。

  软件生存周期的各个阶段的划分并没有一成不变的法则,不同的开发方式、软件种类、软件规模和开发环境都会在不同程度上影响软件生存周期各阶段的划分,但无论最终把生存周期如果根据自己的实际情况进行划分,都是旨在更好的利用手中的资源(主要指人力资源、软件资源、技术资源和源码资源),降低软件的开发风险、复杂度和开发成本(主要以开发的时间和投入资源为衡量标准),要做到最好的对软件生存周期各阶段进行划分,就必须遵循一条基本的原则,那就是在各阶段的任务应尽可能的相对独立,同一阶段各项任务的性质应尽可能的相同,从而达到降低每个阶段任务的复杂度,减少不同阶段任务之间的联系。这样做对软件项目开发的组织管理是十分有必要的,同时对最终的软件项目开发成功是不可或缺的。

  尽管软件的生存周期各阶段的划分没有一个明确的法则,但就一般性而言,软件生存周期包括可行性分析、项目开发计划、需求分析、概要设计、详细设计、编写代码、软件测试和软件维护等活动(有的文档资料和开发项目把概要设计和详细设计合在一起,统称为软件设计或设计),这些活动的每一个可以说是软件开发过程中必须要经历的,所以我们应该将它们按照项目的划分合理的安排到各个阶段里面去。

  既然软件开发周期这么重要,无论对软件项目最终开发是否能取得成功或是对软件管理和资源投入,我们就应当充份的了解周期里各个活动的定义和任务,才能合理,准确,客观的安排每一阶段的工作,以下就对各种活动的定义和任务做一下简单介绍,使之对它们有一个初步的了解。

  一、 可行性分析和项目开发计划

  这两个活动通常被整合在一起进行,在实际工作中通常把它们归类到同一个阶段中。在某种程度上甚至可以把它们看成是一个活动整体,要做的事情就是回答“需要做什么?要如何去做?可不可能完成?” 

   在这个阶段中经验起到了决定性的作用,软件工程之所以难就难在没有固定公式可供使用,很多时候都是靠系统分析员的经验来判断是否可行,在这个阶段中,可行性分析要依靠项目开发计划提供依据,而项目开发计划只有在初步得到可行性研究后才能再深入制定,两个活动可以说是互相制约,互相促进的关系。

  同时在这个阶段中对要解决的问题定义十分重要,要注意和各方多沟通,得到尽可能准确的问题定义,再和各方再次沟通看看各方的理解是否相同,一般对问题的精确定义和理解在项目开发计划里解决比在需求分析阶段决解更合理,也可以更符合各方利益的要求,同时不会对软件开发方向造成隐患,亦不会给双方就软件开发报酬的商议造成不必要的麻烦。

  在用户提出一个软件开发要求后,系统分析员要对此用户的机构进行了解,明确它是一个什么样的机构,它的作用是什么,这有利于分析所开发的项目的原由,同时对使用此软件的最终部门要进行一系列的观察研究,组织开会讨论,通过这一系列工作就可以确定软件项目的性质、目标和规模,其实这工作有点像需求分析的简化版,但对项目的后期工作是一个奠基的作用。到现在应该能够得出可行性研究报告了。

   如果可行性研究的结果是可行的,接下来的任务就是制定详细的项目开发计划,项目开发计划主要根据所开发的项目的目标、性能、功能、规模来确定所需的资源,主要包括三个方面,即硬件资源(C)、软件资源和人力资源,除此之外还有对项目的开发费用,开发进度做出估计,可供决策者和用户参考。 

  至此,本阶段的工作任务已基本完成,这时候系统分析员应将《可行性报告》和《项目开发计划》一并提交管理部门审查。

  二、 需求分析

  软件开发最难的部份是什么?不用怀疑,就算是最初级的程序员也知道是需求分析,而另一个问题就是“需求分析为什么就那么难呢?”要回答这个问题,必须在实际工作中把“两帮人”搞清楚,一帮是软件开发的相关人员,而另一帮则是使用软件的需求者,通常软件开发人员开发软件都不是为了自己使用,而是为某个组织开发的,这“两帮人”一帮知道怎么用计算机解决实际问题而他要解决的问题不是自己的,一帮需要用计算机解决自己的问题但不懂如果用计算机去实现。

  到现在应该知道需求分析的实质了吧,再说白点就是在开发者和使用者之间架起一座桥梁,让开发者最准确的知道“用户要的是什么”,要知道需求分析阶段不是要你动手去解决实际问题,而是要你弄清楚将要解决的问题。

  需求分析并不是从一开始就要的,在软件行业初期并没有这个概念,而后来随着软件工程的提出和完善,需求分析才逐渐被人们所认识和重视,主要原因还是随着计算机硬件的不断升级换代,大的软件项目被越来越多的提上了日程,而软件开发技术并没有完全跟得上软件开发的步伐,越做越大的软件项目渐渐的超出了人们所能认识和接受的范畴,开发出来的软件很多都不能适应实际应用的需要,这个时候出现了“软件危机”,为了应对“软件危机”才提出了具有划时代意义的软件工程的概念,而随着软件工程理论的发展和客观上对准确理解用户需求的迫切需要,才出现在需求分析。

  需求分析的难点主要体现在以下几个方面:
    (1)问题的复杂性。
    (2)交流障碍。
    (3)用户对问题的陈述不完备性和不一致性。
    (4)需求易变性。

  针对需求分析人们提出了许多解决方法和自动化分析工具,如结构化分析方法和面向对象分析方法,CASE技术等等。解决问题的方法有许多,但都要遵循一些基本的原则:
    (1) 可以把一个复杂问题按照某种分解方式进行分解并可逐层细化。
    (2) 必须能够表达和理解问题的数据域和功能域。
    (3) 必须具有良好的模型建立能力,能够准确的把问题用“图表”的形式表达出来。

原文转自:http://www.ltesting.net