软件开发约束条件(软件项目约束)

软件开发 93 0

本篇文章给大家谈谈软件开发约束条件,以及软件项目约束对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

软件的开发模型包括?

1. 边做边改模型(Build-and-Fix Model)

遗憾的是,许多产品都是使用"边做边改"模型来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。

在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户满意为止。

这是一种类似作坊的开发方式,对编写几百行的小程序来说还不错,但这种方法对任何规模的开发来说都是不能令人满意的,其主要问题在于:

(1) 缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;

(2)忽略需求环节,给软件开发带来很大的风险;

(3)没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。

2. 瀑布模型(Waterfall Model)

1970年Winston Royce提出了著名的"瀑布模型",直到80年代早期,它一直是唯一被广泛采用的软件开发模型。

瀑布模型中,如图所示,将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。

瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:

(1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;

(2) 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;

(3) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

我们应该认识到,"线性"是人们最容易掌握并能熟练应用的思想方法。当人们碰到一个复杂的"非 线性"问题时,总是千方百计地将其分解或转化为一系列简单的线性问题,然后逐个解决。一个软件系统的整体可能是复杂的,而单个子程序总是简单的,可以用线 性的方式来实现,否则干活就太累了。线性是一种简洁,简洁就是美。当我们领会了线性的精神,就不要再呆板地套用线性模型的外表,而应该用活它。例如增量模 型实质就是分段的线性模型,螺旋模型则是接连的弯曲了的线性模型,在其它模型中也能够找到线性模型的影子。

3. 快速原型模型(Rapid Prototype Model)

快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。

显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。

4. 增量模型(Incremental Model)

又称演化模型。与建造大厦相同,软件也是一步一步建造起来的。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。

增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。但是,增量模型也存在以下缺陷:

(1) 由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。

(2) 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。

在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。

例如,使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。

5.螺旋模型(Spiral Model)

1988年,Barry Boehm正式发表了软件系统开发的"螺旋模型",它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。

如图所示,螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:

(1) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

(2) 风险分析:分析评估所选方案,考虑如何识别和消除风险;

(3) 实施工程:实施软件开发和验证;

(4) 客户评估:评价开发工作,提出修正建议,制定下一步计划。

螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:

(1) 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。

(2) 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。

(3) 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。

一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。

6.喷泉模型(fountain model)(也称面向对象的生存期模型, OO模型)

喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

7.智能模型(四代技术(4GL))

智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。

这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的 数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的 开发。

8.混合模型(hybrid model)

过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。各种模型的比较每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点,下表列出了几种常见模型的优缺点。各种模型的优点和缺点:

模型优点缺点瀑布模型文档驱动系统可能不满足客户的需求快速原型模型关注满足客户需求可能导致系统设计差、效率低,难于维护增量模型开发早期反馈及时,易于维护需要开放式体系结构,可能会设计差、效率低螺旋模型风险驱动风险分析人员需要有经验且经过充分训练

9.RUP模型

RUP(Rational Unified Process)模型是Rational公司提出的一套开发过程模型,它是一个面向对象软件工程的通用业务流程。它描述了一系列相关的软件工程流程,它们具有相同的结构,即相同的流程构架。RUP 为在开发组织中分配任务和职责提供了一种规范方法,其目标是确保在可预计的时间安排和预算内开发出满足最终用户需求的高品质的软件。RUP具有两个轴,一个轴是时间轴,这是动态的。另一个轴是工作流轴,这是静态的。在时间轴上,RUP划分了四个阶段:初始阶段、细化阶段、构造阶段和发布阶段。每个阶段都使用了迭代的概念。在工作流轴上,RUP设计了六个核心工作流程和三个核心支撑工作流程,核心工作流轴包括:业务建模工作流、需求工作流、分析设计工作流、实现工作流、测试工作流和发布工作流。核心支撑工作流包括:环境工作流、项目管理工作流和配置与变更管理工作流。RUP 汇集现代软件开发中多方面的最佳经验,并为适应各种项目及组织的需要提供了灵活的形式。作为一个商业模型,它具有非常详细的过程指导和模板。但是同样由于该模型比较复杂,因此在模型的掌握上需要花费比较大的成本。尤其对项目管理者提出了比较高的要求。

它具有如下特点:

(1)增量迭代,每次迭代都遵循瀑布模型能够在前期控制好和解决风险;

(2)模型的复杂化,需要项目管理者具有较强的管理能力。

10.IPD模型

IPD(Integrated Product Development)流程是由IBM提出来的一套集成产品开发流程,非常适合于复杂的大型开发项目,尤其涉及到软硬件结合的项目。

IPD从整个产品角度出发,流程综合考虑了从系统工程、研发(硬件、软件、结构工业设计、测试、资料开发等)、制造、财务到市场、采购、技术支援等所有流程。是一个端到端的流程。

在IPD流程中总共划分了六个阶段(概念阶段、计划阶段、开发阶段、验证阶段、发布阶段和生命周期阶段),四个个决策评审点(概念阶段决策评审点、计划阶段决策评审点、可获得性决策评审点和生命周期终止决策评审点)以及六个技术评审点。

IPD流程是一个阶段性模型,具有瀑布模型的影子。该模型通过使用全面而又复杂的流程来把一个庞大而又复杂的系统进行分解并降低风险。一定程度上,该模型是通过流程成本来提高整个产品的质量并获得市场的占有。由于该流程没有定义如何进行流程回退的机制,因此对于需求经常变动的项目该流程就显得不大适合了。并且对于一些小的项目,也不是非常适合使用该流程。

常见的软件开发模型是什么?

演化模型、螺旋模型、喷泉模型、智能模型等。

软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。

最早出现的软件开发模型是1970年W·Royce提出的瀑布模型。该模型给出了固定的顺序,将生存期活动从上一个阶段向下一个阶段逐级过渡,如同流水下泻,最终得到所开发的软件产品,投入使用。

但计算拓广到统计分析、商业事务等领域时,大多数程序采用高级语言(如FORTRAN、COBOL等)编写。瀑布模式模型也存在着缺乏灵活性、无法通过并发活动澄清本来不够确切的需求等缺点。

软件开发模式有哪些?

. 边做边改模型(Build-and-Fix Model)

好吧,其实现在许多产品实际都是使用的“边做边改”模型来开发的,特别是很多小公司产品周期压缩的太短。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。

在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户和测试等等满意为止。

这是一种类似作坊的开发方式,边做边改模型的优点毫无疑问就是前期出成效快。

对编写逻辑不需要太严谨的小程序来说还可以对付得过去,但这种方法对任何规模的开发来说都是不能令人满意的,其主要问题在于:

缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;

忽略需求环节,给软件开发带来很大的风险;

没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。

2. 瀑布模型(Waterfall Model)

瀑布模型是一种比较老旧的软件开发模型,1970年温斯顿·罗伊斯提出了著名的“瀑布模型”,直到80年代都还是一直被广泛采用的模型。

瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。

瀑布模型优点是严格遵循预先计划的步骤顺序进行,一切按部就班比较严谨。

瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:

各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;

由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;

早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

各个软件生命周期衔接花费时间较长,团队人员交流成本大。

瀑布式方法在需求不明并且在项目进行过程中可能变化的情况下基本是不可行的。

3. 迭代模型(stagewise model)

迭代模型(也被称作迭代增量式开发或迭代进化式开发)是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。

在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。

教学中,对迭代和版本的区别,可理解如下: 迭代一般指某版本的生产过程,包括从需求分析到测试完成; 版本一般指某阶段软件开发的结果,一个可交付使用的产品。

与传统的瀑布模型相比较,迭代过程具有以下优点:

降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。

降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。

加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。

由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。因此复用性更高

4. 快速原型模型(Rapid Prototype Model)

快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。

显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。

快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。

快速原型模型有点整合“边做边改”与“瀑布模型”优点的意味。

5、增量模型(Incremental Model)

与建造大厦相同,软件也是一步一步建造起来的。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。

增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。但是,增量模型也存在以下缺陷:

由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。

在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。

在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。

例如,使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。

6. 螺旋模型(Spiral Model)

1988年,巴利·玻姆(Barry Boehm)正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。

螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:

制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;

风险分析:分析评估所选方案,考虑如何识别和消除风险;

实施工程:实施软件开发和验证;

客户评估:评价开发工作,提出修正建议,制定下一步计划。

螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:

螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。

如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。

软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险

一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。

7. 敏捷软件开发 (Agile development)

敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果,关注业务优先级,检查与调整。

敏捷软件开发要注意项目规模,规模增长,团队交流成本就上去了,因此敏捷软件开发暂时适合不是特别大的团队开发,比较适合一个组的团队使用。

8. 演化模型(evolutionary model)

主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,并且当看到核心需求实现后,能够有效地提出反馈,以支持系统的最终设计和实现。软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,用户试用之,完成他们的工作,并提出精化系统、增强系统能力的需求。软件开发人员根据用户的反馈,实施开发的迭代过程。第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。

在开发模式上采取分批循环开发的办法,每循环开发一部分的功能,它们成为这个产品的原型的新增功能。于是,设计就不断地演化出新的系统。 实际上,这个模型可看作是重复执行的多个“瀑布模型”。

“演化模型”要求开发人员有能力把项目的产品需求分解为不同组,以便分批循环开发。这种分组并不是绝对随意性的,而是要根据功能的重要性及对总体设计的基础结构的影响而作出判断。有经验指出,每个开发循环以六周到八周为适当的长度。

9. 喷泉模型(fountain model, (面向对象的生存期模型, 面向对象(Object Oriented,OO)模型))

喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。

10. 智能模型(四代技术(4GL))

智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。这种方法需要四代语言(4GL)的支持。4GL不同于三代语言,其主要特征是用户界面极端友好,即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言。4GL还具有高效的程序代码、智能缺省假设、完备的数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征。但4GL目前主要限于事务信息系统的中、小型应用程序的开发。

11. 混合模型(hybrid model)

过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。实际上,一些软件开发单位都是使用几种不同的开发方法组成他们自己的混合模型。

软件项目设计与开发过程管理分析

软件项目设计与开发过程管理分析

软件项目的规划,是软件设计与开发过程中比较复杂的阶段,也是决定软件开发质量和开发水平的关键,做好软件项目的整体规划将会为整个软件项目的运行奠定良好的基础。以下是我为您收集整理的软件项目设计与开发过程管理分析论文,以供参考,欢迎借鉴阅读。

摘要: 软件项目设计与开发的管理,其目的就是要从管理的角度,对软件项目在设计开发中的各个环节进行规范和监督,通过多种形式的有效管理措施,确保软件项目开发过程的高质量和低成本。对此,本文在分析软件项目设计与开发原则的基础上,结合软件项目设计与开发的全过程,就软件项目设计与开发的有效管理问题进行重点探讨。

   关键词: 软件项目;设计与开发;过程管理;有效性

对软件项目设计与开发的全过程进行有效的管理,不仅是要为了顺利实现软件的特定功能与性能,还要确保能够保质、保量、低成本的完成软件开发的任务,使软件在投入使用后也能够保持稳定性、可靠性、实用性和经济性。简单的说,软件设计与开发的过程就是要将需求转变为软件表达的过程,要想切实提高软件项目设计与开发过程管理的有效性,不仅要坚持正确的软件项目设计原则,还要明确软件的设计流程,在设计与开发的各个过程都采取行之有效的管理对策。

一、软件项目设计与开发的基本原则

(一)实用性

实用性指的是软件项目的设计与开发一定要能够满足现代企业经营管理的需求,能够促进企业的不断发展,要避免“形式主义”、“中看不中用”等问题,否则有可能导致企业软件开发资金的浪费,难以取得良好的投资回报效果。因此,在选择软件设计与开发技术时,不能过度追求先进性和高投入,而是应当在充分了解企业实际需求的基础上,结合企业的发展方向,充分满足企业在不同层次和环节上的管理需求,这也是决定软件开发项目成败的关键因素。

(二)先进性

毋庸置疑,在信息技术不断变化发展的时代背景下,先进性是软件项目设计开发过程中必须充分考虑的问题,这可以有效降低企业在未来的投入,避免未来在软件项目开发中的重复建设和系统升级等问题。因此,企业在进行软件项目的开发设计时,一定要面向社会经济的未来发展方向和人民生活需求的变化趋势,紧跟社会步发展的步伐,与信息技术、计算机技术、通信技术以及相关学科的发展方向保持一致,这样才能不断推动社会的进步。

(三)经济性

任何一个软件项目的设计与开发,都必须充分考虑到投入产出比的问题,力争用最小的经济投入获取最大的投资回报,实现最好的软件开发设计效果和更高的经济效益,这也是软件开发企业的主要目标。因此,在保证软件开发质量的前提下,软件的开发费用需要控制在合理的预算范围之一,并尽量压缩,在设计开发过程中必须要考虑到软件在后期运行维护过程中的费用投入,实现软件项目设计与开发全过程费用的节约。

(四)系统性

在软件项目的开发设计中,一定保证其整体功能的完整性,既能满足企业在整体上的管理需要,设计与开发的系统必须能够全面、完整覆盖企业管理的软件信息系统,又要能够满足采购、生产、销售等个别部门的`管理需求,便于各个部门之间信息数据的传递和衔接。此外,还应当制定系统的软件项目设计与开发的管理规范,如开发文档的管理规范、报表文件规范、数据格式规范等,这是确保软件系统开发和操作水平的重要条件。

(五)可靠性

为了充分保证软件项目系统运行的高效、平稳和准确,不仅要保证软件系统在正常运行状况下数据传递的准确性和系统运行的可靠性,还需要确保软件系统项目在非正常状态下的可靠运行,因此在软件项目的开发设计过程中要提前针对一些紧急情况制定相应的应对策略。一个优秀、可靠的软件系统,必然是一个灵活的系统,即使在软、硬件环境发生故障时,仍旧能够保持部分使用或正常运行。

二、软件项目设计与开发的全过程管理

(一)软件项目设计与开发的启动

在软件项目的设计与开发过程中,实施全过程管理的第一个阶段就是项目的启动。在软件项目的启动阶段,首先,要明确软件项目设计与开发的目的,并在软件开发与软件使用的双方协议或者合同中进行约束,并对软件设计的主题、工程量进行量化,合理确定软件项目开发和设计的阶段目标和周期。其次,要加强同软件用户的充分沟通,了解用户的软件使用需求,理清软件记录的关键点,制定出完整的软件设计与开发流程;再次,对于在调研过程中所获取的原始资料,一定要进行加工处理,理清相关的约束条件和非功能性的客户需求,确保软件开发与建设项目具有很强的可实现性。

(二)软件项目设计与开发的规划

软件项目的规划,是软件设计与开发过程中比较复杂的阶段,也是决定软件开发质量和开发水平的关键,做好软件项目的整体规划将会为整个软件项目的运行奠定良好的基础。具体说来,软件项目规划主要包括项目预算、风险分析与预测、进度管理、质量控制等内容,在编制软件项目的开发计划时,一定要理清各个开发环节之间的关系,并制定出完整、科学的项目计划书,以期为软件项目设计与开发的全过程管理提供相应的参考依据。

(三)软件项目设计与开发的实施

软件项目实施阶段的有效管理,其目的就是要保证软件项目安装在预先设置的计划上正常运行,确保项目不要偏离预定的开发进程和设计目标。在软件项目的实施阶段,一定要按照软件项目的初步规划进行,并在实施过程中,增强对软件项目开发的有效控制,确保成本支出控制在相应的预算定额之内。同时,要对软件项目开发的成果进行动态的监控,随时与原先的计划过程进行比较,对于出现的偏差或缺陷要及时进行调整,确保各项软件开发指标和系统功能的顺利实现。

(四)软件项目设计与开发的结束

一个完善的软件项目管理过程,必然离不开软件项目的结束,这时相关人员要进一步确认软件项目在设计与开发过程中取得的成就,做好软件项目的交接、评审等工作。

三、结语

总之,为了提高软件项目设计与开发的质量和水平,软件设计人员需要首先认识到软件质量的重要性,树立应有的软件项目质量管理意识,要坚持正确的软件设计与开发原则,懂得加强过程管理与控制,同时还要对风险控制、配置管理等环节给予足够的重视,采用科学的技术方法和先进的管理技术来提高软件项目质量管理的有效性。

参考文献:

[1]李勇华,骆启武,付春燕.基于问题管理提升软件项目过程质量的实践[J].计算机与现代化,2007,4.

[2]商惠华.基于过程改进的软件质量管理模型[J].计算机工程与设计,2011,5.

[3]雷坚.项目管理在软件开发中的应用探究[J].软件导刊,2011,7.

;

怎么样开发一个软件

1、软件开发的第一个流程是项目开发目的分析与确定,主要是在软件开发商将开发项目确定下来之后,需要与需求方进行讨论,确定需求方对于软件开发的需要实现目标及其具体需要的功能等等,并确定是否可达成;

2、接下来就是需求分析,这个步骤也是为软件开发的正常进行确定具体思路的阶段。在确定软件开发可进行后,必须要对客户需要实现的软件功能需求进行具体详细的分析。同时应当考虑在开发过程中可能出现的变化情况,制定需求变更计划随时应对特殊情况的发生,保证软件开发流程的顺畅进行;

3、接下来就是软件设计。软件设计要根据上一阶段对软件功能需求分析的结果,来设计软件系统的框架结构、功能模块和数据库等等。它主要分为总体设计和详细设计两个部分;

4、接下来就是编程实施步骤。编程也是根据对软件设计,将软件设计的各部分需求通计算机程序代码来实现运行,编程有统一、规范的程序编写规则,保证软件程序的易懂性、易维护性;

5、接下来就是软件测试步骤。也就是在根据设计将客户软件需用编程代码来实现之后,也就是软件程序完成之后,需要对编写的程序,形成整体构架、功能进行单元、组装、系统三阶段的测试,以测试程序编写的正确性,以及对客户需求功能满足的充分性,以此来确定软件是否达到开发要求,同时也是一个发现问题、纠正问题的过程;

6、通过以上核心环节完成了软件开发,接下来就是在软件开发达到客户需求之后,开发者将软件系统交予客户,并将软件安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等产物交付给客户,同时指导客户进行软件安装、以及安装技巧,提醒客户注意软件运行状况、环境、服务器及相关中间件的检测与注意事项,知道客户软件的实际操作方法、使用流程等等问题,实现合同规定任务;

7、用户在接受开发商交付的软件开发结果,并进行实际操作、测试运行,实现满意结果之后,对开发出来的软件进行验收;

8、定制开发的软件通常都需要提供售后服务,定期对软件进行维护,或者根据用户出现的新需求,进行应用软件程序的修改,使之不断满足客户实际需求。

制约软件项目成功的因素

引子

一个项目从其一成立开始,项目各方干系人都会期望项目能够根据既定的计划一步步顺利地导向最后的成功。影响项目的最后成功的因素是多方面的,包括项目管理的九大知识领域(包括项目的整体管理、范围管理、时间管理、费用管理、质量管理、人力管理、沟通管理、风险管理和采购管理),无一对项目的最后成功不产生积极影响。然而,要这九大知识领域对项目成功产生的影响的轻重程度上进行比较的话,我认为其中项目范围管理是最为重要的。

什么是项目范围管理

那么,什么是项目范围和项目范围管理呢?项目范围是指产生项目产品所包括的所以工作及产生这些产品所用的过程。项目干系人必须在项目要产生什么样的产品方面达成共识,也要在如何生产这些产品方面达成一定的共识。

项目范围管理是指对项目包括什么与不包括什么的定义与控制过程。这个过程用于确保项目组和项目干系人对作为项目结果的项目产品以及生产这些产品所用到的过程有一个共同的理解。

项目范围与项目其它约束条件的相互影响

制约一个项目的条件是项目“三约束条件”——范围、时间、成本。

在一个项目中这三个条件是相互影响、相互制约的,而且往往是由于范围影响了时间和成本。项目一开始确定的范围小,那么它需要完成的时间以及耗费的成本必然也小,反之亦然。很多项目在开始时都会粗略地确定项目的范围、时间以及成本,然而在项目进行到一定阶段之后往往会变成让人感觉到不知道项目什么时候才能真正结束,要使得项目结束到底还需要投入多少人力和物力,整个项目就好象一个无底洞,对项目的最后结束谁的心里也没有底。这种情况的出现对于公司的高层来说,他们是最不希望看到的,然而这样的情况出现并不罕见。造成这样的结果就是由于没有控制和管理好项目的范围。可见项目的三约束中最主要还是范围的影响最主要。

范围管理案例

失败案例:我了解到这样的实际案例,这是一个软件开发的项目,整个项目已经进行了两年多之后项目何时结实还是处于不明确的状态,因为用户不断有新的需求出来,项目组也就要根据用户的新需求不断去开发新的功能。这个项目实际是一个无底洞,没完没了地往下做,项目成员“肥的拖瘦,瘦的拖死”,实在做不下去只能跑了。大家对这样的项目已经完全丧失了信心。

这个项目其实就是一开始没有很明确地界定整个项目的范围,在范围没有明确界定的情况下,又没有一套完善的变更控制管理流程,任由用户怎么说,就怎么做,也就是说一开始游戏规则没有定好,从而导致整个项目成了一个烂摊子。

成功案例:同样是一个软件开发的项目,这个项目也比上面案例讲到的项目要小一些,这时候公司已经开始实施CMM对软件开发活动进行管理,有相对完善的软件开发管理过程。项目在一开始就先明确用户需求,而且需求基本上都是量化的、可检验的。而且项目组在公司CMM的变更管理过程的框架指导下制定了项目的范围变更控制管理过程,在项目的实施过程中,用户的需求变更都是按照事先制定好的过程执行。

因此,这个项目完成的比较成功,项目的时间和成本基本上是在一开始项目计划的完成时间及成本的情况下略有增加。

造成范围界定不清的原因

既然项目范围界定不清是一种很常见的现象,而这种现象又是大家所不想见到的。那么,我们必须分析出现这种现象的原因。我认为造成这种现象的出现有以下三方面的原因:

首先,是企业一级的责任——没有完善的项目管理体系来指导项目的管理。这种情况是最糟糕的,如果是这种原因,那么项目的成败往往需要靠项目经理个人的管理、领导能力。这种情况项目成功的可能性非常小,大部分项目都是以失败而告终;

第二,是企业及项目组共同的责任——对项目没能制定出清晰规范的范围变更控制过程。企业有管理体系,但不够完善和规范,对项目组的变更过程的制定没能起到有效的指导作用。变更是不可避免的,只要有效地加以管理、控制,同样可以达到各方满意的结果;

第三,是对范围的定义不够明确,做不到可量化、可验证程度。很多时候都是一些定性的要求、而不是定量的,例如“界面友好,可操作性强,提高用户满意度”等。类似这些模糊的需求就是导致后续项目扯皮的根源。项目范围的明确定义,有经验的项目经理及系统分析员将起到至关重要的作用。

由以上的论述,我们可以得出结论:完善的项目范围管理是整个项目最终成败的关键。那么,怎样才能做好项目范围管理呢?下面大量篇幅将对这一问题进行详细的论述。

如何管理好项目范围

既然已经认识到项目范围管理如此重要,那么我们应该怎样才能管理好项目的范围呢?从上面的论证过程,我们清楚地看到造成项目范围不好管理的一些原因,那么要管理好项目范围就必须对症下药,才能管理好项目范围。

首先,我们必须先了解项目范围管理的一些科学过程。做好项目管理应该包含下面过程:启动、范围计划、范围定义、范围核实及范围变更控制。下面将详述如何做好这些过程:

启动过程

启动是指组织正式开始一个项目或继续到项目的下一个阶段。启动过程的一个输出就是项目章程。项目章程是一个重要的文档,这个文件正式承认项目的存在并对项目提供一个概览。

启动过程明确指定这一过程有一个重要的输出文档——项目章程,项目章程将粗略地规定项目的范围,这也是项目范围管理后续工作的重要依据。项目章程中还将规定项目经理的权利以及项目组中各成员的职责,还有项目其他干系人的职责,这也是在以后的项目范围管理工作中各个角色如何做好本职工作有一个明确的规定,以致后续工作可以更加有序地进行。因此,千万不能忽略项目的启动过程。

范围计划过程

范围计划是指进一步形成各种文档,为将来项目决策提供基础,这些文档中包括用以衡量一个项目或项目阶段是否已经顺利完成的标准等。作为范围计划过程的输出,项目组要制定一个范围说明书和范围管理计划。

古语云:“预则立,不预则废!”。一个项目经理要想真正管理好项目范围,没有必要的技术和好的方法是肯定不行的。

要做好一个项目首先强调的就是周密地做好范围计划编制。范围计划编制是将产生项目产品所需进行的项目工作(项目范围)渐进明细和归档的过程。做范围计划编制工作是需要参考很多信息的,比如产品描述,首先要清楚最终产品的定义才能规划要做的工作,项目章程也是非常主要的依据,通常它对项目范围已经有了粗线条的约定,范围计划在此基础上进一步深入和细化。

前面讲到这个过程有一个输出是范围说明书,那么范围说明指的是什么呢?范围说明是在项目参与人之间确认或建立了一个项目范围的共识,作为未来项目决策的文档基准。

范围说明中至少要说明项目论证、项目产品、项目可交付成果和项目目标。项目论证是商家的既定目标,要为估算未来的得失提供基础;项目产品是产品说明的简要概况;项目可交付成果一般要列一个子产品级别概括表,如:为一个软件开发项目设置的主要可交付成果可能包括程序代码、工作手册、人机交互学习程序等。任何没有明确要求的结果,都意味着它在项目可交付成果之外;项目目标是要考虑到项目的成功性,至少要包括成本、进度表和质量检测。项目目标应该有标志(如:成本、单位)和绝对的或相对的价值。尽量避开不可量化的目标(如:“客户的满意程度”),因为它将让你的项目承担很高的风险。

范围计划又是什么呢?范围管理计划是描述项目范围如何进行管理,项目范围怎样变化才能与项目要求相一致等问题的。它也应该包括一个对项目范围预期的稳定而进行的评估(比如:怎样变化、变化频率如何及变化了多少)。范围管理计划也应该包括对变化范围怎样确定,变化应归为哪一类(当产品特征仍在被详细描述的时候,做到这点特别困难,但绝对必要)等问题的清楚描述。

范围定义过程

范围定义是指将项目主要的可交付成果细分成较小的、更易管理的组分。这个过程中,项目组要建立一个工作分解结构(WBS)。

WBS的建立对项目来说意义非常重大,它使得原来看起来非常笼统、非常模糊的项目目标一下子清晰下来,使得项目管理有依据,项目团队的工作目标清楚明了。如果没有一个完善的WBS或者范围定义不明确时,变更就不可避免地出现,很可能造成返工、延长工期、降低团队士气等一系列不利的后果。

制定好一个WBS的指导思想是逐层深入。先将项目成果框架确定下来,然后每层下面再把工作分解,这种方式的优点是结合进度划分直观,时间感强,评审中容易发现遗漏或多出的部分,也更容易被大多数人理解。

范围核实过程

范围核实是指对项目范围的正式认定,项目主要干系人,如项目客户和项目发起人等要在这个过程中正式接受项目可交付成果的定义。

这个过程是范围确定之后,执行实施之前各方相关人员的承诺问题。一旦承诺则表明你已经接受该事实,那么你就必须根据你的承诺去实现它。这也是确保项目范围能得到很好的管理和控制的有效措施。

范围变更控制过程

范围变更控制是指对有关项目范围的变更实施控制。主要的过程输出是范围变更、纠正行动与教训总结。

再好的计划也不可能做到一成不变,因此变更是不要避免的,关键问题是如何对变更如何进行有效的控制。控制好变更必须有一套规范的变更管理过程,在发生变更时遵循规范的变更程序来管理变更。通常对发生的变更,需要识别是否在既定的项目范围之内。如果是在项目范围之内,那么就需要评估变更所造成的影响,以及如何应对的措施,受影响的各方都应该清楚明了自己所受的影响;如果变更是在项目范围之外,那么就需要商务人员与用户方进行谈判,看是否增加费用,还是放弃变更。

因此,项目所在的组织(企业)必须在其项目管理体系中制定一套严格、高效、实用的变更程序。

执行好以上项目范围管理的五个过程,我认为对项目范围的管理、控制将是行之有效的!

软件开发约束条件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于软件项目约束、软件开发约束条件的信息别忘了在本站进行查找喔。

扫码二维码